예제 #1
0
        /// <summary>
        /// Creates a deep copy of the game state.
        /// </summary>
        /// <returns></returns>
        public GameState Clone()
        {
            GameState newState = new GameState();

            // Characters (as structs are copied by value)
            newState.Characters = new List <Character>();
            foreach (Character character in Characters)
            {
                newState.AddCharacter(character.Clone());
            }

            foreach (Item item in Items)
            {
                newState.AddItem(item.Clone());
            }

            foreach (KeyValuePair <string, List <DialogueLine> > kvp in Conversations)
            {
                List <DialogueLine> lines = new List <DialogueLine>();
                foreach (DialogueLine line in kvp.Value)
                {
                    lines.Add(line);
                }
                newState.SetConversation(kvp.Key, lines);
            }

            newState.Player    = this.Player.Clone();
            newState.Intensity = this.Intensity;
            return(newState);
        }
예제 #2
0
    /// <summary>
    /// Creates a deep copy of the game state.
    /// </summary>
    /// <returns></returns>
    public GameState Clone()
    {
      GameState newState = new GameState();
      // Characters (as structs are copied by value)
      newState.Characters = new List<Character>();
      foreach (Character character in Characters) {
	newState.AddCharacter(character.Clone());			
      }

      foreach (Item item in Items) {
	newState.AddItem(item.Clone());			
      }

      foreach(KeyValuePair<string,List<DialogueLine>> kvp in Conversations){
	List<DialogueLine> lines = new List<DialogueLine>();
	foreach(DialogueLine line in kvp.Value){
	  lines.Add(line);
	}
	newState.SetConversation(kvp.Key,lines);
      }

      newState.Player = this.Player.Clone();
      newState.Intensity = this.Intensity;
      return newState;
    }