thewar_client/Client/Assets/1_Script/UnitSetUiCtrl.cs

144 lines
4.3 KiB
C#
Raw Blame History

using System.Collections.Generic;
using TMPro;
using UnityEngine;
public class UnitSetUiCtrl : SingletonMonoBehaviour<UnitSetUiCtrl>
{
[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;
[SerializeField] GameObject objInfo;
[SerializeField] GameObject objItemView;
[SerializeField] GameObject objEquipment;
[SerializeField] GameObject objDeck;
GameObjectPool<ItemPrefab> itemPrefabList;
GameObjectPool<UnitPrefab> unitPrefabList;
List<ItemPrefab> onItemPrefabList;
List<UnitPrefab> onUnitPrefabList;
protected override void OnAwake()
{
maxLevel.text = Statics.dynamic["maxLevel"];
onItemPrefabList = new List<ItemPrefab>();
onUnitPrefabList = new List<UnitPrefab>();
itemPrefabList = new GameObjectPool<ItemPrefab>(5, () =>
{
var obj = Instantiate(itemPrefab, itemContent);
obj.SetActive(false);
var clone = obj.GetComponent<ItemPrefab>();
return clone;
});
unitPrefabList = new GameObjectPool<UnitPrefab>(5, () =>
{
var obj = Instantiate(unitPrefab, unitContent);
obj.SetActive(false);
var clone = obj.GetComponent<UnitPrefab>();
return clone;
});
}
private void OnEnable()
{
ButtonStatus();
onItemPrefabList.Clear();
foreach (var item in Statics.equipment)
{
//<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> <20><>ŵ
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);
}
public void ButtonEquipment()
{
objInfo.SetActive(false);
objItemView.SetActive(true);
objEquipment.SetActive(true);
objDeck.SetActive(false);
}
public void ButtonDeck()
{
objInfo.SetActive(false);
objItemView.SetActive(false);
objEquipment.SetActive(false);
objDeck.SetActive(true);
}
public void ButtoncHaracteristic()
{
objInfo.SetActive(false);
objItemView.SetActive(false);
objEquipment.SetActive(false);
objDeck.SetActive(false);
}
public void StatusSet(UnitData unitData, DeckUnitInfo 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%";
}
}