public LoadedData(Status status, long saveTime, PlayerData playerData, GameSettings gameSettings, GameSceneManager.SceneStack sceneStack) { this.status = status; this.saveTime = saveTime; this.playerData = playerData; this.gameSettings = gameSettings; this.sceneStack = sceneStack; }
public static void DeserializeData(Stream stream, out long saveTime, out PlayerData playerData, out GameSettings gameSettings, out GameSceneManager.SceneStack sceneStack) => DeserializeData(defaultSerializerVersion, stream, out saveTime, out playerData, out gameSettings, out sceneStack);
public override void SerializeSceneStack(Stream stream, GameSceneManager.SceneStack stack) { List <byte> bytes = new List <byte>(); string s = stack.AsString; byte[] stringBytes = Encoding.ASCII.GetBytes(s); bytes.AddRange(BitConverter.GetBytes(stringBytes.Length)); bytes.AddRange(stringBytes); stream.Write(bytes.ToArray(), 0, bytes.Count); }
public LoadedData(Status status) { if (status == Status.Success) { throw new ArgumentException("This initialiser should only be used when the data failed to load"); } this.status = status; saveTime = default; playerData = default; gameSettings = default; sceneStack = default; }
public static void DeserializeData(ushort versionNumber, Stream stream, out long saveTime, out PlayerData playerData, out GameSettings gameSettings, out GameSceneManager.SceneStack sceneStack) { if (!serializers.ContainsKey(versionNumber)) { throw new ArgumentException($"No serializer for provided version number ({versionNumber})"); } else { serializers[versionNumber].DeserializeData(stream, out saveTime, out playerData, out gameSettings, out sceneStack); } }
public abstract void SerializeSceneStack(Stream stream, GameSceneManager.SceneStack stack);
public abstract void DeserializeData(Stream stream, out long saveTime, out PlayerData playerData, out GameSettings gameSettings, out GameSceneManager.SceneStack sceneStack);
public override void DeserializeData(Stream stream, out long saveTime, out PlayerData playerData, out GameSettings gameSettings, out GameSceneManager.SceneStack sceneStack) { byte[] buffer; Guid playerGuid; ulong gameStartTime, distanceWalked, timePlayed; PokemonInstance[] partyPokemon; Guid[] tradeReceivedPokemonGuids; PlayerData.PokemonStorageSystem storageSystemPokemon; GameSceneManager.SceneStack respawnSceneStack; int money; byte spriteId; string name; List <int> defeatedGymIds, npcsBattled, npcsTalkedTo, collectedDroppedItemIds; bool respawnSceneStackSet, cheatsUsed; Dictionary <int, int> generalItems, medicineItems, battleItems, pokeBallItems, tmItems; PlayerData.Pokedex pokedex; GameSettings.TextSpeed textSpeed; float musicVolume, sfxVolume; //Header DeserializeDetails(stream, out ushort saveFileVersion, out saveTime); if (saveFileVersion != GetVersionCode()) { throw new SerializerVersionMismatchException("Save file version of provided data isn't valid for this serializer", saveFileVersion, GetVersionCode()); } //Player buffer = new byte[16]; stream.Read(buffer, 0, 16); playerGuid = new Guid(buffer); buffer = new byte[8]; stream.Read(buffer, 0, 8); gameStartTime = BitConverter.ToUInt64(buffer, 0); //Pokemon DeserializePlayerPartyAndStorageSystemPokemon(stream, out partyPokemon, out storageSystemPokemon); //Trade-Received Pokemon DeserializePlayerTradeReceivedPokemonGuids(stream, out tradeReceivedPokemonGuids); //Scene Stacks sceneStack = DeserializeSceneStack(stream); respawnSceneStackSet = DeserializeBool(stream); if (respawnSceneStackSet) { respawnSceneStack = DeserializeSceneStack(stream); } else { respawnSceneStack = default; } //Profile Details buffer = new byte[1]; stream.Read(buffer, 0, 1); spriteId = buffer[0]; name = DeserializeString(stream); buffer = new byte[4]; stream.Read(buffer, 0, 4); money = BitConverter.ToInt32(buffer, 0); //Defeated Gyms buffer = new byte[4]; stream.Read(buffer, 0, 4); int numberOfDefeatedGyms = BitConverter.ToInt32(buffer, 0); defeatedGymIds = new List <int>(); for (int i = 0; i < numberOfDefeatedGyms; i++) { buffer = new byte[4]; stream.Read(buffer, 0, 4); defeatedGymIds.Add(BitConverter.ToInt32(buffer, 0)); } //Stats buffer = new byte[8]; stream.Read(buffer, 0, 8); distanceWalked = BitConverter.ToUInt64(buffer, 0); buffer = new byte[8]; stream.Read(buffer, 0, 8); timePlayed = BitConverter.ToUInt64(buffer, 0); cheatsUsed = DeserializeBool(stream); //Inventory generalItems = DeserializeInventorySection(stream); medicineItems = DeserializeInventorySection(stream); battleItems = DeserializeInventorySection(stream); pokeBallItems = DeserializeInventorySection(stream); tmItems = DeserializeInventorySection(stream); //Pokedex pokedex = DeserializePokedex(stream); //NPCs Battled buffer = new byte[4]; stream.Read(buffer, 0, 4); int numberOfNpcsBattled = BitConverter.ToInt32(buffer, 0); npcsBattled = new List <int>(); for (int i = 0; i < numberOfNpcsBattled; i++) { buffer = new byte[4]; stream.Read(buffer, 0, 4); npcsBattled.Add(BitConverter.ToInt32(buffer, 0)); } //NPCs Talked To buffer = new byte[4]; stream.Read(buffer, 0, 4); int numberOfNpcsTalkedTo = BitConverter.ToInt32(buffer, 0); npcsTalkedTo = new List <int>(); for (int i = 0; i < numberOfNpcsTalkedTo; i++) { buffer = new byte[4]; stream.Read(buffer, 0, 4); npcsTalkedTo.Add(BitConverter.ToInt32(buffer, 0)); } //Settings buffer = new byte[4]; stream.Read(buffer, 0, 4); int textSpeedIndex = BitConverter.ToInt32(buffer, 0); textSpeed = GameSettings.textSpeedOptions[textSpeedIndex]; buffer = new byte[4]; stream.Read(buffer, 0, 4); musicVolume = BitConverter.ToSingle(buffer, 0); buffer = new byte[4]; stream.Read(buffer, 0, 4); sfxVolume = BitConverter.ToSingle(buffer, 0); //Dropped Items Collected buffer = new byte[4]; stream.Read(buffer, 0, 4); int numberOfCollectedDroppedItemIds = BitConverter.ToInt32(buffer, 0); collectedDroppedItemIds = new List <int>(); for (int i = 0; i < numberOfCollectedDroppedItemIds; i++) { buffer = new byte[4]; stream.Read(buffer, 0, 4); collectedDroppedItemIds.Add(BitConverter.ToInt32(buffer, 0)); } //Setting output playerData = new PlayerData() { partyPokemon = partyPokemon, boxPokemon = storageSystemPokemon, profile = new PlayerData.Profile() { guid = playerGuid, name = name, spriteId = spriteId, money = money, defeatedGymIds = defeatedGymIds }, stats = new PlayerData.Stats() { gameStartTime = gameStartTime, distanceWalked = distanceWalked, timePlayed = timePlayed, cheatsUsed = cheatsUsed }, inventory = new PlayerData.Inventory(), pokedex = pokedex, npcsBattled = npcsBattled, npcsTalkedTo = npcsTalkedTo, respawnSceneStackSet = respawnSceneStackSet, respawnSceneStack = respawnSceneStack, collectedDroppedItemsIds = collectedDroppedItemIds }; playerData.inventory.generalItems.SetItems(generalItems); playerData.inventory.medicineItems.SetItems(medicineItems); playerData.inventory.battleItems.SetItems(battleItems); playerData.inventory.pokeBalls.SetItems(pokeBallItems); playerData.inventory.tmItems.SetItems(tmItems); gameSettings = new GameSettings() { textSpeed = textSpeed, musicVolume = musicVolume, sfxVolume = sfxVolume }; }
private void LaunchSceneStack(GameSceneManager.SceneStack sceneStack) { PrepareToLaunch(); GameSceneManager.LoadSceneStack(sceneStack); }
public override void DeserializeData(Stream stream, out long saveTime, out PlayerData playerData, out GameSettings gameSettings, out GameSceneManager.SceneStack sceneStack) { base.DeserializeData(stream, out saveTime, out playerData, out gameSettings, out sceneStack); List <ProgressionEvent> completedProgressionEvents; //Completed Progression Events byte[] buffer = new byte[4]; stream.Read(buffer, 0, 4); int numberOfCompletedProgressionEvents = BitConverter.ToInt32(buffer, 0); completedProgressionEvents = new List <ProgressionEvent>(); for (int i = 0; i < numberOfCompletedProgressionEvents; i++) { buffer = new byte[4]; stream.Read(buffer, 0, 4); completedProgressionEvents.Add((ProgressionEvent)BitConverter.ToInt32(buffer, 0)); } playerData.completedProgressionEvents = completedProgressionEvents; }