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