Example #1
0
        private static EDifficulty GetDifficulty(BinaryReader p_reader)
        {
            p_reader.ReadInt32();
            String text = p_reader.ReadString();

            if (text != "MainData")
            {
                LegacyLogger.Log("Not MainData: " + text);
                return(EDifficulty.NORMAL);
            }
            SaveGameData saveGameData = new SaveGameData(text);

            saveGameData.Read(p_reader);
            return(saveGameData.Get <EDifficulty>("Difficulty", EDifficulty.NORMAL));
        }
        public void LoadSaveGameData(SaveGameData p_saveGameData, String p_file)
        {
            String path = Path.Combine(GamePaths.UserGamePath, p_file);

            if (File.Exists(path))
            {
                using (FileStream fileStream = File.OpenRead(path))
                {
                    using (BinaryReader binaryReader = new BinaryReader(fileStream))
                    {
                        p_saveGameData.Read(binaryReader);
                    }
                }
            }
        }
Example #3
0
        public void Save(SaveGameData p_data)
        {
            p_data.Set <String>("Name", m_name);
            p_data.Set <Int32>("ObjectCount", m_objects.Count);
            for (Int32 i = 0; i < m_objects.Count; i++)
            {
                SaveGameData saveGameData = new SaveGameData("InteractiveObject" + i);
                m_objects[i].Save(saveGameData);
                p_data.Set <SaveGameData>(saveGameData.ID, saveGameData);
            }
            p_data.Set <Int32>("MonsterCount", m_monster.Count);
            for (Int32 j = 0; j < m_monster.Count; j++)
            {
                SaveGameData saveGameData2 = new SaveGameData("Monster" + j);
                m_monster[j].Save(saveGameData2);
                p_data.Set <SaveGameData>(saveGameData2.ID, saveGameData2);
            }
            SaveGameData saveGameData3 = SaveGame.CreateDataFromArray <Int32>("InvalidSpawns", m_invalidSpawns);

            p_data.Set <SaveGameData>(saveGameData3.ID, saveGameData3);
            SaveGameData saveGameData4 = new SaveGameData("TerrainMatrix");

            saveGameData4.Set <Int32>("MatrixHeight", m_terrainDataHeight);
            saveGameData4.Set <Int32>("MatrixWidth", m_terrainDataWidth);
            if (m_terrainData != null)
            {
                for (Int32 k = 0; k < m_terrainDataHeight; k++)
                {
                    for (Int32 l = 0; l < m_terrainDataWidth; l++)
                    {
                        SaveGameData saveGameData5 = new SaveGameData(String.Concat(new Object[]
                        {
                            "terrain_",
                            l,
                            "_",
                            k
                        }));
                        m_terrainData[k * m_terrainDataWidth + l].Save(saveGameData5);
                        saveGameData4.Set <SaveGameData>(saveGameData5.ID, saveGameData5);
                    }
                }
            }
            p_data.Set <SaveGameData>(saveGameData4.ID, saveGameData4);
        }
Example #4
0
        public void Load(SaveGameData p_data)
        {
            m_name = p_data.Get <String>("Name", null);
            Int32 num = p_data.Get <Int32>("ObjectCount", 0);

            for (Int32 i = 0; i < num; i++)
            {
                SaveGameData saveGameData = p_data.Get <SaveGameData>("InteractiveObject" + i, null);
                if (saveGameData != null)
                {
                    try
                    {
                        Int32             p_staticID        = saveGameData.Get <Int32>("StaticID", 0);
                        Int32             p_spawnID         = saveGameData.Get <Int32>("SpawnerID", 0);
                        EObjectType       p_type            = saveGameData.Get <EObjectType>("ObjectType", EObjectType.NONE);
                        InteractiveObject interactiveObject = (InteractiveObject)EntityFactory.Create(p_type, p_staticID, p_spawnID);
                        interactiveObject.Load(saveGameData);
                        m_objects.Add(interactiveObject);
                    }
                    catch (Exception p_message)
                    {
                        LegacyLogger.LogError(p_message);
                    }
                }
            }
            Int32 num2 = p_data.Get <Int32>("MonsterCount", 0);

            for (Int32 j = 0; j < num2; j++)
            {
                SaveGameData saveGameData2 = p_data.Get <SaveGameData>("Monster" + j, null);
                if (saveGameData2 != null)
                {
                    try
                    {
                        Monster monster = new Monster();
                        monster.Load(saveGameData2);
                        m_monster.Add(monster);
                    }
                    catch (Exception p_message2)
                    {
                        LegacyLogger.LogError(p_message2);
                    }
                }
            }
            SaveGameData saveGameData3 = p_data.Get <SaveGameData>("InvalidSpawns", null);

            if (saveGameData3 != null)
            {
                List <Int32> collection = SaveGame.CreateArrayFromData <Int32>(saveGameData3);
                m_invalidSpawns.AddRange(collection);
            }
            SaveGameData saveGameData4 = p_data.Get <SaveGameData>("TerrainMatrix", null);

            if (saveGameData4 != null)
            {
                m_terrainDataHeight = saveGameData4.Get <Int32>("MatrixHeight", 0);
                m_terrainDataWidth  = saveGameData4.Get <Int32>("MatrixWidth", 0);
                m_terrainData       = new TerrainTypeData[m_terrainDataWidth * m_terrainDataHeight];
                for (Int32 k = 0; k < m_terrainDataHeight; k++)
                {
                    for (Int32 l = 0; l < m_terrainDataWidth; l++)
                    {
                        SaveGameData saveGameData5 = saveGameData4.Get <SaveGameData>(String.Concat(new Object[]
                        {
                            "terrain_",
                            l,
                            "_",
                            k
                        }), null);
                        if (saveGameData5 != null)
                        {
                            TerrainTypeData terrainTypeData = default(TerrainTypeData);
                            terrainTypeData.Load(saveGameData5);
                            m_terrainData[k * m_terrainDataWidth + l] = terrainTypeData;
                        }
                    }
                }
            }
        }
