From 27c1fce6488069ca68d3c1f14ea833973265de79 Mon Sep 17 00:00:00 2001
From: Client_PangDeRong <593317293@qq.com>
Date: 星期三, 29 八月 2018 11:56:13 +0800
Subject: [PATCH] 1495 修复合成Bug
---
System/Compose/New/ComposeWinModel.cs | 98 +++++++++++++++++++++++++++----------------------
1 files changed, 54 insertions(+), 44 deletions(-)
diff --git a/System/Compose/New/ComposeWinModel.cs b/System/Compose/New/ComposeWinModel.cs
index c332335..2993978 100644
--- a/System/Compose/New/ComposeWinModel.cs
+++ b/System/Compose/New/ComposeWinModel.cs
@@ -73,7 +73,6 @@
{
SetComposeTypeRed();
RefreshComposeRed();
- funcType = ComposeFuncType.Wings;
playerPack.RefreshItemCountAct -= OnItemCntRefresh;
playerPack.RefreshItemCountAct += OnItemCntRefresh;
PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerLvUpdate;
@@ -109,24 +108,33 @@
}
return false;
}
- public Dictionary<int, Dictionary<int, List<ItemCompoundConfig>>> GetFirstTypeModel()
+
+ public Dictionary<int, Dictionary<int, List<ItemCompoundConfig>>> GetFirstTypeModel(int firstType)
{
firstTypeDict = null;
- firstTypeDict = ItemCompoundConfig.GetFirstComposeTypeDict((int)funcType);
+ firstTypeDict = ItemCompoundConfig.GetFirstComposeTypeDict((int)firstType);
return firstTypeDict;
}
- public Dictionary<int, List<ItemCompoundConfig>> GetSecondTypeModel(int secondType)
+ public Dictionary<int, List<ItemCompoundConfig>> GetSecondTypeModel(int firstType,int secondType)
{
+ GetFirstTypeModel(firstType);
secondTypeDict = null;
- firstTypeDict.TryGetValue(secondType, out secondTypeDict);
+ if (firstTypeDict != null)
+ {
+ firstTypeDict.TryGetValue(secondType, out secondTypeDict);
+ }
return secondTypeDict;
}
- public List<ItemCompoundConfig> GetThirdTypeModellist(int thirdType)
+ public List<ItemCompoundConfig> GetThirdTypeModellist(int firstType,int secondType,int thirdType)
{
List<ItemCompoundConfig> modellist = null;
- secondTypeDict.TryGetValue(thirdType, out modellist);
+ GetSecondTypeModel(firstType, secondType);
+ if(secondTypeDict != null)
+ {
+ secondTypeDict.TryGetValue(thirdType, out modellist);
+ }
return modellist;
}
@@ -148,24 +156,10 @@
return itemId;
}
- public int[] makeIDs { get; private set; }
- public int[] unfixedItemIDs { get; private set; }
- public int[] costfixedItemIDs { get; private set; }
- public int[] costfixedItemCounts { get; private set; }
- public int[] unfixedItemDisplay { get; private set; }
- public int[] fixedItemDisplay { get; private set; }
-
public ItemCompoundConfig CurComposeModel { get; private set; }
-
public void SetCurComposeModel(ItemCompoundConfig compoundModel)
{
CurComposeModel = compoundModel;
- makeIDs = ConfigParse.GetMultipleStr<int>(compoundModel.makeID);
- unfixedItemIDs = ConfigParse.GetMultipleStr<int>(compoundModel.unfixedItemID);
- costfixedItemIDs = ConfigParse.GetMultipleStr<int>(compoundModel.itemID);
- costfixedItemCounts = ConfigParse.GetMultipleStr<int>(compoundModel.itemCount);
- unfixedItemDisplay = ConfigParse.GetMultipleStr<int>(compoundModel.unfixedItemDisplay);
- fixedItemDisplay = ConfigParse.GetMultipleStr<int>(compoundModel.itemDisplay);
}
public bool IsEnoughUnfixedMat(ItemCompoundConfig compoundModel)
@@ -177,12 +171,15 @@
return true;
}
- public bool IsEnoughFixedMat()
+ public bool IsEnoughFixedMat(ItemCompoundConfig config)
{
- for ( int i = 0; i < costfixedItemCounts.Length; i++)
+ if (config == null) return false;
+ int[] fixedIds = ItemCompoundConfig.GetDisplayArrayByType(config.id,DisplayItemArray.FixedIds);
+ int[] fixedCounts = ItemCompoundConfig.GetDisplayArrayByType(config.id, DisplayItemArray.FixedCounts);
+ for ( int i = 0; i < fixedCounts.Length; i++)
{
- int haveCount = playerPack.GetItemCountByID(PackType.rptItem, costfixedItemIDs[i]);
- if (haveCount < costfixedItemCounts[i])
+ int haveCount = playerPack.GetItemCountByID(PackType.rptItem,fixedIds[i]);
+ if (haveCount < fixedCounts[i])
{
return false;
}
@@ -225,12 +222,14 @@
return;
}
- for (i = 0; i < costfixedItemCounts.Length; i++)
+ int[] fixedIds = ItemCompoundConfig.GetDisplayArrayByType(compoundModel.id, DisplayItemArray.FixedIds);
+ int[] fixedCounts = ItemCompoundConfig.GetDisplayArrayByType(compoundModel.id, DisplayItemArray.FixedCounts);
+ for (i = 0; i < fixedCounts.Length; i++)
{
- int haveCount = playerPack.GetItemCountByID(PackType.rptItem, costfixedItemIDs[i]);
- if (haveCount < costfixedItemCounts[i])
+ int haveCount = playerPack.GetItemCountByID(PackType.rptItem,fixedIds[i]);
+ if (haveCount < fixedCounts[i])
{
- ItemConfig fixedConfig = Config.Instance.Get<ItemConfig>(costfixedItemIDs[i]);
+ ItemConfig fixedConfig = Config.Instance.Get<ItemConfig>(fixedIds[i]);
if (fixedConfig.GetWay.Length < 1)
{
ItemAttrData attrData = new ItemAttrData(fixedConfig.ID);
@@ -460,10 +459,10 @@
noBindCnt = fixedMatIsBindDict[idlist[0]][0];
}
- int remainBind = bindCnt % costfixedItemCounts[0];
- int remainNOBind = noBindCnt % costfixedItemCounts[0];
- bindCnt = bindCnt / costfixedItemCounts[0];
- noBindCnt = noBindCnt / costfixedItemCounts[0];
+ int remainBind = bindCnt % fixedCounts[0];
+ int remainNOBind = noBindCnt % fixedCounts[0];
+ bindCnt = bindCnt / fixedCounts[0];
+ noBindCnt = noBindCnt / fixedCounts[0];
if (bindCnt + noBindCnt < composeCount)
{
bindCnt = composeCount - noBindCnt;
@@ -618,7 +617,9 @@
private string GetComposeInfoStr(int bindCnt,int noBindCnt)
{
- ItemConfig config = Config.Instance.Get<ItemConfig>(makeIDs[0]);
+ if (CurComposeModel == null) return string.Empty;
+ int[] makeIds = ItemCompoundConfig.GetDisplayArrayByType(CurComposeModel.id,DisplayItemArray.MakeIds);
+ ItemConfig config = Config.Instance.Get<ItemConfig>(makeIds[0]);
StringBuilder stringBuilder = new StringBuilder();
if (bindCnt > 0)
{
@@ -675,15 +676,15 @@
{
minBindCnt = 0;
minNoBindCnt = 0;
- if (costfixedItemIDs == null) return;
+ if (CurComposeModel == null) return;
Dictionary<int, int> bindCntDic = new Dictionary<int, int>();
Dictionary<int, int> noBindCntDic = new Dictionary<int, int>();
-
- for (int i = 0; i < costfixedItemIDs.Length;i++)
+ int[] fixedIds = ItemCompoundConfig.GetDisplayArrayByType(CurComposeModel.id,DisplayItemArray.FixedIds);
+ for (int i = 0; i < fixedIds.Length;i++)
{
List<ItemModel> list = null;
- playerPack.GetSinglePackModel(PackType.rptItem).GetItemCountByID(costfixedItemIDs[i],out list);
+ playerPack.GetSinglePackModel(PackType.rptItem).GetItemCountByID(fixedIds[i],out list);
if(list != null)
{
int bindCnt = 0;
@@ -700,8 +701,8 @@
noBindCnt += list[j].itemInfo.ItemCount;
}
}
- bindCntDic.Add(costfixedItemIDs[i], bindCnt);
- noBindCntDic.Add(costfixedItemIDs[i], noBindCnt);
+ bindCntDic.Add(fixedIds[i], bindCnt);
+ noBindCntDic.Add(fixedIds[i], noBindCnt);
}
}
@@ -855,8 +856,8 @@
this.secondType = secondType;
this.thirdType = thirdType;
funcType = type;
- GetFirstTypeModel();
- Dictionary<int, List<ItemCompoundConfig>> dict = GetSecondTypeModel(secondType);
+ GetFirstTypeModel((int)type);
+ Dictionary<int, List<ItemCompoundConfig>> dict = GetSecondTypeModel((int)type,secondType);
if(dict == null)
{
SysNotifyMgr.Instance.ShowTip("FuncLimit_Level");
@@ -926,10 +927,9 @@
List<ItemCompoundConfig> compoundlist = firstDict[3][thirdType];
for(int i = 0; i < compoundlist.Count; i++)
{
- SetCurComposeModel(compoundlist[i]);
int makeID = ConfigParse.GetMultipleStr<int>(compoundlist[i].makeID)[i];
string key = StringUtility.Contact(3, 10, thirdType);
- if (IsComposeJobLimit(makeID) && IsEnoughFixedMat())
+ if (IsComposeJobLimit(makeID) && IsEnoughFixedMat(compoundlist[i]))
{
if (thirdTypeRedDict[key].state != RedPointState.Simple)
{
@@ -971,3 +971,13 @@
addItem,
}
+public enum DisplayItemArray
+{
+ MakeIds,
+ UnfixedIds,
+ FixedIds,
+ FixedCounts,
+ UnfixedDisplay,
+ FixedDisplay,
+}
+
--
Gitblit v1.8.0