完成编队预设切换、编队位置交换、队长设置功能

This commit is contained in:
2025-06-14 00:19:48 +08:00
parent a2adfc1257
commit 9d483f4aa5
7 changed files with 1626 additions and 717 deletions
+43 -12
View File
@@ -29,7 +29,11 @@ public class TeamManager : MonoBehaviour
/// 在修改被选中的编队中角色的索引时触发
/// </summary>
public event Action OnSelectedCharacterChanged;
/// <summary>
/// 修改选定的预设队伍时触发
/// </summary>
public event Action OnSelectedTeamChanged;
void Awake()
{
if (Instance == null)
@@ -55,20 +59,33 @@ public class TeamManager : MonoBehaviour
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[0].teamIdList.Add(new CharacterView(-1,null));
currentTeamSettings.Add(1,new TeamSetting(new List<CharacterView>(),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"));
currentTeamSettings[1].teamIdList.Add(new CharacterView(1001001,"C"));
currentTeamSettings[1].teamIdList.Add(new CharacterView(1001002,"B"));
currentTeamSettings[1].teamIdList.Add(new CharacterView(1001001,"C"));
currentTeamSettings[1].teamIdList.Add( new CharacterView(1001002,"A"));
currentTeamSettings[1].teamIdList.Add(new CharacterView(1001002,"A"));
currentTeamSettings.Add(2,new TeamSetting(new List<CharacterView>(),-1));
currentTeamSettings.Add(3,new TeamSetting(new List<CharacterView>(),-1));
Debug.Log("testTeamSetting ready");
}
public void openTeamSettingPanel()=> teamSettingPanelInstance.gameObject.SetActive(true);
public void closeTeamSettingPanel()=> teamSettingPanelInstance.gameObject.SetActive(false);
public void setCurrentSelectedTeam(int index)
{
if (index > 3 || index < 0)
{
Debug.LogWarning("所选队伍预设索引超出范围");
return;
}
currentSelectedTeam = index;
}
void Start()
{
// if(teamSettingPanelInstance == null)
@@ -102,15 +119,26 @@ public class TeamManager : MonoBehaviour
{
if (characterIndex != currentSelectedCharacter)
{
Debug.Log($"修改选中对象从{currentSelectedCharacter}到{characterIndex}");
currentSelectedCharacter = characterIndex;
OnSelectedCharacterChanged?.Invoke(); // 触发事件
}
}
public void setCurrentSelectedTeamSetting(int teamIndex)
{
if(teamIndex != currentSelectedTeam)
{
Debug.Log($"修改选中队伍预设从{currentSelectedTeam}到{teamIndex}");
currentSelectedTeam = teamIndex;
OnSelectedTeamChanged?.Invoke(); // 触发事件
}
}
/// <summary>
/// 交换指定索引中的两个队伍中元素的位置
/// </summary>
/// <param name="firstIndex"></param>
/// <param name="secondIndex"></param>
/// <param name="firstIndex">当前元素</param>
/// <param name="secondIndex">目标元素位置</param>
public void swapTeamElements(int firstIndex, int secondIndex)
{
List<CharacterView> newCurrentTeam = getCurrentSelectedTeam().teamIdList;
@@ -118,12 +146,15 @@ public class TeamManager : MonoBehaviour
newCurrentTeam[firstIndex] = newCurrentTeam[secondIndex];
newCurrentTeam[secondIndex] = temp;
currentTeamSettings[currentSelectedTeam].teamIdList = newCurrentTeam;
teamSettingPanelInstance.updateTeamSettingElements();
setCurrentSelectedCharacterInTeam(secondIndex);
Debug.Log($"swapTeamElements done,当前选中的为{getCurrentSelectedTeam().teamIdList[currentSelectedCharacter].characterId},开始位置是{firstIndex},目标位置是{secondIndex},现在{currentSelectedCharacter}");
}
// Update is called once per frame
void Update()
public void setTeamLeader(int characterIndex)
{
getCurrentSelectedTeam().LeaderId = SelectableCharacterList[characterIndex].characterId;
teamSettingPanelInstance.updateTeamSettingElements();
}
}