//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Friday, October 27, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
using vnxbqy.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class PrayerWin : Window
|
{
|
[Header("Coin Pray")]
|
[SerializeField]
|
Text coinPrayerText;
|
[SerializeField] Button coinPrayerBtn;
|
[SerializeField] Text coinPrayerBtnText;
|
[SerializeField] Image coinPrayerBtnImg;
|
[SerializeField] Text coinPrayerCnt;
|
[SerializeField] Text coinPrayerCost;
|
[SerializeField] Text surplusTimeText;
|
[SerializeField] Text prayerCoinRuneCount;
|
[SerializeField] RectTransform freeCoinPrayerTip;
|
[SerializeField] RectTransform costCoinPrayerTip;
|
[SerializeField] RectTransform m_ContaienrRuneCoinPrayer;
|
[SerializeField] RectTransform m_MoneyPrayerEffect;
|
[Header("Exp Pray")]
|
[SerializeField]
|
Text expPrayerText;
|
[SerializeField] Text expPrayerCntText;
|
[SerializeField] Text expPrayerCostText;
|
[SerializeField] Button expPrayerBtn;
|
[SerializeField] Text expPrayerBtnTxt;
|
[SerializeField] Image expPrayerBtnImg;
|
[SerializeField] RectTransform m_ContainerExpOpen;
|
[SerializeField] Text m_ExpPrayNoOpenTip;
|
[SerializeField] RectTransform m_ContainerJadeCost;
|
[SerializeField] RectTransform m_ContainerRuneCost;
|
[SerializeField] Image m_RuneIcon;
|
[SerializeField] Text m_RuneNum;
|
[SerializeField] RectTransform m_ExpPrayerEffect;
|
|
PrayerModel m_Model;
|
PrayerModel model
|
{
|
get
|
{
|
return m_Model ?? (m_Model = ModelCenter.Instance.GetModel<PrayerModel>());
|
}
|
}
|
|
PackModel _playerPack;
|
PackModel playerPack
|
{
|
get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PackModel>()); }
|
}
|
|
private float surplusTime = 0;
|
|
private bool initedCoin = false;
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
coinPrayerBtn.onClick.AddListener(OnCoinPrayerClick);
|
expPrayerBtn.onClick.AddListener(OnExpPrayerClick);
|
}
|
|
protected override void OnPreOpen()
|
{
|
model.OnCoinPrayerEvent += OnCoinPrayerEvent;
|
model.OnExpPrayerEvent += OnExpPrayerEvent;
|
PlayerDatas.Instance.playerDataRefreshEvent += RefreshInfo;
|
FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent;
|
playerPack.refreshItemCountEvent += RefreshItemCountAct;
|
SysNotifyMgr.Instance.OnSystemNotifyEvent += SysNotifyEvent;
|
InitData();
|
}
|
|
private void SysNotifyEvent(string _key)
|
{
|
if (_key == "MoneyPray_HowMuch")
|
{
|
EffectMgr.Instance.PlayUIEffect(1079, 2500, m_MoneyPrayerEffect, false);
|
}
|
else if (_key == "ExpPray_HowMuch")
|
{
|
EffectMgr.Instance.PlayUIEffect(1080, 2500, m_ExpPrayerEffect, false);
|
}
|
}
|
|
private void RefreshInfo(PlayerDataType refreshType)
|
{
|
switch (refreshType)
|
{
|
case PlayerDataType.VIPLv:
|
{
|
OnExpPrayerEvent();
|
OnCoinPrayerEvent();
|
}
|
break;
|
case PlayerDataType.LV:
|
{
|
OnExpPrayerEvent();
|
}
|
break;
|
}
|
}
|
|
protected override void OnAfterOpen()
|
{
|
HandleAchievement();
|
}
|
|
protected override void OnPreClose()
|
{
|
model.OnCoinPrayerEvent -= OnCoinPrayerEvent;
|
model.OnExpPrayerEvent -= OnExpPrayerEvent;
|
PlayerDatas.Instance.playerDataRefreshEvent -= RefreshInfo;
|
FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent;
|
playerPack.refreshItemCountEvent -= RefreshItemCountAct;
|
SysNotifyMgr.Instance.OnSystemNotifyEvent -= SysNotifyEvent;
|
}
|
|
protected override void OnAfterClose()
|
{
|
|
}
|
|
protected override void LateUpdate()
|
{
|
base.LateUpdate();
|
if (!model.CanFreeCoinPrayer())
|
{
|
TimeSpan t = TimeUtility.ServerNow - TimeUtility.GetTime(model.lastCoinPrayerTime);
|
int _value = (int)t.TotalSeconds;
|
if (_value != surplusTime)
|
{
|
surplusTime = _value;
|
surplusTime = Mathf.Max(0, surplusTime);
|
RefreshCoinPrayerTime();
|
}
|
}
|
else
|
{
|
if (initedCoin) return;
|
OnCoinPrayerEvent();
|
}
|
}
|
#endregion
|
private void OnExpPrayerClick()
|
{
|
if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.ExpPray))
|
{
|
FuncOpen.Instance.ProcessorFuncErrorTip((int)FuncOpenEnum.ExpPray);
|
return;
|
}
|
model.SendExpPrayer();
|
}
|
|
private void OnCoinPrayerClick()
|
{
|
if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.CoinPray))
|
{
|
FuncOpen.Instance.ProcessorFuncErrorTip((int)FuncOpenEnum.CoinPray);
|
return;
|
}
|
model.SendCoinPrayer();
|
}
|
|
private void InitData()
|
{
|
OnCoinPrayerEvent();
|
OnExpPrayerEvent();
|
}
|
|
private void OnCoinPrayerEvent()
|
{
|
coinPrayerText.text = Language.Get("PrayerWin_1", model.specialCoinPrayer < model.prayerSpecialCoinCount ?
|
model.prayerSpecialCoinValue : model.prayerGetCoin);
|
costCoinPrayerTip.SetActive(false);
|
freeCoinPrayerTip.SetActive(false);
|
m_ContaienrRuneCoinPrayer.SetActive(false);
|
if (model.CanFreeCoinPrayer())
|
{
|
initedCoin = true;
|
if (model.FreeCoinPrayerTime())
|
{
|
freeCoinPrayerTip.SetActive(true);
|
}
|
else
|
{
|
m_ContaienrRuneCoinPrayer.SetActive(true);
|
var _coinRuneCnt = playerPack.GetItemCountByID(PackType.Item, model.prayerCoinRune);
|
prayerCoinRuneCount.text = StringUtility.Contact(_coinRuneCnt, "/1");
|
}
|
coinPrayerBtnText.text = Language.Get("PrayerWin_7");
|
coinPrayerBtnText.color = new Color32(51, 8, 0, 255);
|
coinPrayerBtnImg.SetSprite("FreePrayBtn_a");
|
}
|
else
|
{
|
initedCoin = false;
|
costCoinPrayerTip.SetActive(true);
|
coinPrayerBtnText.text = Language.Get("PrayerWin_8");
|
coinPrayerBtnText.color = new Color32(51, 8, 0, 255);
|
coinPrayerCnt.text = StringUtility.Contact(model.GetAllCoinPrayCnt() - model.coinPrayerCnt, "/", model.GetAllCoinPrayCnt());
|
coinPrayerCost.text = model.GetCoinPrayerCost().ToString();
|
coinPrayerBtnImg.SetSprite("CostPrayBtn_a");
|
RefreshCoinPrayerTime();
|
}
|
}
|
|
private void OnFuncStateChangeEvent(int funcId)
|
{
|
if (funcId == (int)FuncOpenEnum.ExpPray)
|
{
|
OnExpPrayerEvent();
|
}
|
}
|
|
private void RefreshItemCountAct(PackType _packType, int arg2, int _itemId)
|
{
|
if (_packType != PackType.Item || (_itemId != model.prayerExpRune && _itemId != model.prayerCoinRune))
|
{
|
return;
|
}
|
OnCoinPrayerEvent();
|
OnExpPrayerEvent();
|
}
|
|
private void OnExpPrayerEvent()
|
{
|
bool _open = FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.ExpPray);
|
m_ContainerExpOpen.SetActive(_open);
|
m_ExpPrayNoOpenTip.SetActive(!_open);
|
if (!_open)
|
{
|
m_ExpPrayNoOpenTip.text = Language.Get("ExpPray_LevelLimit", FuncOpen.Instance.GetLimitLv((int)FuncOpenEnum.ExpPray));
|
return;
|
}
|
expPrayerText.text = Language.Get("PrayerWin_2", model.GetExpPrayerVal());
|
var _expRuneCnt = playerPack.GetItemCountByID(PackType.Item, model.prayerExpRune);
|
m_ContainerJadeCost.SetActive(_expRuneCnt <= 0);
|
m_ContainerRuneCost.SetActive(_expRuneCnt > 0);
|
if (_expRuneCnt > 0)
|
{
|
expPrayerBtnImg.SetSprite("FreePrayBtn_a");
|
expPrayerBtnTxt.color = new Color32(51, 8, 0, 255);
|
m_RuneNum.text = StringUtility.Contact(_expRuneCnt, "/", 1);
|
ItemConfig _itemCfg = ItemConfig.Get(model.prayerExpRune);
|
if (_itemCfg != null)
|
{
|
m_RuneIcon.SetSprite(_itemCfg.IconKey);
|
}
|
}
|
else
|
{
|
expPrayerBtnImg.SetSprite("CostPrayBtn_a");
|
expPrayerBtnTxt.color = new Color32(51, 8, 0, 255);
|
expPrayerCntText.text = StringUtility.Contact(model.GetAllExpPrayCnt() - model.expPrayerCnt, "/", model.GetAllExpPrayCnt());
|
expPrayerCostText.text = model.GetExpPrayerCost().ToString();
|
}
|
|
}
|
|
private void RefreshCoinPrayerTime()
|
{
|
TimeSpan t = TimeUtility.GetTime(model.lastCoinPrayerTime + (uint)model.prayerCoinFreeTime) - TimeUtility.ServerNow;
|
if (t.Days > 0)
|
surplusTimeText.text = Language.Get("ItemOverdue102", t.Days) + Language.Get("PrayerWin_10", t.Hours, t.Minutes, Mathf.Max(0, t.Seconds));
|
else
|
surplusTimeText.text = Language.Get("PrayerWin_10", t.Hours, t.Minutes, Mathf.Max(0, t.Seconds));
|
//if (t.Hours <= 0 && t.Minutes <= 0 && t.Seconds <= 0)
|
//{
|
// OnCoinPrayerEvent();
|
//}
|
}
|
|
private void HandleAchievement()
|
{
|
if (AchievementGoto.guideAchievementId == AchievementGoto.CoinPrayer)
|
{
|
var _effect = AchievementGuideEffectPool.Require(1);
|
_effect.transform.SetParentEx(coinPrayerBtn.transform, Vector3.zero, Vector3.zero, Vector3.one);
|
AchievementGoto.guideAchievementId = 0;
|
}
|
else if (AchievementGoto.guideAchievementId == AchievementGoto.ExpPrayer)
|
{
|
var _effect = AchievementGuideEffectPool.Require(1);
|
_effect.transform.SetParentEx(expPrayerBtn.transform, Vector3.zero, Vector3.zero, Vector3.one);
|
AchievementGoto.guideAchievementId = 0;
|
}
|
}
|
}
|
|
}
|
|
|
|
|