From 7494724b974885f7ab28e645b61a94c09b1f0841 Mon Sep 17 00:00:00 2001
From: Client_PangDeRong <593317293@qq.com>
Date: 星期二, 14 八月 2018 14:10:34 +0800
Subject: [PATCH] [2155]炼丹炉功能优化
---
System/BlastFurnace/DandrugCell.cs | 3
System/KnapSack/Logic/MakeDrugCell.cs | 17 +----
System/BlastFurnace/BlastFurnaceModel.cs | 82 +++++++++++++++++++++++----
System/BlastFurnace/LingDanTips.cs | 20 +++++-
4 files changed, 91 insertions(+), 31 deletions(-)
diff --git a/System/BlastFurnace/BlastFurnaceModel.cs b/System/BlastFurnace/BlastFurnaceModel.cs
index f175f1c..06aa331 100644
--- a/System/BlastFurnace/BlastFurnaceModel.cs
+++ b/System/BlastFurnace/BlastFurnaceModel.cs
@@ -83,12 +83,14 @@
treasureRefineDict.Clear();
FuncOpen.Instance.OnFuncStateChangeEvent -= RefreshFuncOpenState;
playerPack.RefreshItemCountAct -= RefreshMat;
+ playerPack.RefreshItemSumUseCntAct -= RefreshItemUsce;
}
public void OnAfterPlayerDataInitialize()
{
playerPack.RefreshItemCountAct += RefreshMat;
FuncOpen.Instance.OnFuncStateChangeEvent += RefreshFuncOpenState;
+ playerPack.RefreshItemSumUseCntAct += RefreshItemUsce;
}
private void RefreshFuncOpenState(int funcId)
@@ -370,34 +372,64 @@
/// <summary>
/// 寰楀埌棰勮鍚堟垚涓硅嵂鐨勫垪琛�
/// </summary>
- public List<int> GetPreviewMakeDruglist(AlchemyConfig alchemyModel)
+ public Dictionary<int, int> GetPreviewMakeDruglist(AlchemyConfig alchemyModel)
{
JsonData jsonData = JsonMapper.ToObject(alchemyModel.AlchemPreviewItem);
- List<int> drugIdlist = new List<int>();
+ PreviewItemDict.Clear();
if (jsonData.IsArray)
{
for (int i = 0; i < jsonData.Count; i++)
{
- int itemId = int.Parse(jsonData[i].ToString());
- drugIdlist.Add(itemId);
+ if (jsonData[i].IsArray)
+ {
+ int itemId = int.Parse(jsonData[i][0].ToString());
+ if (jsonData[i].Count > 1)
+ {
+ int effectId = int.Parse(jsonData[i][1].ToString());
+ PreviewItemDict.Add(itemId, effectId);
+ }
+ else
+ {
+ PreviewItemDict.Add(itemId, 0);
+ }
+ }
}
}
- return drugIdlist;
+ return PreviewItemDict;
}
- public List<int> GetPreviewSpecMakeDruglist(AlchemySpecConfig alchemyModel)
+ Dictionary<int, int> PreviewItemDict = new Dictionary<int, int>();
+ public Dictionary<int, int> GetPreviewSpecMakeDruglist(AlchemySpecConfig alchemyModel)
{
JsonData jsonData = JsonMapper.ToObject(alchemyModel.AlchemPreviewItem);
- List<int> drugIdlist = new List<int>();
+ PreviewItemDict.Clear();
if (jsonData.IsArray)
{
for (int i = 0; i < jsonData.Count; i++)
{
- int itemId = int.Parse(jsonData[i].ToString());
- drugIdlist.Add(itemId);
+ if(jsonData[i].IsArray)
+ {
+ int itemId = int.Parse(jsonData[i][0].ToString());
+ if (jsonData[i].Count > 1)
+ {
+ int effectId = int.Parse(jsonData[i][1].ToString());
+ PreviewItemDict.Add(itemId,effectId);
+ }
+ else
+ {
+ PreviewItemDict.Add(itemId,0);
+ }
+ }
}
}
- return drugIdlist;
+ return PreviewItemDict;
+ }
+
+ public int GetEffectIdByItemId(int itemId)
+ {
+ int effectId = 0;
+ PreviewItemDict.TryGetValue(itemId,out effectId);
+ return effectId;
}
/// <summary>
@@ -699,6 +731,14 @@
CheckRecycleStoreRed();
}
+ private void RefreshItemUsce(int id)
+ {
+ if(playerPack.CheckIsDrugById(id))
+ {
+ CheckMakerDandrugCondition();
+ }
+ }
+
public void CheckMakerDandrugCondition()
{
for (int i = alchemyModellist.Count - 1; i > -1; i--)
@@ -726,7 +766,7 @@
{
if(!CheckNormalAlchemyIsReachMaxUse(alchemyModellist[i]))
{
- if (IsNormalMatEnough(alchemyModellist[i]))
+ if (IsNormalMatEnough(alchemyModellist[i]) && !IsHaveReachFull(alchemyModellist[i]))
{
danDrugRedPointlist[i].state = RedPointState.Simple;
return;
@@ -773,11 +813,29 @@
return isEnough;
}
+ public bool IsHaveReachFull(AlchemyConfig alchemyConfig)
+ {
+ if (alchemyConfig == null) return false;
+ List<int> previewlist = GetPreviewMakeDruglist(alchemyConfig).Keys.ToList();
+ for(int i = 0; i < previewlist.Count; i++)
+ {
+ if(playerPack.CheckIsDrugById(previewlist[i]))
+ {
+ AttrFruitConfig fruitConfig = ConfigManager.Instance.GetTemplate<AttrFruitConfig>(previewlist[i]);
+ if(playerPack.IsReachMaxUseDrug(fruitConfig))
+ {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
public bool CheckNormalAlchemyIsReachMaxUse(AlchemyConfig alchemyConfig)
{
if (alchemyConfig == null) return false;
- List<int> previewlist = GetPreviewMakeDruglist(alchemyConfig);
+ List<int> previewlist = GetPreviewMakeDruglist(alchemyConfig).Keys.ToList();
for(int i = 0; i < previewlist.Count; i++)
{
if(playerPack.CheckIsDrugById(previewlist[i]))
diff --git a/System/BlastFurnace/DandrugCell.cs b/System/BlastFurnace/DandrugCell.cs
index eff0ba5..fdb477a 100644
--- a/System/BlastFurnace/DandrugCell.cs
+++ b/System/BlastFurnace/DandrugCell.cs
@@ -1,5 +1,6 @@
锘縰sing Snxxz.UI;
using System.Collections.Generic;
+using System.Linq;
using TableConfig;
using UnityEngine;
using UnityEngine.UI;
@@ -59,7 +60,7 @@
selectImg.SetActive(false);
}
- List<int> previewDanlist = FurnaceModel.GetPreviewMakeDruglist(alchemyModel);
+ List<int> previewDanlist = FurnaceModel.GetPreviewMakeDruglist(alchemyModel).Keys.ToList();
bool isReach = true;
for(int i = 0; i < previewDanlist.Count; i++)
{
diff --git a/System/BlastFurnace/LingDanTips.cs b/System/BlastFurnace/LingDanTips.cs
index 77b5205..260444d 100644
--- a/System/BlastFurnace/LingDanTips.cs
+++ b/System/BlastFurnace/LingDanTips.cs
@@ -5,6 +5,7 @@
using System;
using Snxxz.UI;
using System.Collections;
+using System.Linq;
namespace Snxxz.UI
{
@@ -134,7 +135,7 @@
isJumpToId = FurnaceModel.alchemyModellist[i].AlchemyID;
isMakeDan = true;
presentIndex = i;
- _danDrugCtrl.JumpIndex(presentIndex);
+ _danDrugCtrl.JumpIndex(presentIndex - 1);
_danDrugCtrl.m_Scorller.RefreshActiveCellViews();
break;
}
@@ -177,7 +178,7 @@
}
}
}
- _danDrugCtrl.JumpIndex(presentIndex);
+ _danDrugCtrl.JumpIndex(presentIndex - 1);
_danDrugCtrl.m_Scorller.RefreshActiveCellViews();
}
@@ -421,9 +422,9 @@
private void CreateRandomLineCell()
{
if(chooseSpecModel == null)
- previewDanlist = FurnaceModel.GetPreviewMakeDruglist(curAlchemyModel);
+ previewDanlist = FurnaceModel.GetPreviewMakeDruglist(curAlchemyModel).Keys.ToList();
else
- previewDanlist = FurnaceModel.GetPreviewSpecMakeDruglist(chooseSpecModel);
+ previewDanlist = FurnaceModel.GetPreviewSpecMakeDruglist(chooseSpecModel).Keys.ToList();
_randomLineCtrl.Refresh();
if (previewDanlist.Count > 0)
@@ -452,9 +453,20 @@
GameObject randomCell = cell.transform.GetChild(i).gameObject;
ItemCell itemCell = randomCell.transform.Find("ItemCell1").GetComponent<ItemCell>();
GameObject fullImg = randomCell.transform.Find("FullImg").gameObject;
+ UIEffect effect = randomCell.transform.Find("UIEffect").GetComponent<UIEffect>();
if (previewIndex <= previewDanlist.Count - 1)
{
int itemId = previewDanlist[previewIndex];
+ int effectId = FurnaceModel.GetEffectIdByItemId(itemId);
+ if(effectId != 0)
+ {
+ effect.effect = effectId;
+ effect.gameObject.SetActive(true);
+ }
+ else
+ {
+ effect.gameObject.SetActive(false);
+ }
randomCell.SetActive(true);
ItemCellModel cellModel = new ItemCellModel(itemId);
itemCell.Init(cellModel);
diff --git a/System/KnapSack/Logic/MakeDrugCell.cs b/System/KnapSack/Logic/MakeDrugCell.cs
index f620024..aa318f4 100644
--- a/System/KnapSack/Logic/MakeDrugCell.cs
+++ b/System/KnapSack/Logic/MakeDrugCell.cs
@@ -21,6 +21,7 @@
[SerializeField] Button useBtn;
[SerializeField] Image useBtnBG;
[SerializeField] Text useBtnText;
+ [SerializeField] GameObject reachMaxUse;
Dictionary<int, int> attrDict = new Dictionary<int, int>();
StringBuilder attrSB = new StringBuilder();
@@ -137,6 +138,7 @@
useBtn.RemoveAllListeners();
if (useNum < fruitConfig.MaxUseCnt)
{
+ reachMaxUse.SetActive(false);
useBtnText.text = Language.Get("KnapS103");
useBtn.AddListener(ClickMakeUseBtn);
useBtn.gameObject.SetActive(true);
@@ -153,21 +155,8 @@
}
else
{
- useBtnBG.material = MaterialUtility.GetInstantiatedSpriteGrayMaterial();
useBtn.gameObject.SetActive(false);
- //if (haveCnt > 0)
- //{
- // useBtnBG.material = MaterialUtility.GetUIDefaultGraphicMaterial();
- // useBtn.gameObject.SetActive(true);
- // useBtnText.color = brightColor;
- // useBtnText.text = Language.Get("BlastFurnace113");
- // useBtn.AddListener(ClickRecycle);
- //}
- //else
- //{
-
- //}
-
+ reachMaxUse.SetActive(true);
}
--
Gitblit v1.8.0