Beispiel #1
0
        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);
        }
Beispiel #2
0
        //protected virtual string GameFolder { get { return GameName; } }

        public void SaveAllies(string hero, AlliesStore allies)
        {
            var fileName = GetFullFilePath(FileKind.Allies, hero);

            Save <AlliesStore>(allies, fileName);
        }