Advertisement
Guest User

Untitled

a guest
Feb 15th, 2020
98
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 11.51 KB | None | 0 0
  1. using System.Collections.Generic;
  2. using UnityEngine;
  3. using Mirror;
  4. using System;
  5. using System.Collections;
  6. using UnityEngine.UI;
  7.  
  8. public enum EquippedItem
  9. {
  10.     h, //helmet
  11.     c, //chestplate
  12.     l, //leggins
  13.     w //weapon
  14. }
  15.  
  16. public class EQ : NetworkBehaviour
  17. {
  18.     [Header("Armor Pieces")]
  19.      public GameObject helmet;
  20.      public GameObject chestplate;
  21.      public GameObject leggins;
  22.      public GameObject ring;
  23.      public GameObject weapon;
  24.  
  25.     [SyncVar(hook = nameof(OnChangeEquipment))]
  26.     public EquippedItem equippedItem;
  27.  
  28.     [Header("Armor Slots")]
  29.     public GameObject helmetSlot;
  30.     public GameObject chestplateSlot;
  31.     public GameObject legginsSlot;
  32.     public GameObject weaponSlot;
  33.  
  34.     [Header("Lists")]
  35.     public List<GameObject> slots;
  36.     public List<GameObject> items;
  37.     public List<GameObject> ArmorSlots; //0 = weapon 1 = leggins 3 = chestplate 4 = helmet
  38.  
  39.     /*[Header("GameObjects")]
  40.     public GameObject equipmentGO;*/
  41.  
  42.     private PlayerInformation playerInfo;
  43.  
  44.     //public GameObject sceneObjectPrefab;
  45.  
  46.     private void Start()
  47.     {
  48.         if (isLocalPlayer)
  49.         {
  50.             playerInfo = GetComponent<PlayerInformation>();
  51.         }      
  52.     }
  53.  
  54.     /*public override void OnStartLocalPlayer()
  55.     {
  56.         equipmentGO.gameObject.SetActive(true);
  57.         foreach (Button button in equipmentGO.transform)
  58.         {
  59.             int i = 0;
  60.             button.GetComponent<Button>().onClick.AddListener(() => CmdPutOnSlots(i));
  61.             i++;
  62.         }
  63.     }*/
  64.  
  65.     void OnChangeEquipment(EquippedItem oldEquippedItem, EquippedItem newEquippedItem)
  66.     {
  67.         StartCoroutine(ChangeEquipment(newEquippedItem));
  68.     }
  69.  
  70.     #region Update Stats
  71.     public void UpdateStats()
  72.     {
  73.         if (helmet != null)
  74.         {
  75.             playerInfo.Strength = 0;
  76.             playerInfo.Strength += helmet.GetComponent<ItemObject>().item.strength;
  77.             playerInfo.Agility = 0;
  78.             playerInfo.Agility += helmet.GetComponent<ItemObject>().item.agility;
  79.             playerInfo.Inteligence = 0;
  80.             playerInfo.Inteligence += helmet.GetComponent<ItemObject>().item.inteligence;
  81.             playerInfo.Endurance = 0;
  82.             playerInfo.Endurance += helmet.GetComponent<ItemObject>().item.endurance;
  83.         }
  84.         if (chestplate != null)
  85.         {
  86.             playerInfo.Strength = 0;
  87.             playerInfo.Strength += chestplate.GetComponent<ItemObject>().item.strength;
  88.             playerInfo.Agility = 0;
  89.             playerInfo.Agility += chestplate.GetComponent<ItemObject>().item.agility;
  90.             playerInfo.Inteligence = 0;
  91.             playerInfo.Inteligence += chestplate.GetComponent<ItemObject>().item.inteligence;
  92.             playerInfo.Endurance = 0;
  93.             playerInfo.Endurance += chestplate.GetComponent<ItemObject>().item.endurance;
  94.         }
  95.  
  96.         if (leggins != null)
  97.         {
  98.             playerInfo.Strength = 0;
  99.             playerInfo.Strength += leggins.GetComponent<ItemObject>().item.strength;
  100.             playerInfo.Agility = 0;
  101.             playerInfo.Agility += leggins.GetComponent<ItemObject>().item.agility;
  102.             playerInfo.Inteligence = 0;
  103.             playerInfo.Inteligence += leggins.GetComponent<ItemObject>().item.inteligence;
  104.             playerInfo.Endurance = 0;
  105.             playerInfo.Endurance += leggins.GetComponent<ItemObject>().item.endurance;
  106.         }
  107.  
  108.         if (weapon != null)
  109.         {
  110.             playerInfo.Strength = 0;
  111.             playerInfo.Strength += weapon.GetComponent<ItemObject>().item.strength;
  112.             playerInfo.Agility = 0;
  113.             playerInfo.Agility += weapon.GetComponent<ItemObject>().item.agility;
  114.             playerInfo.Inteligence = 0;
  115.             playerInfo.Inteligence += weapon.GetComponent<ItemObject>().item.inteligence;
  116.             playerInfo.Endurance = 0;
  117.             playerInfo.Endurance += weapon.GetComponent<ItemObject>().item.endurance;
  118.         }
  119.         //canDestroy = true;
  120.     }
  121.     #endregion
  122.  
  123.     [ClientRpc]
  124.     void RpcEquipmentSlots(GameObject item)
  125.     {
  126.         for (int i = 0; i < slots.Count; i++)
  127.         {        
  128.             if(slots[i].transform.GetChild(0).GetComponentInChildren<Image>().enabled == false)
  129.             {
  130.                 slots[i].transform.GetChild(0).GetComponentInChildren<Image>().enabled = true;
  131.                 slots[i].transform.GetChild(0).GetComponentInChildren<Image>().sprite = item.GetComponent<SpriteRenderer>().sprite;
  132.                 items[i] = item.gameObject;
  133.                 break;
  134.             }
  135.         }
  136.     }
  137.  
  138.     IEnumerator ChangeEquipment(EquippedItem newEquippedItem)
  139.     {
  140.         //Debug.Log("XD");
  141.         switch (newEquippedItem)
  142.         {
  143.             case EquippedItem.h:
  144.                 /*GameObject spawned = Instantiate(helmet, helmetSlot.transform);
  145.                 NetworkServer.Spawn(spawned);*/
  146.                 //helmetSlot.GetComponent<SpriteRenderer>().sprite = helmet.GetComponent<ItemObject>().item.image;
  147.                 RpcEquipmentSlots(helmet);
  148.                 break;
  149.             case EquippedItem.c:
  150.                 /*GameObject spawned1 = Instantiate(chestplate, chestplateSlot.transform);
  151.                 NetworkServer.Spawn(spawned1);*/
  152.                 //chestplateSlot.GetComponent<SpriteRenderer>().sprite = chestplate.GetComponent<ItemObject>().item.image;
  153.                 RpcEquipmentSlots(chestplate);
  154.                 break;
  155.             case EquippedItem.l:
  156.                 /*GameObject spawned2 = Instantiate(leggins, legginsSlot.transform);
  157.                 NetworkServer.Spawn(spawned2);*/
  158.                 //legginsSlot.GetComponent<SpriteRenderer>().sprite = leggins.GetComponent<ItemObject>().item.image;
  159.                 RpcEquipmentSlots(leggins);
  160.                 break;
  161.             case EquippedItem.w:
  162.                 /*GameObject spawned3 = Instantiate(weapon, weaponSlot.transform);
  163.                 NetworkServer.Spawn(spawned3);*/
  164.                 //weaponSlot.GetComponent<SpriteRenderer>().sprite = weapon.GetComponent<ItemObject>().item.image;
  165.                 RpcEquipmentSlots(weapon);
  166.                 break;
  167.             default:
  168.                 break;
  169.         }
  170.         UpdateStats();
  171.         yield return null;
  172.     }
  173.  
  174.     [ClientCallback]
  175.     public void OnTriggerStay2D(Collider2D collision)
  176.     {
  177.         if(isLocalPlayer && collision.gameObject.CompareTag("Item") && Input.GetKeyDown(KeyCode.E))
  178.         {
  179.             ItemObject itemS = collision.GetComponent<ItemObject>();
  180.             RpcEquipmentSlots(collision.gameObject);
  181.             /*switch (itemS.item.Type)
  182.             {
  183.                 case Item.ItemType.helmet:
  184.                     helmet = collision.gameObject;
  185.                     CmdChangeEquippedItem(collision.gameObject, 0, EquippedItem.h);
  186.                     break;
  187.                 case Item.ItemType.chestplate:
  188.                     chestplate = collision.gameObject;
  189.                     CmdChangeEquippedItem(collision.gameObject, 1, EquippedItem.c);
  190.                     break;
  191.                 case Item.ItemType.leggins:
  192.                     leggins = collision.gameObject;
  193.                     CmdChangeEquippedItem(collision.gameObject, 2, EquippedItem.l);
  194.                     break;
  195.                 case Item.ItemType.sword:
  196.                     weapon = collision.gameObject;
  197.                     CmdChangeEquippedItem(collision.gameObject, 3, EquippedItem.w);
  198.                     break;
  199.                 case Item.ItemType.wand:
  200.                     weapon = collision.gameObject;
  201.                     CmdChangeEquippedItem(collision.gameObject, 3, EquippedItem.w);
  202.                     break;
  203.                 default:
  204.                     break;
  205.             }*/
  206.  
  207.         }
  208.     }
  209.  
  210.     [Command]
  211.     void CmdChangeEquippedItem(GameObject selectedItem, int itemType, EquippedItem e)
  212.     {
  213.         //Debug.Log($"CmdChangeEquippedItem {selectedItem} {itemType} {e} {equippedItem}");
  214.  
  215.         if (itemType == 0) //helmet
  216.         {
  217.             helmet = selectedItem;
  218.         }
  219.         else if(itemType == 1) //chestplate
  220.         {
  221.             chestplate = selectedItem;
  222.         }
  223.         else if(itemType == 2) //leggins
  224.         {
  225.             leggins = selectedItem;
  226.         }
  227.         else if(itemType == 3) //weapon
  228.         {
  229.             weapon = selectedItem;
  230.         }
  231.         equippedItem = e;
  232.     }
  233.  
  234.     public void CallCommand(int i)
  235.     {
  236.         CmdPutOnSlots(i);
  237.     }
  238.  
  239.  
  240.     [Command]
  241.     public void CmdPutOnSlots(int slotNumber)
  242.     {
  243.         if (isLocalPlayer)
  244.         {
  245.             ItemObject itemScript = items[slotNumber].GetComponent<ItemObject>();
  246.             Debug.Log("XD");
  247.             switch (itemScript.item.Type)
  248.             {
  249.                 case Item.ItemType.helmet:
  250.                     if (helmet == null)
  251.                     {
  252.                         ArmorSlots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().sprite = itemScript.item.image;
  253.                         helmet = items[slotNumber];
  254.                         slots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().enabled = false;
  255.                         items[slotNumber] = null;
  256.                         equippedItem = EquippedItem.h;
  257.                     }
  258.                     break;
  259.                 case Item.ItemType.chestplate:
  260.                     if (chestplate == null)
  261.                     {
  262.                         ArmorSlots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().sprite = itemScript.item.image;
  263.                         chestplate = items[slotNumber];
  264.                         slots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().enabled = false;
  265.                         items[slotNumber] = null;
  266.                         equippedItem = EquippedItem.c;
  267.                     }
  268.                     break;
  269.                 case Item.ItemType.leggins:
  270.                     if (leggins == null)
  271.                     {
  272.                         ArmorSlots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().sprite = itemScript.item.image;
  273.                         leggins = items[slotNumber];
  274.                         slots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().enabled = false;
  275.                         items[slotNumber] = null;
  276.                         equippedItem = EquippedItem.l;
  277.                     }
  278.                     break;
  279.                 case Item.ItemType.sword:
  280.                     if (weapon == null)
  281.                     {
  282.                         ArmorSlots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().sprite = itemScript.item.image;
  283.                         weapon = items[slotNumber];
  284.                         slots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().enabled = false;
  285.                         items[slotNumber] = null;
  286.                         equippedItem = EquippedItem.w;
  287.                     }
  288.                     break;
  289.                 case Item.ItemType.wand:
  290.                     if (weapon == null)
  291.                     {
  292.                         ArmorSlots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().sprite = itemScript.item.image;
  293.                         weapon = items[slotNumber];
  294.                         slots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().enabled = false;
  295.                         items[slotNumber] = null;
  296.                         equippedItem = EquippedItem.w;
  297.                     }
  298.                     break;
  299.             }
  300.         }
  301.        
  302.  
  303.     }
  304. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement