public void Save(GameManager gm, Action worldSaver) { gm.PrepareForSave(); //if (gm.Hero.Dirty)?? { #if DEBUG var heros = gm.CurrentNode.GetTiles <Hero>(); var heroInNode = heros.SingleOrDefault(); Debug.Assert(heroInNode != null); #endif //var nodeName = gm.CurrentNode.Name; //Hero is saved in a separate file if (!gm.CurrentNode.SetEmptyTile(gm.Hero.point)) { gm.Logger.LogError("failed to reset hero on save"); } gm.Persister.SaveHero(gm.Hero); var alliesStore = new AlliesStore(); foreach (var ally in gm.AlliesManager.AllAllies) { alliesStore.Allies.Add(ally); var set = gm.CurrentNode.SetEmptyTile(ally.Point); if (!set) { gm.Logger.LogError("failed to reset ally on save " + ally); } } gm.Persister.SaveAllies(gm.Hero.Name, alliesStore); } worldSaver(); var gameState = gm.PrepareGameStateForSave(); gm.Persister.SaveGameState(gm.Hero.Name, gameState); //restore hero gm.CurrentNode.SetTile(gm.Hero, gm.Hero.point); }
//protected virtual string GameFolder { get { return GameName; } } public void SaveAllies(string hero, AlliesStore allies) { var fileName = GetFullFilePath(FileKind.Allies, hero); Save <AlliesStore>(allies, fileName); }