队伍角色添加、快速更换新位置完善
This commit is contained in:
@@ -3,6 +3,7 @@ using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using Unity.Collections;
|
||||
using UnityEngine;
|
||||
using UnityEngine.Serialization;
|
||||
|
||||
public class TeamManager : MonoBehaviour
|
||||
{
|
||||
@@ -24,7 +25,11 @@ public class TeamManager : MonoBehaviour
|
||||
/// <summary>
|
||||
/// 记录被选中的编队中角色的索引,用于处理队列位置交换的逻辑。-1表示无角色被选中
|
||||
/// </summary>
|
||||
public int currentSelectedCharacter = -1;
|
||||
public int currentSelectedTeamCharacter = -1;
|
||||
/// <summary>
|
||||
/// 标记要被放入编队的角色
|
||||
/// </summary>
|
||||
public CharacterView currentSelectedCharacterCard = null;
|
||||
/// <summary>
|
||||
/// 在修改被选中的编队中角色的索引时触发
|
||||
/// </summary>
|
||||
@@ -50,8 +55,6 @@ public class TeamManager : MonoBehaviour
|
||||
{
|
||||
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<CharacterView>(),1001001));
|
||||
@@ -59,7 +62,7 @@ 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[0].teamIdList.Add(new CharacterView(0,null));
|
||||
|
||||
currentTeamSettings.Add(1,new TeamSetting(new List<CharacterView>(),1001002));
|
||||
currentTeamSettings[1].teamIdList.Add(new CharacterView(1001001,"C"));
|
||||
@@ -67,9 +70,20 @@ public class TeamManager : MonoBehaviour
|
||||
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[2].teamIdList.Add(new CharacterView(0,null));
|
||||
currentTeamSettings[2].teamIdList.Add(new CharacterView(0,null));
|
||||
currentTeamSettings[2].teamIdList.Add(new CharacterView(0,null));
|
||||
currentTeamSettings[2].teamIdList.Add( new CharacterView(0,null));
|
||||
currentTeamSettings[2].teamIdList.Add(new CharacterView(0,null));
|
||||
|
||||
currentTeamSettings.Add(3,new TeamSetting(new List<CharacterView>(),-1));
|
||||
currentTeamSettings[3].teamIdList.Add(new CharacterView(0,null));
|
||||
currentTeamSettings[3].teamIdList.Add(new CharacterView(0,null));
|
||||
currentTeamSettings[3].teamIdList.Add(new CharacterView(0,null));
|
||||
currentTeamSettings[3].teamIdList.Add( new CharacterView(0,null));
|
||||
currentTeamSettings[3].teamIdList.Add(new CharacterView(0,null));
|
||||
|
||||
|
||||
Debug.Log("testTeamSetting ready");
|
||||
@@ -94,6 +108,10 @@ public class TeamManager : MonoBehaviour
|
||||
// }
|
||||
testTeamSetting();//接入玩家存档后请注释掉此行
|
||||
}
|
||||
void saveTeamSetting()
|
||||
{
|
||||
//todo:我想,在接存档系统的时候这个会有用。
|
||||
}
|
||||
/// <summary>
|
||||
/// 读取玩家存档信息后可直接在此写入编队信息
|
||||
/// </summary>
|
||||
@@ -117,10 +135,10 @@ public class TeamManager : MonoBehaviour
|
||||
}
|
||||
public void setCurrentSelectedCharacterInTeam(int characterIndex)
|
||||
{
|
||||
if (characterIndex != currentSelectedCharacter)
|
||||
if (characterIndex != currentSelectedTeamCharacter)
|
||||
{
|
||||
Debug.Log($"修改选中对象从{currentSelectedCharacter}到{characterIndex}");
|
||||
currentSelectedCharacter = characterIndex;
|
||||
Debug.Log($"修改选中对象从{currentSelectedTeamCharacter}到{characterIndex}");
|
||||
currentSelectedTeamCharacter = characterIndex;
|
||||
OnSelectedCharacterChanged?.Invoke(); // 触发事件
|
||||
}
|
||||
}
|
||||
@@ -148,13 +166,68 @@ public class TeamManager : MonoBehaviour
|
||||
currentTeamSettings[currentSelectedTeam].teamIdList = newCurrentTeam;
|
||||
teamSettingPanelInstance.updateTeamSettingElements();
|
||||
setCurrentSelectedCharacterInTeam(secondIndex);
|
||||
Debug.Log($"swapTeamElements done,当前选中的为{getCurrentSelectedTeam().teamIdList[currentSelectedCharacter].characterId},开始位置是{firstIndex},目标位置是{secondIndex},现在{currentSelectedCharacter}");
|
||||
|
||||
}
|
||||
|
||||
public void setTeamLeader(int characterIndex)
|
||||
public void setTeamLeader(int characterID)
|
||||
{
|
||||
getCurrentSelectedTeam().LeaderId = SelectableCharacterList[characterIndex].characterId;
|
||||
Debug.Log($"{characterID},{SelectableCharacterList.Count}");
|
||||
currentTeamSettings[currentSelectedTeam].LeaderId=characterID;
|
||||
teamSettingPanelInstance.updateTeamSettingElements();
|
||||
}
|
||||
/// <summary>
|
||||
/// 填入或者覆盖队伍指定位置的信息
|
||||
/// </summary>
|
||||
/// <param name="aimListIndex"></param>
|
||||
public void ResetTeamCharacter (int aimListIndex)
|
||||
{
|
||||
//如果在队伍中已有角色的情况下再次触发此方法,首先要去掉旧信息,再放新信息
|
||||
CharacterView newCharacter = currentSelectedCharacterCard;
|
||||
List<CharacterView> newCurrentTeam = getCurrentSelectedTeam().teamIdList;
|
||||
|
||||
if (aimListIndex > 0 || aimListIndex < newCurrentTeam.Count)
|
||||
{
|
||||
for(int i=0;i<newCurrentTeam.Count;i++)
|
||||
{
|
||||
if (newCurrentTeam[i].characterId == newCharacter.characterId && aimListIndex != i)//满足此条件为更换角色的队伍位置
|
||||
{
|
||||
//说明是在更换角色所在的位置下标,旧角色,位置置空
|
||||
newCurrentTeam[aimListIndex] = newCharacter;
|
||||
CharacterView characterView = new CharacterView(0, null);
|
||||
newCurrentTeam[i] = characterView;
|
||||
currentTeamSettings[currentSelectedTeam].teamIdList = newCurrentTeam;
|
||||
teamSettingPanelInstance.updateTeamSettingElements();
|
||||
return;
|
||||
}
|
||||
else if (newCurrentTeam[i].characterId == newCharacter.characterId && aimListIndex == i)
|
||||
{
|
||||
//原地点击操作,不做任何操作
|
||||
return;
|
||||
}
|
||||
}
|
||||
}
|
||||
newCurrentTeam[aimListIndex] = newCharacter;
|
||||
currentTeamSettings[currentSelectedTeam].teamIdList = newCurrentTeam;
|
||||
teamSettingPanelInstance.updateTeamSettingElements();
|
||||
}
|
||||
/// <summary>
|
||||
/// 移除队伍中的指定角色
|
||||
/// </summary>
|
||||
/// <param name="characterID"></param>
|
||||
public void removeTeamCharacter(int characterId)
|
||||
{
|
||||
currentSelectedCharacterCard = null;
|
||||
List<CharacterView> newCurrentTeam = getCurrentSelectedTeam().teamIdList;
|
||||
foreach (CharacterView character in newCurrentTeam)
|
||||
{
|
||||
if (character.characterId == characterId)
|
||||
{
|
||||
character.characterId = 0;
|
||||
character.currentBoundaryLevel = null;
|
||||
}
|
||||
}
|
||||
currentTeamSettings[currentSelectedTeam].teamIdList = newCurrentTeam;
|
||||
teamSettingPanelInstance.updateTeamSettingElements();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user