An easy to use Unity 3D library for creating illustrated Interactive Fiction games and more.
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
1.7 KiB

using UnityEngine;
using System.Collections;
using System.Collections.Generic;
namespace Fungus
{
/**
* Manages the global state information for the game.
* Implemented as a separate class from Game to facilitate storing & restoring of game state.
*/
public class GameState
{
protected Dictionary<string, bool> flags = new Dictionary<string, bool>();
protected Dictionary<string, int> counters = new Dictionary<string, int>();
protected Dictionary<string, int> inventory = new Dictionary<string, int>();
public GameState DeepClone()
{
GameState clone = new GameState();
foreach (string key in flags.Keys)
clone.flags[key] = flags[key];
foreach (string key in counters.Keys)
clone.counters[key] = counters[key];
foreach (string key in inventory.Keys)
clone.inventory[key] = inventory[key];
return clone;
}
public void ClearFlags()
{
flags.Clear();
}
public bool GetFlag(string key)
{
if (flags.ContainsKey(key))
{
return flags[key];
}
return false;
}
public void SetFlag(string key, bool value)
{
flags[key] = value;
}
public void ClearCounters()
{
counters.Clear();
}
public int GetCounter(string key)
{
if (counters.ContainsKey(key))
{
return counters[key];
}
return 0;
}
public void SetCounter(string key, int value)
{
counters[key] = value;
}
public void ClearInventory()
{
inventory.Clear();
}
public int GetInventory(string key)
{
if (inventory.ContainsKey(key))
{
return inventory[key];
}
return 0;
}
public void SetInventory(string key, int value)
{
inventory[key] = value;
}
}
}