コード例 #1
0
    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;
        }
    }
コード例 #2
0
    private void SetupAbilityButtons()
    {
        AbilityButton[] abilityButtons = FindObjectsOfType <AbilityButton>();
        HackerLoadout   currentLoadout = hacker.GetHackerLoadout();

        foreach (AbilityButton abilityButton in abilityButtons)
        {
            switch (abilityButton.GetWhichAbility())
            {
            case "rig":
                HackerMod rigMod = currentLoadout.GetRigMod();
                abilityButton.SetupAbility(rigMod);
                break;

            case "neuralImplant":
                HackerMod neuralImplantMod = currentLoadout.GetNeuralImplantMod();
                abilityButton.SetupAbility(neuralImplantMod);
                break;

            case "uplink":
                HackerMod uplinkMod = currentLoadout.GetUplinkMod();
                abilityButton.SetupAbility(uplinkMod);
                break;
            }
        }
    }
コード例 #3
0
    private void SetupModActiveAbility()
    {
        hackerModAbilityDescription.text = item.GetItemAbilityDescription();
        HackerMod hackerMod = item as HackerMod;

        string slotString = hackerMod.GetMaxSlotCount().ToString();

        switch (hackerMod.GetItemType())
        {
        case Item.ItemTypes.NeuralImplant:
            slotString += " Wetware";
            break;

        case Item.ItemTypes.Rig:
            slotString += " Software";
            break;

        case Item.ItemTypes.Uplink:
            slotString += " Chipsets";
            break;
        }
        slotsField.text = slotString;

        string path = "Icons/ActiveAbilityIcons/Ability" + hackerMod.GetActiveAbilityId().ToString();

        hackerModAbilityIcon.sprite = Resources.Load <Sprite>(path);
        string uses = " use";

        if (hackerMod.GetActiveAbilityUses() > 1)
        {
            uses = " uses";
        }
        hackerModAbilityUseCount.text = hackerMod.GetActiveAbilityUses().ToString() + uses;
    }
コード例 #4
0
    private void SetupActiveAbilityHolders()
    {
        UpgradeMenuActiveAbilityHolder[]      abilities      = { activeAbilityHolder1, activeAbilityHolder2, activeAbilityHolder3, activeAbilityHolder4, activeAbilityHolder5 };
        List <UpgradeMenuActiveAbilityHolder> abilityHolders = new List <UpgradeMenuActiveAbilityHolder>();

        abilityHolders.AddRange(abilities);

        int       counter   = 0;
        HackerMod hackerMod = item as HackerMod;

        foreach (UpgradeMenuActiveAbilityHolder abilityHolder in abilityHolders)
        {
            counter++; // start off with #1
            string abilityDescription = "";
            int    abilityUses        = 0;

            bool isCurrentLevel = false;
            if (counter == hackerMod.GetCurrentItemLevel())
            {
                isCurrentLevel = true;
            }

            switch (counter)
            {
            case 1:
                abilityDescription = hackerMod.GetLevelOneItemAbilityDescription();
                abilityUses        = hackerMod.GetLevel1AbilityUses();
                break;

            case 2:
                abilityDescription = hackerMod.GetLevelTwoItemAbilityDescription();
                abilityUses        = hackerMod.GetLevel2AbilityUses();
                break;

            case 3:
                abilityDescription = hackerMod.GetLevelThreeItemAbilityDescription();
                abilityUses        = hackerMod.GetLevel3AbilityUses();
                break;

            case 4:
                abilityDescription = hackerMod.GetLevelFourItemAbilityDescription();
                abilityUses        = hackerMod.GetLevel4AbilityUses();
                break;

            case 5:
                abilityDescription = hackerMod.GetLevelFiveItemAbilityDescription();
                abilityUses        = hackerMod.GetLevel5AbilityUses();
                break;
            }

            string path = "Icons/ActiveAbilityIcons/Ability" + hackerMod.GetActiveAbilityId().ToString();
            Sprite hackerAbilityIcon = Resources.Load <Sprite>(path);

            abilityHolder.SetupAbilityHolder(hackerAbilityIcon, item.GetCurrentItemLevel(), counter, isCurrentLevel, abilityDescription, abilityUses);
        }
    }
コード例 #5
0
 public void UpgradeItem()
 {
     if (itemLevel < itemMaxLevel)
     {
         itemLevel++;
     }
     if (this.IsHackerMod())
     {
         HackerMod modToCheck = this as HackerMod;
         modToCheck.FillExtraSlotsWithEmptyMods();
     }
 }
