From 4e8e7ce5eb5a78e9c23e0b5ce4ca57fbcd88a3f1 Mon Sep 17 00:00:00 2001
From: Client_PangDeRong <593317293@qq.com>
Date: 星期四, 16 八月 2018 20:20:16 +0800
Subject: [PATCH] [2588]增加道具寻宝
---
System/HappyXB/HappyXBModel.cs | 65 ++++++++++
System/HappyXB/RuneXBWin.cs | 111 ++++++++++++++++-
System/HappyXB/BestXBWin.cs | 115 +++++++++++++++++-
Utility/UIHelper.cs | 11 -
4 files changed, 268 insertions(+), 34 deletions(-)
diff --git a/System/HappyXB/BestXBWin.cs b/System/HappyXB/BestXBWin.cs
index b53a6d2..da17e3e 100644
--- a/System/HappyXB/BestXBWin.cs
+++ b/System/HappyXB/BestXBWin.cs
@@ -5,6 +5,7 @@
using System.Linq;
using UnityEngine;
using UnityEngine.UI;
+using TableConfig;
namespace Snxxz.UI
{
@@ -27,7 +28,11 @@
[SerializeField] Transform getXBItemParent;
[SerializeField] GameObject xbResultObj;
[SerializeField] GameObject maskObj;
-
+ [SerializeField] GameObject toolXBShowObj;
+ [SerializeField] Image toolImg1;
+ [SerializeField] Image toolImg2;
+ [SerializeField] Text toolNumText;
+
[Header("鎺у埗瀵诲疂杞姩鍦堟暟")]
[SerializeField] int cycleTimes = 1;
[Header("鏃堕棿闂撮殧")]
@@ -47,6 +52,8 @@
List<CommonItemBaisc> xbResultItemBasiclist = new List<CommonItemBaisc>();
HappyXBModel XBModel { get { return ModelCenter.Instance.GetModel<HappyXBModel>(); } }
+ PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
+ XBFuncSet funcSet;
protected override void BindController()
{
@@ -90,6 +97,7 @@
XBModel.RefreshBestXBTimeAct += RefreshFreeTime;
XBModel.RefreshXBTypeInfoAct += RefreshXBTypeInfo;
XBModel.RefreshXBResultAct += RefreshXBResult;
+ playerPack.RefreshItemCountAct += RefreshItemCount;
getItemlist = XBModel.GetXBGetItemByID(1).Values.ToList();
isHaveFreeTime = XBModel.IsHaveFreeXBTime(1);
InitUI();
@@ -116,6 +124,7 @@
XBModel.RefreshXBResultAct -= RefreshXBResult;
XBModel.RefreshXBTypeInfoAct -= RefreshXBTypeInfo;
XBModel.RefreshAgainXBAct -= RefreshAgainXB;
+ playerPack.RefreshItemCountAct -= RefreshItemCount;
}
protected override void OnAfterClose()
{
@@ -142,7 +151,7 @@
getXBItemParent.gameObject.SetActive(false);
xbResultObj.SetActive(false);
freeXbBtn.gameObject.SetActive(false);
- XBFuncSet funcSet = XBModel.GetXBFuncSet(1);
+ funcSet = XBModel.GetXBFuncSet(1);
if(funcSet != null)
{
xbBtnText.text = Language.Get("HappyXB101", funcSet.xbNums[0]);
@@ -151,9 +160,21 @@
xbManyMoneyText.text = funcSet.xbPrices[1].ToString();
xbOneMoney = funcSet.xbPrices[0];
xbManyMoney = funcSet.xbPrices[1];
+ ItemConfig itemConfig1 = ConfigManager.Instance.GetTemplate<ItemConfig>(funcSet.costToolIds[0]);
+ ItemConfig itemConfig2 = ConfigManager.Instance.GetTemplate<ItemConfig>(funcSet.costToolIds[1]);
+ if(itemConfig1 != null)
+ {
+ toolImg1.SetSprite(itemConfig1.IconKey);
+ }
+ if (itemConfig2 != null)
+ {
+ toolImg2.SetSprite(itemConfig2.IconKey);
+ }
+
}
RefreshXBTypeInfo();
+ RefreshXBTools();
}
private void RefreshFreeTime(float time)
@@ -170,8 +191,11 @@
{
freeXBTimeText.gameObject.SetActive(true);
freeXBTimeText.text = Language.Get("HappyXB102", TimeUtility.SecondsToHMSCHSRetain((int)time));
- freeXbBtn.gameObject.SetActive(false);
- xbBtn.gameObject.SetActive(true);
+ if(!XBModel.IsHaveOneXBTool(1))
+ {
+ freeXbBtn.gameObject.SetActive(false);
+ xbBtn.gameObject.SetActive(true);
+ }
}
}
else
@@ -179,6 +203,39 @@
freeXBTimeText.gameObject.SetActive(false);
}
+ }
+
+
+ private void RefreshItemCount(PackType type, int index, int id)
+ {
+ if (type != PackType.rptItem || !XBModel.CheckIsXBTool(id, 1)) return;
+ RefreshXBTools();
+ }
+
+ public void RefreshXBTools()
+ {
+ if(XBModel.IsHaveOneXBTool(1))
+ {
+ freeXbBtn.gameObject.SetActive(true);
+ xbBtn.gameObject.SetActive(false);
+ }
+ else
+ {
+ freeXbBtn.gameObject.SetActive(false);
+ xbBtn.gameObject.SetActive(true);
+
+ }
+
+ int xbToolCnt = 0;
+ if (XBModel.IsHaveManyXBTool(1,out xbToolCnt))
+ {
+ toolXBShowObj.SetActive(true);
+ toolNumText.text = StringUtility.Contact("x", xbToolCnt);
+ }
+ else
+ {
+ toolXBShowObj.SetActive(false);
+ }
}
@@ -194,16 +251,47 @@
{
if (XBModel.CheckIsEmptyGrid(PackType.rptTreasure))
{
- if (UIHelper.GetMoneyCnt(1) >= (ulong)xbManyMoney)
+ int toolCnt = 0;
+ if(XBModel.IsHaveManyXBTool(1,out toolCnt))
{
- maskObj.SetActive(true);
- isXBMany = true;
- XBModel.SendXBQuest(1, 1, 0);
+ int needToolCnt = funcSet.costToolNums[1] - toolCnt;
+ int needMoney = needToolCnt * xbOneMoney;
+ if(needToolCnt > 0)
+ {
+ ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("HappyXBCostTools", funcSet.costToolNums[1],needMoney,needToolCnt), (bool isOk) =>
+ {
+ if (isOk)
+ {
+ CheckXBManyLimit(needMoney);
+ }
+ return;
+ });
+ }
+ else
+ {
+ CheckXBManyLimit(xbManyMoney);
+ }
+
}
else
{
- WindowCenter.Instance.Open<RechargeTipWin>();
+ CheckXBManyLimit(xbManyMoney);
}
+
+ }
+ }
+
+ private void CheckXBManyLimit(int needMoney)
+ {
+ if (UIHelper.GetMoneyCnt(1) >= (ulong)needMoney)
+ {
+ maskObj.SetActive(true);
+ isXBMany = true;
+ XBModel.SendXBQuest(1, 1, 0);
+ }
+ else
+ {
+ WindowCenter.Instance.Open<RechargeTipWin>();
}
}
@@ -213,7 +301,14 @@
{
maskObj.SetActive(true);
isXBMany = false;
- XBModel.SendXBQuest(1, 0, 1);
+ if (XBModel.IsHaveFreeXB(1))
+ {
+ XBModel.SendXBQuest(1, 0, 1);
+ }
+ else if(XBModel.IsHaveOneXBTool(1))
+ {
+ XBModel.SendXBQuest(1,0,2);
+ }
}
}
diff --git a/System/HappyXB/HappyXBModel.cs b/System/HappyXB/HappyXBModel.cs
index 3066b1a..10e6429 100644
--- a/System/HappyXB/HappyXBModel.cs
+++ b/System/HappyXB/HappyXBModel.cs
@@ -76,6 +76,8 @@
XBWarehouseRedPoint();
m_storeModel.RefreshTCBPlayerDataEvent -= RefreshStoreScore;
m_storeModel.RefreshTCBPlayerDataEvent += RefreshStoreScore;
+ playerPack.RefreshItemCountAct -= RefreshXBTool;
+ playerPack.RefreshItemCountAct += RefreshXBTool;
}
public override void UnInit()
@@ -149,10 +151,16 @@
funcSet.xbPrices[i] = int.Parse(jsonData[i].ToString());
}
jsonData = JsonMapper.ToObject(xbSet.Numerical3);
- funcSet.costTools = new int[jsonData.Count];
+ funcSet.costToolIds = new int[jsonData.Count];
+ funcSet.costToolNums = new int[jsonData.Count];
for (int i = 0; i < jsonData.Count; i++)
{
- funcSet.costTools[i] = int.Parse(jsonData[i].ToString());
+ if(jsonData.IsArray)
+ {
+ funcSet.costToolIds[i] = int.Parse(jsonData[i][0].ToString());
+ funcSet.costToolNums[i] = int.Parse(jsonData[i][1].ToString());
+ }
+
}
jsonData = JsonMapper.ToObject(xbSet.Numerical4);
funcSet.xbFreeCDs = new int[jsonData.Count];
@@ -546,6 +554,45 @@
}
return false;
}
+
+ public bool CheckIsXBTool(int itemId,int type)
+ {
+ XBFuncSet funcSet = GetXBFuncSet(type);
+ if (funcSet == null) return false;
+
+ if(funcSet.costToolIds.Contains(itemId))
+ {
+ return true;
+ }
+ return false;
+ }
+ public bool IsHaveOneXBTool(int type)
+ {
+ XBFuncSet funcSet = GetXBFuncSet(type);
+ if (funcSet == null) return false;
+
+ int toolCnt = playerPack.GetItemCountByID(PackType.rptItem, funcSet.costToolIds[0]);
+ if(toolCnt >= funcSet.costToolNums[0])
+ {
+ return true;
+ }
+
+ return false;
+ }
+
+ public bool IsHaveManyXBTool(int type, out int toolCnt)
+ {
+ toolCnt = 0;
+ XBFuncSet funcSet = GetXBFuncSet(type);
+ if (funcSet == null) return false;
+
+ toolCnt = playerPack.GetItemCountByID(PackType.rptItem, funcSet.costToolIds[1]);
+ if (toolCnt > 0)
+ {
+ return true;
+ }
+ return false;
+ }
public void RecordFreeXBTime()
{
@@ -666,11 +713,18 @@
}
}
+ private void RefreshXBTool(PackType type, int index, int id)
+ {
+ if (type != PackType.rptItem) return;
+ if (!CheckIsXBTool(id, 1) && !CheckIsXBTool(id, 2)) return;
+ BestAndRuneXBRedPoint();
+ }
+
public void BestAndRuneXBRedPoint()
{
if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.HappyFindTreasure)) return;
- if (IsHaveFreeXB(1))
+ if (IsHaveFreeXB(1) || IsHaveOneXBTool(1))
{
bestXBRed.state = RedPointState.Simple;
}
@@ -679,7 +733,7 @@
bestXBRed.state = RedPointState.None;
}
- if (IsHaveFreeXB(2))
+ if (IsHaveFreeXB(2) || IsHaveOneXBTool(2))
{
runeXBRed.state = RedPointState.Simple;
}
@@ -745,7 +799,8 @@
public int xbType;// 1 鏋佸搧瀵诲疂 2 绗﹀嵃瀵诲疂
public int[] xbNums;
public int[] xbPrices;
- public int[] costTools;
+ public int[]costToolIds;
+ public int[] costToolNums;
public int[] xbFreeCDs;
public int[] xbScores;
}
diff --git a/System/HappyXB/RuneXBWin.cs b/System/HappyXB/RuneXBWin.cs
index ad8d081..d472c8a 100644
--- a/System/HappyXB/RuneXBWin.cs
+++ b/System/HappyXB/RuneXBWin.cs
@@ -3,6 +3,7 @@
using System.Collections;
using System.Collections.Generic;
using System.Linq;
+using TableConfig;
using UnityEngine;
using UnityEngine.UI;
@@ -28,6 +29,10 @@
[SerializeField] GameObject xbResultObj;
[SerializeField] Button lookRuneBtn;
[SerializeField] GameObject maskObj;
+ [SerializeField] GameObject toolXBShowObj;
+ [SerializeField] Text toolNumText;
+ [SerializeField] Image toolImg1;
+ [SerializeField] Image toolImg2;
[Header("鎺у埗瀵诲疂杞姩鍦堟暟")]
[SerializeField] int cycleTimes = 1;
@@ -49,7 +54,8 @@
List<GameObject> xbResultObjlist = new List<GameObject>();
List<CommonItemBaisc> xbResultItemBasiclist = new List<CommonItemBaisc>();
HappyXBModel XBModel { get { return ModelCenter.Instance.GetModel<HappyXBModel>(); } }
-
+ PlayerPackModel playerPack { get { return ModelCenter.Instance.GetModel<PlayerPackModel>(); } }
+ XBFuncSet funcSet;
protected override void BindController()
{
xbItemlist.Clear();
@@ -95,6 +101,7 @@
protected override void OnPreOpen()
{
+ playerPack.RefreshItemCountAct += RefreshItemCount;
XBModel.RefreshAgainXBAct += RefreshAgainXB;
XBModel.RefreshRuneXBTimeAct += RefreshFreeTime;
XBModel.RefreshXBTypeInfoAct += RefreshXBTypeInfo;
@@ -125,6 +132,7 @@
XBModel.RefreshRuneXBTimeAct -= RefreshFreeTime;
XBModel.RefreshXBResultAct -= RefreshXBResult;
XBModel.RefreshXBTypeInfoAct -= RefreshXBTypeInfo;
+ playerPack.RefreshItemCountAct -= RefreshItemCount;
}
protected override void OnAfterClose()
{
@@ -152,7 +160,7 @@
getXBItemParent.gameObject.SetActive(false);
xbResultObj.SetActive(false);
freeXbBtn.gameObject.SetActive(false);
- XBFuncSet funcSet = XBModel.GetXBFuncSet(2);
+ funcSet = XBModel.GetXBFuncSet(2);
if(funcSet != null)
{
xbBtnText.text = Language.Get("HappyXB101", funcSet.xbNums[0]);
@@ -161,9 +169,20 @@
xbManyMoneyText.text = funcSet.xbPrices[1].ToString();
xbOneMoney = funcSet.xbPrices[0];
xbManyMoney = funcSet.xbPrices[1];
+ ItemConfig itemConfig1 = ConfigManager.Instance.GetTemplate<ItemConfig>(funcSet.costToolIds[0]);
+ ItemConfig itemConfig2 = ConfigManager.Instance.GetTemplate<ItemConfig>(funcSet.costToolIds[1]);
+ if (itemConfig1 != null)
+ {
+ toolImg1.SetSprite(itemConfig1.IconKey);
+ }
+ if (itemConfig2 != null)
+ {
+ toolImg2.SetSprite(itemConfig2.IconKey);
+ }
}
RefreshXBTypeInfo();
+ RefreshXBTools();
}
private void RefreshFreeTime(float time)
@@ -180,8 +199,11 @@
{
freeXBTimeText.gameObject.SetActive(true);
freeXBTimeText.text = Language.Get("HappyXB102", TimeUtility.SecondsToHMSCHSRetain((int)time));
- freeXbBtn.gameObject.SetActive(false);
- xbBtn.gameObject.SetActive(true);
+ if (!XBModel.IsHaveOneXBTool(2))
+ {
+ freeXbBtn.gameObject.SetActive(false);
+ xbBtn.gameObject.SetActive(true);
+ }
}
}
else
@@ -189,6 +211,38 @@
freeXBTimeText.gameObject.SetActive(false);
}
+ }
+
+ private void RefreshItemCount(PackType type, int index, int id)
+ {
+ if (type != PackType.rptItem || !XBModel.CheckIsXBTool(id, 2)) return;
+ RefreshXBTools();
+ }
+
+ public void RefreshXBTools()
+ {
+ if (XBModel.IsHaveOneXBTool(2))
+ {
+ freeXbBtn.gameObject.SetActive(true);
+ xbBtn.gameObject.SetActive(false);
+ }
+ else
+ {
+ freeXbBtn.gameObject.SetActive(false);
+ xbBtn.gameObject.SetActive(true);
+
+ }
+
+ int xbToolCnt = 0;
+ if (XBModel.IsHaveManyXBTool(2, out xbToolCnt))
+ {
+ toolXBShowObj.SetActive(true);
+ toolNumText.text = StringUtility.Contact("x", xbToolCnt);
+ }
+ else
+ {
+ toolXBShowObj.SetActive(false);
+ }
}
private void RefreshAgainXB(HappXBTitle title, int xbType)
@@ -203,16 +257,46 @@
{
if (XBModel.CheckIsEmptyGrid(PackType.rptRunePack))
{
- if (UIHelper.GetMoneyCnt(1) >= (ulong)xbManyMoney)
+ int toolCnt = 0;
+ if (XBModel.IsHaveManyXBTool(2, out toolCnt))
{
- maskObj.SetActive(true);
- isXBMany = true;
- XBModel.SendXBQuest(2, 1, 0);
+ int needToolCnt = funcSet.costToolNums[1] - toolCnt;
+ int needMoney = needToolCnt * xbOneMoney;
+ if (needToolCnt > 0)
+ {
+ ConfirmCancel.ShowPopConfirm(Language.Get("Mail101"), Language.Get("HappyXBCostTools", funcSet.costToolNums[1], needMoney, needToolCnt), (bool isOk) =>
+ {
+ if (isOk)
+ {
+ CheckXBManyLimit(needMoney);
+ }
+ return;
+ });
+ }
+ else
+ {
+ CheckXBManyLimit(xbManyMoney);
+ }
+
}
else
{
- WindowCenter.Instance.Open<RechargeTipWin>();
+ CheckXBManyLimit(xbManyMoney);
}
+ }
+ }
+
+ private void CheckXBManyLimit(int needMoney)
+ {
+ if (UIHelper.GetMoneyCnt(1) >= (ulong)needMoney)
+ {
+ maskObj.SetActive(true);
+ isXBMany = true;
+ XBModel.SendXBQuest(2, 1, 0);
+ }
+ else
+ {
+ WindowCenter.Instance.Open<RechargeTipWin>();
}
}
@@ -239,7 +323,14 @@
{
maskObj.SetActive(true);
isXBMany = false;
- XBModel.SendXBQuest(2, 0, 1);
+ if (XBModel.IsHaveFreeXB(2))
+ {
+ XBModel.SendXBQuest(2, 0, 1);
+ }
+ else if (XBModel.IsHaveOneXBTool(2))
+ {
+ XBModel.SendXBQuest(2, 0, 2);
+ }
}
}
diff --git a/Utility/UIHelper.cs b/Utility/UIHelper.cs
index 409f639..7c971c9 100644
--- a/Utility/UIHelper.cs
+++ b/Utility/UIHelper.cs
@@ -709,16 +709,9 @@
#region 寰楀埌瑁呭浣嶅搴旂殑閮ㄤ綅鍚嶇О
public static string GetEquipAreaName(int place)
{
- FuncConfigConfig funcAreaModel = ConfigManager.Instance.GetTemplate<FuncConfigConfig>("EquipArea");
- int[] placelist = ConfigParse.GetMultipleStr<int>(funcAreaModel.Numerical1);
- string[] namelist = ConfigParse.GetMultipleStr(funcAreaModel.Numerical2);
- int i = 0;
- for (i = 0; i < placelist.Length; i++)
+ if(GeneralConfig.Instance.equipPlaceNameDict.ContainsKey(place))
{
- if (placelist[i] == place)
- {
- return namelist[i];
- }
+ return GeneralConfig.Instance.equipPlaceNameDict[place];
}
return "";
}
--
Gitblit v1.8.0