From cd6cbe8ed6c2d5b8c7f294b451d25d820ecdc83f Mon Sep 17 00:00:00 2001
From: Client_PangDeRong <593317293@qq.com>
Date: 星期四, 25 十月 2018 16:18:17 +0800
Subject: [PATCH] 4326 【前端】【1.2.0】离线挂机符批量使用修改
---
System/KnapSack/Logic/PackSendQuestMgr.cs | 68 ++++++++++++----
System/KnapSack/New/BatchUseModel.cs | 8 ++
System/KnapSack/New/OfflineHangUpUseWin.cs.meta | 12 +++
System/KnapSack/New/OfflineHangUpUseWin.cs | 136 ++++++++++++++++++++++++++++++++++
4 files changed, 205 insertions(+), 19 deletions(-)
diff --git a/System/KnapSack/Logic/PackSendQuestMgr.cs b/System/KnapSack/Logic/PackSendQuestMgr.cs
index ca36c6f..493b07d 100644
--- a/System/KnapSack/Logic/PackSendQuestMgr.cs
+++ b/System/KnapSack/Logic/PackSendQuestMgr.cs
@@ -824,7 +824,25 @@
return;
}
- if (useItemModel.itemInfo.ItemID == fairyModel.changeFairyNameItem)
+ if(itemModel.itemId == 952)
+ {
+ int maxUseCnt = GetOfflineMaxNum(itemModel);
+ if(maxUseCnt <= 1)
+ {
+ if (!CheckIsMaxOfflineTime(maxUseCnt,itemModel))
+ {
+ SendMakeUseQuest(itemModel.itemInfo.ItemPlace);
+ }
+ }
+ else
+ {
+ BatchUseModel.Instance.SetOfflineUseModel(itemModel.itemInfo.ItemGUID);
+ WindowCenter.Instance.Open<OfflineHangUpUseWin>();
+ }
+ return;
+ }
+
+ if (itemModel.itemInfo.ItemID == fairyModel.changeFairyNameItem)
{
if (PlayerDatas.Instance.fairyData.HasFairy)
{
@@ -867,12 +885,6 @@
{
switch (itemModel.itemInfo.ItemID)
{
- case 952:
- if (!CheckIsMaxOfflineTime(itemModel))
- {
- SendMakeUseQuest(itemModel.itemInfo.ItemPlace);
- }
- break;
case RoleRenameWin.renameToolId:
WindowCenter.Instance.Open<RoleRenameWin>();
break;
@@ -888,29 +900,47 @@
}
}
}
-
- private bool CheckIsMaxOfflineTime(ItemModel itemModel)
+ public int GetOfflineMaxNum(ItemModel itemModel)
{
- int willTime = HangUpSetModel.Instance.offlinePluginTime + itemModel.chinItemModel.EffectValueA1;
- if (HangUpSetModel.Instance.offlinePluginTime >= HangUpSetModel.Instance.maxOfflinePluginTime)
+ int remainOffline = HangUpSetModel.Instance.maxOfflinePluginTime - HangUpSetModel.Instance.offlinePluginTime;
+ int maxUseCnt = 0;
+ if (remainOffline > 0)
+ {
+ int extraCnt = remainOffline % itemModel.chinItemModel.EffectValueA1 > 0 ? 1 : 0;
+ maxUseCnt = remainOffline / itemModel.chinItemModel.EffectValueA1 + extraCnt;
+ if (maxUseCnt > itemModel.itemInfo.ItemCount)
+ {
+ return itemModel.itemInfo.ItemCount;
+ }
+ }
+ return maxUseCnt;
+ }
+
+ public bool CheckIsMaxOfflineTime(int useNum, ItemModel itemModel)
+ {
+ int remainOffline = HangUpSetModel.Instance.maxOfflinePluginTime - HangUpSetModel.Instance.offlinePluginTime;
+ if (remainOffline <= 0)
{
SysNotifyMgr.Instance.ShowTip("OfflinePluginTime");
return true;
}
- else if (willTime > HangUpSetModel.Instance.maxOfflinePluginTime)
+ else
{
- ConfirmCancel.ShowPopConfirm(Language.Get("OfflinePluginTime102"), Language.Get("OfflinePluginTime101"), (bool isOk) =>
+ int willTime = HangUpSetModel.Instance.offlinePluginTime + itemModel.chinItemModel.EffectValueA1 * useNum;
+ if (willTime > HangUpSetModel.Instance.maxOfflinePluginTime)
{
- if (isOk)
+ ConfirmCancel.ShowPopConfirm(Language.Get("OfflinePluginTime102"), Language.Get("OfflinePluginTime101"), (bool isOk) =>
{
- SendMakeUseQuest(itemModel.itemInfo.ItemPlace);
- }
- });
- return true;
+ if (isOk)
+ {
+ SendMakeUseQuest(itemModel.itemInfo.ItemPlace,useNum);
+ }
+ });
+ return true;
+ }
}
return false;
}
-
public void SendMakeUseQuest(int index, int useCnt = 1, int extra = 0)
{
ItemModel itemModel = playerPack.GetItemModelByIndex(PackType.rptItem,index);
diff --git a/System/KnapSack/New/BatchUseModel.cs b/System/KnapSack/New/BatchUseModel.cs
index aedf4b7..b07c055 100644
--- a/System/KnapSack/New/BatchUseModel.cs
+++ b/System/KnapSack/New/BatchUseModel.cs
@@ -51,5 +51,13 @@
storeConfig = null;
}
#endregion
+
+ #region 绂荤嚎鎸傛満鏈嶄娇鐢ㄦ暟鎹�
+ public string offlineGuid { get; private set; }
+ public void SetOfflineUseModel(string guid)
+ {
+ this.offlineGuid = guid;
+ }
+ #endregion
}
}
diff --git a/System/KnapSack/New/OfflineHangUpUseWin.cs b/System/KnapSack/New/OfflineHangUpUseWin.cs
new file mode 100644
index 0000000..7a63f70
--- /dev/null
+++ b/System/KnapSack/New/OfflineHangUpUseWin.cs
@@ -0,0 +1,136 @@
+锘縰sing System;
+using UnityEngine;
+using UnityEngine.UI;
+
+namespace Snxxz.UI
+{
+ public class OfflineHangUpUseWin : Window
+ {
+ [SerializeField] Slider _batchUseSlider;
+ [SerializeField] Text _number;
+ [SerializeField] Button _addBtn;
+ [SerializeField] Button _reduceBtn;
+ [SerializeField] Button _useBtn;
+ [SerializeField] Button _closeBtn;
+ [SerializeField] Text offlineText;
+ private ItemModel itemModel;
+ PlayerPackModel _playerPack;
+ PlayerPackModel playerPack
+ {
+ get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PlayerPackModel>()); }
+ }
+ #region Built-in
+ protected override void BindController()
+ {
+
+ }
+
+ protected override void AddListeners()
+ {
+ _addBtn.onClick.AddListener(OnClickAddBtn);
+ _reduceBtn.onClick.AddListener(OnClickReduceBtn);
+ _useBtn.onClick.AddListener(OnClickBatchUseBtn);
+ _closeBtn.onClick.AddListener(CloseClick);
+ _batchUseSlider.onValueChanged.AddListener(delegate
+ {
+ OnUseValueChange();
+ });
+ }
+
+ protected override void OnPreOpen()
+ {
+ Display();
+ }
+
+ protected override void OnAfterOpen()
+ {
+
+ }
+
+ protected override void OnPreClose()
+ {
+
+ }
+ protected override void OnAfterClose()
+ {
+
+ }
+ #endregion
+
+ public void Display()
+ {
+ itemModel = playerPack.GetItemModelByGUID(BatchUseModel.Instance.offlineGuid);
+ if (itemModel == null) return;
+
+ int maxOfflineNum = PackSendQuestMgr.Instance.GetOfflineMaxNum(itemModel);
+ _batchUseSlider.maxValue = maxOfflineNum;
+ _batchUseSlider.minValue = 1;
+ _batchUseSlider.value = _batchUseSlider.minValue;
+ OnUseValueChange();
+ }
+
+ public void OnUseValueChange()
+ {
+ _number.text = Mathf.Ceil(_batchUseSlider.value).ToString();
+ UpdateOfflineTime();
+ }
+
+ public void UpdateOfflineTime()
+ {
+ if (itemModel == null) return;
+ offlineText.text = GetOfflinePluginTime();
+ }
+
+ public void OnClickAddBtn()
+ {
+ if (_batchUseSlider.value < _batchUseSlider.maxValue)
+ {
+ _batchUseSlider.value++;
+ }
+ }
+
+ public void OnClickReduceBtn()
+ {
+ if (_batchUseSlider.value > _batchUseSlider.minValue)
+ {
+ _batchUseSlider.value--;
+ }
+ }
+
+ public void OnClickBatchUseBtn()
+ {
+ if (itemModel == null)
+ return;
+ bool isMax = PackSendQuestMgr.Instance.CheckIsMaxOfflineTime((int)Mathf.Ceil(_batchUseSlider.value), itemModel);
+ if(!isMax)
+ {
+ PackSendQuestMgr.Instance.SendMakeUseQuest(itemModel.itemInfo.ItemPlace, (int)Mathf.Ceil(_batchUseSlider.value));
+ }
+ CloseClick();
+ }
+
+ public string GetOfflinePluginTime()
+ {
+ TimeSpan timeSpan = TimeSpan.FromSeconds(HangUpSetModel.Instance.offlinePluginTime);
+ string s = "";
+ if (timeSpan.Hours > 0)
+ {
+ s = Language.Get("ItemOverdue103", timeSpan.Hours);
+ }
+ if (timeSpan.Minutes > 0)
+ {
+ s = StringUtility.Contact(s, Language.Get("ItemOverdue104", timeSpan.Minutes));
+ }
+
+ if (s == "")
+ {
+ s = Language.Get("ItemOverdue104", 0);
+ }
+
+ int addHour = (itemModel.chinItemModel.EffectValueA1 / 3600)* (int)Mathf.Ceil(_batchUseSlider.value);
+ s = StringUtility.Contact(s,"+", Language.Get("ItemOverdue103",addHour));
+ return s;
+ }
+
+ }
+}
diff --git a/System/KnapSack/New/OfflineHangUpUseWin.cs.meta b/System/KnapSack/New/OfflineHangUpUseWin.cs.meta
new file mode 100644
index 0000000..8126638
--- /dev/null
+++ b/System/KnapSack/New/OfflineHangUpUseWin.cs.meta
@@ -0,0 +1,12 @@
+fileFormatVersion: 2
+guid: 5682063d28a2b244db79c05ce7f0075e
+timeCreated: 1540449836
+licenseType: Pro
+MonoImporter:
+ serializedVersion: 2
+ defaultReferences: []
+ executionOrder: 0
+ icon: {instanceID: 0}
+ userData:
+ assetBundleName:
+ assetBundleVariant:
--
Gitblit v1.8.0