//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Monday, December 10, 2018
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using System.Linq;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
namespace vnxbqy.UI
|
{
|
|
public class GatherSoulXBWin : Window
|
{
|
[SerializeField] Text txtGuaranteCount; //保底次数
|
[SerializeField] Text itemCountText;
|
[SerializeField] ButtonEx btnOneGo;
|
[SerializeField] ButtonEx btnManyGo;
|
[SerializeField] Toggle btnSkip;
|
[SerializeField] UIEffect uiEffect;
|
|
HappyXBModel XBModel { get { return ModelCenter.Instance.GetModel<HappyXBModel>(); } }
|
PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
StoreModel storeModel { get { return ModelCenter.Instance.GetModel<StoreModel>(); } }
|
|
GatheringSoulModel model
|
{
|
get { return ModelCenter.Instance.GetModel<GatheringSoulModel>(); }
|
}
|
|
int type = GatheringSoulModel.xbType;
|
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
btnSkip.AddListener(onToggleChange);
|
|
btnOneGo.SetListener(OnOneXunbao);
|
btnManyGo.SetListener(OnManeyXunbap);
|
}
|
|
protected override void OnPreOpen()
|
{
|
model.isOpenXBWin = true;
|
btnSkip.isOn = XBModel.isJumpGatherSoulXB;
|
XBModel.RefreshXBResultAct += RefreshXBResult;
|
XBModel.RefreshXBTypeInfoAct += RefreshXBTypeInfo;
|
uiEffect.OnComplete += OnCompleted;
|
playerPack.refreshItemCountEvent += PlayerPack_refreshItemCountEvent;
|
TreasurePavilionModel.Instance.isEffectPlaying = false;
|
XBModel.title = HappXBTitle.GatherSoul;
|
Display();
|
}
|
|
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
model.isOpenXBWin = false;
|
XBModel.RefreshXBResultAct -= RefreshXBResult;
|
XBModel.RefreshXBTypeInfoAct -= RefreshXBTypeInfo;
|
uiEffect.OnComplete -= OnCompleted;
|
playerPack.refreshItemCountEvent -= PlayerPack_refreshItemCountEvent;
|
}
|
|
|
|
protected override void OnAfterClose()
|
{
|
}
|
|
|
#endregion
|
|
void onToggleChange(bool isOn)
|
{
|
XBModel.isJumpGatherSoulXB = isOn;
|
}
|
|
public void Display()
|
{
|
XBTypeInfo typeInfo = XBModel.GetXBInfoByType(type);
|
if (typeInfo == null)
|
{
|
typeInfo = new XBTypeInfo()
|
{
|
xbType = type,
|
luckValue = 0,
|
freeCountToday = 0,
|
treasureCount = 0,
|
};
|
}
|
int toolCnt = playerPack.GetItemCountByID(PackType.Item, GatheringSoulModel.xbItemID);
|
itemCountText.text = toolCnt.ToString();
|
int luckValue = typeInfo.luckValue;
|
int fullLuck = TreasureSetConfig.Get(type).FullLucky;
|
int onceLucky = TreasureSetConfig.Get(type).OnceLucky;
|
int guaranteCount = (fullLuck - luckValue) / onceLucky;
|
|
txtGuaranteCount.text = Language.Get("GatherSoulXB_1", guaranteCount);
|
|
}
|
|
|
private void RefreshXBResult()
|
{
|
if (XBModel.isJumpGatherSoulXB)
|
{
|
TreasurePavilionModel.Instance.isEffectPlaying = false;
|
WindowCenter.Instance.Open<HappyXBGetItemWin>();
|
}
|
else
|
{
|
uiEffect.Play();
|
}
|
}
|
|
|
private void RefreshXBTypeInfo()
|
{
|
Display();
|
}
|
|
public void OnCompleted()
|
{
|
TreasurePavilionModel.Instance.isEffectPlaying = false;
|
WindowCenter.Instance.Open<HappyXBGetItemWin>();
|
}
|
|
|
void OnOneXunbao()
|
{
|
if (TreasurePavilionModel.Instance.isEffectPlaying)
|
return;
|
|
var funcSet = XBModel.GetXBFuncSet(type);
|
if (XBModel.IsHaveOneXBTool(type))
|
{
|
TreasurePavilionModel.Instance.isEffectPlaying = true;
|
XBModel.SendXBQuest(type, 0, 2);
|
}
|
else
|
{
|
int moneyType = XBModel.XBCostTypeDict[type];
|
int xbOneMoney = TreasureSetConfig.Get(type).CostMoneyList[0];
|
|
if (UIHelper.GetMoneyCnt(moneyType) >= (ulong) xbOneMoney)
|
{
|
storeModel.UseMoneyCheck(xbOneMoney, () =>
|
{
|
TreasurePavilionModel.Instance.isEffectPlaying = true;
|
XBModel.SendXBQuest(type, 0, 0);
|
}, 3);
|
}
|
else
|
{
|
SysNotifyMgr.Instance.ShowTip("LackMoney", moneyType);
|
|
}
|
|
}
|
}
|
|
|
void OnManeyXunbap()
|
{
|
if (TreasurePavilionModel.Instance.isEffectPlaying)
|
return;
|
|
int toolCnt = 0;
|
int needToolCnt = 0;
|
if (XBModel.IsHaveManyXBTool(type, out toolCnt, out needToolCnt))
|
{
|
if (toolCnt >= needToolCnt)
|
{
|
TreasurePavilionModel.Instance.isEffectPlaying = true;
|
XBModel.SendXBQuest(type, 1, 2);
|
return;
|
}
|
|
}
|
|
int moneyType = XBModel.XBCostTypeDict[type];
|
int xbManyMoney = TreasureSetConfig.Get(type).CostMoneyList[1];
|
|
if (UIHelper.GetMoneyCnt(moneyType) >= (ulong)xbManyMoney)
|
{
|
storeModel.UseMoneyCheck(xbManyMoney, () =>
|
{
|
TreasurePavilionModel.Instance.isEffectPlaying = true;
|
XBModel.SendXBQuest(type, 1, 0);
|
}, 3);
|
}
|
else
|
{
|
SysNotifyMgr.Instance.ShowTip("LackMoney", moneyType);
|
|
}
|
|
}
|
|
private void PlayerPack_refreshItemCountEvent(PackType type, int arg2, int itemID)
|
{
|
if (type == PackType.Item && itemID == GatheringSoulModel.xbItemID)
|
{
|
int toolCnt = playerPack.GetItemCountByID(PackType.Item, GatheringSoulModel.xbItemID);
|
itemCountText.text = toolCnt.ToString();
|
}
|
}
|
}
|
|
}
|
|
|
|
|