コード例 #6
0
    public string GenerateSlotDisplayString()
    {
        string    displayString = "";
        HackerMod mod           = item as HackerMod;

        if (item.GetItemLevel() == 1)
        {
            displayString += "<color=#FFFFFF>" + mod.GetLevel1SlotCount() + "</color>";
        }
        else
        {
            displayString += mod.GetLevel1SlotCount();
        }

        if (item.GetItemLevel() == 2)
        {
            displayString += "   <color=#FFFFFF>" + mod.GetLevel2SlotCount() + "</color>";
        }
        else
        {
            displayString += "   " + mod.GetLevel2SlotCount();
        }

        if (item.GetItemLevel() == 3)
        {
            displayString += "   <color=#FFFFFF>" + mod.GetLevel3SlotCount() + "</color>";
        }
        else
        {
            displayString += "   " + mod.GetLevel3SlotCount();
        }

        if (item.GetItemLevel() == 4)
        {
            displayString += "   <color=#FFFFFF>" + mod.GetLevel4SlotCount() + "</color>";
        }
        else
        {
            displayString += "   " + mod.GetLevel4SlotCount();
        }

        if (item.GetItemLevel() == 5)
        {
            displayString += "   <color=#FFFFFF>" + mod.GetLevel5SlotCount() + "</color>";
        }
        else
        {
            displayString += "   " + mod.GetLevel5SlotCount();
        }

        return(displayString);
    }
コード例 #7
0
    public void SetupAbility(HackerMod newHackerMod)
    {
        hackerMod          = newHackerMod;
        maxAbilityUses     = hackerMod.GetActiveAbilityUses();
        currentAbilityUses = maxAbilityUses;

        Button button = GetComponent <Button>();

        disabledColor = button.colors.disabledColor;
        normalColor   = button.colors.normalColor;

        SetAbilityIcon();
        SetCurrentUseIcons();
    }
 public void SetupAbilityHolder(HackerMod hackerMod, AbilityButton newAbilityButton)
 {
     abilityButton    = newAbilityButton;
     mod              = hackerMod;
     abilityText.text = mod.GetItemAbilityDescription();
     if (abilityButton.GetRemainingUses() == 1)
     {
         usesText.text = "1 use";
     }
     else
     {
         usesText.text = abilityButton.GetRemainingUses().ToString() + " uses";
     }
     abilityIcon.sprite = FindObjectOfType <AllHackAbilityIcons>().GetAbilityIconById(mod.GetActiveAbilityId());
 }
コード例 #9
0
    public void EquipRecreatedItem(HackerMod hackerMod)
    {
        switch (hackerMod.GetItemType())
        {
        case Item.ItemTypes.Rig:
            rig = hackerMod;
            break;

        case Item.ItemTypes.NeuralImplant:
            neuralImplant = hackerMod;
            break;

        case Item.ItemTypes.Uplink:
            uplink = hackerMod;
            break;
        }
    }
コード例 #10
0
    private void SetupCardCarosel(Item item)
    {
        cardCarosel.ClearCardList();
        List <int> cardIds = new List <int>();

        switch (item.GetItemType())
        {
        case Item.ItemTypes.Arm:
        case Item.ItemTypes.Exoskeleton:
        case Item.ItemTypes.Head:
        case Item.ItemTypes.Leg:
        case Item.ItemTypes.Torso:
        case Item.ItemTypes.Weapon:
            RunnerMod runnerMod = item as RunnerMod;
            cardIds.AddRange(runnerMod.GetCardIds());
            abilityTypeText.text        = "";
            abilityDescriptionText.text = "";
            break;

        case Item.ItemTypes.NeuralImplant:
        case Item.ItemTypes.Rig:
        case Item.ItemTypes.Uplink:
            HackerMod hackerMod = item as HackerMod;
            abilityTypeText.text        = "Active Ability:";
            abilityDescriptionText.text = hackerMod.GetCurrentLevelAbilityDescription();
            break;

        case Item.ItemTypes.Chipset:
        case Item.ItemTypes.Software:
        case Item.ItemTypes.Wetware:
            HackerModChip hackerModChip = item as HackerModChip;
            cardIds.AddRange(hackerModChip.GetCardIds());
            abilityTypeText.text        = "Passive Ability:";
            abilityDescriptionText.text = hackerModChip.GetCurrentLevelAbilityString();
            break;
        }

        foreach (int id in cardIds)
        {
            Card card = Resources.Load <Card>("CardPrefabs/Player/Card" + id);
            cardCarosel.AddCardToList(card);
        }
        cardCarosel.GenerateListItems();
    }
