Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using System.Collections.Generic;
- using UnityEngine;
- using Mirror;
- using System;
- using System.Collections;
- using UnityEngine.UI;
- public enum EquippedItem
- {
- h, //helmet
- c, //chestplate
- l, //leggins
- w //weapon
- }
- public class EQ : NetworkBehaviour
- {
- [Header("Armor Pieces")]
- public GameObject helmet;
- public GameObject chestplate;
- public GameObject leggins;
- public GameObject ring;
- public GameObject weapon;
- [SyncVar(hook = nameof(OnChangeEquipment))]
- public EquippedItem equippedItem;
- [Header("Armor Slots")]
- public GameObject helmetSlot;
- public GameObject chestplateSlot;
- public GameObject legginsSlot;
- public GameObject weaponSlot;
- [Header("Lists")]
- public List<GameObject> slots;
- public List<GameObject> items;
- public List<GameObject> ArmorSlots; //0 = weapon 1 = leggins 3 = chestplate 4 = helmet
- /*[Header("GameObjects")]
- public GameObject equipmentGO;*/
- private PlayerInformation playerInfo;
- //public GameObject sceneObjectPrefab;
- private void Start()
- {
- if (isLocalPlayer)
- {
- playerInfo = GetComponent<PlayerInformation>();
- }
- }
- /*public override void OnStartLocalPlayer()
- {
- equipmentGO.gameObject.SetActive(true);
- foreach (Button button in equipmentGO.transform)
- {
- int i = 0;
- button.GetComponent<Button>().onClick.AddListener(() => CmdPutOnSlots(i));
- i++;
- }
- }*/
- void OnChangeEquipment(EquippedItem oldEquippedItem, EquippedItem newEquippedItem)
- {
- StartCoroutine(ChangeEquipment(newEquippedItem));
- }
- #region Update Stats
- public void UpdateStats()
- {
- if (helmet != null)
- {
- playerInfo.Strength = 0;
- playerInfo.Strength += helmet.GetComponent<ItemObject>().item.strength;
- playerInfo.Agility = 0;
- playerInfo.Agility += helmet.GetComponent<ItemObject>().item.agility;
- playerInfo.Inteligence = 0;
- playerInfo.Inteligence += helmet.GetComponent<ItemObject>().item.inteligence;
- playerInfo.Endurance = 0;
- playerInfo.Endurance += helmet.GetComponent<ItemObject>().item.endurance;
- }
- if (chestplate != null)
- {
- playerInfo.Strength = 0;
- playerInfo.Strength += chestplate.GetComponent<ItemObject>().item.strength;
- playerInfo.Agility = 0;
- playerInfo.Agility += chestplate.GetComponent<ItemObject>().item.agility;
- playerInfo.Inteligence = 0;
- playerInfo.Inteligence += chestplate.GetComponent<ItemObject>().item.inteligence;
- playerInfo.Endurance = 0;
- playerInfo.Endurance += chestplate.GetComponent<ItemObject>().item.endurance;
- }
- if (leggins != null)
- {
- playerInfo.Strength = 0;
- playerInfo.Strength += leggins.GetComponent<ItemObject>().item.strength;
- playerInfo.Agility = 0;
- playerInfo.Agility += leggins.GetComponent<ItemObject>().item.agility;
- playerInfo.Inteligence = 0;
- playerInfo.Inteligence += leggins.GetComponent<ItemObject>().item.inteligence;
- playerInfo.Endurance = 0;
- playerInfo.Endurance += leggins.GetComponent<ItemObject>().item.endurance;
- }
- if (weapon != null)
- {
- playerInfo.Strength = 0;
- playerInfo.Strength += weapon.GetComponent<ItemObject>().item.strength;
- playerInfo.Agility = 0;
- playerInfo.Agility += weapon.GetComponent<ItemObject>().item.agility;
- playerInfo.Inteligence = 0;
- playerInfo.Inteligence += weapon.GetComponent<ItemObject>().item.inteligence;
- playerInfo.Endurance = 0;
- playerInfo.Endurance += weapon.GetComponent<ItemObject>().item.endurance;
- }
- //canDestroy = true;
- }
- #endregion
- [ClientRpc]
- void RpcEquipmentSlots(GameObject item)
- {
- for (int i = 0; i < slots.Count; i++)
- {
- if(slots[i].transform.GetChild(0).GetComponentInChildren<Image>().enabled == false)
- {
- slots[i].transform.GetChild(0).GetComponentInChildren<Image>().enabled = true;
- slots[i].transform.GetChild(0).GetComponentInChildren<Image>().sprite = item.GetComponent<SpriteRenderer>().sprite;
- items[i] = item.gameObject;
- break;
- }
- }
- }
- IEnumerator ChangeEquipment(EquippedItem newEquippedItem)
- {
- //Debug.Log("XD");
- switch (newEquippedItem)
- {
- case EquippedItem.h:
- /*GameObject spawned = Instantiate(helmet, helmetSlot.transform);
- NetworkServer.Spawn(spawned);*/
- //helmetSlot.GetComponent<SpriteRenderer>().sprite = helmet.GetComponent<ItemObject>().item.image;
- RpcEquipmentSlots(helmet);
- break;
- case EquippedItem.c:
- /*GameObject spawned1 = Instantiate(chestplate, chestplateSlot.transform);
- NetworkServer.Spawn(spawned1);*/
- //chestplateSlot.GetComponent<SpriteRenderer>().sprite = chestplate.GetComponent<ItemObject>().item.image;
- RpcEquipmentSlots(chestplate);
- break;
- case EquippedItem.l:
- /*GameObject spawned2 = Instantiate(leggins, legginsSlot.transform);
- NetworkServer.Spawn(spawned2);*/
- //legginsSlot.GetComponent<SpriteRenderer>().sprite = leggins.GetComponent<ItemObject>().item.image;
- RpcEquipmentSlots(leggins);
- break;
- case EquippedItem.w:
- /*GameObject spawned3 = Instantiate(weapon, weaponSlot.transform);
- NetworkServer.Spawn(spawned3);*/
- //weaponSlot.GetComponent<SpriteRenderer>().sprite = weapon.GetComponent<ItemObject>().item.image;
- RpcEquipmentSlots(weapon);
- break;
- default:
- break;
- }
- UpdateStats();
- yield return null;
- }
- [ClientCallback]
- public void OnTriggerStay2D(Collider2D collision)
- {
- if(isLocalPlayer && collision.gameObject.CompareTag("Item") && Input.GetKeyDown(KeyCode.E))
- {
- ItemObject itemS = collision.GetComponent<ItemObject>();
- RpcEquipmentSlots(collision.gameObject);
- /*switch (itemS.item.Type)
- {
- case Item.ItemType.helmet:
- helmet = collision.gameObject;
- CmdChangeEquippedItem(collision.gameObject, 0, EquippedItem.h);
- break;
- case Item.ItemType.chestplate:
- chestplate = collision.gameObject;
- CmdChangeEquippedItem(collision.gameObject, 1, EquippedItem.c);
- break;
- case Item.ItemType.leggins:
- leggins = collision.gameObject;
- CmdChangeEquippedItem(collision.gameObject, 2, EquippedItem.l);
- break;
- case Item.ItemType.sword:
- weapon = collision.gameObject;
- CmdChangeEquippedItem(collision.gameObject, 3, EquippedItem.w);
- break;
- case Item.ItemType.wand:
- weapon = collision.gameObject;
- CmdChangeEquippedItem(collision.gameObject, 3, EquippedItem.w);
- break;
- default:
- break;
- }*/
- }
- }
- [Command]
- void CmdChangeEquippedItem(GameObject selectedItem, int itemType, EquippedItem e)
- {
- //Debug.Log($"CmdChangeEquippedItem {selectedItem} {itemType} {e} {equippedItem}");
- if (itemType == 0) //helmet
- {
- helmet = selectedItem;
- }
- else if(itemType == 1) //chestplate
- {
- chestplate = selectedItem;
- }
- else if(itemType == 2) //leggins
- {
- leggins = selectedItem;
- }
- else if(itemType == 3) //weapon
- {
- weapon = selectedItem;
- }
- equippedItem = e;
- }
- public void CallCommand(int i)
- {
- CmdPutOnSlots(i);
- }
- [Command]
- public void CmdPutOnSlots(int slotNumber)
- {
- if (isLocalPlayer)
- {
- ItemObject itemScript = items[slotNumber].GetComponent<ItemObject>();
- Debug.Log("XD");
- switch (itemScript.item.Type)
- {
- case Item.ItemType.helmet:
- if (helmet == null)
- {
- ArmorSlots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().sprite = itemScript.item.image;
- helmet = items[slotNumber];
- slots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().enabled = false;
- items[slotNumber] = null;
- equippedItem = EquippedItem.h;
- }
- break;
- case Item.ItemType.chestplate:
- if (chestplate == null)
- {
- ArmorSlots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().sprite = itemScript.item.image;
- chestplate = items[slotNumber];
- slots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().enabled = false;
- items[slotNumber] = null;
- equippedItem = EquippedItem.c;
- }
- break;
- case Item.ItemType.leggins:
- if (leggins == null)
- {
- ArmorSlots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().sprite = itemScript.item.image;
- leggins = items[slotNumber];
- slots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().enabled = false;
- items[slotNumber] = null;
- equippedItem = EquippedItem.l;
- }
- break;
- case Item.ItemType.sword:
- if (weapon == null)
- {
- ArmorSlots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().sprite = itemScript.item.image;
- weapon = items[slotNumber];
- slots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().enabled = false;
- items[slotNumber] = null;
- equippedItem = EquippedItem.w;
- }
- break;
- case Item.ItemType.wand:
- if (weapon == null)
- {
- ArmorSlots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().sprite = itemScript.item.image;
- weapon = items[slotNumber];
- slots[slotNumber].transform.GetChild(0).GetComponentInChildren<Image>().enabled = false;
- items[slotNumber] = null;
- equippedItem = EquippedItem.w;
- }
- break;
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement