队伍次序交换 数据逻辑层方法完善

This commit is contained in:
2025-06-09 00:16:27 +08:00
parent adac8dfe04
commit 31532f8ad8
5 changed files with 474 additions and 33 deletions
@@ -32,4 +32,23 @@ public class teamCharacterView : MonoBehaviour
if(TeamManager.Instance.currentSelectedCharacter==this.listIndex)
TeamManager.Instance.setCurrentSelectedCharacterInTeam(-1);
}
/// <summary>
/// 将当前队伍选中角色向下交换位置
/// </summary>
public void downChangeTeamElementIndex()
{
if (this.isSelected == false) return;
if(this.listIndex == teamSettingPanel.Instance.teamElementsObj.Length-1) return;
TeamManager.Instance.swapTeamElements(this.listIndex,this.listIndex+1);
}
/// <summary>
/// 将当前队伍选中角色向上交换位置
/// </summary>
public void upChangeTeamElementIndex()
{
if (this.isSelected == false) return;
if (this.listIndex == 0) return;
TeamManager.Instance.swapTeamElements(this.listIndex, this.listIndex - 1);
}
}
@@ -44,13 +44,7 @@ public class teamSettingPanel : MonoBehaviour
}
public void openTeamSettingPanel()
{
Debug.Log("打开编队设置面板");
//todo:向teamManager拉取已有编队信息,把视图初始化为对应的编队信息
List<Character> currentTeam = teamManager.getCurrentTeam();
foreach (Character character in currentTeam)
{
}
updateTeamSettingElements();
//根据获取的队伍信息处理ui组件
//可在此补充ui动画信息
teamSettingPanelObj.SetActive(true);
@@ -60,6 +54,11 @@ public class teamSettingPanel : MonoBehaviour
public void updateTeamSettingElements()
{
//todo:向保存编队信息的类获取编队信息,然后重新处理teamElementsObj的信息
List<Character> currentTeam = teamManager.getCurrentTeam();
// foreach (Character character in currentTeam)
// {
//
// }
}
/// <summary>
@@ -92,5 +91,12 @@ public class teamSettingPanel : MonoBehaviour
}
}
}
/// <summary>
/// 若玩家更换了team成员或调整了team成员顺序,则使用此方法更新view
/// </summary>
public void updateTeamStatus()
{
}
}
@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 34e2f32e0653f2e45b65f7266beb8ec4
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:
@@ -50,11 +50,19 @@ public class TeamManager : MonoBehaviour
{
currentTeamSettings = playerTeamSettings;
}
public List<Character> getCurrentTeam()
/// <summary>
/// 依据选定的队伍预设索引来获得队伍信息
/// </summary>
/// <returns></returns>
public List<Character> getCurrentSelectedTeam()
{
return currentTeamSettings[currentSelectedTeam];
}
public void setCurrentSelectedTeam(List<Character> newTeamData, int teamIndex)
{
currentTeamSettings[teamIndex] = newTeamData;
}
public void setCurrentSelectedCharacterInTeam(int characterIndex)
{
if (characterIndex != currentSelectedCharacter)
@@ -63,6 +71,20 @@ public class TeamManager : MonoBehaviour
OnSelectedCharacterChanged?.Invoke(); // 触发事件
}
}
/// <summary>
/// 交换指定索引中的两个队伍中元素的位置
/// </summary>
/// <param name="firstIndex"></param>
/// <param name="secondIndex"></param>
public void swapTeamElements(int firstIndex, int secondIndex)
{
List<Character> newCurrentTeam = getCurrentSelectedTeam();
Character temp = newCurrentTeam[firstIndex];
newCurrentTeam[firstIndex] = newCurrentTeam[secondIndex];
newCurrentTeam[secondIndex] = temp;
currentTeamSettings[currentSelectedTeam] = newCurrentTeam;
}
// Update is called once per frame
void Update()