加入测试样例,初步完善队列信息——视图转换
This commit is contained in:
@@ -0,0 +1,156 @@
|
||||
using System.Collections;
|
||||
using System.Collections.Generic;
|
||||
using UnityEngine;
|
||||
using utils;
|
||||
|
||||
public class teamSettingPanel : MonoBehaviour
|
||||
{
|
||||
/// <summary>
|
||||
/// 编队页面顶父级对象,用于控制显示隐藏等操作
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public GameObject teamSettingPanelObj;
|
||||
/// <summary>
|
||||
/// ui层编队显示,包含五个组件
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public GameObject[] teamElementsObj;
|
||||
/// <summary>
|
||||
/// 左侧角色选择页组件
|
||||
/// </summary>
|
||||
[SerializeField]
|
||||
public GameObject teamCharacterPrefab;
|
||||
[SerializeField]
|
||||
public GameObject teamCharacterViewContent;
|
||||
|
||||
private TeamManager teamManager;
|
||||
|
||||
|
||||
public static teamSettingPanel Instance{get;private set;}
|
||||
|
||||
void Awake()
|
||||
{
|
||||
if (Instance == null)
|
||||
{
|
||||
Instance = this;
|
||||
}
|
||||
else
|
||||
{
|
||||
Destroy(gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
void Start()
|
||||
{
|
||||
teamManager = TeamManager.Instance;
|
||||
if(teamManager!=null)
|
||||
{
|
||||
teamManager.OnSelectedCharacterChanged += updateTeamCharacterSelectedStatus;
|
||||
}
|
||||
}
|
||||
void OnDestroy()
|
||||
{
|
||||
if (teamManager != null)
|
||||
{
|
||||
teamManager.OnSelectedCharacterChanged -= updateTeamCharacterSelectedStatus;
|
||||
}
|
||||
}
|
||||
public void openTeamSettingPanel()
|
||||
{
|
||||
updateTeamSettingElements();
|
||||
getSelectableCharacterList();
|
||||
//根据获取的队伍信息处理ui组件
|
||||
//可在此补充ui动画信息
|
||||
teamSettingPanelObj.SetActive(true);
|
||||
}
|
||||
|
||||
public void closeTeamSettingPanel()
|
||||
{
|
||||
teamSettingPanelObj.SetActive(false);
|
||||
Transform transform;
|
||||
for (int i = 0; i < teamCharacterViewContent.transform.childCount; i++)
|
||||
{
|
||||
transform = teamCharacterViewContent.transform.GetChild(i);
|
||||
GameObject.Destroy(transform.gameObject);
|
||||
}
|
||||
}
|
||||
|
||||
public void updateTeamSettingElements()
|
||||
{
|
||||
List<Character> currentTeam = teamManager.getCurrentSelectedTeam();
|
||||
for (int i = 0; i < teamElementsObj.Length && i < currentTeam.Count; i++)
|
||||
{
|
||||
if(teamElementsObj[i]!=null && currentTeam[i]!=null)
|
||||
{
|
||||
teamCharacterView t = teamElementsObj[i].GetComponent<teamCharacterView>();
|
||||
if(t!=null)
|
||||
{
|
||||
Sprite sprite;
|
||||
sprite = FileUtils.getImage($"TeamCharacters/TeamCharacterImg/{currentTeam[i].name}");
|
||||
t.charcterImg.sprite = sprite;
|
||||
sprite = FileUtils.getImage($"TeamCharacters/levelIcon/level{currentTeam[i].boundaryLevel}");
|
||||
t.levelIcon.sprite = sprite;
|
||||
t.isLeader.SetActive(currentTeam[i].isLeader);
|
||||
t.notLeader.SetActive(!currentTeam[i].isLeader);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取当前可选入队伍的角色列表,并显示在界面上
|
||||
/// </summary>
|
||||
public void getSelectableCharacterList()
|
||||
{
|
||||
List<Character> selectAbleCharacters = teamManager.SelectableCharacterList;
|
||||
foreach (Character c in selectAbleCharacters)
|
||||
{
|
||||
GameObject characterObj = Instantiate(teamCharacterPrefab, teamCharacterViewContent.transform);
|
||||
CharacterCardView ccv = characterObj.GetComponent<CharacterCardView>();
|
||||
if (ccv != null)
|
||||
{
|
||||
ccv.characterName = c.name;
|
||||
ccv.characterImage.sprite = FileUtils.getImage($"TeamCharacters/CharacterImg/{c.name}");
|
||||
ccv.levelIcon.sprite = FileUtils.getImage($"TeamCharacters/levelIcon/level{c.boundaryLevel}");
|
||||
ccv.occupationIcon.sprite = FileUtils.getImage($"TeamCharacters/OccupationIcon/{c.occupation}");
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 将当前角色向下交换位置
|
||||
/// </summary>
|
||||
public void downChangeCharcterIndex()
|
||||
{
|
||||
|
||||
}
|
||||
public void upChangeCharcterIndex()
|
||||
{
|
||||
|
||||
}
|
||||
/// <summary>
|
||||
/// 用于保证team内对象的选中状态一致
|
||||
/// </summary>
|
||||
public void updateTeamCharacterSelectedStatus()
|
||||
{
|
||||
int currentSelectedCharacter = teamManager.currentSelectedCharacter;
|
||||
Debug.Log(currentSelectedCharacter+" "+$"{teamElementsObj.Length}");
|
||||
for (int i = 0; i < teamElementsObj.Length; i++)
|
||||
{
|
||||
if (i != currentSelectedCharacter)
|
||||
{
|
||||
teamCharacterView teamCharacterView = teamElementsObj[i].GetComponent<teamCharacterView>();
|
||||
if(teamCharacterView!=null)
|
||||
{
|
||||
teamCharacterView.SetUnSelected();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// 若玩家更换了team成员或调整了team成员顺序,则使用此方法更新view
|
||||
/// </summary>
|
||||
public void updateTeamStatus()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user