Beispiel #1
0
        public virtual void CaptureGameState(GameInstance game)
        {
            // Level infos
            lvl = new LevelSnapshot();
            lvl.CaptureLevelState(game);

            // Objects
            objects_states = new List <ObjectSnapshot>();
            objects        = new List <GameObject>();
            objects.AddRange(game.players);
            objects.AddRange(game.Level.Current.walking.EnemiesList);
            objects.AddRange(game.Level.Current.falling.EnemiesList);
            foreach (GameObject o in objects)
            {
                ObjectSnapshot s = null;
                if (o is Player)
                {
                    s = new PlayerObjectSnapshot();
                }
                if (o is NonPlayerObject)
                {
                    s = new NonPlayerObjectSnapshot();
                }
                s.CaptureModelState(o);
                objects_states.Add(s);
            }
        }
Beispiel #2
0
        public virtual void RestoreGameState(GameInstance game)
        {
            // Level infos
            lvl.RestoreLevelState(game);

            // Objects
            game.Level.Current.falling.EnemiesList.Clear();
            game.Level.Current.walking.EnemiesList.Clear();
            game.players.Clear();

            for (int i = 0; i < objects.Count; i++)
            {
                GameObject     o = objects[i];
                ObjectSnapshot s = objects_states[i];
                s.RestoreModelState(o);
                if (o is Monstar)
                {
                    game.Level.Current.walking.EnemiesList.Add((Monstar)o);
                }
                else if (o is NonPlayerObject)
                {
                    game.Level.Current.falling.EnemiesList.Add((NonPlayerObject)o);
                }
                else if (o is Player)
                {
                    game.players.Add((Player)o);
                }
            }
        }