//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, October 16, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class TeamListWin : Window, SecondWindowInterface
|
{
|
[SerializeField] TeamMissionGroup m_MissionList;
|
[SerializeField] Transform m_ContainerNoTeam;
|
[SerializeField] CyclicScroll m_TeamList;
|
[SerializeField] ButtonEx m_Refresh;
|
[SerializeField] Button m_AutoFind;
|
[SerializeField] Text m_MatchState;
|
[SerializeField] Button m_CreateTeam;
|
[SerializeField] Button m_ExitTeam;
|
|
float autoRefreshTimer = 0f;
|
TeamModel model { get { return ModelCenter.Instance.GetModel<TeamModel>(); } }
|
|
#region Built-in
|
public Button close { get; set; }
|
|
protected override void BindController()
|
{
|
if (this is SecondWindowInterface)
|
{
|
var frame = this.GetComponentInChildren<SecondFrameLoader>();
|
frame.Create();
|
close = frame.GetComponentInChildren<Button>();
|
}
|
}
|
|
protected override void AddListeners()
|
{
|
close.AddListener(CloseClick);
|
m_AutoFind.AddListener(AutoMatchTeam);
|
m_Refresh.AddListener(RefreshCurrentTeamList);
|
m_CreateTeam.AddListener(CreateTeam);
|
m_ExitTeam.AddListener(ExitTeam);
|
}
|
|
protected override void OnPreOpen()
|
{
|
try
|
{
|
if (model.missionBuf != null && model.missionBuf.mapId == TeamModel.NONE_MISSION)
|
{
|
model.currentMission = new TeamMission(TeamModel.CURRENTMAP_MISSION, 0);
|
}
|
else
|
{
|
model.currentMission = model.missionBuf;
|
}
|
|
m_MissionList.Init();
|
m_MissionList.OnMissionSelected(RefreshTeamList);
|
m_ContainerNoTeam.SetActive(true);
|
m_TeamList.SetActive(false);
|
|
autoRefreshTimer = 5f;
|
RefreshCurrentTeamList();
|
m_CreateTeam.SetActive(!model.myTeam.inTeam);
|
m_ExitTeam.SetActive(model.myTeam.inTeam);
|
m_AutoFind.SetActive(!model.myTeam.inTeam && model.currentMission.mapEx != -1);
|
|
m_MatchState.text = model.isMatching ? Language.Get("StopMatching") : Language.Get("TeamListAutoMatching");
|
model.theirTeamListRefreshEvent += ShowTeamList;
|
model.myTeamRefreshEvent += OnTeammemberRefresh;
|
model.matchingStateChangeEvent += OnMatchStateChange;
|
}
|
catch (Exception ex)
|
{
|
DebugEx.Log(ex);
|
}
|
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
m_MissionList.OnMissionSelected(null);
|
model.theirTeamListRefreshEvent -= ShowTeamList;
|
model.myTeamRefreshEvent -= OnTeammemberRefresh;
|
model.matchingStateChangeEvent -= OnMatchStateChange;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
protected override void LateUpdate()
|
{
|
base.LateUpdate();
|
|
autoRefreshTimer -= Time.deltaTime;
|
if (autoRefreshTimer < 0f)
|
{
|
RefreshCurrentTeamList();
|
}
|
}
|
|
public override void CloseClick()
|
{
|
WindowCenter.Instance.Close<TeamFrameWin>();
|
}
|
#endregion
|
|
private void ShowTeamList()
|
{
|
var teamList = model.theirTeams;
|
if (teamList == null || teamList.Count == 0)
|
{
|
m_ContainerNoTeam.SetActive(true);
|
m_TeamList.SetActive(false);
|
}
|
else
|
{
|
m_ContainerNoTeam.SetActive(false);
|
m_TeamList.SetActive(true);
|
m_TeamList.Init(teamList);
|
}
|
}
|
|
private void RefreshCurrentTeamList()
|
{
|
autoRefreshTimer = 5f;
|
model.RequestQueryTeamList();
|
}
|
|
private void RefreshTeamList(int _mapId, int _mapEx)
|
{
|
model.currentMission = new TeamMission(_mapId, _mapEx);
|
model.RequestQueryTeamList();
|
m_AutoFind.SetActive(!model.myTeam.inTeam && model.currentMission.mapEx != -1);
|
}
|
|
private void AutoMatchTeam()
|
{
|
if (model.isMatching)
|
{
|
model.RequestCancelAutoMatchTeam();
|
}
|
else
|
{
|
if (model.currentMission.mapId == TeamModel.NONE_MISSION)
|
{
|
ServerTipDetails.DisplayNormalTip("AutoMatchingNoTarget");
|
}
|
else if (model.myTeam.memberCount >= 4)
|
{
|
SysNotifyMgr.Instance.ShowTip("AutoMatchingCannotJoinTeam");
|
}
|
else
|
{
|
model.RequestAutoMatchTeam(false);
|
}
|
}
|
}
|
|
private void ExitTeam()
|
{
|
model.RequestExitTeam();
|
}
|
|
private void CreateTeam()
|
{
|
model.RequestCreateTeam(model.currentMission.mapId, model.currentMission.mapEx, model.levelMinBuf, model.levelMaxBuf);
|
}
|
|
private void OnTeammemberRefresh()
|
{
|
m_CreateTeam.SetActive(!model.myTeam.inTeam);
|
m_ExitTeam.SetActive(model.myTeam.inTeam);
|
m_AutoFind.SetActive(!model.myTeam.inTeam && model.currentMission.mapEx != -1);
|
}
|
|
private void OnMatchStateChange()
|
{
|
m_MatchState.text = model.isMatching ? Language.Get("StopMatching") : Language.Get("TeamListAutoMatching");
|
if (model.isMatching)
|
{
|
SysNotifyMgr.Instance.ShowTip("BeginAutoMatching");
|
}
|
}
|
|
}
|
|
}
|
|
|
|
|