| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- using GadgetCore.API;
- using System;
- using System.Linq;
- using System.Reflection;
- using UnityEngine;
- namespace VanitySlots
- {
- public class ItemStore
- {
- public ItemStore(int size)
- {
- m_Items = new Item[size];
- m_Slots = new GameObject[size];
- Clear();
- }
- private Item[] m_Items;
- public Item[] Items
- {
- get { return m_Items; }
- set { m_Items = value; }
- }
- public void Save()
- {
- if (!Environment.GetCommandLineArgs().Any((string x) => x == "-batchmode"))
- for (int i = 0; i < m_Items.Length; i++)
- {
- PreviewLabs.PlayerPrefs.SetInt("c" + Menuu.curChar + "vanitySlot" + i + "id", m_Items[i].id);
- PreviewLabs.PlayerPrefs.SetInt("c" + Menuu.curChar + "vanitySlot" + i + "q", m_Items[i].q);
- PreviewLabs.PlayerPrefs.SetInt("c" + Menuu.curChar + "vanitySlot" + i + "exp", m_Items[i].exp);
- PreviewLabs.PlayerPrefs.SetInt("c" + Menuu.curChar + "vanitySlot" + i + "tier", m_Items[i].tier);
- PreviewLabs.PlayerPrefs.SetInt("c" + Menuu.curChar + "vanitySlot" + i + "corrupted", m_Items[i].corrupted);
- PreviewLabs.PlayerPrefs.SetInt("c" + Menuu.curChar + "vanitySlot" + i + "a0", m_Items[i].aspect[0]);
- PreviewLabs.PlayerPrefs.SetInt("c" + Menuu.curChar + "vanitySlot" + i + "a1", m_Items[i].aspect[1]);
- PreviewLabs.PlayerPrefs.SetInt("c" + Menuu.curChar + "vanitySlot" + i + "a2", m_Items[i].aspect[2]);
- PreviewLabs.PlayerPrefs.SetInt("c" + Menuu.curChar + "vanitySlot" + i + "aL0", m_Items[i].aspectLvl[0]);
- PreviewLabs.PlayerPrefs.SetInt("c" + Menuu.curChar + "vanitySlot" + i + "aL1", m_Items[i].aspectLvl[1]);
- PreviewLabs.PlayerPrefs.SetInt("c" + Menuu.curChar + "vanitySlot" + i + "aL2", m_Items[i].aspectLvl[2]);
- }
- }
- public bool CanUse(Item holdingItem, int slot)
- {
- if (holdingItem.id <= 0)
- return true;
- var holdingItemType = ItemRegistry.GetItem(holdingItem.id).Type;
- if (slot == 0 && ((holdingItemType & ItemType.EQUIP_MASK) == (ItemType.OFFHAND & ItemType.EQUIP_MASK)))
- return true;
- if (slot == 1 && ((holdingItemType & ItemType.EQUIP_MASK) == (ItemType.HELMET & ItemType.EQUIP_MASK)))
- return true;
- if (slot == 2 && ((holdingItemType & ItemType.EQUIP_MASK) == (ItemType.ARMOR & ItemType.EQUIP_MASK)))
- return true;
- return false;
- }
- public void Load()
- {
- if (!Environment.GetCommandLineArgs().Any((string x) => x == "-batchmode"))
- for (int i = 0; i < m_Items.Length; i++)
- {
- m_Items[i].id = PreviewLabs.PlayerPrefs.GetInt("c" + Menuu.curChar + "vanitySlot" + i + "id");
- m_Items[i].q = PreviewLabs.PlayerPrefs.GetInt("c" + Menuu.curChar + "vanitySlot" + i + "q");
- m_Items[i].exp = PreviewLabs.PlayerPrefs.GetInt("c" + Menuu.curChar + "vanitySlot" + i + "exp");
- m_Items[i].tier = PreviewLabs.PlayerPrefs.GetInt("c" + Menuu.curChar + "vanitySlot" + i + "tier");
- m_Items[i].corrupted = PreviewLabs.PlayerPrefs.GetInt("c" + Menuu.curChar + "vanitySlot" + i + "corrupted");
- m_Items[i].aspect[0] = PreviewLabs.PlayerPrefs.GetInt("c" + Menuu.curChar + "vanitySlot" + i + "a0");
- m_Items[i].aspect[1] = PreviewLabs.PlayerPrefs.GetInt("c" + Menuu.curChar + "vanitySlot" + i + "a1");
- m_Items[i].aspect[2] = PreviewLabs.PlayerPrefs.GetInt("c" + Menuu.curChar + "vanitySlot" + i + "a2");
- m_Items[i].aspectLvl[0] = PreviewLabs.PlayerPrefs.GetInt("c" + Menuu.curChar + "vanitySlot" + i + "aL0");
- m_Items[i].aspectLvl[1] = PreviewLabs.PlayerPrefs.GetInt("c" + Menuu.curChar + "vanitySlot" + i + "aL1");
- m_Items[i].aspectLvl[2] = PreviewLabs.PlayerPrefs.GetInt("c" + Menuu.curChar + "vanitySlot" + i + "aL2");
- }
- Core.itemStore.UpdateUI();
- }
- public void Clear()
- {
- for (int i = 0; i < m_Items.Length; i++)
- m_Items[i] = new Item(0, 0, 0, 0, 0, new int[3], new int[3]);
- }
- public void SetSlotGameObject(int i, GameObject gameObject)
- {
- m_Slots[i] = gameObject;
- }
- public static readonly FieldInfo inventoryField = typeof(GameScript).GetField("inventory", BindingFlags.NonPublic | BindingFlags.Instance);
- private GameObject[] m_Slots;
- public void UpdateUI()
- {
- if (!Environment.GetCommandLineArgs().Any((string x) => x == "-batchmode"))
- try
- {
- for (int i = 0; i < m_Items.Length; i++)
- {
- var obj = m_Slots[i];
- if (obj != null)
- {
- obj.GetComponent<Renderer>().material = (Material)Resources.Load("i/i" + (m_Items[i]?.id ?? 0));
- var objBack = obj.transform.GetChild(1).gameObject;
- AnimIcon animIcon = objBack.GetComponent<AnimIcon>();
- if ((m_Items[i]?.id ?? 0) > 0 && ((m_Items[i].id >= 300 && m_Items[i].id < 2000) || (ItemRegistry.GetTypeByID(m_Items[i].id) & ItemType.LEVELING) == ItemType.LEVELING))
- {
- objBack.GetComponent<Renderer>().material = (Material)Resources.Load("iBack" + m_Items[i].tier);
- if (m_Items[i].tier == 3)
- animIcon.anim = 1;
- else
- animIcon.anim = 0;
- objBack.SetActive(true);
- }
- else
- {
- animIcon.anim = 0;
- objBack.SetActive(false);
- }
- TextMesh txtQ = obj.transform.GetChild(0).GetComponent<TextMesh>();
- if (m_Items[i]?.q > 1 && (m_Items[i]?.id ?? 0) > 0)
- {
- txtQ.text = "" + m_Items[i].q;
- }
- else
- {
- txtQ.text = "";
- }
- }
- }
- if (MenuScript.playerAppearance != null)
- {
- var inventory = (Item[])inventoryField.GetValue(InstanceTracker.GameScript);
- GameScript.equippedIDs[1] = inventory[37].id;
- GameScript.equippedIDs[2] = inventory[38].id;
- GameScript.equippedIDs[3] = inventory[39].id;
- Network.RemoveRPCs(MenuScript.playerAppearance.GetComponent<NetworkView>().viewID);
- MenuScript.playerAppearance.GetComponent<NetworkView>().RPC("UA", RPCMode.AllBuffered, new object[]
- { GameScript.equippedIDs, 0, GameScript.dead });
- }
- }
- catch (Exception e)
- {
- Core.logger.LogConsole(e.Message);
- }
- }
- }
- }
|