void SerializeHookahMakers(BinaryFormatter formatter, FileStream stream) { formatter.Serialize(stream, player.workers.Count); foreach (HookahMaker worker in player.workers) { formatter.Serialize(stream, worker.prefabName); worker.Save(formatter, stream); HookahMakerData hookahMakerData = new HookahMakerData(); if (worker.servedHookah == null) { hookahMakerData.hookahIndex = -1; } else { for (int i = 0; i < player.hookahs.Count; i++) { if (worker.servedHookah == player.hookahs[i]) { hookahMakerData.hookahIndex = i; } } } if (worker.servedTable == null) { hookahMakerData.tableIndex = -1; } else { for (int i = 0; i < player.tables.Count; i++) { if (worker.servedTable == player.tables[i]) { hookahMakerData.tableIndex = i; } } } formatter.Serialize(stream, hookahMakerData); } }
public void Load(BinaryFormatter formatter, FileStream stream) { // NOTE: Loading clients foreach (Client client in player.clients) { Destroy(client.gameObject); } player.clients.Clear(); int clientsCount = (int)formatter.Deserialize(stream); ClientGenerator generator = FindObjectOfType <ClientGenerator>(); for (int i = 0; i < clientsCount; i++) { string prefabName = (string)formatter.Deserialize(stream); Client clientPrefab = PrefabStorage.Instance.GetClientByName(prefabName); Client client = Instantiate(clientPrefab); client.Load(formatter, stream); client.prefabName = prefabName; player.AddClient(client); ClientData clientData = (ClientData)formatter.Deserialize(stream); client.clientData = clientData; } // NOTE: Loading tables foreach (Table table in player.tables) { Destroy(table.gameObject); } int tablesCount = (int)formatter.Deserialize(stream); player.tables.Clear(); for (int i = 0; i < tablesCount; i++) { string prefabName = (string)formatter.Deserialize(stream); Table tablePrefab = PrefabStorage.Instance.GetTableByName(prefabName); Table table = Instantiate(tablePrefab); table.Load(formatter, stream); table.prefabName = prefabName; player.tables.Add(table); TableData tableData = (TableData)formatter.Deserialize(stream); table.tableData = tableData; } // NOTE: Loading hookahs foreach (Hookah hookah in player.hookahs) { Destroy(hookah.gameObject); } int hookahsCount = (int)formatter.Deserialize(stream); player.hookahs.Clear(); for (int i = 0; i < hookahsCount; i++) { string prefabName = (string)formatter.Deserialize(stream); Hookah hookahPrefab = PrefabStorage.Instance.GetHookahByName(prefabName); Hookah hookah = Instantiate(hookahPrefab); hookah.Load(formatter, stream); hookah.prefabName = prefabName; player.hookahs.Add(hookah); } // NOTE: Loading hookah makers foreach (HookahMaker worker in player.workers) { Destroy(worker.gameObject); } int workersCount = (int)formatter.Deserialize(stream); player.workers.Clear(); for (int i = 0; i < workersCount; i++) { string prefabName = (string)formatter.Deserialize(stream); HookahMaker hookahMakerPrefab = PrefabStorage.Instance.GetHookahMakerByName(prefabName); HookahMaker worker = Instantiate(hookahMakerPrefab); worker.Load(formatter, stream); worker.prefabName = prefabName; player.workers.Add(worker); HookahMakerData hookahMakerData = (HookahMakerData)formatter.Deserialize(stream); worker.hookahMakerData = hookahMakerData; } RecreateClientLinks(formatter, stream); RecreateTableLinks(formatter, stream); RecreateHookahMakerLinks(formatter, stream); }