//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Wednesday, November 01, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class DungeonInspireWin : Window
|
{
|
[SerializeField] Button m_CoinInspire;
|
[SerializeField] RectTransform m_CoinInspireCheck;
|
[SerializeField] Button m_FairyInspire;
|
[SerializeField] RectTransform m_FairyInspireCheck;
|
[SerializeField] Text m_CoinCost;
|
[SerializeField] Text m_FairyCost;
|
[SerializeField] Text m_InspireLevel;
|
[SerializeField] Text m_Remind;
|
[SerializeField] Text m_DemonJarDoubleRemind;
|
[SerializeField] Text m_InspireHurt;
|
[SerializeField] Button m_Confirm;
|
[SerializeField] Button m_Cancel;
|
[SerializeField] Button m_Close;
|
|
[SerializeField] TextEx m_CoinMostTimes;
|
//自动鼓舞
|
[SerializeField] Button m_AutoCoinInspire;
|
[SerializeField] RectTransform m_AutoCoinInspireCheck;
|
[SerializeField] Button m_AutoFairyInspire;
|
[SerializeField] RectTransform m_AutoFairyInspireCheck;
|
|
DungeonModel model { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
DemonJarModel demonJarModel { get { return ModelCenter.Instance.GetModel<DemonJarModel>(); } }
|
|
private bool coinInspire = false;
|
private bool fairyInspire = false;
|
private bool autoCoinInspire = false;
|
private bool autoFairyInspire = false;
|
private bool autoCoinInspireCheck = false;
|
private bool autoFairyInspireCheck = false;
|
private DungeonInspireConfig coinInspireConfig = null;
|
private DungeonInspireConfig fairyInspireConfig = null;
|
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_CoinInspire.onClick.AddListener(CoinInspire);
|
m_FairyInspire.onClick.AddListener(FairyInspire);
|
m_AutoCoinInspire.onClick.AddListener(AutoCoinInspire);
|
m_AutoFairyInspire.onClick.AddListener(AutoFairyInspire);
|
m_Confirm.onClick.AddListener(TryConfirm);
|
m_Cancel.onClick.AddListener(Cancel);
|
m_Close.onClick.AddListener(CloseClick);
|
}
|
|
void AutoCoinInspire()
|
{
|
autoCoinInspireCheck = !autoCoinInspireCheck;
|
m_AutoCoinInspireCheck.SetActive(autoCoinInspireCheck);
|
LocalSave.SetBool(StringUtility.Contact("AutoCoinInspire_", model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID), "_", PlayerDatas.Instance.PlayerId), autoCoinInspireCheck);
|
}
|
|
void AutoFairyInspire()
|
{
|
autoFairyInspireCheck = !autoFairyInspireCheck;
|
m_AutoFairyInspireCheck.SetActive(autoFairyInspireCheck);
|
LocalSave.SetBool(StringUtility.Contact("AutoFairyInspire_", model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID), "_", PlayerDatas.Instance.PlayerId), autoFairyInspireCheck);
|
}
|
|
|
|
protected override void OnPreOpen()
|
{
|
var mapId = PlayerDatas.Instance.baseData.MapID;
|
var _list = model.GetDungeonInspire(mapId);
|
if (_list == null)
|
{
|
return;
|
}
|
coinInspireConfig = null;
|
fairyInspireConfig = null;
|
|
for (int i = 0; i < _list.Count; i++)
|
{
|
if (_list[i].InspireType == 3)
|
{
|
coinInspireConfig = _list[i];
|
}
|
else if (_list[i].InspireType == 2
|
|| _list[i].InspireType == 1 || _list[i].InspireType == 5)
|
{
|
fairyInspireConfig = _list[i];
|
}
|
}
|
|
m_CoinInspire.SetActive(coinInspireConfig != null);
|
if (coinInspireConfig != null)
|
m_CoinMostTimes.text = Language.Get(coinInspireConfig.InspireCount == 10 ? "FairyLandMostTimes2" : "FairyLandMostTimes1");
|
m_FairyInspire.SetActive(fairyInspireConfig != null);
|
autoCoinInspireCheck = LocalSave.GetBool(StringUtility.Contact("AutoCoinInspire_", model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID), "_", PlayerDatas.Instance.PlayerId));
|
autoFairyInspireCheck = LocalSave.GetBool(StringUtility.Contact("AutoFairyInspire_", model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID), "_", PlayerDatas.Instance.PlayerId));
|
m_AutoCoinInspireCheck.SetActive(autoCoinInspireCheck);
|
m_AutoFairyInspireCheck.SetActive(autoFairyInspireCheck);
|
coinInspire = IsCoinInspireLimit() ? false : true;
|
fairyInspire = !coinInspire;
|
var dataMapId = model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
|
|
if (dataMapId == 31080)//仙界秘境
|
{
|
autoCoinInspire = true;
|
autoFairyInspire = true;
|
}
|
else
|
{
|
autoCoinInspire = coinInspire;
|
autoFairyInspire = fairyInspire;
|
}
|
|
Display();
|
UpdateInspireType();
|
DisplayRemind();
|
|
var singleHurt = model.GetDungeonInspireUpper(mapId);
|
m_InspireHurt.text = Language.Get("InspireRemind", singleHurt, model.GetInspireMaxCount(mapId) * singleHurt);
|
|
model.dungeonInspireLvEvent += DungeonEncourageEvent;
|
}
|
|
protected override void OnAfterOpen()
|
{
|
var _list = model.GetDungeonInspire(PlayerDatas.Instance.baseData.MapID);
|
if (_list == null)
|
{
|
CloseImmediately();
|
return;
|
}
|
}
|
|
protected override void OnPreClose()
|
{
|
model.dungeonInspireLvEvent -= DungeonEncourageEvent;
|
WindowCenter.Instance.Open<MainInterfaceWin>();
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
|
private void DungeonEncourageEvent()
|
{
|
var level = model.GetDungeonInspireLevel();
|
if (level >= model.GetInspireMaxCount(PlayerDatas.Instance.baseData.MapID)
|
&& !InGuiding())
|
{
|
CloseImmediately();
|
return;
|
}
|
|
//if (IsCoinInspireLimit() && coinInspire)
|
//{
|
// coinInspire = false;
|
// fairyInspire = !coinInspire;
|
//}
|
|
DisplayCost();
|
UpdateInspireType();
|
}
|
|
private void CoinInspire()
|
{
|
if (!coinInspire && IsCoinInspireLimit())
|
{
|
SysNotifyMgr.Instance.ShowTip("Xjmj_CopperInspireFull");
|
return;
|
}
|
coinInspire = true;
|
fairyInspire = !coinInspire;
|
UpdateInspireType();
|
}
|
|
private void FairyInspire()
|
{
|
if (coinInspireConfig == null)
|
{
|
return;
|
}
|
fairyInspire = true;
|
coinInspire = false;
|
UpdateInspireType();
|
}
|
|
void TryConfirm()
|
{
|
if ((model.GetDungeonInspireLevel()) >= model.GetInspireMaxCount(PlayerDatas.Instance.baseData.MapID))
|
{
|
SysNotifyMgr.Instance.ShowTip("Xjmj_InspireMaxLevel");
|
return;
|
}
|
if (autoCoinInspireCheck || autoFairyInspireCheck)
|
{
|
demonJarModel.AutoConfirm();
|
}
|
else
|
{
|
Confirm();
|
}
|
}
|
|
private void Confirm()
|
{
|
if (fairyInspire)
|
{
|
uint money = 0;
|
switch (fairyInspireConfig.InspireType)
|
{
|
case 1:
|
case 5:
|
money += PlayerDatas.Instance.baseData.diamond;
|
break;
|
}
|
var cost = model.GetDungeonInspireCost(fairyInspireConfig);
|
if (money < cost && !InGuiding())
|
{
|
WindowCenter.Instance.Open<RechargeTipWin>();
|
}
|
else
|
{
|
var dataMapId = model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
|
var isDouble = dataMapId == DemonJarModel.DATA_MAPID && demonJarModel.isDoubleAward;
|
|
bool mix = fairyInspireConfig.InspireType == 5 && PlayerDatas.Instance.baseData.diamond < cost
|
&& PlayerDatas.Instance.baseData.diamond > 0;
|
|
var fairyCost = fairyInspireConfig.InspireType == 5 ? cost - PlayerDatas.Instance.baseData.diamond : cost;
|
fairyCost *= isDouble ? 2 : 1;
|
|
if (fairyCost > 0 && (!model.inspireRemindEffective || !model.inspireNoRemind))
|
{
|
ConfirmCancel.ToggleConfirmCancel(Language.Get("Mail101"),
|
mix ? Language.Get("InspireRemind1", fairyCost, PlayerDatas.Instance.baseData.diamond)
|
: Language.Get("InspireRemind2", fairyCost),
|
Language.Get("InspireNoMention"), (bool isOk, bool toggle) =>
|
{
|
if (isOk)
|
{
|
SendInspire(fairyInspireConfig.InspireType);
|
}
|
model.inspireNoRemind = toggle;
|
model.inspireRemindEffective = isOk;
|
}, model.inspireNoRemind);
|
}
|
else
|
{
|
SendInspire(fairyInspireConfig.InspireType);
|
}
|
}
|
}
|
else if (coinInspire)
|
{
|
if (UIHelper.GetMoneyCnt(3) < (ulong)model.GetDungeonInspireCost(coinInspireConfig)
|
&& !InGuiding())
|
{
|
SysNotifyMgr.Instance.ShowTip("Xjmj_InspireNoEnoughGold");
|
}
|
else
|
{
|
SendInspire(coinInspireConfig.InspireType);
|
}
|
}
|
}
|
|
void SendInspire(int inspireType)
|
{
|
CA508_tagCMDoFBAction pak = new CA508_tagCMDoFBAction();
|
pak.ActionType = 0;
|
pak.ActionInfo = (uint)inspireType;
|
GameNetSystem.Instance.SendInfo(pak);
|
}
|
|
private void Cancel()
|
{
|
CloseImmediately();
|
}
|
|
private void Display()
|
{
|
DisplayCost();
|
}
|
|
private void DisplayCost()
|
{
|
var dataMapId = model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
|
var isDouble = dataMapId == DemonJarModel.DATA_MAPID && demonJarModel.isDoubleAward;
|
|
if (coinInspireConfig != null)
|
{
|
m_CoinCost.text = Language.Get("FairyLand_Func9", model.GetDungeonInspireCost(coinInspireConfig) * (isDouble ? 2 : 1), coinInspireConfig.InspireCount);
|
}
|
if (fairyInspireConfig != null)
|
{
|
m_FairyCost.text = Language.Get("FairyLand_Func10", model.GetDungeonInspireCost(fairyInspireConfig) * (isDouble ? 2 : 1));
|
}
|
}
|
|
void DisplayRemind()
|
{
|
m_Remind.SetActive(fairyInspireConfig != null && fairyInspireConfig.InspireType == 5);
|
|
if (demonJarModel.isDoubleAward)
|
{
|
var dataMapId = model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
|
m_DemonJarDoubleRemind.SetActive(dataMapId == DemonJarModel.DATA_MAPID);
|
}
|
else
|
{
|
m_DemonJarDoubleRemind.SetActive(false);
|
}
|
}
|
|
bool InGuiding()
|
{
|
if (NewBieCenter.Instance.inGuiding
|
&& NewBieCenter.Instance.currentGuide == GeneralDefine.fairyLandGuideId)
|
{
|
return true;
|
}
|
return false;
|
}
|
|
bool IsCoinInspireLimit()
|
{
|
if (coinInspireConfig != null)
|
{
|
return model.GetDungeonInspireLevel(3) >= coinInspireConfig.InspireCount;
|
}
|
return true;
|
}
|
|
private void UpdateInspireType()
|
{
|
var level = model.GetDungeonInspireLevel();
|
m_InspireLevel.text = level == 0 ? Language.Get("FairyLand_Func4")
|
: Language.Get("HaveInspired", StringUtility.Contact("<color=#109d06>",
|
level * model.GetDungeonInspireUpper(PlayerDatas.Instance.baseData.MapID), "%</color>"));
|
m_CoinInspireCheck.SetActive(coinInspire);
|
m_AutoCoinInspire.SetActive(autoCoinInspire);
|
m_FairyInspireCheck.SetActive(fairyInspire);
|
m_AutoFairyInspire.SetActive(autoFairyInspire);
|
}
|
}
|
|
}
|
|
|
|
|