using System; using System.Collections; using System.Collections.Generic; using Unity.Collections; using UnityEngine; public class TeamManager : MonoBehaviour { public static TeamManager Instance {get; private set;} public teamSettingPanel teamSettingPanelInstance; /// /// 当前玩家存档下的所有编队配置,key为编队索引,value为该编队的角色列表,表内只有角色ID /// public Dictionary currentTeamSettings = new Dictionary(); /// /// 玩家存档下已经解锁的角色信息列表 /// public List SelectableCharacterList = new List(); /// /// 根据此字段来在编队信息页显示已有编队 /// public int currentSelectedTeam = 0; /// /// 记录被选中的编队中角色的索引,用于处理队列位置交换的逻辑。-1表示无角色被选中 /// public int currentSelectedCharacter = -1; /// /// 在修改被选中的编队中角色的索引时触发 /// public event Action OnSelectedCharacterChanged; void Awake() { if (Instance == null) { Instance = this; } else { Destroy(gameObject); } } void testTeamSetting() { SelectableCharacterList.Add(new CharacterView(1001001,"C")); SelectableCharacterList.Add(new CharacterView(1001002,"S")); SelectableCharacterList.Add(new CharacterView(1001001,"C")); SelectableCharacterList.Add(new CharacterView(1001002,"C")); //手动向currentTeamSettings和SelectableCharacterList添加测试数据 currentTeamSettings.Add(0,new TeamSetting(new List(),1001001)); currentTeamSettings[0].teamIdList.Add(new CharacterView(1001001,"C")); currentTeamSettings[0].teamIdList.Add(new CharacterView(1001002,"S")); currentTeamSettings[0].teamIdList.Add(new CharacterView(1001001,"C")); currentTeamSettings[0].teamIdList.Add( new CharacterView(1001002,"C")); currentTeamSettings.Add(1,new TeamSetting(new List(),1001002)); currentTeamSettings[0].teamIdList.Add(new CharacterView(1001001,"C")); currentTeamSettings[0].teamIdList.Add(new CharacterView(1001002,"B")); currentTeamSettings[0].teamIdList.Add(new CharacterView(1001001,"C")); currentTeamSettings[0].teamIdList.Add( new CharacterView(1001002,"A")); currentTeamSettings[0].teamIdList.Add(new CharacterView(1001002,"A")); Debug.Log("testTeamSetting ready"); } public void openTeamSettingPanel()=> teamSettingPanelInstance.gameObject.SetActive(true); public void closeTeamSettingPanel()=> teamSettingPanelInstance.gameObject.SetActive(false); void Start() { // if(teamSettingPanelInstance == null) // { // teamSettingPanelInstance = teamSettingPanel.Instance; // } testTeamSetting();//接入玩家存档后请注释掉此行 } /// /// 读取玩家存档信息后可直接在此写入编队信息 /// /// public void setcurrentTeamSettings(Dictionary playerTeamSettings) { currentTeamSettings = playerTeamSettings; } /// /// 依据选定的队伍预设索引来获得队伍信息 /// /// public TeamSetting getCurrentSelectedTeam() { return currentTeamSettings[currentSelectedTeam]; } public void setCurrentSelectedTeam(TeamSetting newTeamData, int teamIndex) { currentTeamSettings[teamIndex] = newTeamData; } public void setCurrentSelectedCharacterInTeam(int characterIndex) { if (characterIndex != currentSelectedCharacter) { currentSelectedCharacter = characterIndex; OnSelectedCharacterChanged?.Invoke(); // 触发事件 } } /// /// 交换指定索引中的两个队伍中元素的位置 /// /// /// public void swapTeamElements(int firstIndex, int secondIndex) { List newCurrentTeam = getCurrentSelectedTeam().teamIdList; CharacterView temp = newCurrentTeam[firstIndex]; newCurrentTeam[firstIndex] = newCurrentTeam[secondIndex]; newCurrentTeam[secondIndex] = temp; currentTeamSettings[currentSelectedTeam].teamIdList = newCurrentTeam; } // Update is called once per frame void Update() { } }