コード例 #11
0
    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);
        }
    }
コード例 #12
0
    public void OpenMenu()
    {
        gameObject.SetActive(true);
        FindObjectOfType <CheckClickController>().SetOverlayState();
        AbilityButton[] abilityButtons = FindObjectsOfType <AbilityButton>();
        foreach (AbilityButton abilityButton in abilityButtons)
        {
            HackerMod hackerMod = abilityButton.GetHackerMod();
            switch (hackerMod.GetItemType())
            {
            case Item.ItemTypes.NeuralImplant:
                neuralImplantAbilityHolder.SetupAbilityHolder(hackerMod, abilityButton);
                break;

            case Item.ItemTypes.Rig:
                rigAbilityHolder.SetupAbilityHolder(hackerMod, abilityButton);
                break;

            case Item.ItemTypes.Uplink:
                uplinkAbilityHolder.SetupAbilityHolder(hackerMod, abilityButton);
                break;
            }
        }
    }
コード例 #13
0
    private void SelectEquippedItemInList()
    {
        // To highlight currently equipped item, first we see if there is only one filter...
        if (currentFilters.Count == 1)
        {
            PlayerData playerData = FindObjectOfType <PlayerData>();
            switch (hackerOrRunner)
            {
            // Then we find if there are any active buttons and get the leftOrRight and itemType from them
            case Item.HackerRunner.Runner:
                Loadout.LeftOrRight leftOrRight;
                Item.ItemTypes      itemType;
                foreach (LoadoutSlotBtn button in runnerLoadoutSlotBtns)
                {
                    if (button.GetIsActive())
                    {
                        itemType    = button.GetItemType();
                        leftOrRight = button.GetLeftOrRight();
                        RunnerMod equippedMod = playerData.GetCurrentRunner().GetLoadout().GetEquippedModByItemType(itemType, leftOrRight);
                        currentInventoryList.SelectParticularItem(equippedMod);
                    }
                }
                break;

            case Item.HackerRunner.Hacker:
                foreach (LoadoutSlotBtn button in activeHackerSlotBtns)
                {
                    if (button.GetIsActive())
                    {
                        // do for mod
                        itemType = button.GetItemType();
                        if (button.GetItemType() == Item.ItemTypes.NeuralImplant || button.GetItemType() == Item.ItemTypes.Rig || button.GetItemType() == Item.ItemTypes.Uplink)
                        {
                            HackerMod equippedMod = playerData.GetCurrentHacker().GetHackerLoadout().GetEquippedModByItemType(itemType);
                            currentInventoryList.SelectParticularItem(equippedMod);
                        }
                        else
                        {
                            // do for install
                            int           slotNumber    = button.GetSlotNumber();
                            HackerModChip hackerModChip = playerData.GetCurrentHacker().GetHackerLoadout().GetEquippedInstallByItemTypeAndSlotNumber(itemType, slotNumber);
                            currentInventoryList.SelectParticularItem(hackerModChip);
                        }
                    }
                }
                break;
            }
        }
        else if (recentlyEquippedItem == true)
        {
            recentlyEquippedItem = false;
            switch (hackerOrRunner)
            {
            case Item.HackerRunner.Runner:
                currentInventoryList.SelectParticularItem(selectedItem);
                break;

            case Item.HackerRunner.Hacker:
                currentInventoryList.SelectParticularItem(selectedItem);
                break;
            }
        }
    }
