//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, December 06, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Text;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class FairyLeagueWin : Window
|
{
|
[Header("SignUp")]
|
[SerializeField]
|
Transform m_ContainerSignUp;
|
[SerializeField] Text m_PrepareTitleTxt;
|
[SerializeField] Text m_CutOffTimeTxt;
|
[SerializeField] List<FairyLeagueName> m_FairyNameList;
|
[SerializeField] Text m_LeagueStartTime;
|
[SerializeField] Text m_StageTime1;
|
[SerializeField] Text m_StageTime2;
|
[SerializeField] Button m_FairyStoreBtn;
|
[SerializeField] RectTransform m_ContainerSignUpTime;
|
|
[Header("Battle")]
|
[SerializeField]
|
Transform m_ContainerBattle;
|
[SerializeField] Text m_BattleTitleTxt;
|
[SerializeField] Text m_RewardTxt;
|
[SerializeField] List<FairyClash> m_FairyClashList;
|
[SerializeField] RectTransform m_ContainerBattleTime;
|
|
[SerializeField] Button m_ViewRankAward;
|
[SerializeField] Button m_BattleGroundBtn;
|
[SerializeField] Text m_BattleGroundBtnTxt;
|
[SerializeField] Button m_RuleBtn;
|
[SerializeField] RectTransform m_ContainerTime;
|
|
FairyLeagueModel m_Model;
|
FairyLeagueModel model
|
{
|
get
|
{
|
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<FairyLeagueModel>());
|
}
|
}
|
|
KingFairyModel m_KingFairyModel;
|
KingFairyModel kingFairyModel
|
{
|
get
|
{
|
return m_KingFairyModel ?? (m_KingFairyModel = ModelCenter.Instance.GetModel<KingFairyModel>());
|
}
|
}
|
|
FairyModel m_FairyModel;
|
FairyModel fairyModel
|
{
|
get
|
{
|
return m_FairyModel ?? (m_FairyModel = ModelCenter.Instance.GetModel<FairyModel>());
|
}
|
}
|
|
StoreModel _storeModel;
|
StoreModel m_storeModel
|
{
|
get { return _storeModel ?? (_storeModel = ModelCenter.Instance.GetModel<StoreModel>()); }
|
}
|
|
private static StringBuilder m_StringBuilder = new StringBuilder();
|
|
#region Built-in
|
protected override void BindController()
|
{ }
|
|
protected override void AddListeners()
|
{
|
m_FairyStoreBtn.onClick.AddListener(OnFairyStoreBtn);
|
m_BattleGroundBtn.onClick.AddListener(OnBattleGoundBtn);
|
m_RuleBtn.onClick.AddListener(OnRuneBtn);
|
m_ViewRankAward.AddListener(ViewRankAward);
|
}
|
|
protected override void OnPreOpen()
|
{
|
model.CheckFairyLeagueData();
|
RefreshFairyLeague();
|
model.OnRefreshFairyLeagueEvent += RefreshFairyLeague;
|
model.onFairyLeagueBattleEvent += UpdateFairyLeagueBattle;
|
//PlayerDatas.Instance.fairyData.OnRefreshFairyList += UpdateFairyLeagueGroup;
|
kingFairyModel.UpdateKingFairyEvent += UpdateKingFairyEvent;
|
model.frontFairyUpdate += FrontFairyUpdate;
|
}
|
|
protected override void OnAfterOpen()
|
{ }
|
|
protected override void OnPreClose()
|
{
|
model.OnRefreshFairyLeagueEvent -= RefreshFairyLeague;
|
model.onFairyLeagueBattleEvent -= UpdateFairyLeagueBattle;
|
//PlayerDatas.Instance.fairyData.OnRefreshFairyList -= UpdateFairyLeagueGroup;
|
kingFairyModel.UpdateKingFairyEvent -= UpdateKingFairyEvent;
|
model.frontFairyUpdate -= FrontFairyUpdate;
|
}
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
|
protected override void LateUpdate()
|
{
|
base.LateUpdate();
|
|
}
|
#endregion
|
|
private void FrontFairyUpdate()
|
{
|
UpdateFairyLeagueGroup();
|
}
|
|
private void UpdateKingFairyEvent()
|
{
|
if (model.fairyLeagueSession == 1 && model.fairyLeagueStage == FairyLeagueStage.Over)
|
{
|
m_RewardTxt.text = Language.Get("CongratulationWangZheMeng", kingFairyModel.kingFairyData.fairyName);
|
}
|
}
|
private void RefreshFairyLeague()
|
{
|
m_ContainerSignUp.SetActive(model.fairyLeagueStage == FairyLeagueStage.Prepare);
|
m_ContainerBattle.SetActive(model.fairyLeagueStage != FairyLeagueStage.Prepare);
|
m_BattleGroundBtn.SetInteractable(m_BattleGroundBtnTxt, model.fairyLeagueStage == FairyLeagueStage.Fight);
|
m_ContainerTime.transform.SetParent(model.fairyLeagueStage == FairyLeagueStage.Prepare ? m_ContainerSignUpTime : m_ContainerBattleTime);
|
m_ContainerTime.localPosition = Vector3.zero;
|
if (model.fairyLeagueStage == FairyLeagueStage.Prepare)
|
{
|
model.SearchLeagueFrontFairy();
|
RefreshPrepare();
|
}
|
else
|
{
|
RefreshFight();
|
}
|
}
|
|
private void RefreshPrepare()
|
{
|
var isNextWeek = model.IsNextWeek;
|
var weekTime = isNextWeek ? model.nextWeekTime : model.currentWeekTime;
|
var ring = isNextWeek ? 0 : weekTime.currentRing;
|
FairyLeagueWeekTime.Session session;
|
if (weekTime.TryGetSession(ring, 0, out session))
|
{
|
var stage = session.stages.Find((x) =>
|
{
|
return x.stage == FairyLeagueStage.Grouping;
|
});
|
m_CutOffTimeTxt.text = Language.Get("FamilyMatchBlockingTime", isNextWeek ? Language.Get("Next") : Language.Get("ThisTime"),
|
Language.Get(StringUtility.Contact("Weekday", weekTime.GetDayOfWeek(ring))), stage.startHour,
|
stage.startMinute.ToString("D2"));
|
}
|
|
UpdateFairyLeagueGroup();
|
UpdateStageTime();
|
}
|
private void RefreshFight()
|
{
|
m_RewardTxt.text = Language.Get("FamilyMatchWangZheController");
|
switch (model.fairyLeagueStage)
|
{
|
case FairyLeagueStage.Grouping:
|
m_BattleTitleTxt.text = Language.Get("FamilyMatchAboutToStart", Language.Get(StringUtility.Contact("Num_CHS_", model.fairyLeagueSession + 1)));
|
break;
|
case FairyLeagueStage.Fight:
|
m_BattleTitleTxt.text = Language.Get("FamilyMatchDoing", Language.Get(StringUtility.Contact("Num_CHS_", model.fairyLeagueSession + 1)));
|
break;
|
case FairyLeagueStage.Over:
|
UpdateKingFairyEvent();
|
m_BattleTitleTxt.text = Language.Get("FamilyMatchEnd", Language.Get(StringUtility.Contact("Num_CHS_", model.fairyLeagueSession + 1)));
|
break;
|
}
|
UpdateStageTime();
|
UpdateFairyLeagueBattle();
|
}
|
private void UpdateStageTime()
|
{
|
var _session = model.fairyLeagueSession;
|
bool _stage1Over = false;
|
bool _stage2Over = false;
|
var isNextWeek = model.IsNextWeek;
|
var weekTime = isNextWeek ? model.nextWeekTime : model.currentWeekTime;
|
var ring = isNextWeek ? 0 : weekTime.currentRing;
|
var fairyLeagueStage = model.fairyLeagueStage;
|
FairyLeagueWeekTime.Session session1;
|
weekTime.TryGetSession(ring, 0, out session1);
|
FairyLeagueWeekTime.Session session2;
|
weekTime.TryGetSession(ring, 1, out session2);
|
|
m_LeagueStartTime.text = Language.Get("FamilyMatchWeekTime", model.IsNextWeek ? Language.Get("Next") : Language.Get("ThisTime"), Language.Get(StringUtility.Contact("Weekday", weekTime.GetDayOfWeek(ring))));
|
if (_session > 0 || fairyLeagueStage == FairyLeagueStage.Over)
|
{
|
_stage1Over = true;
|
m_StageTime1.text = StringUtility.Contact(Language.Get("FamilyMatchWhichTurn", Language.Get("Num_CHS_1")), ": ", Language.Get("FamilyMatchAlreadyEnd"));
|
}
|
if (_session > 0 && fairyLeagueStage == FairyLeagueStage.Over)
|
{
|
_stage2Over = true;
|
m_StageTime2.text = StringUtility.Contact(Language.Get("FamilyMatchWhichTurn", Language.Get("Num_CHS_2")), ": ", Language.Get("FamilyMatchAlreadyEnd"));
|
}
|
if (!_stage1Over)
|
{
|
if (session1 != null)
|
{
|
var groupStage = session1.stages.Find((x) => { return x.stage == FairyLeagueStage.Grouping; });
|
var fightStage = session1.stages.Find((x) => { return x.stage == FairyLeagueStage.Fight; });
|
m_StageTime1.text = StringUtility.Contact(Language.Get("FamilyMatchWhichTurn", Language.Get("Num_CHS_1")), ": ",
|
Language.Get(StringUtility.Contact("Weekday", groupStage.dayOfWeek)), " ", fightStage.startHour, ":",
|
fightStage.startMinute.ToString("D2"), "-", fightStage.endHour, ":",
|
fightStage.endMinute.ToString("D2"));
|
}
|
}
|
if (!_stage2Over)
|
{
|
if (session2 != null)
|
{
|
var groupStage = session2.stages.Find((x) => { return x.stage == FairyLeagueStage.Grouping; });
|
var fightStage = session2.stages.Find((x) => { return x.stage == FairyLeagueStage.Fight; });
|
m_StageTime2.text = StringUtility.Contact(Language.Get("FamilyMatchWhichTurn", Language.Get("Num_CHS_2")), ": ",
|
Language.Get(StringUtility.Contact("Weekday", groupStage.dayOfWeek)), " ", fightStage.startHour, ":",
|
fightStage.startMinute.ToString("D2"), "-", fightStage.endHour, ":",
|
fightStage.endMinute.ToString("D2"));
|
}
|
}
|
if (_session == 0 && fairyLeagueStage == FairyLeagueStage.Over)
|
{
|
if (session1 != null)
|
{
|
var groupStage = session1.stages.Find((x) => { return x.stage == FairyLeagueStage.Grouping; });
|
var fightStage = session1.stages.Find((x) => { return x.stage == FairyLeagueStage.Fight; });
|
m_LeagueStartTime.text = Language.Get("FamilyMatchWeekTime", model.IsNextWeek ? Language.Get("Next") : Language.Get("ThisTime"), Language.Get(StringUtility.Contact("Weekday", groupStage.dayOfWeek)));
|
}
|
}
|
else
|
{
|
if (session2 != null)
|
{
|
var groupStage = session2.stages.Find((x) => { return x.stage == FairyLeagueStage.Grouping; });
|
var fightStage = session2.stages.Find((x) => { return x.stage == FairyLeagueStage.Fight; });
|
m_LeagueStartTime.text = Language.Get("FamilyMatchWeekTime", model.IsNextWeek ? Language.Get("Next") : Language.Get("ThisTime"), Language.Get(StringUtility.Contact("Weekday", groupStage.dayOfWeek)));
|
}
|
}
|
}
|
|
private void UpdateFairyLeagueGroup()
|
{
|
if (model.fairyLeagueStage != FairyLeagueStage.Prepare)
|
{
|
return;
|
}
|
|
if (HasGradeFairy())
|
{
|
m_PrepareTitleTxt.text = Language.Get("FamilyMatchQualification");
|
}
|
else
|
{
|
m_PrepareTitleTxt.text = Language.Get("FamilyMatchQualification2");
|
}
|
|
for (int i = 0; i < m_FairyNameList.Count; i++)
|
{
|
List<PlayerFairyData.FairyData> list = model.frontLeagueFairy;
|
for (int j = 0; j < m_FairyNameList[i].fairyNameList.Count; j++)
|
{
|
var _adaptive = m_FairyNameList[i].fairyNameList[j];
|
if (list == null || i * 4 + j >= list.Count)
|
{
|
_adaptive.Display(Language.Get("FamilyMatchNoOneHere"));
|
_adaptive.SetAdaptive(false);
|
}
|
else
|
{
|
_adaptive.Display(list[i * 4 + j].FamilyName);
|
_adaptive.SetAdaptive(list[i * 4 + j].FamilyID == PlayerDatas.Instance.baseData.FamilyId
|
&& PlayerDatas.Instance.baseData.FamilyId > 0);
|
}
|
}
|
}
|
}
|
|
bool HasGradeFairy()
|
{
|
List<PlayerFairyData.FairyData> list = model.frontLeagueFairy;
|
for (int i = 0; i < list.Count; i++)
|
{
|
if (list[i].WarRank != 0)
|
{
|
return true;
|
}
|
}
|
return false;
|
}
|
|
private void UpdateFairyLeagueBattle()
|
{
|
var _session = model.fairyLeagueSession;
|
var fairyLeagueStage = model.fairyLeagueStage;
|
for (int i = 0; i < m_FairyClashList.Count; i++)
|
{
|
var fairyClash = m_FairyClashList[i];
|
List<FairyLeagueBattleData> list = model.GetFairyLeague(model.StepSession(fairyClash.grade) ? 0 : model.fairyLeagueSession, fairyClash.grade);
|
fairyClash.SetActive((fairyLeagueStage == FairyLeagueStage.Over && _session == 1)
|
|| model.StepSession(fairyClash.grade));
|
if ((fairyLeagueStage == FairyLeagueStage.Over && _session == 1) || model.StepSession(fairyClash.grade))
|
{
|
if (list == null || list.Count == 0)
|
{
|
fairyClash.clashTxt1.Display(Language.Get("FamilyMatchNoOneHere"));
|
fairyClash.clashTxt1.SetAdaptive(false);
|
fairyClash.clashTxt2.Display(Language.Get("FamilyMatchNoOneHere"));
|
fairyClash.clashTxt2.SetAdaptive(false);
|
fairyClash.clashTxt3.Display(Language.Get("FamilyMatchNoOneHere"));
|
fairyClash.clashTxt3.SetAdaptive(false);
|
fairyClash.clashTxt4.Display(Language.Get("FamilyMatchNoOneHere"));
|
fairyClash.clashTxt4.SetAdaptive(false);
|
continue;
|
}
|
m_StringBuilder.Length = 0;
|
var _fairyId = list[0].GetWinFairyId();
|
m_StringBuilder.Append(list[0].GetWinFairyName());
|
m_StringBuilder.Append(list[0].IsFairyDissolve(list[0].GetWinFairyId()) ? Language.Get("LeagueState_Dissolve") : string.Empty);
|
m_StringBuilder.Append(fairyClash.grade < 5 ? Language.Get("LeagueState_Promote") : string.Empty);
|
fairyClash.clashTxt1.Display(m_StringBuilder.ToString());
|
fairyClash.clashTxt1.SetAdaptive(_fairyId == PlayerDatas.Instance.baseData.FamilyId
|
&& PlayerDatas.Instance.baseData.FamilyId > 0);
|
m_StringBuilder.Length = 0;
|
_fairyId = list[0].GetLoserFairyId();
|
var loserFairyName = list[0].GetLoserFairyName();
|
if (string.IsNullOrEmpty(loserFairyName))
|
{
|
loserFairyName = Language.Get("FamilyMatchNoOneHere");
|
}
|
m_StringBuilder.Append(loserFairyName);
|
m_StringBuilder.Append(list[0].IsFairyDissolve(list[0].GetLoserFairyId()) ? Language.Get("LeagueState_Dissolve") : string.Empty);
|
fairyClash.clashTxt2.Display(m_StringBuilder.ToString());
|
fairyClash.clashTxt2.SetAdaptive(_fairyId == PlayerDatas.Instance.baseData.FamilyId
|
&& PlayerDatas.Instance.baseData.FamilyId > 0);
|
if (list.Count < 2)
|
{
|
fairyClash.clashTxt3.Display(Language.Get("FamilyMatchNoOneHere"));
|
fairyClash.clashTxt3.SetAdaptive(false);
|
fairyClash.clashTxt4.Display(Language.Get("FamilyMatchNoOneHere"));
|
fairyClash.clashTxt4.SetAdaptive(false);
|
continue;
|
}
|
m_StringBuilder.Length = 0;
|
_fairyId = list[1].GetWinFairyId();
|
m_StringBuilder.Append(list[1].GetWinFairyName());
|
m_StringBuilder.Append(list[1].IsFairyDissolve(list[1].GetWinFairyId()) ? Language.Get("LeagueState_Dissolve") : string.Empty);
|
fairyClash.clashTxt3.Display(m_StringBuilder.ToString());
|
fairyClash.clashTxt3.SetAdaptive(_fairyId == PlayerDatas.Instance.baseData.FamilyId
|
&& PlayerDatas.Instance.baseData.FamilyId > 0);
|
m_StringBuilder.Length = 0;
|
_fairyId = list[1].GetLoserFairyId();
|
loserFairyName = list[1].GetLoserFairyName();
|
if (string.IsNullOrEmpty(loserFairyName))
|
{
|
loserFairyName = Language.Get("FamilyMatchNoOneHere");
|
}
|
m_StringBuilder.Append(loserFairyName);
|
m_StringBuilder.Append(list[1].IsFairyDissolve(list[1].GetLoserFairyId()) ? Language.Get("LeagueState_Dissolve") : string.Empty);
|
m_StringBuilder.Append(Language.Get("LeagueState_Demotion"));
|
fairyClash.clashTxt4.Display(m_StringBuilder.ToString());
|
fairyClash.clashTxt4.SetAdaptive(_fairyId == PlayerDatas.Instance.baseData.FamilyId
|
&& PlayerDatas.Instance.baseData.FamilyId > 0);
|
continue;
|
}
|
if (list == null || list.Count == 0)
|
{
|
fairyClash.fairyNameLeft1.Display(Language.Get("FamilyMatchNoOneHere"));
|
fairyClash.fairyNameLeft1.SetAdaptive(false);
|
fairyClash.fairyNameLeft2.Display(Language.Get("FamilyMatchNoOneHere"));
|
fairyClash.fairyNameLeft2.SetAdaptive(false);
|
fairyClash.fairyNameRight1.Display(Language.Get("FamilyMatchNoOneHere"));
|
fairyClash.fairyNameRight1.SetAdaptive(false);
|
fairyClash.fairyNameRight2.Display(Language.Get("FamilyMatchNoOneHere"));
|
fairyClash.fairyNameRight2.SetAdaptive(false);
|
continue;
|
}
|
var k = 0;
|
for (; k < list.Count; k++)
|
{
|
for (int f = 0; f < 2; f++)
|
{
|
m_StringBuilder.Length = 0;
|
var _fairyId = f == 0 ? list[k].fairyId1 : list[k].fairyId2;
|
var _fairyName = f == 0 ? list[k].fairyName1 : list[k].fairyName2;
|
if (_fairyId == 0)
|
{
|
m_StringBuilder.Append(Language.Get("StepRing"));
|
}
|
else
|
{
|
if (f == 1)
|
{
|
m_StringBuilder.Append(_fairyName);
|
}
|
if (list[k].IsFairyDissolve(_fairyId))
|
{
|
m_StringBuilder.Append(Language.Get("LeagueState_Dissolve"));
|
}
|
else
|
{
|
if (list[k].IsFairyWin(_fairyId))
|
{
|
m_StringBuilder.Append(Language.Get("LeagueState_Win"));
|
}
|
else if (list[k].IsFairyWin(f == 0 ? list[k].fairyId2 : list[k].fairyId1) &&
|
list[k].IsFairyDissolve(f == 0 ? list[k].fairyId2 : list[k].fairyId1))
|
{
|
m_StringBuilder.Append(Language.Get("LeagueState_Defeat"));
|
}
|
}
|
if (f == 0)
|
{
|
m_StringBuilder.Append(_fairyName);
|
}
|
}
|
fairyClash.SetFairyName(k, f == 0, m_StringBuilder.ToString(), _fairyId);
|
}
|
}
|
if (k == 1)
|
{
|
fairyClash.SetFairyName(1, true, Language.Get("FamilyMatchNoOneHere"), 0);
|
fairyClash.SetFairyName(1, false, Language.Get("FamilyMatchNoOneHere"), 0);
|
}
|
}
|
}
|
|
private void OnFairyStoreBtn()
|
{
|
if (!fairyModel.fairyStoreOpen)
|
{
|
fairyModel.ProcessErrorTip();
|
return;
|
}
|
m_storeModel.ControllerRedPoint(true);
|
WindowCenter.Instance.Open<UnionStoreWin>();
|
}
|
|
private void OnBattleGoundBtn()
|
{
|
int _error = 0;
|
if (!model.SatisfyEnterLeague(out _error))
|
{
|
model.DisplayErrorTip(_error);
|
return;
|
}
|
if (CrossServerUtility.IsCrossServer())
|
{
|
SysNotifyMgr.Instance.ShowTip("CrossMap10");
|
return;
|
}
|
ModelCenter.Instance.GetModel<DungeonModel>().SingleChallenge(FairyLeagueModel.FAIRY_LEAGUE_DUNGEON);
|
}
|
|
private void OnRuneBtn()
|
{
|
FuncRules.OpenFuncRule("FamilyMatch_HowToPlay");
|
}
|
|
private void ViewRankAward()
|
{
|
WindowCenter.Instance.Open<FairyLeagueRankRewardWin>();
|
}
|
|
[Serializable]
|
public class FairyLeagueName
|
{
|
public int grade;
|
public List<FairyNameAdaptive> fairyNameList;
|
}
|
|
[Serializable]
|
public class FairyClash
|
{
|
public int grade;
|
public FairyNameAdaptive clashTxt1;
|
public FairyNameAdaptive clashTxt2;
|
public FairyNameAdaptive clashTxt3;
|
public FairyNameAdaptive clashTxt4;
|
public FairyNameAdaptive fairyNameLeft1;
|
public FairyNameAdaptive fairyNameLeft2;
|
public FairyNameAdaptive fairyNameRight1;
|
public FairyNameAdaptive fairyNameRight2;
|
|
[SerializeField] RectTransform m_ContainerLeagueOver;
|
[SerializeField] RectTransform m_ContainerLeagueRun;
|
|
public void SetActive(bool _leagueOver)
|
{
|
m_ContainerLeagueOver.SetActive(_leagueOver);
|
m_ContainerLeagueRun.SetActive(!_leagueOver);
|
}
|
|
public void SetFairyName(int _index, bool _left, string _name, int _fairyId)
|
{
|
switch (_index)
|
{
|
case 0:
|
if (_left)
|
{
|
fairyNameLeft1.Display(_name);
|
fairyNameLeft1.SetAdaptive(_fairyId == PlayerDatas.Instance.baseData.FamilyId
|
&& PlayerDatas.Instance.baseData.FamilyId > 0);
|
}
|
else
|
{
|
fairyNameRight1.Display(_name);
|
fairyNameRight1.SetAdaptive(_fairyId == PlayerDatas.Instance.baseData.FamilyId
|
&& PlayerDatas.Instance.baseData.FamilyId > 0);
|
}
|
break;
|
case 1:
|
if (_left)
|
{
|
fairyNameLeft2.Display(_name);
|
fairyNameLeft2.SetAdaptive(_fairyId == PlayerDatas.Instance.baseData.FamilyId
|
&& PlayerDatas.Instance.baseData.FamilyId > 0);
|
}
|
else
|
{
|
fairyNameRight2.Display(_name);
|
fairyNameRight2.SetAdaptive(_fairyId == PlayerDatas.Instance.baseData.FamilyId
|
&& PlayerDatas.Instance.baseData.FamilyId > 0);
|
}
|
break;
|
}
|
}
|
}
|
}
|
|
}
|