using System.Collections; using System.Collections.Generic; using UnityEngine; using utils; public class teamSettingPanel : MonoBehaviour { /// /// 编队页面顶父级对象,用于控制显示隐藏等操作 /// [SerializeField] public GameObject teamSettingPanelObj; /// /// ui层编队显示,包含五个组件 /// [SerializeField] public GameObject[] teamElementsObj; /// /// 左侧角色选择页组件 /// [SerializeField] public GameObject teamCharacterPrefab; [SerializeField] public GameObject teamCharacterViewContent; private TeamManager teamManager; public static teamSettingPanel Instance{get;private set;} void Awake() { if (Instance == null) { Instance = this; } else { Destroy(gameObject); } } void Start() { teamManager = TeamManager.Instance; if(teamManager!=null) { teamManager.OnSelectedCharacterChanged += updateTeamCharacterSelectedStatus; } } void OnDestroy() { if (teamManager != null) { teamManager.OnSelectedCharacterChanged -= updateTeamCharacterSelectedStatus; } } public void openTeamSettingPanel() { updateTeamSettingElements(); getSelectableCharacterList(); //根据获取的队伍信息处理ui组件 //可在此补充ui动画信息 teamSettingPanelObj.SetActive(true); } public void closeTeamSettingPanel() { teamSettingPanelObj.SetActive(false); Transform transform; for (int i = 0; i < teamCharacterViewContent.transform.childCount; i++) { transform = teamCharacterViewContent.transform.GetChild(i); GameObject.Destroy(transform.gameObject); } } public void updateTeamSettingElements() { List currentTeam = teamManager.getCurrentSelectedTeam(); for (int i = 0; i < teamElementsObj.Length && i < currentTeam.Count; i++) { if(teamElementsObj[i]!=null && currentTeam[i]!=null) { teamCharacterView t = teamElementsObj[i].GetComponent(); if(t!=null) { Sprite sprite; sprite = FileUtils.getImage($"TeamCharacters/TeamCharacterImg/{currentTeam[i].name}"); t.charcterImg.sprite = sprite; sprite = FileUtils.getImage($"TeamCharacters/levelIcon/level{currentTeam[i].boundaryLevel}"); t.levelIcon.sprite = sprite; t.isLeader.SetActive(currentTeam[i].isLeader); t.notLeader.SetActive(!currentTeam[i].isLeader); } } } } /// /// 获取当前可选入队伍的角色列表,并显示在界面上 /// public void getSelectableCharacterList() { List selectAbleCharacters = teamManager.SelectableCharacterList; foreach (Character c in selectAbleCharacters) { GameObject characterObj = Instantiate(teamCharacterPrefab, teamCharacterViewContent.transform); CharacterCardView ccv = characterObj.GetComponent(); if (ccv != null) { ccv.characterName = c.name; ccv.characterImage.sprite = FileUtils.getImage($"TeamCharacters/CharacterImg/{c.name}"); ccv.levelIcon.sprite = FileUtils.getImage($"TeamCharacters/levelIcon/level{c.boundaryLevel}"); ccv.occupationIcon.sprite = FileUtils.getImage($"TeamCharacters/OccupationIcon/{c.occupation}"); } } } /// /// 将当前角色向下交换位置 /// public void downChangeCharcterIndex() { } public void upChangeCharcterIndex() { } /// /// 用于保证team内对象的选中状态一致 /// public void updateTeamCharacterSelectedStatus() { int currentSelectedCharacter = teamManager.currentSelectedCharacter; Debug.Log(currentSelectedCharacter+" "+$"{teamElementsObj.Length}"); for (int i = 0; i < teamElementsObj.Length; i++) { if (i != currentSelectedCharacter) { teamCharacterView teamCharacterView = teamElementsObj[i].GetComponent(); if(teamCharacterView!=null) { teamCharacterView.SetUnSelected(); } } } } /// /// 若玩家更换了team成员或调整了team成员顺序,则使用此方法更新view /// public void updateTeamStatus() { } }