using System; using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; /// /// 战斗界面 /// public class BattlePanel : MonoBehaviour { [SerializeField] private GameObject levelPanel; [SerializeField] private GameObject readyPanel; [SerializeField] private UIBattleItem _battleItem; [SerializeField] private Transform _battleParent; [SerializeField] private Transform itemParent; [SerializeField] private List _playerBars; [SerializeField] private List _list; [SerializeField] private Button battleButton; [SerializeField] private Button openItemParent; [SerializeField] private Button closeItemParent; [SerializeField] private Button openWeaponry; [SerializeField] private Button openSoldier; [SerializeField] private Button startButton; #region 生命周期 // Start is called before the first frame update void Start() { } private void OnEnable() { battleButton.onClick.AddListener(OpenCombatPanel); openWeaponry.onClick.AddListener(OpenVideoWeaponryEvent); openSoldier.onClick.AddListener(OpenVideoSoldierEvent); openItemParent.onClick.AddListener(OpenItemPanel); closeItemParent.onClick.AddListener(CloseItemPanel); startButton.onClick.AddListener(StartBattle); readyPanel.SetActive(false); } // Update is called once per frame void Update() { } private void OnDestroy() { battleButton.onClick.RemoveListener(OpenCombatPanel); openWeaponry.onClick.RemoveListener(OpenVideoWeaponryEvent); openSoldier.onClick.RemoveListener(OpenVideoSoldierEvent); openItemParent.onClick.RemoveListener(OpenItemPanel); closeItemParent.onClick.RemoveListener(CloseItemPanel); startButton.onClick.RemoveListener(StartBattle); } #endregion #region 战斗界面 private void InitLevelPanel() { } #endregion #region 准备界面 private void OpenCombatPanel() { readyPanel.SetActive(true); UIMgr.ins.CloseSwithPanel(); BattleManager.ins.ResetBattleData(); ResetItem(); foreach (var playerBar in _playerBars) { playerBar.RestData(); } OpenItemPanel(); } public void ResetReadyPanel() { foreach (var pBar in _playerBars) { pBar.RestData(); } foreach (var itemBar in _list) { itemBar.ResetText(); } openSoldier.gameObject.SetActive(!BattleManager.ins.OpenVideoSoldier); openWeaponry.gameObject.SetActive(!BattleManager.ins.OpenVideoWeaponry); } private void ResetItem() { if (_list==null) { _list = new List(); } if (_list.Count != 0) { for (int i = 0; i < _list.Count; i++) { Destroy(_list[i].gameObject); } _list.Clear(); } var dic = DataManager.ItemDictionary; foreach (var dicData in dic) { if (JsonTab.Instance.tables.Item.Get(dicData.Key).Includearms!=0) { var obj = Instantiate(_battleItem.gameObject, _battleParent); obj.SetActive(true); _list.Add(obj.GetComponent()); obj.GetComponent().ResetData(dicData.Key); } } } private void OpenItemPanel() { itemParent.gameObject.SetActive(true); openItemParent.gameObject.SetActive(false); closeItemParent.gameObject.SetActive(true); } private void CloseItemPanel() { itemParent.gameObject.SetActive(false); openItemParent.gameObject.SetActive(true); closeItemParent.gameObject.SetActive(false); } private void StartBattle() { BattleManager.ins.StartBattle(); } #endregion #region 视频事件 private void OpenVideoWeaponryEvent() { BattleManager.ins.OpenVideoWeaponryEvent(); ResetReadyPanel(); } private void OpenVideoSoldierEvent() { BattleManager.ins.OpenVideoSoldierEvent(); ResetReadyPanel(); } #endregion }