using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; using static UnityEditor.Progress; public class UnitSetUiCtrl : SingletonMonoBehaviour { //½ºÅÝ Á¤º¸ ui [SerializeField] TMP_Text name; [SerializeField] TMP_Text attribute; [SerializeField] TMP_Text hp; [SerializeField] TMP_Text defense; [SerializeField] TMP_Text attack; [SerializeField] TMP_Text defensePenetration; [SerializeField] TMP_Text attackSpeed; [SerializeField] TMP_Text moveSpeed; [SerializeField] TMP_Text critical; [SerializeField] TMP_Text criticalDamage; [SerializeField] TMP_Text damageReduction; [SerializeField] TMP_Text level; [SerializeField] TMP_Text maxLevel; //À¯´Ö ÇÁ¸®Æé¹× À§Ä¡ [SerializeField] GameObject itemPrefab; [SerializeField] Transform itemContent; [SerializeField] GameObject unitPrefab; [SerializeField] Transform unitContent; //°¢Á¾ ¼¼ÆÃ ui [SerializeField] GameObject objInfo; [SerializeField] GameObject objItemView; [SerializeField] GameObject objEquipment; [SerializeField] GameObject objDeck; //Äɸ¯ÅÍ Ä«¸Þ¶ó [SerializeField] Transform CamContent; [SerializeField] GameObject UnitObject; //¾ÆÀÌÅÛ Á¤º¸ [SerializeField] GameObject itemInfo; [SerializeField] Image itemImage; [SerializeField] TMP_Text itemName; [SerializeField] GameObject status0; [SerializeField] TMP_Text status0Status; [SerializeField] TMP_Text status0Value; [SerializeField] GameObject status1; [SerializeField] TMP_Text status1Status; [SerializeField] TMP_Text status1Value; [SerializeField] GameObject status2; [SerializeField] TMP_Text status2Status; [SerializeField] TMP_Text status2Value; [SerializeField] GameObject status3; [SerializeField] TMP_Text status3Status; [SerializeField] TMP_Text status3Value; GameObjectPool itemPrefabList; GameObjectPool unitPrefabList; List onItemPrefabList; List onUnitPrefabList; Equipment selectItem; ItemPrefab selectItemPrefab; DeckUnitInfo selectUnit; UnitPrefab selectUnitPrefab; protected override void OnAwake() { maxLevel.text = Statics.dynamic["maxLevel"]; onItemPrefabList = new List(); onUnitPrefabList = new List(); itemPrefabList = new GameObjectPool(5, () => { var obj = Instantiate(itemPrefab, itemContent); obj.SetActive(false); var clone = obj.GetComponent(); return clone; }); unitPrefabList = new GameObjectPool(5, () => { var obj = Instantiate(unitPrefab, unitContent); obj.SetActive(false); var clone = obj.GetComponent(); return clone; }); } private void OnEnable() { ButtonStatus(); onItemPrefabList.Clear(); foreach (var item in Statics.equipment) { //ÀåÂøµÈ ¾ÆÀÌÅÛ ½ºÅµ if (item.equip_unit != 0) continue; ItemPrefab prefab = itemPrefabList.pop(); prefab.SetData(item); prefab.gameObject.SetActive(true); onItemPrefabList.Add(prefab); } foreach (var item in Statics.deckUnit) { UnitPrefab prefab = unitPrefabList.pop(); prefab.SetData(item.Value); prefab.gameObject.SetActive(true); onUnitPrefabList.Add(prefab); } onUnitPrefabList[0].SelectUnit(); } private void OnDisable() { foreach (var item in onItemPrefabList) { item.gameObject.SetActive(false); itemPrefabList.push(item); } foreach (var item in onUnitPrefabList) { item.gameObject.SetActive(false); unitPrefabList.push(item); } } public void ButtonStatus() { objInfo.SetActive(true); objItemView.SetActive(false); objEquipment.SetActive(false); objDeck.SetActive(false); itemInfo.SetActive(false); } public void ButtonEquipment() { objInfo.SetActive(false); objItemView.SetActive(true); objEquipment.SetActive(true); objDeck.SetActive(false); itemInfo.SetActive(false); } public void ButtonDeck() { objInfo.SetActive(false); objItemView.SetActive(false); objEquipment.SetActive(false); objDeck.SetActive(true); itemInfo.SetActive(false); } public void ButtoncHaracteristic() { objInfo.SetActive(false); objItemView.SetActive(false); objEquipment.SetActive(false); objDeck.SetActive(false); itemInfo.SetActive(false); } public void StatusSet(UnitPrefab unitPrefab, UnitData unitData, DeckUnitInfo deckUnitInfo, UnitCtrl unitCtrl) { this.selectUnitPrefab = unitPrefab; this.selectUnit = deckUnitInfo; level.text = deckUnitInfo.level.ToString(); name.text = unitData.name; attribute.text = "None"; hp.text = (unitData.hp).ToString(); defense.text = (unitData.defense).ToString(); attack.text = (unitData.attack).ToString(); defensePenetration.text = "0%"; attackSpeed.text = (unitData.attack_speed).ToString(); moveSpeed.text = (unitData.move_speed).ToString(); critical.text = "0%"; criticalDamage.text = "50%"; damageReduction.text = "0%"; //Ä«¸Þ¶ó À¯´Ö »ý¼º if(UnitObject != null) Destroy(UnitObject); UnitObject = Instantiate(unitCtrl.gameObject, CamContent); UnitObject.GetComponent().enabled = false; } public void ItemSet(ItemPrefab itemPrefab, Equipment equipment, EquipmentData equipmentData) { this.selectItemPrefab = itemPrefab; this.selectItem = equipment; itemInfo.SetActive(true); itemImage.sprite = Statics.stringIcons[equipmentData.name]; itemName.text = equipmentData.name; status0.SetActive(true); status0Status.text = StatusText(equipmentData.part, equipment.rand_stats); status0Value.text = ValueText(equipmentData, equipment.rand_stats); status1.SetActive(false); status2.SetActive(false); status3.SetActive(false); } private string StatusText(ePart part, int randStats) { switch (part) { case ePart.Weapon: //¹«±â switch (randStats) { case 0: return "°ø°Ý·Â"; case 1: return "¹æ¾î °üÅë·Â"; case 2: return "Ä¡¸íŸ ´ë¹ÌÁö"; default: return ""; } case ePart.Armor: //°©¿Ê switch (randStats) { case 0: return "¹æ¾î·Â"; case 1: return "ü·Â"; case 2: return "´ë¹ÌÁö °¨¼Ò"; default: return ""; } case ePart.Gloves: //Àå°© switch (randStats) { case 0: return "À̵¿¼Óµµ"; case 1: return "°ø°Ý¼Óµµ"; case 2: return "°ø°Ý·Â"; default: return ""; } case ePart.Headpiece: //Åõ±¸ switch (randStats) { case 0: return "°ø°Ý·Â"; case 1: return "¹æ¾î°üÅë·Â"; case 2: return "ü·Â"; default: return ""; } case ePart.Shield: //º¸Á¶Àåºñ switch (randStats) { case 0: return "¹æ¾î·Â"; case 1: return "´ë¹ÌÁö°¨¼Ò"; case 2: return "ü·Â"; default: return ""; } case ePart.Ring: //¹ÝÁö switch (randStats) { case 0: return "Ä¡¸íŸȮ·ü"; case 1: return "À̵¿¼Óµµ"; case 2: return "°ø°Ý¼Óµµ"; default: return ""; } default: return ""; } } private string ValueText(EquipmentData equipmentData, int randStats) { switch (randStats) { case 1: return equipmentData.stats1.ToString(); case 2: return equipmentData.stats2.ToString(); case 3: return equipmentData.stats3.ToString(); //case 4: // return equipmentData.stats4.ToString(); default: return "0"; } } public void equipItem() { itemInfo.SetActive(false); EquipChangeResp request = new EquipChangeResp(); request.Request((data) => { //½Å±Ô Á¤º¸·Î µ¥ÀÌÅÍ ±³Ã¼ for(int n = 0; n < Statics.equipment.Count; n++) { if (Statics.equipment[n].id == data.equipment.id) { Statics.equipment[n] = data.equipment; break; } } Statics.deckUnit.Remove(data.deck_unit_info.id); Statics.deckUnit.Add(data.deck_unit_info.id, data.deck_unit_info); //¼¼ÆÃµÇ¾îÀÖ´Â µ¥ÀÌÅÍ ¼öÁ¤ selectUnitPrefab.SetData(data.deck_unit_info); if(data.equipment.unit_id != 0) { //»ý¼º ItemPrefab prefab = itemPrefabList.pop(); prefab.SetData(data.equipment); prefab.gameObject.SetActive(true); onItemPrefabList.Add(prefab); } else { //»èÁ¦ for(int n = 0; n < onItemPrefabList.Count; n++) { if (onItemPrefabList[n].getId == data.equipment.id) { onItemPrefabList[n].gameObject.SetActive(false); itemPrefabList.push(onItemPrefabList[n]); onItemPrefabList.RemoveAt(n); break; } } } }, selectUnit.id, selectItem.id); } }