internal void Read(BinaryReader reader, QuestsXml questsXml) { Utils.VerifyVersion(reader.ReadByte(), SaveVersionConstants.QUEST_JOURNAL); //num short questNumber = reader.ReadInt16(); for (int i = 0; i < questNumber; ++i) { quests.Add(new Quest(reader, questsXml) { ownerJournal = this }); } }
internal QuestJournal(BinaryReader reader, QuestsXml questsXml) { Read(reader); }
internal void Read(BinaryReader reader, QuestsXml questsXml) { id = reader.ReadString(); Utils.VerifyVersion(reader.ReadByte(), SaveVersionConstants.QUEST_QUEST); Utils.VerifyVersion(reader.ReadByte(), SaveVersionConstants.QUEST_FILE); currentState = new Value <QuestState>((QuestState)reader.ReadByte()); sharedOwnerId = new Value <int>(reader.ReadInt32()); questGiverId = new Value <int>(reader.ReadInt32()); if (currentState.Get() == QuestState.InProgress) { tracked = new Value <bool>(reader.ReadBoolean()); currentPhase = new Value <byte>(reader.ReadByte()); questCode = new Value <int>(reader.ReadInt32()); } int objectiveCount = questsXml.quests[id].objectives.Count; for (int i = 0; i < objectiveCount; ++i) { objectives.Add(new BaseObjective(reader)); } //num2 byte dataVariableCount = reader.ReadByte(); for (byte i = 0; i < dataVariableCount; i++) { string key = reader.ReadString(); string value = reader.ReadString(); if (!dataVariables.ContainsKey(key)) { dataVariables.Add(key, value); } else { dataVariables[key] = value; } } if (currentState.Get() == QuestState.InProgress) { byte positionDataLength = reader.ReadByte(); for (int i = 0; i < positionDataLength; ++i) { PositionDataTypes key = (PositionDataTypes)reader.ReadByte(); Vector3D <float> value = new Vector3D <float> { x = new Value <float>(reader.ReadSingle()), y = new Value <float>(reader.ReadSingle()), z = new Value <float>(reader.ReadSingle()) }; if (!positionData.ContainsKey(key)) { positionData.Add(key, value); } else { positionData[key] = value; } } rallyMarkerActivated = new Value <bool>(reader.ReadBoolean()); } else { finishTime = new Value <ulong>(reader.ReadUInt64()); } if (currentState.Get() == QuestState.InProgress || currentState.Get() == QuestState.ReadyForTurnIn) { int rewardsCount = questsXml.quests[id].rewards.Count; for (int i = 0; i < rewardsCount; ++i) { rewardIndexes.Add(reader.ReadByte()); } } }
internal Quest(BinaryReader reader, QuestsXml questsXml) { Read(reader, questsXml); }
private void Read(BinaryReader reader, QuestsXml questsXml = null) { if (reader.ReadChar() == 't' && reader.ReadChar() == 't' && reader.ReadChar() == 'p' && reader.ReadChar() == '\0') { Utils.VerifyVersion(reader.ReadByte(), SaveVersionConstants.PLAYER_DATA_FILE); ecd.Read(reader); inventory = ItemStack.ReadItemStack(reader); selectedInventorySlot = new Value <byte>(reader.ReadByte()); bag = ItemStack.ReadItemStack(reader); //num ushort alreadyCraftedListLength = reader.ReadUInt16(); for (ushort i = 0; i < alreadyCraftedListLength; ++i) { alreadyCraftedList.Add(reader.ReadString()); } //b byte spawnPointCount = reader.ReadByte(); for (byte i = 0; i < spawnPointCount; ++i) { Vector3D <int> spawnPoint = new Vector3D <int> { x = new Value <int>(reader.ReadInt32()), y = new Value <int>(reader.ReadInt32()), z = new Value <int>(reader.ReadInt32()) }; spawnPoints.Add(spawnPoint); } selectedSpawnPointKey = new Value <long>(reader.ReadInt64()); reader.ReadBoolean(); reader.ReadInt16(); bLoaded = new Value <bool>(reader.ReadBoolean()); lastSpawnPosition = new Vector3D <int> { x = new Value <int>(reader.ReadInt32()), y = new Value <int>(reader.ReadInt32()), z = new Value <int>(reader.ReadInt32()), heading = new Value <float>(reader.ReadSingle()) }; id = new Value <int>(reader.ReadInt32()); droppedBackpackPosition = new Vector3D <int> { x = new Value <int>(reader.ReadInt32()), y = new Value <int>(reader.ReadInt32()), z = new Value <int>(reader.ReadInt32()) }; playerKills = new Value <int>(reader.ReadInt32()); zombieKills = new Value <int>(reader.ReadInt32()); deaths = new Value <int>(reader.ReadInt32()); score = new Value <int>(reader.ReadInt32()); equipment = new Equipment(reader); //num ushort unlockedRecipeListLength = reader.ReadUInt16(); for (ushort i = 0; i < unlockedRecipeListLength; ++i) { unlockedRecipeList.Add(reader.ReadString()); } reader.ReadUInt16(); markerPosition = new Vector3D <int> { x = new Value <int>(reader.ReadInt32()), y = new Value <int>(reader.ReadInt32()), z = new Value <int>(reader.ReadInt32()) }; favoriteEquipment = new Equipment(reader); bCrouchedLocked = new Value <bool>(reader.ReadBoolean()); craftingData = new CraftingData(reader); //num ushort favoriteRecipeListLength = reader.ReadUInt16(); for (ushort i = 0; i < favoriteRecipeListLength; ++i) { favoriteRecipeList.Add(reader.ReadString()); } totalItemsCrafted = new Value <uint>(reader.ReadUInt32()); distanceWalked = new Value <float>(reader.ReadSingle()); longestLife = new Value <float>(reader.ReadSingle()); waypoints = new WaypointCollection(reader); questJournal = new QuestJournal(reader, questsXml); deathUpdateTime = new Value <int>(reader.ReadInt32()); currentLife = new Value <float>(reader.ReadSingle()); bDead = new Value <bool>(reader.ReadBoolean()); reader.ReadByte(); //bModdedSaveGame; I was asked to always save this variable as true reader.ReadBoolean(); playerJournal = new PlayerJournal(reader); rentedVMPosition = new Vector3D <int> { x = new Value <int>(reader.ReadInt32()), y = new Value <int>(reader.ReadInt32()), z = new Value <int>(reader.ReadInt32()) }; rentalEndTime = new Value <int>(reader.ReadInt32()); ushort trackedFriendEntityIdsCount = reader.ReadUInt16(); for (ushort i = 0; i < trackedFriendEntityIdsCount; ++i) { trackedFriendEntityIds.Add(reader.ReadInt32()); } //num2 int progressionDataLength = reader.ReadInt32(); progressionData = ((progressionDataLength > 0) ? new MemoryStream(reader.ReadBytes(progressionDataLength)) : new MemoryStream()); //num2 int buffDataLength = reader.ReadInt32(); buffData = ((buffDataLength > 0) ? new MemoryStream(reader.ReadBytes(buffDataLength)) : new MemoryStream()); //num2 int stealthDataLength = reader.ReadInt32(); stealthData = ((stealthDataLength > 0) ? new MemoryStream(reader.ReadBytes(stealthDataLength)) : new MemoryStream()); ushort favoriteCreativeStacksCount = reader.ReadUInt16(); for (ushort i = 0; i < favoriteCreativeStacksCount; ++i) { favoriteCreativeStacks.Add(reader.ReadUInt16()); } } else { throw new IOException("Save file corrupted!"); } }
public void Load(string path, QuestsXml questsXml = null) { using (BinaryReader reader = new BinaryReader(new FileStream(path, FileMode.Open))) { Read(reader, questsXml); } }