Example #1
0
        public static void GetAndApplyDataToCharacter(Character character)
        {
            //Debug.Log("Applying QS save to character");

            var instance = MultipleQuickslotBars.GetOrCreateSave(character.UID);

            instance.ApplyDataToCharacter(character);
        }
        public override void Save(Character character, bool isWorldHost)
        {
            var ext = MultipleQuickslotBars.GetOrCreateSave(character.UID);

            this.ActiveBarIndex = ext.ActiveBarIndex;
            this.QuickslotData  = ext.QuickslotData;

            SetDataFromCharacter(character);
        }
        public override void ApplyLoadedSave(Character character, bool isWorldHost)
        {
            var ext = MultipleQuickslotBars.GetOrCreateSave(character.UID);

            ext.ActiveBarIndex = this.ActiveBarIndex;
            ext.QuickslotData  = this.QuickslotData;

            ApplySaveToCharacter(character);
        }
        public static void ApplySaveToCharacter(Character character)
        {
            //Debug.Log("Applying QS save to character");

            var ext = MultipleQuickslotBars.GetOrCreateSave(character.UID);

            var qsMgr = character.QuickSlotMngr;

            while (ext.ActiveBarIndex >= ext.QuickslotData.Count)
            {
                ext.QuickslotData.Add(null);
            }

            var data     = ext.QuickslotData[ext.ActiveBarIndex];
            var itemUIDs = new string[qsMgr.QuickSlotCount];

            if (string.IsNullOrEmpty(data))
            {
                for (int i = 0; i < qsMgr.QuickSlotCount; i++)
                {
                    itemUIDs[i] = "-1";
                }
            }
            else
            {
                string[] idSplit = data.Split(',');

                for (int i = 0; i < qsMgr.QuickSlotCount; i++)
                {
                    itemUIDs[i] = idSplit[i];

                    //if (i >= idSplit.Length)
                    //    itemUIDs[i] = -1;
                    //else if (int.TryParse(idSplit[i], out int id))
                    //    itemUIDs[i] = id;
                    //else
                    //    itemUIDs[i] = -1;
                }
            }

            for (int i = 0; i < itemUIDs.Length; i++)
            {
                try
                {
                    // Debug.Log("Setting quickslot " + i + " to character as item id " + itemIDs[i]);

                    qsMgr.ClearQuickSlot(i);

                    //Item item = character.Inventory.SkillKnowledge.GetItemFromItemID(itemUIDs[i]);
                    //if (!item)
                    //    item = character.Inventory.getitem

                    string uid = itemUIDs[i];

                    if (uid == "-1" || string.IsNullOrEmpty(uid))
                    {
                        continue;
                    }

                    Item item = ItemManager.Instance.GetItem(uid);

                    if (item)
                    {
                        qsMgr.SetQuickSlot(i, item, false);
                    }
                    else
                    {
                        SL.LogWarning($"Could not find character's quickslotted item by UID '{uid}'!");
                    }
                }
                catch (Exception ex)
                {
                    Debug.LogWarning("Exception setting player quickslot index " + i + ": " + ex);
                }
            }
        }