/// <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); }
/// <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; }