using System; using UnityEngine; using UnityEngine.UI; namespace Snxxz.UI { [XLua.Hotfix] public class DungeonAssistWin : Window { [SerializeField] ScrollerController resultCtrl; [SerializeField] Text dayScoreText; [SerializeField] Text dungeonScoreText; [SerializeField] Button closeBtn; [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(); } } StoreModel storeModel { get { return ModelCenter.Instance.GetModel(); } } #region Built-in protected override void BindController() { } protected override void AddListeners() { closeBtn.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(); } } private void ClickAssistRegister() { if(!assistModel.IsCheckInOk) { assistModel.SendAssistCheckIn(); } } private void ClickFunc(PlayerDetails.DetailType type) { WindowJumpMgr.Instance.ClearJumpData(); if (WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Close(); } CloseClick(); } private void ClickStore() { WindowJumpMgr.Instance.WindowJumpTo(JumpUIType.XianYuanCoinsStore); } } }