예제 #1
0
        // PopulateSkillBar populates the default-behaviour Outward skill bar with enties from either
        // quickSlots1[] or quickSlots2[] based on the value of barMode
        private void PopulateSkillBar(Character character)
        {
            CharacterQuickSlotManager qsManager = character.QuickSlotMngr;

            if (qsManager.isActiveAndEnabled)
            {
                CharacterInventory      inventory   = qsManager.gameObject.GetComponent <CharacterInventory>();
                CharacterSkillKnowledge knownSkills = inventory.SkillKnowledge;
                ItemManager             itemManager = ItemManager.Instance;

                if (dev)
                {
                    Debug.Log("Populating Skill Bar");
                }

                // The entries we are going to use to populate Outward's default-behaviour skill bar is dependent on
                // whether we want the first skill bar or the second skill bar
                switch (charCurrentBarMode[character.UID])
                {
                // In the case where we want entries from the first skill bar...
                case BarMode.FIRST:
                    ClearSkillBar(qsManager);

                    for (int i = 0; i < numSlots; i++)
                    {
                        if (charQuickSlotArrays[character.UID][0, i] != 0)
                        {
                            // This line loads a skill into the variable called "entry"...
                            var entry = knownSkills.GetItemFromItemID(charQuickSlotArrays[character.UID][0, i]);

                            // ...But if "entry" isn't a skill, load an item instead
                            if (entry == null)
                            {
                                if (inventory.GetOwnedItems(charQuickSlotArrays[character.UID][0, i]).Count() == 0)
                                {
                                    entry = ResourcesPrefabManager.Instance.GetItemPrefab(charQuickSlotArrays[character.UID][0, i]);
                                }
                                else
                                {
                                    entry = inventory.GetOwnedItems(charQuickSlotArrays[character.UID][0, i]).First();
                                }
                            }

                            qsManager.SetQuickSlot(i, entry, false);
                        }
                        else
                        {
                            qsManager.ClearQuickSlot(i);
                        }
                    }
                    // We are done doing stuff in the case of the first skill bar, so BREAK!
                    break;

                // In the case where we want to add entries from the second skill bar...
                case BarMode.SECOND:
                    ClearSkillBar(qsManager);

                    for (int i = 0; i < numSlots; i++)
                    {
                        if (charQuickSlotArrays[character.UID][1, i] != 0)
                        {
                            // This line loads a skill into the variable called "entry"...
                            var entry = knownSkills.GetItemFromItemID(charQuickSlotArrays[character.UID][1, i]);

                            // ...But if "entry" isn't a skill, load an item instead
                            if (entry == null)
                            {
                                if (inventory.GetOwnedItems(charQuickSlotArrays[character.UID][1, i]).Count() == 0)
                                {
                                    entry = ResourcesPrefabManager.Instance.GetItemPrefab(charQuickSlotArrays[character.UID][1, i]);
                                }
                                else
                                {
                                    entry = inventory.GetOwnedItems(charQuickSlotArrays[character.UID][1, i]).First();
                                }
                            }

                            qsManager.SetQuickSlot(i, entry, false);
                        }
                        else
                        {
                            qsManager.ClearQuickSlot(i);
                        }
                    }
                    // We are done doing stuff in the case of the second skill bar, so BREAK!
                    break;
                }
            }
        }
        private void LoadQuickSlotsFromJSON(CharacterQuickSlotManager self)
        {
            CharacterInventory      charInvent = self.gameObject.GetComponent <CharacterInventory>();
            CharacterSkillKnowledge charSkills = charInvent.SkillKnowledge;
            ItemManager             itemMan    = ItemManager.Instance;


            //Load Quickslots for Bar 1
            for (int i = 0; i < slotAmount; i++)
            {
                if (dev)
                {
                    Debug.Log("LOADING QUICK SLOT " + i + " FOR BAR 1");
                }

                var itemID = qsm.currentCharacter["DefaultBarIDS"][i];
                if (itemID != 0)
                {
                    if (dev)
                    {
                        Debug.Log("ID of slot " + i + " from JSON is : " + itemID);
                    }
                    var item = charSkills.GetItemFromItemID(itemID.AsInt);

                    //this isnt a skill
                    if (item == null)
                    {
                        item = charInvent.GetOwnedItems(itemID).First();
                    }

                    defaultSlotItems[i] = item;
                }
                else
                {
                    if (dev)
                    {
                        Debug.Log("QUICK SLOT " + i + " Has No ID");
                    }
                }
            }


            for (int i = 0; i < slotAmount; i++)
            {
                if (dev)
                {
                    Debug.Log("LOADING QUICK SLOT " + i + " FOR BAR 2");
                }
                var itemID = qsm.currentCharacter["SecondaryBarIDS"][i];
                if (itemID != 0)
                {
                    if (dev)
                    {
                        Debug.Log("ID of slot " + i + " from JSON is : " + itemID);
                    }
                    var item = charSkills.GetItemFromItemID(itemID.AsInt);

                    //this isnt a skill
                    if (item == null)
                    {
                        item = charInvent.GetOwnedItems(itemID).First();
                    }

                    secondarySlotItems[i] = item;
                }
                else
                {
                    if (dev)
                    {
                        Debug.Log("QUICK SLOT " + i + " Has No ID");
                    }
                }
            }
        }