| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141 |
- using GadgetCore.API;
- using System.Collections;
- using System.Reflection;
- using UnityEngine;
- namespace ScrapYard
- {
- public class ScrapYardShopStandScript : MonoBehaviour
- {
- public static readonly FieldInfo inventoryField = typeof(GameScript).GetField("inventory", BindingFlags.NonPublic | BindingFlags.Instance);
- private void Awake()
- {
- UpdateUI();
- }
- [RPC]
- private void Set(int itemID, int price, int quantity, int currencyItemID)
- {
- this.itemID = ItemRegistry.Singleton.ConvertIDToLocal(itemID);
- this.currencyItemID = ItemRegistry.Singleton.ConvertIDToLocal(currencyItemID);
- this.price = price;
- this.quantity = quantity;
- UpdateUI();
- }
- internal void StartCallSet(int itemID, int price, int quantity, int currencyItemID)
- {
- StartCoroutine(CallSet(itemID, price, quantity, currencyItemID));
- }
- private IEnumerator CallSet(int itemID, int price, int quantity, int currencyItemID)
- {
- yield return new WaitForSeconds(0.1f);
- itemID = ItemRegistry.Singleton.ConvertIDToHost(itemID);
- currencyItemID = ItemRegistry.Singleton.ConvertIDToHost(currencyItemID);
- gameObject.GetComponent<NetworkView>().RPC("Set", RPCMode.AllBuffered, new object[] { itemID, price, quantity, currencyItemID });
- yield break;
- }
- private void UpdateUI()
- {
- gameObject.transform.GetChild(1).GetComponent<Animation>().Play("animationStand");
- gameObject.transform.GetChild(1).GetComponent<Renderer>().material = (Material)Resources.Load("i/i" + itemID);
- gameObject.transform.GetChild(2).GetChild(1).GetComponent<Renderer>().material = (Material)Resources.Load("i/i" + currencyItemID);
- ItemInfo info = ItemRegistry.GetItem(itemID);
- string title = (quantity > 1 ? quantity + "x " : "") + info.Name;
- gameObject.transform.GetChild(2).GetChild(0).GetComponent<TextMesh>().text = title;
- gameObject.transform.GetChild(2).GetChild(0).GetChild(0).GetComponent<TextMesh>().text = title;
- gameObject.transform.GetChild(2).GetChild(2).GetComponent<TextMesh>().text = "" + price;
- gameObject.transform.GetChild(2).GetChild(2).GetChild(0).GetComponent<TextMesh>().text = "" + price;
- }
- private void OnTriggerEnter(Collider c)
- {
- if (c.gameObject.layer == 8)
- {
- gameObject.transform.GetChild(2).gameObject.SetActive(true);
- }
- }
- private void OnTriggerExit(Collider c)
- {
- if (c.gameObject.layer == 8)
- {
- gameObject.transform.GetChild(2).gameObject.SetActive(false);
- }
- }
- private int GetItemAmount(GameScript gameScript, int id)
- {
- if (id == 0) return 0;
- int num = 0;
- Item[] inventory = (Item[])inventoryField.GetValue(gameScript);
- for (int i = 0; i < 45; i++)
- {
- if (inventory[i].id == id)
- {
- num += inventory[i].q;
- }
- }
- return num;
- }
- private void RemoveItemAmount(GameScript gameScript, int id, int amount)
- {
- Item[] inventory = (Item[])inventoryField.GetValue(gameScript);
- for (int i = 0; i < 45; i++)
- {
- if (inventory[i].id == id)
- {
- if (amount - inventory[i].q > 0)
- {
- amount -= inventory[i].q;
- inventory[i] = gameScript.EmptyItem();
- gameScript.RefreshSlot(i);
- }
- else
- {
- if (amount - inventory[i].q == 0)
- {
- inventory[i] = gameScript.EmptyItem();
- gameScript.RefreshSlot(i);
- break;
- }
- inventory[i].q -= amount;
- gameScript.RefreshSlot(i);
- break;
- }
- }
- }
- }
- private void Request()
- {
- var gameScript = (GameScript)Camera.main.GetComponent("GameScript");
- int num = GetItemAmount(gameScript, currencyItemID);
- if (num >= price)
- {
- base.GetComponent<AudioSource>().PlayOneShot((AudioClip)Resources.Load("Au/purchase"), Menuu.soundLevel / 10f);
- RemoveItemAmount(gameScript, currencyItemID, price);
- Item item = new Item(itemID, quantity, 0, 0, 0, new int[3], new int[3]);
- GadgetCoreAPI.SpawnItem(base.transform.position, item);
- }
- else
- {
- GameObject gameObject = (GameObject)Object.Instantiate(Resources.Load("txtError"), MenuScript.player.transform.position, Quaternion.identity);
- gameObject.SendMessage("InitError", "Insufficient Currency!");
- }
- }
- public int itemID = 1;
- public int price = 1;
- public int quantity = 1;
- public int currencyItemID = 1;
- }
- }
|