From f115d8031d01bde81a29d76d13ab3a17d2f9cb59 Mon Sep 17 00:00:00 2001
From: client_Zxw <826696702@qq.com>
Date: 星期三, 31 十月 2018 16:57:25 +0800
Subject: [PATCH] Merge branch 'master' of http://192.168.0.87:10010/r/snxxz_scripts
---
System/Compose/New/ComposeWinModel.cs | 322 ++++++++++++++++++++++++++++++++++++++++++++++-------
1 files changed, 280 insertions(+), 42 deletions(-)
diff --git a/System/Compose/New/ComposeWinModel.cs b/System/Compose/New/ComposeWinModel.cs
index 13e52d2..d5e867d 100644
--- a/System/Compose/New/ComposeWinModel.cs
+++ b/System/Compose/New/ComposeWinModel.cs
@@ -10,8 +10,7 @@
{
private Dictionary<int, Dictionary<int, List<ItemCompoundConfig>>> firstTypeDict = null;
private Dictionary<int, List<ItemCompoundConfig>> secondTypeDict = null;
- private Dictionary<int, List<int>> composeJobLimitDict = new Dictionary<int, List<int>>();
- private FuncConfigConfig addonsFormulaModel;
+
public event Action ResetModelEvent;
SelectEquipModel _selectModel;
SelectEquipModel selectModel
@@ -36,23 +35,8 @@
public override void Init()
{
- addonsFormulaModel = Config.Instance.Get<FuncConfigConfig>("ComposeAddonsFormula");
- composeJobLimitDict.Clear();
- FuncConfigConfig funcConfig = Config.Instance.Get<FuncConfigConfig>("ComposeJobLimit");
- JsonData limitData = JsonMapper.ToObject(funcConfig.Numerical1);
- foreach(var job in limitData.Keys)
- {
- List<int> idlist = new List<int>();
- composeJobLimitDict.Add(int.Parse(job),idlist);
- if(limitData[job].IsArray)
- {
- for(int i= 0; i < limitData[job].Count; i++)
- {
- int id = int.Parse(limitData[job][i].ToString());
- idlist.Add(id);
- }
- }
- }
+ ParseFuncConfig();
+ ParseItemComoundConfig();
}
public override void UnInit()
@@ -76,6 +60,7 @@
playerPack.RefreshItemCountAct += OnItemCntRefresh;
PlayerDatas.Instance.PlayerDataRefreshInfoEvent -= PlayerLvUpdate;
PlayerDatas.Instance.PlayerDataRefreshInfoEvent += PlayerLvUpdate;
+ UpdateComposeDataByLevel();
}
public void ResetModel()
@@ -86,14 +71,234 @@
}
}
-
private void PlayerLvUpdate(PlayerDataRefresh type)
{
if (type != PlayerDataRefresh.LV) return;
+ UpdateComposeDataByLevel();
SetComposeTypeRed();
RefreshComposeRed();
}
+
+ #region 瑙f瀽鏈湴鏁版嵁
+ private FuncConfigConfig addonsFormulaModel;
+ private Dictionary<int, List<int>> composeJobLimitDict = new Dictionary<int, List<int>>();
+ public void ParseFuncConfig()
+ {
+ addonsFormulaModel = Config.Instance.Get<FuncConfigConfig>("ComposeAddonsFormula");
+ composeJobLimitDict.Clear();
+ FuncConfigConfig funcConfig = Config.Instance.Get<FuncConfigConfig>("ComposeJobLimit");
+ JsonData limitData = JsonMapper.ToObject(funcConfig.Numerical1);
+ foreach (var job in limitData.Keys)
+ {
+ List<int> idlist = new List<int>();
+ composeJobLimitDict.Add(int.Parse(job), idlist);
+ if (limitData[job].IsArray)
+ {
+ for (int i = 0; i < limitData[job].Count; i++)
+ {
+ int id = int.Parse(limitData[job][i].ToString());
+ idlist.Add(id);
+ }
+ }
+ }
+ }
+
+ public Dictionary<int, ComposeFirstTypeData> composeDataDict = new Dictionary<int, ComposeFirstTypeData>();
+ public void ParseItemComoundConfig()
+ {
+ composeDataDict.Clear();
+ List<ItemCompoundConfig> itemCompounds = Config.Instance.GetAllValues<ItemCompoundConfig>();
+ for(int i = 0; i < itemCompounds.Count; i++)
+ {
+ AddComposeData(itemCompounds[i],composeDataDict);
+ }
+ }
+
+ public void AddComposeData(ItemCompoundConfig itemCompound, Dictionary<int, ComposeFirstTypeData> keyValues)
+ {
+ if (itemCompound == null) return;
+
+ if (!keyValues.ContainsKey(itemCompound.firstType))
+ {
+ var firstData = new ComposeFirstTypeData();
+ firstData.firstType = itemCompound.firstType;
+ firstData.secondTypeDict = new Dictionary<int, ComposeSecondTypeData>();
+ ComposeSecondTypeData secondData = new ComposeSecondTypeData();
+ secondData.secondType = itemCompound.secondType;
+ secondData.thirdTypeDict = new Dictionary<int, List<ComposeThirdTypeData>>();
+ List<ComposeThirdTypeData> thirdTypeDatas = new List<ComposeThirdTypeData>();
+ ComposeThirdTypeData thirdData = new ComposeThirdTypeData();
+ thirdData.thirdType = itemCompound.thirdType;
+ thirdData.itemCompound = itemCompound;
+ thirdTypeDatas.Add(thirdData);
+ firstData.secondTypeDict.Add(secondData.secondType, secondData);
+ secondData.thirdTypeDict.Add(thirdData.thirdType, thirdTypeDatas);
+ keyValues.Add(firstData.firstType, firstData);
+ }
+ else
+ {
+ ComposeSecondTypeData secondData = new ComposeSecondTypeData();
+ secondData.secondType = itemCompound.secondType;
+ var secondTypeDict = keyValues[itemCompound.firstType].secondTypeDict;
+ if (!secondTypeDict.ContainsKey(secondData.secondType))
+ {
+ secondTypeDict.Add(secondData.secondType, secondData);
+ secondData.thirdTypeDict = new Dictionary<int, List<ComposeThirdTypeData>>();
+ List<ComposeThirdTypeData> thirdTypeDatas = new List<ComposeThirdTypeData>();
+ ComposeThirdTypeData thirdData = new ComposeThirdTypeData();
+ thirdData.thirdType = itemCompound.thirdType;
+ thirdData.itemCompound = itemCompound;
+ thirdTypeDatas.Add(thirdData);
+ secondData.thirdTypeDict.Add(thirdData.thirdType, thirdTypeDatas);
+ }
+ else
+ {
+ ComposeThirdTypeData thirdData = new ComposeThirdTypeData();
+ thirdData.thirdType = itemCompound.thirdType;
+ thirdData.itemCompound = itemCompound;
+ var thirdTypeDict = secondTypeDict[secondData.secondType].thirdTypeDict;
+ if (!thirdTypeDict.ContainsKey(thirdData.thirdType))
+ {
+ List<ComposeThirdTypeData> thirdTypeDatas = new List<ComposeThirdTypeData>();
+ thirdTypeDatas.Add(thirdData);
+ thirdTypeDict.Add(thirdData.thirdType, thirdTypeDatas);
+ }
+ else
+ {
+ thirdTypeDict[thirdData.thirdType].Add(thirdData);
+ }
+ }
+ }
+ }
+
+ public class ComposeFirstTypeData
+ {
+ public int firstType;
+ public Dictionary<int,ComposeSecondTypeData> secondTypeDict = null;
+ }
+ public class ComposeSecondTypeData
+ {
+ public int secondType;
+ public Dictionary<int,List<ComposeThirdTypeData>> thirdTypeDict= null;
+ }
+ public class ComposeThirdTypeData
+ {
+ public int thirdType;
+ public ItemCompoundConfig itemCompound = null;
+ }
+ #endregion
+
+ #region 鏁版嵁鍙樺姩
+ public Dictionary<int, ComposeFirstTypeData> composeOpenDataDict = new Dictionary<int, ComposeFirstTypeData>();
+ public void UpdateComposeDataByLevel()
+ {
+ composeOpenDataDict.Clear();
+ int playerLv = PlayerDatas.Instance.baseData.LV;
+ foreach (var first in composeDataDict.Keys)
+ {
+ var secondTypeDict = composeDataDict[first].secondTypeDict;
+ foreach (var second in secondTypeDict.Keys)
+ {
+ var thirdTypeDict = secondTypeDict[second].thirdTypeDict;
+ foreach (var third in thirdTypeDict.Keys)
+ {
+ for(int i = 0; i < thirdTypeDict[third].Count; i++)
+ {
+ var thirdData = thirdTypeDict[third][i];
+ if(playerLv >= thirdData.itemCompound.levelNeed
+ ||(thirdData.itemCompound.trailerLevel != 0 && playerLv >= thirdData.itemCompound.trailerLevel))
+ {
+ AddComposeData(thirdData.itemCompound, composeOpenDataDict);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ public bool TryGetFirstTypeData(int firstType,out ComposeFirstTypeData firstTypeData)
+ {
+ firstTypeData = null;
+ return composeDataDict.TryGetValue(firstType,out firstTypeData);
+ }
+
+ public bool TryGetSecondTypeData(int firstType,int secondType,out ComposeSecondTypeData secondTypeData)
+ {
+ ComposeFirstTypeData firstTypeData = null;
+ secondTypeData = null;
+ bool isFirst = TryGetFirstTypeData(firstType,out firstTypeData);
+ if(isFirst)
+ {
+ return firstTypeData.secondTypeDict.TryGetValue(secondType,out secondTypeData);
+ }
+ return false;
+ }
+
+ public bool TryGetThirdTypeData(int firstType, int secondType, int thirdType, out List<ComposeThirdTypeData> thirdTypeDatas)
+ {
+ ComposeSecondTypeData secondTypeData = null;
+ thirdTypeDatas = null;
+ bool isSecond = TryGetSecondTypeData(firstType, secondType, out secondTypeData);
+ if (isSecond)
+ {
+ return secondTypeData.thirdTypeDict.TryGetValue(thirdType, out thirdTypeDatas);
+ }
+ return false;
+ }
+
+ public bool TryGetThirdTypeData(int firstType, int secondType,int thirdType,out ComposeThirdTypeData thirdTypeData)
+ {
+ ComposeSecondTypeData secondTypeData = null;
+ thirdTypeData = null;
+ bool isSecond = TryGetSecondTypeData(firstType,secondType ,out secondTypeData);
+ if (isSecond)
+ {
+ List<ComposeThirdTypeData> thirdTypeDatas = null;
+ bool isThird = secondTypeData.thirdTypeDict.TryGetValue(thirdType, out thirdTypeDatas);
+ if(isThird)
+ {
+ thirdTypeData = thirdTypeDatas[0];
+ return true;
+ }
+ }
+ return false;
+ }
+
+ public ItemCompoundConfig CurComposeModel { get; private set; }
+ public void SetCurComposeModel(ItemCompoundConfig compoundModel)
+ {
+ CurComposeModel = compoundModel;
+ }
+
+ public event Action<int> UpdateThirdTypeEvent;
+ public void UpdateThirdType(int thirdType)
+ {
+ if (UpdateThirdTypeEvent != null)
+ {
+ UpdateThirdTypeEvent(thirdType);
+ }
+ }
+ public event Action<int> UpdateSecondTypeEvent;
+ public void UpdateSecondType(int secondType)
+ {
+ if (UpdateSecondTypeEvent != null)
+ {
+ UpdateSecondTypeEvent(secondType);
+ }
+ }
+
+ public bool TryGetIncreaseRateItemIndex(ItemCompoundConfig itemCompound,bool IsIncrease, out List<int> indexlist)
+ {
+ indexlist = null;
+ if (!IsIncrease || itemCompound == null) return false;
+
+ SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptItem);
+ int[] increases = itemCompound.successRateIncrease;
+ indexlist = singlePack.ItemIndexlist(increases[0], increases[1]);
+ return true;
+ }
+ #endregion
public bool IsComposeJobLimit(int composeId)
{
@@ -137,6 +342,18 @@
return modellist;
}
+ public bool IsTrailerByLevel(ItemCompoundConfig itemCompound)
+ {
+ if (itemCompound.trailerLevel <= 0) return false;
+
+ int playerLv = PlayerDatas.Instance.baseData.LV;
+ if(playerLv >= itemCompound.trailerLevel && playerLv < itemCompound.levelNeed)
+ {
+ return true;
+ }
+ return false;
+ }
+
public int GetTicketId(int firstType, int secondType, int thirdType)
{
var itemId = 0;
@@ -149,16 +366,10 @@
_secondTypeDict.TryGetValue(thirdType, out modellist);
if (modellist != null && modellist.Count > 0)
{
- int.TryParse(modellist[0].makeID, out itemId);
+ itemId = modellist[0].makeID[0];
}
}
return itemId;
- }
-
- public ItemCompoundConfig CurComposeModel { get; private set; }
- public void SetCurComposeModel(ItemCompoundConfig compoundModel)
- {
- CurComposeModel = compoundModel;
}
public bool IsEnoughUnfixedMat(ItemCompoundConfig compoundModel)
@@ -205,7 +416,7 @@
Dictionary<int, Dictionary<int, int>> fixedMatIsBindDict = new Dictionary<int, Dictionary<int, int>>(); //id , isBind, count
Dictionary<int, Dictionary<int, int>> unfixedMatIsBindDict = new Dictionary<int, Dictionary<int, int>>();
- public void SendComposeRequest(ItemCompoundConfig compoundModel, Dictionary<int, List<int>> fixedItemIndexDict,UIEffect composEffect,int composeCount = 1,int successRate = 10000)
+ public void SendComposeRequest(ItemCompoundConfig compoundModel, Dictionary<int, List<int>> fixedItemIndexDict,UIEffect composEffect,int composeCount = 1,int successRate = 10000,bool isIncrease = false)
{
fixedMatIsBindDict.Clear();
unfixedMatIsBindDict.Clear();
@@ -320,19 +531,19 @@
{
if (sure)
{
- SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount);
+ SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount,isIncrease);
}
});
return;
}
else
{
- SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount);
+ SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount, isIncrease);
}
}
else
{
- SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount);
+ SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount, isIncrease);
}
}
@@ -349,19 +560,19 @@
{
if (sure)
{
- SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount);
+ SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount, isIncrease);
}
});
return;
}
else
{
- SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount);
+ SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount, isIncrease);
}
}
else
{
- SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount);
+ SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount, isIncrease);
}
}
}
@@ -377,13 +588,13 @@
{
if (isCompose)
{
- SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount);
+ SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount, isIncrease);
}
});
}
else
{
- SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount);
+ SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount, isIncrease);
}
}
else
@@ -449,7 +660,7 @@
{
if (isCompose)
{
- SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount);
+ SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount, isIncrease);
}
});
}
@@ -480,14 +691,14 @@
{
if (isCompose)
{
- SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount);
+ SendComposeQuest(compoundModel, composEffect, unfixedIndexArray, composeCount, isIncrease);
}
});
}
}
}
- public void SendComposeQuest(ItemCompoundConfig compoundModel,UIEffect composEffect,byte[] unfixedIndexArray, int composeCount)
+ public void SendComposeQuest(ItemCompoundConfig compoundModel,UIEffect composEffect,byte[] unfixedIndexArray, int composeCount,bool isIncrease)
{
composEffect.Play();
CA303_tagCMItemCompound itemCompose = null;
@@ -501,6 +712,20 @@
itemCompose.AddonsItemIndexCnt = (byte)selectModel.GetHaveAddSelectItem().Count;
itemCompose.AddonsItemIndex = DictToArray(selectModel.GetHaveAddSelectItem());
itemCompose.AddonsItemCount = addonsReduceArray;
+ List<int> increaseIndexlist = null;
+ TryGetIncreaseRateItemIndex(compoundModel,isIncrease,out increaseIndexlist);
+ byte[] increaseRateIndexArray = null;
+ if (increaseIndexlist != null)
+ {
+ increaseRateIndexArray = ListToArray(increaseIndexlist);
+ itemCompose.RateIncreaseItemIndexCnt = (byte)increaseRateIndexArray.Length;
+ itemCompose.RateIncreaseItemIndex = increaseRateIndexArray;
+ }
+ else
+ {
+ itemCompose.RateIncreaseItemIndexCnt = 0;
+ itemCompose.RateIncreaseItemIndex = new byte[0];
+ }
GameNetSystem.Instance.SendInfo(itemCompose);
}
@@ -652,6 +877,18 @@
return itemArray;
}
+ private byte[] ListToArray(List<int> list)
+ {
+ byte[] itemArray = new byte[list.Count];
+ int i = 0;
+ for (i = 0; i < list.Count; i++)
+ {
+ itemArray[i] = (byte)list[i];
+ }
+
+ return itemArray;
+ }
+
private byte[] DictToArray(Dictionary<int, List<int>> itemDict)
{
int itemArrayLength = 0;
@@ -773,8 +1010,8 @@
if (getFirstModel[secondType].ContainsKey(0))
{
ItemCompoundConfig compoundConfig = getFirstModel[secondType][0][0];
- int[] fixedIDs = ConfigParse.GetMultipleStr<int>(compoundConfig.itemID);
- int[] fixedCnt = ConfigParse.GetMultipleStr<int>(compoundConfig.itemCount);
+ int[] fixedIDs = compoundConfig.itemID;
+ int[] fixedCnt = compoundConfig.itemCount;
for (int i = 0; i < fixedIDs.Length; i++)
{
int haveCnt = playerPack.GetItemCountByID(PackType.rptItem, fixedIDs[i]);
@@ -945,7 +1182,7 @@
List<ItemCompoundConfig> compoundlist = firstDict[3][thirdType];
for(int i = 0; i < compoundlist.Count; i++)
{
- int makeID = ConfigParse.GetMultipleStr<int>(compoundlist[i].makeID)[i];
+ int makeID = compoundlist[i].makeID[i];
string key = StringUtility.Contact(3, 10, thirdType);
if (IsComposeJobLimit(makeID) && IsEnoughFixedMat(compoundlist[i]))
{
@@ -987,6 +1224,7 @@
fixedItem,
unfixedItem,
addItem,
+ IncreaseItem,
}
public enum DisplayItemArray
--
Gitblit v1.8.0