144 lines
4.3 KiB
C#
144 lines
4.3 KiB
C#
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%";
|
||
}
|
||
}
|