| | |
| | | //-------------------------------------------------------- |
| | | // [Author]: 第二世界 |
| | | // [ Date ]: Wednesday, October 25, 2017 |
| | | //-------------------------------------------------------- |
| | | |
| | | using System; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using UnityEngine; |
| | | using UnityEngine.UI; |
| | | using TableConfig; |
| | | using Snxxz.UI; |
| | | |
| | | namespace Snxxz.UI |
| | | { |
| | | |
| | | public class DungeonSweepResultWin : Window |
| | | { |
| | | |
| | | [SerializeField] RectTransform m_ContainerReward1; |
| | | [SerializeField] ItemBehaviour[] itemBehaviours1 = new ItemBehaviour[5]; |
| | | |
| | | [SerializeField] RectTransform m_ContainerReward2; |
| | | [SerializeField] ItemBehaviour[] itemBehaviours2 = new ItemBehaviour[5]; |
| | | |
| | | [SerializeField] ItemBehaviour m_DungeonTicket; |
| | | [SerializeField] ItemBehaviour m_SweepCost; |
| | | |
| | | [SerializeField] UIEffect m_SweepResultEffect; |
| | | [SerializeField] Button m_Again; |
| | | [SerializeField] Button m_Close; |
| | | |
| | | DungeonModel model { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } } |
| | | PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } } |
| | | GetItemPathModel getItemPath { get { return ModelCenter.Instance.GetModel<GetItemPathModel>(); } } |
| | | DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } } |
| | | |
| | | #region Built-in |
| | | protected override void BindController() |
| | | { |
| | | } |
| | | |
| | | protected override void AddListeners() |
| | | { |
| | | m_Again.AddListener(ReSweep); |
| | | m_Close.AddListener(CloseClick); |
| | | } |
| | | |
| | | protected override void OnPreOpen() |
| | | { |
| | | DisplayResult(); |
| | | model.getDungeonResultEvent += DisplayResult; |
| | | } |
| | | |
| | | protected override void OnAfterOpen() |
| | | { |
| | | |
| | | } |
| | | |
| | | protected override void OnPreClose() |
| | | { |
| | | model.getDungeonResultEvent -= DisplayResult; |
| | | } |
| | | |
| | | protected override void OnAfterClose() |
| | | { |
| | | } |
| | | #endregion |
| | | |
| | | |
| | | private void DisplayResult() |
| | | { |
| | | DisplaySweepCost(); |
| | | DrawItems(); |
| | | |
| | | m_SweepResultEffect.Play(); |
| | | } |
| | | |
| | | private void DisplaySweepCost() |
| | | { |
| | | var tickets = model.GetDungeonTicketCost(model.currentDungeon.mapId, model.currentDungeon.lineId); |
| | | if (tickets.id > 0) |
| | | { |
| | | m_DungeonTicket.SetItem(tickets); |
| | | m_DungeonTicket.gameObject.SetActive(true); |
| | | } |
| | | else |
| | | { |
| | | m_DungeonTicket.gameObject.SetActive(false); |
| | | } |
| | | |
| | | var cost = model.GetSweepCost(model.currentDungeon); |
| | | m_SweepCost.SetItem(cost); |
| | | } |
| | | |
| | | private void DrawItems() |
| | | { |
| | | var serveritems = model.dungeonResult.itemInfo; |
| | | var items = new List<Item>(); |
| | | |
| | | for (int i = 0; i < serveritems.Length; i++) |
| | | { |
| | | var serverItem = serveritems[i]; |
| | | items.Add(new Item(serverItem.ItemID, serverItem.Count)); |
| | | } |
| | | |
| | | for (int i = 0; i < itemBehaviours1.Length; i++) |
| | | { |
| | | var behaviour = itemBehaviours1[i]; |
| | | if (i < items.Count) |
| | | { |
| | | behaviour.gameObject.SetActive(true); |
| | | var reward = items[i]; |
| | | behaviour.SetItem(reward); |
| | | } |
| | | else |
| | | { |
| | | behaviour.gameObject.SetActive(false); |
| | | } |
| | | } |
| | | |
| | | if (items.Count > itemBehaviours1.Length) |
| | | { |
| | | m_ContainerReward2.gameObject.SetActive(true); |
| | | |
| | | var startIndex = itemBehaviours1.Length; |
| | | |
| | | for (int i = 0; i < itemBehaviours2.Length; i++) |
| | | { |
| | | var behaviour = itemBehaviours2[i]; |
| | | if (i + startIndex < items.Count) |
| | | { |
| | | behaviour.gameObject.SetActive(true); |
| | | var reward = items[i + startIndex]; |
| | | behaviour.SetItem(reward); |
| | | } |
| | | else |
| | | { |
| | | behaviour.gameObject.SetActive(false); |
| | | } |
| | | } |
| | | } |
| | | else |
| | | { |
| | | m_ContainerReward2.gameObject.SetActive(false); |
| | | } |
| | | } |
| | | |
| | | private void ReSweep() |
| | | { |
| | | var error = 0; |
| | | if (TestSweep(out error)) |
| | | { |
| | | model.SweepDungeon(model.currentDungeon); |
| | | } |
| | | else |
| | | { |
| | | switch (error) |
| | | { |
| | | case 1: |
| | | WindowCenter.Instance.Open<DungeonBuyTimesWin>(); |
| | | break; |
| | | case 2: |
| | | SysNotifyMgr.Instance.ShowTip("Multiple_Finish"); |
| | | break; |
| | | case 3: |
| | | var tickets = model.GetDungeonTicketCost(model.currentDungeon.mapId, model.currentDungeon.lineId); |
| | | getItemPath.SetChinItemModel(tickets.id); |
| | | break; |
| | | case 4: |
| | | var cost = model.GetSweepCost(model.currentDungeon); |
| | | var itemOwn = playerPack.GetItemCountByID(PackType.rptItem, cost.id); |
| | | var moneyNeed = GeneralConfig.Instance.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.Gold + PlayerDatas.Instance.baseData.GoldPaper; |
| | | if (moneyNeed > moneyOwn) |
| | | { |
| | | WindowCenter.Instance.Open<RechargeTipWin>(); |
| | | } |
| | | else |
| | | { |
| | | model.SweepDungeon(model.currentDungeon); |
| | | } |
| | | } |
| | | } |
| | | ); |
| | | break; |
| | | case 5: |
| | | SysNotifyMgr.Instance.ShowTip("SweepFB_1"); |
| | | break; |
| | | } |
| | | } |
| | | } |
| | | |
| | | private bool TestSweep(out int error) |
| | | { |
| | | var dataMapId = model.GetDungeonDataIdByMapId(PlayerDatas.Instance.baseData.MapID); |
| | | if (dataMapId == model.currentDungeon.mapId) |
| | | { |
| | | error = 5; |
| | | return false; |
| | | } |
| | | |
| | | var dailyQuestId = dailyQuestModel.GetDailyQuestIdByDataMapId(model.currentDungeon.mapId); |
| | | if (dailyQuestId != 0) |
| | | { |
| | | var state = dailyQuestModel.GetQuestState(dailyQuestId); |
| | | if (state == DailyQuestModel.DailyQuestState.CanBuyTimes) |
| | | { |
| | | error = 1; |
| | | return false; |
| | | } |
| | | |
| | | if (state == DailyQuestModel.DailyQuestState.Completed) |
| | | { |
| | | error = 2; |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | var tickets = model.GetDungeonTicketCost(model.currentDungeon.mapId, model.currentDungeon.lineId); |
| | | var ticketsOwn = playerPack.GetItemCountByID(PackType.rptItem, tickets.id); |
| | | if (ticketsOwn < tickets.count) |
| | | { |
| | | error = 3; |
| | | return false; |
| | | } |
| | | |
| | | var sweepCost = model.GetSweepCost(model.currentDungeon); |
| | | var itemOwn = playerPack.GetItemCountByID(PackType.rptItem, sweepCost.id); |
| | | if (itemOwn < sweepCost.count) |
| | | { |
| | | error = 4; |
| | | return false; |
| | | } |
| | | |
| | | error = 0; |
| | | return true; |
| | | } |
| | | |
| | | |
| | | |
| | | } |
| | | |
| | | } |
| | | |
| | | |
| | | |
| | | |
| | | //--------------------------------------------------------
|
| | | // [Author]: 第二世界
|
| | | // [ Date ]: Wednesday, October 25, 2017
|
| | | //--------------------------------------------------------
|
| | |
|
| | | using System;
|
| | | using System.Collections;
|
| | | using System.Collections.Generic;
|
| | | using UnityEngine;
|
| | | using UnityEngine.UI;
|
| | | using TableConfig;
|
| | | using Snxxz.UI;
|
| | |
|
| | | namespace Snxxz.UI
|
| | | {
|
| | |
|
| | | public class DungeonSweepResultWin : Window
|
| | | {
|
| | |
|
| | | [SerializeField] RectTransform m_ContainerReward1;
|
| | | [SerializeField] ItemBehaviour[] itemBehaviours1 = new ItemBehaviour[5];
|
| | |
|
| | | [SerializeField] RectTransform m_ContainerReward2;
|
| | | [SerializeField] ItemBehaviour[] itemBehaviours2 = new ItemBehaviour[5];
|
| | |
|
| | | [SerializeField] ItemBehaviour m_DungeonTicket;
|
| | | [SerializeField] ItemBehaviour m_SweepCost;
|
| | |
|
| | | [SerializeField] UIEffect m_SweepResultEffect;
|
| | | [SerializeField] Button m_Again;
|
| | | [SerializeField] Button m_Close;
|
| | |
|
| | | DungeonModel model { get { return ModelCenter.Instance.GetModel<DungeonModel>(); } }
|
| | | PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
|
| | | GetItemPathModel getItemPath { get { return ModelCenter.Instance.GetModel<GetItemPathModel>(); } }
|
| | | DailyQuestModel dailyQuestModel { get { return ModelCenter.Instance.GetModel<DailyQuestModel>(); } }
|
| | |
|
| | | #region Built-in
|
| | | protected override void BindController()
|
| | | {
|
| | | }
|
| | |
|
| | | protected override void AddListeners()
|
| | | {
|
| | | m_Again.AddListener(ReSweep);
|
| | | m_Close.AddListener(CloseClick);
|
| | | }
|
| | |
|
| | | protected override void OnPreOpen()
|
| | | {
|
| | | DisplayResult();
|
| | | model.getDungeonResultEvent += DisplayResult;
|
| | | }
|
| | |
|
| | | protected override void OnAfterOpen()
|
| | | {
|
| | |
|
| | | }
|
| | |
|
| | | protected override void OnPreClose()
|
| | | {
|
| | | model.getDungeonResultEvent -= DisplayResult;
|
| | | }
|
| | |
|
| | | protected override void OnAfterClose()
|
| | | {
|
| | | }
|
| | | #endregion
|
| | |
|
| | |
|
| | | private void DisplayResult()
|
| | | {
|
| | | DisplaySweepCost();
|
| | | DrawItems();
|
| | |
|
| | | m_SweepResultEffect.Play();
|
| | | }
|
| | |
|
| | | private void DisplaySweepCost()
|
| | | {
|
| | | var tickets = model.GetDungeonTicketCost(model.currentDungeon.mapId, model.currentDungeon.lineId);
|
| | | if (tickets.id > 0)
|
| | | {
|
| | | m_DungeonTicket.SetItem(tickets);
|
| | | m_DungeonTicket.gameObject.SetActive(true);
|
| | | }
|
| | | else
|
| | | {
|
| | | m_DungeonTicket.gameObject.SetActive(false);
|
| | | }
|
| | |
|
| | | var cost = model.GetSweepCost(model.currentDungeon);
|
| | | m_SweepCost.SetItem(cost);
|
| | | }
|
| | |
|
| | | private void DrawItems()
|
| | | {
|
| | | var serveritems = model.dungeonResult.itemInfo;
|
| | | var items = new List<Item>();
|
| | |
|
| | | for (int i = 0; i < serveritems.Length; i++)
|
| | | {
|
| | | var serverItem = serveritems[i];
|
| | | items.Add(new Item(serverItem.ItemID, serverItem.Count));
|
| | | }
|
| | |
|
| | | for (int i = 0; i < itemBehaviours1.Length; i++)
|
| | | {
|
| | | var behaviour = itemBehaviours1[i];
|
| | | if (i < items.Count)
|
| | | {
|
| | | behaviour.gameObject.SetActive(true);
|
| | | var reward = items[i];
|
| | | behaviour.SetItem(reward);
|
| | | }
|
| | | else
|
| | | {
|
| | | behaviour.gameObject.SetActive(false);
|
| | | }
|
| | | }
|
| | |
|
| | | if (items.Count > itemBehaviours1.Length)
|
| | | {
|
| | | m_ContainerReward2.gameObject.SetActive(true);
|
| | |
|
| | | var startIndex = itemBehaviours1.Length;
|
| | |
|
| | | for (int i = 0; i < itemBehaviours2.Length; i++)
|
| | | {
|
| | | var behaviour = itemBehaviours2[i];
|
| | | if (i + startIndex < items.Count)
|
| | | {
|
| | | behaviour.gameObject.SetActive(true);
|
| | | var reward = items[i + startIndex];
|
| | | behaviour.SetItem(reward);
|
| | | }
|
| | | else
|
| | | {
|
| | | behaviour.gameObject.SetActive(false);
|
| | | }
|
| | | }
|
| | | }
|
| | | else
|
| | | {
|
| | | m_ContainerReward2.gameObject.SetActive(false);
|
| | | }
|
| | | }
|
| | |
|
| | | private void ReSweep()
|
| | | {
|
| | | var error = 0;
|
| | | if (TestSweep(out error))
|
| | | {
|
| | | model.SweepDungeon(model.currentDungeon);
|
| | | }
|
| | | else
|
| | | {
|
| | | switch (error)
|
| | | {
|
| | | case 1:
|
| | | WindowCenter.Instance.Open<DungeonBuyTimesWin>();
|
| | | break;
|
| | | case 2:
|
| | | SysNotifyMgr.Instance.ShowTip("Multiple_Finish");
|
| | | break;
|
| | | case 3:
|
| | | var tickets = model.GetDungeonTicketCost(model.currentDungeon.mapId, model.currentDungeon.lineId);
|
| | | getItemPath.SetChinItemModel(tickets.id);
|
| | | break;
|
| | | case 4:
|
| | | var cost = model.GetSweepCost(model.currentDungeon);
|
| | | var itemOwn = playerPack.GetItemCountByID(PackType.rptItem, cost.id);
|
| | | var moneyNeed = GeneralConfig.Instance.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.Gold + PlayerDatas.Instance.baseData.GoldPaper;
|
| | | if (moneyNeed > moneyOwn)
|
| | | {
|
| | | WindowCenter.Instance.Open<RechargeTipWin>();
|
| | | }
|
| | | else
|
| | | {
|
| | | model.SweepDungeon(model.currentDungeon);
|
| | | }
|
| | | }
|
| | | }
|
| | | );
|
| | | break;
|
| | | case 5:
|
| | | SysNotifyMgr.Instance.ShowTip("SweepFB_1");
|
| | | break;
|
| | | }
|
| | | }
|
| | | }
|
| | |
|
| | | private bool TestSweep(out int error)
|
| | | {
|
| | | var dataMapId = model.GetDungeonDataIdByMapId(PlayerDatas.Instance.baseData.MapID);
|
| | | if (dataMapId == model.currentDungeon.mapId)
|
| | | {
|
| | | error = 5;
|
| | | return false;
|
| | | }
|
| | |
|
| | | var dailyQuestId = dailyQuestModel.GetDailyQuestIdByDataMapId(model.currentDungeon.mapId);
|
| | | if (dailyQuestId != 0)
|
| | | {
|
| | | var state = dailyQuestModel.GetQuestState(dailyQuestId);
|
| | | if (state == DailyQuestModel.DailyQuestState.CanBuyTimes)
|
| | | {
|
| | | error = 1;
|
| | | return false;
|
| | | }
|
| | |
|
| | | if (state == DailyQuestModel.DailyQuestState.Completed)
|
| | | {
|
| | | error = 2;
|
| | | return false;
|
| | | }
|
| | | }
|
| | |
|
| | | var tickets = model.GetDungeonTicketCost(model.currentDungeon.mapId, model.currentDungeon.lineId);
|
| | | var ticketsOwn = playerPack.GetItemCountByID(PackType.rptItem, tickets.id);
|
| | | if (ticketsOwn < tickets.count)
|
| | | {
|
| | | error = 3;
|
| | | return false;
|
| | | }
|
| | |
|
| | | var sweepCost = model.GetSweepCost(model.currentDungeon);
|
| | | var itemOwn = playerPack.GetItemCountByID(PackType.rptItem, sweepCost.id);
|
| | | if (itemOwn < sweepCost.count)
|
| | | {
|
| | | error = 4;
|
| | | return false;
|
| | | }
|
| | |
|
| | | error = 0;
|
| | | return true;
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | | }
|
| | |
|
| | | }
|
| | |
|
| | |
|
| | |
|
| | |
|