//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, December 24, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class KingTreasureWin : Window
|
{
|
[SerializeField] PositionTween m_PositionTween;
|
[SerializeField] Image m_TreasureNameIcon;
|
[SerializeField] RectTransform m_ContainerOnGoing;
|
[SerializeField] Text m_SeasonOnGoingRemind;
|
[SerializeField] RectTransform m_ContainerEnd;
|
[SerializeField] Text m_SeasonEndRemind;
|
[SerializeField] RectTransform m_ContainerGot;
|
[SerializeField] Image m_DivisionIcon;
|
[SerializeField] Text m_Division;
|
[SerializeField] Text m_Score;
|
[SerializeField] RectTransform m_ContainerBaseProperty;
|
[SerializeField] PropertyBehaviour[] m_BasePropertys;
|
[SerializeField] RectTransform m_ContainerSpecialProperty;
|
[SerializeField] PropertyBehaviour[] m_SpecialPropertys;
|
[SerializeField] Text m_Remind;
|
[SerializeField] Button m_Goto;
|
|
|
TreasureModel model
|
{
|
get { return ModelCenter.Instance.GetModel<TreasureModel>(); }
|
}
|
|
KingTreasureModel kingTreasureModel
|
{
|
get { return ModelCenter.Instance.GetModel<KingTreasureModel>(); }
|
}
|
|
CrossServerOneVsOneModel crossServerOneVsOneModel
|
{
|
get { return ModelCenter.Instance.GetModel<CrossServerOneVsOneModel>(); }
|
}
|
#region Built-in
|
protected override void BindController()
|
{
|
m_Goto.onClick.AddListener(Goto);
|
}
|
|
protected override void AddListeners()
|
{
|
}
|
|
protected override void OnPreOpen()
|
{
|
UI3DTreasureSelectStage.Instance.SetStartState();
|
model.treasureSelectedEvent += TreasureSelectedEvent;
|
TreasureBaseWin.allowSelectTreasure += AllowSelectTreasure;
|
Display();
|
|
var countDisplay = string.Empty;
|
if (kingTreasureModel.wearCountLimit == 2)
|
{
|
countDisplay = Language.Get("Num_CHS_Two");
|
}
|
else
|
{
|
countDisplay = Language.Get(StringUtility.Contact("Num_CHS_", kingTreasureModel.wearCountLimit));
|
}
|
|
m_Remind.text = Language.Get("KingTreasureLimitRemind", countDisplay);
|
}
|
|
protected override void OnActived()
|
{
|
base.OnActived();
|
DisplayTween();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
model.treasureSelectedEvent -= TreasureSelectedEvent;
|
TreasureBaseWin.allowSelectTreasure -= AllowSelectTreasure;
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
|
public void Display()
|
{
|
DisplayBase();
|
DisplayState();
|
DisplayGoto();
|
}
|
|
void DisplayBase()
|
{
|
var config = TreasureConfig.Get(model.selectedTreasure);
|
if (config != null)
|
{
|
m_TreasureNameIcon.SetSprite(config.TreasureNameIcon);
|
}
|
}
|
|
void DisplayState()
|
{
|
Treasure treasure;
|
m_ContainerEnd.SetActive(false);
|
m_ContainerGot.SetActive(false);
|
m_ContainerOnGoing.SetActive(false);
|
if (model.TryGetTreasure(model.selectedTreasure, out treasure))
|
{
|
var season = 0;
|
kingTreasureModel.TryGetSeason(model.selectedTreasure, out season);
|
if (treasure.state == TreasureState.Collected)
|
{
|
DisplayGot();
|
}
|
else if (kingTreasureModel.GetSeasonState(model.selectedTreasure) == 2)
|
{
|
DisplayEnd();
|
}
|
else
|
{
|
DisplayOnGoing();
|
}
|
}
|
}
|
|
void DisplayGot()
|
{
|
m_ContainerGot.SetActive(true);
|
CrossServerOneVsOneModel.CrossServerOneVsOneHistory history;
|
var session = 0;
|
if (kingTreasureModel.TryGetSeason(model.selectedTreasure, out session)
|
&& crossServerOneVsOneModel.TryGetOneVsOneHistory(session, out history))
|
{
|
m_Score.text = history.score.ToString();
|
var divisionConfig = CrossServerArenaConfig.Get(history.division);
|
if (divisionConfig != null)
|
{
|
m_DivisionIcon.SetSprite(divisionConfig.IconKey);
|
m_Division.text = divisionConfig.Name;
|
m_Division.color = UIHelper.GetDanLVColor(history.division);
|
}
|
KingTreasureModel.Division division;
|
bool containsDivision = kingTreasureModel.TryGetDivision(model.selectedTreasure, history.rewardLevel, out division);
|
m_ContainerBaseProperty.SetActive(containsDivision && division.basePropertys.Count > 0);
|
m_ContainerSpecialProperty.SetActive(containsDivision && division.specialPropertys.Count > 0);
|
var index = 0;
|
if (containsDivision && division.basePropertys.Count > 0)
|
{
|
foreach (var key in division.basePropertys.Keys)
|
{
|
if (index < m_BasePropertys.Length)
|
{
|
m_BasePropertys[index].SetActive(true);
|
m_BasePropertys[index].DisplayUpper(key, division.basePropertys[key]);
|
}
|
index++;
|
}
|
}
|
for (int i = index; i < m_BasePropertys.Length; i++)
|
{
|
m_BasePropertys[i].SetActive(false);
|
}
|
index = 0;
|
if (containsDivision && division.specialPropertys.Count > 0)
|
{
|
foreach (var key in division.specialPropertys.Keys)
|
{
|
if (index < m_SpecialPropertys.Length)
|
{
|
m_SpecialPropertys[index].SetActive(true);
|
m_SpecialPropertys[index].DisplayUpper(key, division.specialPropertys[key]);
|
}
|
index++;
|
}
|
}
|
for (int i = index; i < m_SpecialPropertys.Length; i++)
|
{
|
m_SpecialPropertys[i].SetActive(false);
|
}
|
}
|
}
|
|
void DisplayEnd()
|
{
|
m_ContainerEnd.SetActive(true);
|
m_SeasonEndRemind.text = UIHelper.ReplaceNewLine(Language.Get("KingTreasureEndRemind"));
|
}
|
|
void DisplayOnGoing()
|
{
|
m_ContainerOnGoing.SetActive(true);
|
m_SeasonOnGoingRemind.text = UIHelper.ReplaceNewLine(Language.Get("KingTreasureOnGoingRemind"));
|
}
|
|
void DisplayGoto()
|
{
|
var season = 0;
|
kingTreasureModel.TryGetSeason(model.selectedTreasure, out season);
|
m_Goto.SetActive(CrossServerOneVsOnePKSeason.Instance.SeasonID == season);
|
}
|
|
void DisplayTween()
|
{
|
m_PositionTween.Play();
|
}
|
|
private void TreasureSelectedEvent(int id)
|
{
|
m_PositionTween.SetEndState();
|
Display();
|
}
|
|
private bool AllowSelectTreasure(int id)
|
{
|
var list = kingTreasureModel.GetDisplayList();
|
if (kingTreasureModel.GetSeasonState(id) == 0)
|
{
|
SysNotifyMgr.Instance.ShowTip("TreasureOneVsOneSeasonNotStart");
|
return false;
|
}
|
return list.Contains(id);
|
}
|
|
private void Goto()
|
{
|
WindowJumpMgr.Instance.WindowJumpTo((JumpUIType)278);
|
}
|
|
}
|
|
}
|
|
|
|
|