Exemple #1
0
        public static GameDataSnapshot CreateGameDataSnapshot(TempGameData data)
        {
            XmlNode gameNode = data.SaveData.DocumentElement["game"];
            XmlNode mapsNode = gameNode["maps"];

            var dataSnapshot = new GameDataSnapshot();

            foreach (XmlNode mapNode in mapsNode)
            {
                int    id      = int.Parse(mapNode["uniqueID"].InnerText);
                byte[] mapData = ScribeUtil.XmlToByteArray(mapNode);
                dataSnapshot.mapData[id] = mapData;
                dataSnapshot.mapCmds[id] = new List <ScheduledCommand>(Find.Maps.First(m => m.uniqueID == id).AsyncTime().cmds);
            }

            gameNode["currentMapIndex"].RemoveFromParent();
            mapsNode.RemoveAll();

            byte[] gameData = ScribeUtil.XmlToByteArray(data.SaveData);
            dataSnapshot.cachedAtTime       = TickPatch.Timer;
            dataSnapshot.gameData           = gameData;
            dataSnapshot.semiPersistentData = data.SemiPersistent;
            dataSnapshot.mapCmds[ScheduledCommand.Global] = new List <ScheduledCommand>(Multiplayer.WorldComp.cmds);

            return(dataSnapshot);
        }