//--------------------------------------------------------
|
// [Author]: 第二世界
|
// [ Date ]: Tuesday, September 12, 2017
|
//--------------------------------------------------------
|
|
using System;
|
using System.Collections;
|
using System.Collections.Generic;
|
using UnityEngine;
|
using UnityEngine.UI;
|
|
using vnxbqy.UI;
|
|
namespace vnxbqy.UI
|
{
|
public class DungeonSweepWin : Window
|
{
|
[SerializeField] ItemBehaviour m_DungeonTicket;
|
[SerializeField] ItemBehaviour m_SweepCost;
|
[SerializeField] Button m_Cancel;
|
[SerializeField] Button m_Confirm;
|
[SerializeField] Button m_Close;
|
|
DungeonModel model { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
PackModel playerPack { get { return ModelCenter.Instance.GetModel<PackModel>(); } }
|
|
#region Built-in
|
protected override void BindController()
|
{
|
}
|
|
protected override void AddListeners()
|
{
|
m_Confirm.AddListener(ConfirmSweepResult);
|
m_Cancel.AddListener(CloseClick);
|
m_Close.AddListener(CloseClick);
|
}
|
|
protected override void OnPreOpen()
|
{
|
DisplayTicket();
|
DisplaySweepCost();
|
}
|
|
protected override void OnAfterOpen()
|
{
|
}
|
|
protected override void OnPreClose()
|
{
|
}
|
|
protected override void OnAfterClose()
|
{
|
}
|
#endregion
|
|
private void DisplayTicket()
|
{
|
var tickets = model.GetTicketCost(model.currentDungeon.mapId, model.currentDungeon.lineId);
|
if (tickets.id > 0)
|
{
|
m_DungeonTicket.SetItem(tickets);
|
m_DungeonTicket.SetActive(true);
|
}
|
else
|
{
|
m_DungeonTicket.SetActive(false);
|
}
|
}
|
|
private void DisplaySweepCost()
|
{
|
var cost = model.GetSweepCost(model.currentDungeon);
|
m_SweepCost.SetItem(cost);
|
}
|
|
private void ConfirmSweepResult()
|
{
|
var error = 0;
|
if (TestSweep(out error))
|
{
|
model.RequestSweep(model.currentDungeon);
|
}
|
else
|
{
|
switch (error)
|
{
|
case 1:
|
DebugEx.Log("副本评级不足");
|
break;
|
case 2:
|
var tickets = model.GetTicketCost(model.currentDungeon.mapId, model.currentDungeon.lineId);
|
ItemTipUtility.Show(tickets.id);
|
break;
|
case 3:
|
var cost = model.GetSweepCost(model.currentDungeon);
|
var itemOwn = playerPack.GetItemCountByID(PackType.Item, cost.id);
|
var moneyNeed = GeneralDefine.autoBuyItemPrices[0] * (cost.count - itemOwn);
|
ConfirmCancel.ShowPopConfirm(
|
Language.Get("Mail101"),
|
Language.Get("MultipleSweep_Text3", cost.count - itemOwn, moneyNeed),
|
(bool _ok) =>
|
{
|
if (_ok)
|
{
|
var moneyOwn = PlayerDatas.Instance.baseData.diamond ;
|
if (moneyNeed > moneyOwn)
|
{
|
WindowCenter.Instance.Open<RechargeTipWin>();
|
}
|
else
|
{
|
model.RequestSweep(model.currentDungeon);
|
}
|
}
|
}
|
);
|
|
break;
|
case 4:
|
WindowCenter.Instance.Open<DungeonBuyTimesWin>();
|
break;
|
case 5:
|
SysNotifyMgr.Instance.ShowTip("SweepFB_1");
|
break;
|
}
|
}
|
}
|
|
private bool TestSweep(out int error)
|
{
|
var dataMapId = model.GetDataMapIdByMapId(PlayerDatas.Instance.baseData.MapID);
|
if (dataMapId == model.currentDungeon.mapId)
|
{
|
error = 5;
|
return false;
|
}
|
|
var grade = model.GetGrade(model.currentDungeon);
|
if (grade <= 0)
|
{
|
error = 1;
|
return false;
|
}
|
|
var tickets = model.GetTicketCost(model.currentDungeon.mapId, model.currentDungeon.lineId);
|
var ticketsOwn = playerPack.GetItemCountByID(PackType.Item, tickets.id);
|
if (ticketsOwn < tickets.count)
|
{
|
error = 2;
|
return false;
|
}
|
|
var cost = model.GetSweepCost(model.currentDungeon);
|
var itemOwn = playerPack.GetItemCountByID(PackType.Item, cost.id);
|
if (itemOwn < cost.count)
|
{
|
error = 3;
|
return false;
|
}
|
|
var enterTimes = model.GetEnterTimes(model.currentDungeon.mapId);
|
var totalTimes = model.GetTotalTimes(model.currentDungeon.mapId);
|
var surplusTimes = totalTimes - enterTimes;
|
if (surplusTimes <= 0)
|
{
|
error = 4;
|
return false;
|
}
|
|
error = 0;
|
return true;
|
}
|
|
}
|
|
}
|
|
|
|
|