Example #5
0
 public void Load(SaveGameData p_data)
 {
     Type    = (ETerrainType)p_data.Get <Int32>("TerrainType", 0);
     Visited = p_data.Get <Boolean>("Visited", false);
     Height  = p_data.Get <Single>("Height", Single.MaxValue);
 }
Example #6
0
 public void Save(SaveGameData p_data)
 {
     p_data.Set <Int32>("TerrainType", (Int32)Type);
     p_data.Set <Boolean>("Visited", Visited);
     p_data.Set <Single>("Height", Height);
 }
Example #7
0
        public void Read(BinaryReader p_reader)
        {
            m_sealed = true;
            Int32 num = p_reader.ReadInt32();

            if (num > 0 && m_bools == null)
            {
                m_bools = new Dictionary <String, Boolean>(num);
            }
            for (Int32 i = 0; i < num; i++)
            {
                String text = p_reader.ReadString();
                m_bools.Add(text, p_reader.ReadBoolean());
                m_mapping.Add(text, TypeCode.Boolean);
            }
            num = p_reader.ReadInt32();
            if (num > 0 && m_bytes == null)
            {
                m_bytes = new Dictionary <String, Byte>(num);
            }
            for (Int32 i = 0; i < num; i++)
            {
                String text = p_reader.ReadString();
                m_bytes.Add(text, p_reader.ReadByte());
                m_mapping.Add(text, TypeCode.Byte);
            }
            num = p_reader.ReadInt32();
            if (num > 0 && m_shorts == null)
            {
                m_shorts = new Dictionary <String, Int16>(num);
            }
            for (Int32 i = 0; i < num; i++)
            {
                String text = p_reader.ReadString();
                m_shorts.Add(text, p_reader.ReadInt16());
                m_mapping.Add(text, TypeCode.Int16);
            }
            num = p_reader.ReadInt32();
            if (num > 0 && m_ushorts == null)
            {
                m_ushorts = new Dictionary <String, UInt16>(num);
            }
            for (Int32 i = 0; i < num; i++)
            {
                String text = p_reader.ReadString();
                m_ushorts.Add(text, p_reader.ReadUInt16());
                m_mapping.Add(text, TypeCode.UInt16);
            }
            num = p_reader.ReadInt32();
            if (num > 0 && m_ints == null)
            {
                m_ints = new Dictionary <String, Int32>(num);
            }
            for (Int32 i = 0; i < num; i++)
            {
                String text = p_reader.ReadString();
                m_ints.Add(text, p_reader.ReadInt32());
                m_mapping.Add(text, TypeCode.Int32);
            }
            num = p_reader.ReadInt32();
            if (num > 0 && m_uints == null)
            {
                m_uints = new Dictionary <String, UInt32>(num);
            }
            for (Int32 i = 0; i < num; i++)
            {
                String text = p_reader.ReadString();
                m_uints.Add(text, p_reader.ReadUInt32());
                m_mapping.Add(text, TypeCode.UInt32);
            }
            num = p_reader.ReadInt32();
            if (num > 0 && m_longs == null)
            {
                m_longs = new Dictionary <String, Int64>(num);
            }
            for (Int32 i = 0; i < num; i++)
            {
                String text = p_reader.ReadString();
                m_longs.Add(text, p_reader.ReadInt64());
                m_mapping.Add(text, TypeCode.Int64);
            }
            num = p_reader.ReadInt32();
            if (num > 0 && m_ulongs == null)
            {
                m_ulongs = new Dictionary <String, UInt64>(num);
            }
            for (Int32 i = 0; i < num; i++)
            {
                String text = p_reader.ReadString();
                m_ulongs.Add(text, p_reader.ReadUInt64());
                m_mapping.Add(text, TypeCode.UInt64);
            }
            num = p_reader.ReadInt32();
            if (num > 0 && m_floats == null)
            {
                m_floats = new Dictionary <String, Single>(num);
            }
            for (Int32 i = 0; i < num; i++)
            {
                String text = p_reader.ReadString();
                m_floats.Add(text, p_reader.ReadSingle());
                m_mapping.Add(text, TypeCode.Single);
            }
            num = p_reader.ReadInt32();
            if (num > 0 && m_doubles == null)
            {
                m_doubles = new Dictionary <String, Double>(num);
            }
            for (Int32 i = 0; i < num; i++)
            {
                String text = p_reader.ReadString();
                m_doubles.Add(text, p_reader.ReadDouble());
                m_mapping.Add(text, TypeCode.Double);
            }
            num = p_reader.ReadInt32();
            if (num > 0 && m_strings == null)
            {
                m_strings = new Dictionary <String, String>(num);
            }
            for (Int32 i = 0; i < num; i++)
            {
                String text = p_reader.ReadString();
                m_strings.Add(text, p_reader.ReadString());
                m_mapping.Add(text, TypeCode.String);
            }
            num = p_reader.ReadInt32();
            if (num > 0 && m_dataObjects == null)
            {
                m_dataObjects = new Dictionary <String, SaveGameData>(num);
            }
            for (Int32 i = 0; i < num; i++)
            {
                String       text         = p_reader.ReadString();
                SaveGameData saveGameData = new SaveGameData(text);
                saveGameData.Read(p_reader);
                m_dataObjects.Add(text, saveGameData);
                m_mapping.Add(text, TypeCode.Object);
            }
        }