コード例 #14
0
    private void SetupActiveHackerSlots()
    {
        activeHackerSlotBtns = new List <LoadoutSlotBtn>();
        activeHackerSlotBtns.AddRange(hackerModSlots); // Always need these three

        HackerLoadout hackerLoadout = FindObjectOfType <PlayerData>().GetCurrentHacker().GetHackerLoadout();
        HackerMod     neuralImplant = hackerLoadout.GetNeuralImplantMod();

        switch (neuralImplant.GetCurrentLevelSlotCount())
        {
        case 1:
            wetware1SlotHolder.SetActive(true);
            wetware2SlotHolder.SetActive(false);
            wetware3SlotHolder.SetActive(false);
            activeHackerSlotBtns.AddRange(wetware1Slots);
            break;

        case 2:
            wetware1SlotHolder.SetActive(false);
            wetware2SlotHolder.SetActive(true);
            wetware3SlotHolder.SetActive(false);
            activeHackerSlotBtns.AddRange(wetware2Slots);
            break;

        case 3:
            wetware1SlotHolder.SetActive(false);
            wetware2SlotHolder.SetActive(false);
            wetware3SlotHolder.SetActive(true);
            activeHackerSlotBtns.AddRange(wetware3Slots);
            break;
        }

        HackerMod rig = hackerLoadout.GetRigMod();

        switch (rig.GetCurrentLevelSlotCount())
        {
        case 1:
            software1SlotHolder.SetActive(true);
            software2SlotHolder.SetActive(false);
            software3SlotHolder.SetActive(false);
            activeHackerSlotBtns.AddRange(software1Slots);
            break;

        case 2:
            software1SlotHolder.SetActive(false);
            software2SlotHolder.SetActive(true);
            software3SlotHolder.SetActive(false);
            activeHackerSlotBtns.AddRange(software2Slots);
            break;

        case 3:
            software1SlotHolder.SetActive(false);
            software2SlotHolder.SetActive(false);
            software3SlotHolder.SetActive(true);
            activeHackerSlotBtns.AddRange(software3Slots);
            break;
        }

        HackerMod uplink = hackerLoadout.GetUplinkMod();

        switch (uplink.GetCurrentLevelSlotCount())
        {
        case 1:
            chipset1SlotHolder.SetActive(true);
            chipset2SlotHolder.SetActive(false);
            chipset3SlotHolder.SetActive(false);
            activeHackerSlotBtns.AddRange(chipset1Slots);
            break;

        case 2:
            chipset1SlotHolder.SetActive(false);
            chipset2SlotHolder.SetActive(true);
            chipset3SlotHolder.SetActive(false);
            activeHackerSlotBtns.AddRange(chipset2Slots);
            break;

        case 3:
            chipset1SlotHolder.SetActive(false);
            chipset2SlotHolder.SetActive(false);
            chipset3SlotHolder.SetActive(true);
            activeHackerSlotBtns.AddRange(chipset3Slots);
            break;
        }

        foreach (LoadoutSlotBtn button in activeHackerSlotBtns)
        {
            button.SetupButton();
        }
    }
コード例 #15
0
    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;
    }
コード例 #16
0
    private void AttemptToCreateShopItems(List <string> itemNames)
    {
        // TODO: DO OBJECTS NEED TO BE DESTROYED???
        List <Item> shopItems = new List <Item>();

        foreach (string itemName in itemNames)
        {
            RunnerMod createAsRunnerMod = ScriptableObject.CreateInstance <RunnerMod>();
            bool      success           = createAsRunnerMod.SetupMod(itemName);
            if (!success)
            {
                // Failed to create as a runner mod, try a hacker mod...
                HackerMod createAsHackerMod = ScriptableObject.CreateInstance <HackerMod>();
                success = createAsHackerMod.SetupMod(itemName);
                if (!success)
                {
                    // Failed to create as a hacker mod, try a hacker install...
                    HackerModChip createAsHackerInstall = ScriptableObject.CreateInstance <HackerModChip>();
                    success = createAsHackerInstall.SetupChip(itemName);
                    if (success)
                    {
                        // TODO: CREATE EXTRA COPIES TO ADD TO LIST
                        shopItems.Add(createAsHackerInstall);
                    }
                }
                else
                {
                    shopItems.Add(createAsHackerMod);
                }
            }
            else
            {
                bool addToShop = true;
                if (createAsRunnerMod.GetItemType() == Item.ItemTypes.Arm || createAsRunnerMod.GetItemType() == Item.ItemTypes.Leg)
                {
                    // If arm or leg, we need to count them
                    List <Item> sameItems = ownedItems.FindAll(curentItem => createAsRunnerMod.GetItemName() == curentItem.GetItemName());
                    switch (sameItems.Count)
                    {
                    case 0:
                        RunnerMod secondCopy = ScriptableObject.CreateInstance <RunnerMod>();
                        secondCopy.SetupMod(itemName);
                        shopItems.Add(secondCopy);
                        break;

                    case 1:
                        break;

                    case 2:
                        addToShop = false;
                        break;
                    }
                }
                if (addToShop)
                {
                    shopItems.Add(createAsRunnerMod);
                }
            }
        }

        itemsForSale = shopItems;
    }