public void SetupInitialLoadout(int newHackerId) { hackerId = newHackerId; switch (hackerId) { case 0: rig = CreateInstance <HackerMod>(); rig.SetupMod("Basic Rig"); HackerModChip newSoftware = CreateInstance <HackerModChip>(); newSoftware.SetupChip("Cheap Ghost"); rig.InstallChip(newSoftware, 0); neuralImplant = CreateInstance <HackerMod>(); neuralImplant.SetupMod("Basic Cranial Dock"); HackerModChip newWetware = CreateInstance <HackerModChip>(); newWetware.SetupChip("JuryRigged QwikThink"); neuralImplant.InstallChip(newWetware, 0); uplink = CreateInstance <HackerMod>(); uplink.SetupMod("Basic Uplink"); HackerModChip newChipset = CreateInstance <HackerModChip>(); newChipset.SetupChip("Salvaged Router"); uplink.InstallChip(newChipset, 0); break; } }
public void EquipItem(HackerMod hackerMod) { Debug.Log("Hackermod stuff"); List <HackerModChip> equippedChips = new List <HackerModChip>(); switch (hackerMod.GetItemType()) { case Item.ItemTypes.NeuralImplant: equippedChips = neuralImplant.GetAttachedChips(); if (equippedChips.Count < hackerMod.GetCurrentLevelSlotCount()) { equippedChips.AddRange(FillEmptySlotsWithInventoryItems(Item.ItemTypes.Wetware, hackerMod.GetCurrentLevelSlotCount() - equippedChips.Count)); } neuralImplant = hackerMod; break; case Item.ItemTypes.Rig: equippedChips = rig.GetAttachedChips(); if (equippedChips.Count < hackerMod.GetCurrentLevelSlotCount()) { equippedChips.AddRange(FillEmptySlotsWithInventoryItems(Item.ItemTypes.Software, hackerMod.GetCurrentLevelSlotCount() - equippedChips.Count)); } rig = hackerMod; break; case Item.ItemTypes.Uplink: equippedChips = uplink.GetAttachedChips(); if (equippedChips.Count < hackerMod.GetCurrentLevelSlotCount()) { equippedChips.AddRange(FillEmptySlotsWithInventoryItems(Item.ItemTypes.Chipset, hackerMod.GetCurrentLevelSlotCount() - equippedChips.Count)); } uplink = hackerMod; break; } for (int i = 0; i < hackerMod.GetCurrentLevelSlotCount(); i++) { hackerMod.InstallChip(equippedChips[i], i); } }
public void LoadPlayer(int saveSlotToLoad) { SaveObject saveObject = SaveSystem.LoadPlayerData(saveSlotToLoad); // Recreate Owned Items ownedItems = new List <Item>(); List <SaveItem> deserializedSaveItems = JsonConvert.DeserializeObject <List <SaveItem> >(saveObject.items); foreach (SaveItem saveItem in deserializedSaveItems) { if (saveItem.hackerOrRunner == (int)Item.HackerRunner.Hacker) { // Hacker Items if (saveItem.itemType == (int)Item.ItemTypes.Rig || saveItem.itemType == (int)Item.ItemTypes.NeuralImplant || saveItem.itemType == (int)Item.ItemTypes.Uplink) { HackerMod newHackerMod = ScriptableObject.CreateInstance <HackerMod>(); newHackerMod.RecreateSavedHackerMod(saveItem); ownedItems.Add(newHackerMod); } else { HackerModChip newHackerModChip = ScriptableObject.CreateInstance <HackerModChip>(); newHackerModChip.RecreateSavedHackerModChip(saveItem); ownedItems.Add(newHackerModChip); } } else if (saveItem.hackerOrRunner == (int)Item.HackerRunner.Runner) { // Create Runner Items RunnerMod newRunnerMod = ScriptableObject.CreateInstance <RunnerMod>(); newRunnerMod.RecreateSavedRunnerMod(saveItem); ownedItems.Add(newRunnerMod); } } // Create Runners List <SaveRunner> saveRunners = JsonConvert.DeserializeObject <List <SaveRunner> >(saveObject.runners); ownedRunners = new List <CharacterData>(); foreach (SaveRunner saveRunner in saveRunners) { CharacterData newRunner = ScriptableObject.CreateInstance <CharacterData>(); newRunner.RecreateRunnerFromSaveData(saveRunner); Loadout runnerLoadout = newRunner.GetLoadout(); runnerLoadout.EquipItem((RunnerMod)GetLoadedItemById(saveRunner.headItemId)); runnerLoadout.EquipItem((RunnerMod)GetLoadedItemById(saveRunner.torsoModId)); runnerLoadout.EquipItem((RunnerMod)GetLoadedItemById(saveRunner.exoskeletonModId)); runnerLoadout.EquipItem((RunnerMod)GetLoadedItemById(saveRunner.leftArmModId), Loadout.LeftOrRight.Left); runnerLoadout.EquipItem((RunnerMod)GetLoadedItemById(saveRunner.rightArmModId), Loadout.LeftOrRight.Right); runnerLoadout.EquipItem((RunnerMod)GetLoadedItemById(saveRunner.leftLegModId), Loadout.LeftOrRight.Left); runnerLoadout.EquipItem((RunnerMod)GetLoadedItemById(saveRunner.rightLegModId), Loadout.LeftOrRight.Right); runnerLoadout.EquipItem((RunnerMod)GetLoadedItemById(saveRunner.weaponModId)); ownedRunners.Add(newRunner); if (newRunner.GetRunnerId() == saveObject.currentRunner) { currentRunner = newRunner; } } List <SaveHacker> saveHackers = JsonConvert.DeserializeObject <List <SaveHacker> >(saveObject.hackers); ownedHackers = new List <HackerData>(); foreach (SaveHacker saveHacker in saveHackers) { HackerData newHacker = ScriptableObject.CreateInstance <HackerData>(); newHacker.RecreateHackerFromSave(saveHacker); if (!newHacker.GetIsLocked()) { HackerMod newRigMod = (HackerMod)GetLoadedItemById(saveHacker.rigModId); if (saveHacker.rigSoftwareId1 != -1) { newRigMod.InstallChip((HackerModChip)GetLoadedItemById(saveHacker.rigSoftwareId1), 0); } if (saveHacker.rigSoftwareId2 != -1) { newRigMod.InstallChip((HackerModChip)GetLoadedItemById(saveHacker.rigSoftwareId2), 1); } if (saveHacker.rigSoftwareId3 != -1) { newRigMod.InstallChip((HackerModChip)GetLoadedItemById(saveHacker.rigSoftwareId3), 2); } newHacker.GetHackerLoadout().EquipRecreatedItem(newRigMod); HackerMod newNeuralImplantMod = (HackerMod)GetLoadedItemById(saveHacker.neuralImplantId); if (saveHacker.neuralWetwareId1 != -1) { newNeuralImplantMod.InstallChip((HackerModChip)GetLoadedItemById(saveHacker.neuralWetwareId1), 0); } if (saveHacker.neuralWetwareId2 != -1) { newNeuralImplantMod.InstallChip((HackerModChip)GetLoadedItemById(saveHacker.neuralWetwareId2), 1); } if (saveHacker.neuralWetwareId3 != -1) { newNeuralImplantMod.InstallChip((HackerModChip)GetLoadedItemById(saveHacker.neuralWetwareId3), 2); } newHacker.GetHackerLoadout().EquipRecreatedItem(newNeuralImplantMod); HackerMod newUplinkMod = (HackerMod)GetLoadedItemById(saveHacker.uplinkId); if (saveHacker.uplinkChipsetId1 != -1) { newUplinkMod.InstallChip((HackerModChip)GetLoadedItemById(saveHacker.uplinkChipsetId1), 0); } if (saveHacker.uplinkChipsetId2 != -1) { newUplinkMod.InstallChip((HackerModChip)GetLoadedItemById(saveHacker.uplinkChipsetId2), 1); } if (saveHacker.uplinkChipsetId3 != -1) { newUplinkMod.InstallChip((HackerModChip)GetLoadedItemById(saveHacker.uplinkChipsetId3), 2); } newHacker.GetHackerLoadout().EquipRecreatedItem(newUplinkMod); } ownedHackers.Add(newHacker); if (newHacker.GetHackerId() == saveObject.currentHacker) { currentHacker = newHacker; } } List <SaveJob> saveJobs = JsonConvert.DeserializeObject <List <SaveJob> >(saveObject.jobOptions); currentJobOptions = new List <Job>(); foreach (SaveJob saveJob in saveJobs) { Job newJob = ScriptableObject.CreateInstance <Job>(); newJob.LoadJobFromSave(saveJob); currentJobOptions.Add(newJob); } // General Player Data currentCredits = saveObject.playerCredits; generatedItemId = saveObject.currentItemId; saveSlot = saveObject.saveSlot; // Shop Stuff currentShopType = (ShopMenu.ShopForSaleType)saveObject.currentShopType; previousShopTypes = new List <ShopMenu.ShopForSaleType>(); List <int> shopTypeIds = JsonConvert.DeserializeObject <List <int> >(saveObject.previousShopTypes); foreach (int shopTypeId in shopTypeIds) { previousShopTypes.Add((ShopMenu.ShopForSaleType)shopTypeId); } List <SaveItem> savedShopItems = JsonConvert.DeserializeObject <List <SaveItem> >(saveObject.itemsForSale); itemsForSale = new List <Item>(); foreach (SaveItem saveItem in savedShopItems) { if (saveItem.hackerOrRunner == (int)Item.HackerRunner.Hacker) { // Hacker Items if (saveItem.itemType == (int)Item.ItemTypes.Rig || saveItem.itemType == (int)Item.ItemTypes.NeuralImplant || saveItem.itemType == (int)Item.ItemTypes.Uplink) { HackerMod newHackerMod = ScriptableObject.CreateInstance <HackerMod>(); newHackerMod.RecreateSavedHackerMod(saveItem); itemsForSale.Add(newHackerMod); } else { HackerModChip newHackerModChip = ScriptableObject.CreateInstance <HackerModChip>(); newHackerModChip.RecreateSavedHackerModChip(saveItem); itemsForSale.Add(newHackerModChip); } } else if (saveItem.hackerOrRunner == (int)Item.HackerRunner.Runner) { // Create Runner Items RunnerMod newRunnerMod = ScriptableObject.CreateInstance <RunnerMod>(); newRunnerMod.RecreateSavedRunnerMod(saveItem); itemsForSale.Add(newRunnerMod); } } isPlayerLoaded = true; }