using System; using System.Collections; using System.Collections.Generic; using UnityEngine; public class TeamManager : MonoBehaviour { public static TeamManager Instance {get; private set;} public teamSettingPanel teamSettingPanelInstance= teamSettingPanel.Instance; //当前玩家存档下的所有编队配置 public Dictionary> currentTeamSettings = new Dictionary>(); /// /// 根据此字段来在编队信息页显示已有编队 /// public int currentSelectedTeam = 0; /// /// 记录被选中的编队中角色的索引,用于处理队列位置交换的逻辑。-1表示无角色被选中 /// public int currentSelectedCharacter = -1; /// /// 在修改被选中的编队中角色的索引时触发 /// public event Action OnSelectedCharacterChanged; void Awake() { if (Instance == null) { Instance = this; } else { Destroy(gameObject); } } void Start() { if(teamSettingPanelInstance == null) { teamSettingPanelInstance = teamSettingPanel.Instance; } } /// /// 读取玩家存档信息后可直接在此写入编队信息 /// /// public void setcurrentTeamSettings(Dictionary> playerTeamSettings) { currentTeamSettings = playerTeamSettings; } /// /// 依据选定的队伍预设索引来获得队伍信息 /// /// public List getCurrentSelectedTeam() { return currentTeamSettings[currentSelectedTeam]; } public void setCurrentSelectedTeam(List 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(); Character temp = newCurrentTeam[firstIndex]; newCurrentTeam[firstIndex] = newCurrentTeam[secondIndex]; newCurrentTeam[secondIndex] = temp; currentTeamSettings[currentSelectedTeam] = newCurrentTeam; } // Update is called once per frame void Update() { } }