using System;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace Snxxz.UI
|
{
|
[XLua.Hotfix]
|
public class DungeonAssistWin : Window, SecondWindowInterface
|
{
|
[SerializeField] ScrollerController resultCtrl;
|
[SerializeField] Text dayScoreText;
|
[SerializeField] Text dungeonScoreText;
|
[SerializeField] Button storeBtn;
|
[SerializeField] Button registerBtn;
|
[SerializeField] Image registerBgImg;
|
[SerializeField] Text vipAddText;
|
[SerializeField] Text vipRatioText;
|
[SerializeField] Text vipMaxAddText;
|
[SerializeField] Text vipMaxRatioText;
|
[SerializeField] GameObject privilege_01;
|
[SerializeField] GameObject privilege_02;
|
[SerializeField] GameObject privilege_01Max;
|
[SerializeField] GameObject privilege_02Max;
|
[SerializeField] GameObject noResultObj;
|
|
DungeonAssistModel assistModel { get { return ModelCenter.Instance.GetModel<DungeonAssistModel>(); } }
|
StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
|
|
public Button close { get; set; }
|
|
#region Built-in
|
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);
|
storeBtn.AddListener(ClickStore);
|
}
|
|
protected override void OnPreOpen()
|
{
|
PlayerDetails.updateDetailTypeEvent += ClickFunc;
|
assistModel.UpdateCheckInResultEvent += UpdateCheckInResult;
|
assistModel.UpdateResultEvent += UpdateResult;
|
PlayerDatas.Instance.playerDataRefreshEvent += UpdateAssistCoins;
|
SetDisplay();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
this.transform.SetAsLastSibling();
|
}
|
|
protected override void OnPreClose()
|
{
|
PlayerDatas.Instance.playerDataRefreshEvent -= UpdateAssistCoins;
|
PlayerDetails.updateDetailTypeEvent -= ClickFunc;
|
assistModel.UpdateResultEvent -= UpdateResult;
|
assistModel.UpdateCheckInResultEvent -= UpdateCheckInResult;
|
assistModel.SetHelpInfoRead();
|
}
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
#endregion
|
|
private void SetDisplay()
|
{
|
CreateResultCell();
|
UpdateRegisterBtn();
|
UpdateVipAddCoins();
|
UpdateXianYuanCoins();
|
}
|
|
private void CreateResultCell()
|
{
|
var resultlist = assistModel.helpInfolist;
|
if(resultlist != null)
|
{
|
resultCtrl.Refresh();
|
for(int i = 0; i < resultlist.Count; i++)
|
{
|
resultCtrl.AddCell(ScrollerDataType.Header,i);
|
}
|
resultCtrl.Restart();
|
}
|
|
noResultObj.SetActive(resultlist == null || resultlist.Count < 1);
|
}
|
|
private void UpdateResult()
|
{
|
CreateResultCell();
|
}
|
|
private void UpdateAssistCoins(PlayerDataType type)
|
{
|
switch (type)
|
{
|
case PlayerDataType.ExAttr11:
|
UpdateXianYuanCoins();
|
break;
|
case PlayerDataType.FBHelpPoint:
|
UpdateXianYuanCoins();
|
break;
|
}
|
}
|
|
private void UpdateXianYuanCoins()
|
{
|
int addCoins = 0;
|
assistModel.TryGetCurVipAddCoins(out addCoins);
|
int limitCoins = assistModel.maxXianYuanCoins + addCoins;
|
dayScoreText.text = StringUtility.Contact(PlayerDatas.Instance.baseData.ExAttr11,"/",limitCoins);
|
dungeonScoreText.text = UIHelper.GetMoneyCnt(17).ToString();
|
}
|
|
private void UpdateVipAddCoins()
|
{
|
int addvipLv = 0;
|
int addCoins = 0;
|
bool isAddMax = assistModel.IsMaxAssistCoinsAddByVip(out addvipLv, out addCoins);
|
privilege_01.SetActive(!isAddMax);
|
privilege_01Max.SetActive(isAddMax);
|
if(!isAddMax)
|
{
|
vipAddText.text = Language.Get("DungeonAssist125", addvipLv, addCoins);
|
}
|
else
|
{
|
vipMaxAddText.text = Language.Get("DungeonAssist139",addCoins);
|
}
|
int ratiovipLv = 0;
|
float addRatio = 0;
|
bool isRatioMax = assistModel.IsMaxAssistCoinsRatioAddByVip(out ratiovipLv,out addRatio);
|
privilege_02.SetActive(!isRatioMax);
|
privilege_02Max.SetActive(isRatioMax);
|
if(!isRatioMax)
|
{
|
string addRatioStr = StringUtility.Contact(addRatio,"%");
|
vipRatioText.text = Language.Get("DungeonAssist126", ratiovipLv, addRatioStr);
|
}
|
else
|
{
|
string addRatioStr = StringUtility.Contact(addRatio, "%");
|
vipMaxRatioText.text = Language.Get("DungeonAssist140", addRatioStr);
|
}
|
|
}
|
|
private void UpdateRegisterBtn()
|
{
|
registerBtn.RemoveAllListeners();
|
if (assistModel.IsCheckInOk)
|
{
|
registerBgImg.material = MaterialUtility.GetDefaultSpriteGrayMaterial();
|
}
|
else
|
{
|
registerBgImg.material = MaterialUtility.GetUIDefaultGraphicMaterial();
|
registerBtn.AddListener(ClickAssistRegister);
|
}
|
}
|
|
private void UpdateCheckInResult()
|
{
|
UpdateRegisterBtn();
|
if(assistModel.IsCheckInOk)
|
{
|
WindowCenter.Instance.Open<AssistCheckInSuccessWin>();
|
}
|
}
|
|
private void ClickAssistRegister()
|
{
|
if(!assistModel.IsCheckInOk)
|
{
|
assistModel.SendAssistCheckIn();
|
}
|
}
|
|
private void ClickFunc(PlayerDetails.DetailType type)
|
{
|
|
WindowJumpMgr.Instance.ClearJumpData();
|
if (WindowCenter.Instance.IsOpen<DailyQuestWin>())
|
{
|
WindowCenter.Instance.Close<DailyQuestWin>();
|
}
|
CloseClick();
|
}
|
|
private void ClickStore()
|
{
|
WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.XianYuanCoinsStore);
|
}
|
}
|
}
|