From 78bfe524ea4776c47f6314e56e97f39970b00fce Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期二, 25 九月 2018 15:07:07 +0800
Subject: [PATCH] Merge branch 'master' into 1871天赋功能
---
System/Dogz/DogzModel.cs | 422 +++++++++++++++++++++++++++++++++++++++++++---------
1 files changed, 345 insertions(+), 77 deletions(-)
diff --git a/System/Dogz/DogzModel.cs b/System/Dogz/DogzModel.cs
index 25fc8c0..d33c8ad 100644
--- a/System/Dogz/DogzModel.cs
+++ b/System/Dogz/DogzModel.cs
@@ -14,6 +14,7 @@
public override void Init()
{
ParseConfig();
+ SetDogzAndEquipPlaceRedKey();
}
public void OnBeforePlayerDataInitialize()
@@ -37,6 +38,9 @@
SetDogzEquipInfo();
playerPack.RefreshItemCountAct -= RefreshDogzEquipInfo;
playerPack.RefreshItemCountAct += RefreshDogzEquipInfo;
+ UpdateDogzAssistRed();
+ UpdateDogzEquipPlaceRed();
+ UpdateAssistNumRed();
}
public override void UnInit()
@@ -104,15 +108,15 @@
switch (_index)
{
case 0:
- return "鍏借";
+ return Language.Get("DogzEquip1");
case 1:
- return "榄旂溂";
+ return Language.Get("DogzEquip2");
case 2:
- return "鐛犵墮";
+ return Language.Get("DogzEquip3");
case 3:
- return "鍏界埅";
+ return Language.Get("DogzEquip4");
case 4:
- return "槌炵敳";
+ return Language.Get("DogzEquip5");
default:
return string.Empty;
}
@@ -124,15 +128,17 @@
{
case 0:
case 1:
- return "鐧借壊";
+ return Language.Get("DogzWhite");
case 2:
- return "钃濊壊";
+ return Language.Get("DogzBlue");
case 3:
- return "绱壊";
+ return Language.Get("DogzPurple");
case 4:
- return "姗欒壊";
+ return Language.Get("DogzOrange");
case 5:
- return "绾㈣壊";
+ return Language.Get("DogzRed");
+ case 6:
+ return Language.Get("DogzPink");
default:
return string.Empty;
}
@@ -155,13 +161,23 @@
}
}
- public event Action<int> OpenFuncEvent;
- public void OpenDogzFuncEvent(int functionOrder)
+ public event Action<int,int> OpenFuncEvent;
+ public void OpenDogzFuncEvent(int functionOrder,int equipIndex)
{
if(OpenFuncEvent != null)
{
- OpenFuncEvent(functionOrder);
+ OpenFuncEvent(functionOrder,equipIndex);
}
+ }
+
+ public bool CheckIsAddAssistNum()
+ {
+ var _itemConfig = Config.Instance.Get<ItemConfig>(AddAssistItem);
+ if(GetAssistItemCnt() <= playerPack.GetItemCountByID(PackType.rptItem, AddAssistItem))
+ {
+ return true;
+ }
+ return false;
}
#region 鍗忚
@@ -175,6 +191,8 @@
{
UpdateAssistDogzEvent();
}
+ UpdateDogzAssistRed();
+ UpdateDogzEquipPlaceRed();
}
public event Action UpdateAssistDogzEvent;
@@ -194,6 +212,9 @@
{
UpdateAssistDogzEvent();
}
+
+ UpdateDogzAssistRed();
+ UpdateDogzEquipPlaceRed();
}
public int GetAssistDogzCount()
@@ -218,7 +239,7 @@
public void SetDogzEquipInfo()
{
- m_DogzEquipDict = new Dictionary<int, List<ItemModel>>();
+ m_DogzEquipDict.Clear();
SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptDogzEquip);
if (singlePack == null) return;
@@ -244,63 +265,75 @@
public Action<int> RefreshDogzEquipAct;
private void RefreshDogzEquipInfo(PackType type, int index, int id)
{
- if (type != PackType.rptDogzEquip) return;
-
- ItemModel itemModel = playerPack.GetItemModelByIndex(type, index);
- int dogzId = GetDogzIDByIndex(index);
- List<ItemModel> modellist = GetDogzEquips(dogzId);
- if(modellist != null)
+ if(type == PackType.rptItem && id == AddAssistItem)
{
- if (itemModel != null)
+ UpdateAssistNumRed();
+ }
+ else if(type == PackType.rptDogzItem)
+ {
+ UpdateDogzAssistRed();
+ UpdateDogzEquipPlaceRed();
+ }
+ else if(type == PackType.rptDogzEquip)
+ {
+ ItemModel itemModel = playerPack.GetItemModelByIndex(type, index);
+ int dogzId = GetDogzIDByIndex(index);
+ List<ItemModel> modellist = GetDogzEquips(dogzId);
+ if (modellist != null)
{
- bool isAdd = true;
- for (int i = 0; i < modellist.Count; i++)
+ if (itemModel != null)
{
- if (modellist[i].itemInfo.ItemPlace == index)
+ bool isAdd = true;
+ for (int i = 0; i < modellist.Count; i++)
{
- isAdd = false;
- modellist[i] = itemModel;
- break;
+ if (modellist[i].itemInfo.ItemPlace == index)
+ {
+ isAdd = false;
+ modellist[i] = itemModel;
+ break;
+ }
+ }
+ if (isAdd)
+ {
+ modellist.Add(itemModel);
}
}
- if(isAdd)
+ else
{
- modellist.Add(itemModel);
+ for (int i = 0; i < modellist.Count; i++)
+ {
+ if (modellist[i].itemInfo.ItemPlace == index)
+ {
+ modellist.RemoveAt(i);
+ break;
+ }
+ }
}
}
else
{
- for (int i = 0; i < modellist.Count; i++)
+ if (itemModel != null)
{
- if (modellist[i].itemInfo.ItemPlace == index)
- {
- modellist.RemoveAt(i);
- break;
- }
+ List<ItemModel> equipDatas = new List<ItemModel>();
+ equipDatas.Add(itemModel);
+ m_DogzEquipDict.Add(dogzId, equipDatas);
}
}
- }
- else
- {
- if(itemModel != null)
- {
- List<ItemModel> equipDatas = new List<ItemModel>();
- equipDatas.Add(itemModel);
- m_DogzEquipDict.Add(dogzId,equipDatas);
- }
- }
-
- if(RefreshDogzEquipAct != null)
- {
- RefreshDogzEquipAct(dogzId);
+ if (RefreshDogzEquipAct != null)
+ {
+ RefreshDogzEquipAct(dogzId);
+ }
+
+ UpdateDogzAssistRed();
+ UpdateDogzEquipPlaceRed();
}
}
/// <summary>
/// 鑾峰緱绁炲吔绌挎埓鐨勮澶囨暟鎹�
/// </summary>
- public Dictionary<int, List<ItemModel>> m_DogzEquipDict { get; private set; }
+ private Dictionary<int, List<ItemModel>> m_DogzEquipDict = new Dictionary<int, List<ItemModel>>();
public List<ItemModel> GetDogzEquips(int _dogzId)
{
@@ -510,13 +543,13 @@
}
public List<ItemModel> selectEquipPlacelist { get; private set; }
- public List<ItemModel> GetDogzItemListByIndex(int index)
+ public List<ItemModel> GetDogzItemListByIndex(int dogzId,int index)
{
SinglePackModel singlePack = playerPack.GetSinglePackModel(PackType.rptDogzItem);
selectEquipPlacelist.Clear();
if (singlePack == null) return selectEquipPlacelist;
- var _itemColor = GetDogzEquipLimitByIndex(presentSelectDogz, index);
+ var _itemColor = GetDogzEquipLimitByIndex(dogzId, index);
var _equipPlace = GetDogzEquipPlaceByIndex(index);
Dictionary<int, ItemModel> pairs = singlePack.GetPackModelIndexDict();
foreach (var value in pairs.Values)
@@ -547,41 +580,276 @@
}
#endregion
- #region 瑁呭璇︾粏淇℃伅
- public DogzEquipData viewDetailData { get; private set; }
-
- public bool viewDetailCompare { get; private set; }
-
- public void ViewDetail(int _itemId, bool compare = false)
- {
- //viewDetailData = new DogzEquipData(_itemId);
- //viewDetailCompare = compare;
- //if (!WindowCenter.Instance.CheckOpen<DogzDetailsWin>())
- //{
- // WindowCenter.Instance.Open<DogzDetailsWin>();
- //}
- }
-
- public int DogzEquipScore(DogzEquipData data)
- {
- return 0;
- }
- #endregion
-
#region 榛樿閫夋嫨閫昏緫澶勭悊
public void SetDefaultSelectDogz()
{
var configs = Config.Instance.GetAllValues<DogzConfig>();
presentSelectDogz = configs[0].ID;
- foreach (var key in dogzAssistStateDict.Keys)
+ foreach (var key in m_DogzEquipLimit.Keys)
{
- if(dogzAssistStateDict[key] == 1)
+ Redpoint redpoint = GetSingleDogzRedpointById(key);
+ if (redpoint.state == RedPointState.Simple)
{
- if(presentSelectDogz < key)
+ presentSelectDogz = key;
+ break;
+ }
+ }
+ }
+ #endregion
+
+ #region 绾㈢偣閫昏緫澶勭悊
+ public const int MAINDOGZ_REDKEY = 112;
+ public const int DOGZFUNC_REDKEY = 11201;
+ public const int ADDASSISTDOGZ_REDKEY = 1120100002;
+ public Redpoint mainDogzRedpoint = new Redpoint(MainRedDot.RedPoint_key, MAINDOGZ_REDKEY);
+ public Redpoint dogzFuncRedpoint = new Redpoint(MAINDOGZ_REDKEY,DOGZFUNC_REDKEY);
+ public Redpoint addAssistDogzRedpoint = new Redpoint(DOGZFUNC_REDKEY,ADDASSISTDOGZ_REDKEY);
+ private Dictionary<int, Redpoint> singleDogzRedDict = new Dictionary<int, Redpoint>();
+ private Dictionary<int, Redpoint> dogzAssistRedDict = new Dictionary<int, Redpoint>();
+ private Dictionary<int, Dictionary<int, Redpoint>> dogzEquipPlaceRedDict = new Dictionary<int, Dictionary<int, Redpoint>>();
+ public void SetDogzAndEquipPlaceRedKey()
+ {
+ singleDogzRedDict.Clear();
+ dogzEquipPlaceRedDict.Clear();
+ dogzAssistRedDict.Clear();
+ int i = 0;
+ foreach(var dogzId in m_DogzEquipLimit.Keys)
+ {
+ i += 1;
+ int dogzRedKey = DOGZFUNC_REDKEY * 100 + i;
+ Redpoint dogzRedPoint = new Redpoint(DOGZFUNC_REDKEY,dogzRedKey);
+ singleDogzRedDict.Add(dogzId, dogzRedPoint);
+ int dogzAssistRedKey = dogzRedKey * 100 + i;
+ Redpoint dogzAssistRedPoint = new Redpoint(dogzRedKey, dogzAssistRedKey);
+ dogzAssistRedDict.Add(dogzId,dogzAssistRedPoint);
+ Dictionary<int, Redpoint> equipPlaceRedDict = new Dictionary<int, Redpoint>();
+ dogzEquipPlaceRedDict.Add(dogzId,equipPlaceRedDict);
+ int equipPlaceNum = m_DogzEquipLimit[dogzId].Count;
+ for (int j = 0; j < equipPlaceNum; j++)
+ {
+ int equipPlaceRedKey = dogzRedKey * 10 + j;
+ Redpoint equipPlaceRedpoint = new Redpoint(dogzRedKey,equipPlaceRedKey);
+ equipPlaceRedDict.Add(j, equipPlaceRedpoint);
+ }
+
+ }
+ }
+
+ public Redpoint GetSingleDogzRedpointById(int dogzId)
+ {
+ Redpoint redpoint = null;
+ singleDogzRedDict.TryGetValue(dogzId, out redpoint);
+ return redpoint;
+ }
+
+ public Redpoint GetDogzAssistRedpointById(int dogzId)
+ {
+ Redpoint redpoint = null;
+ dogzAssistRedDict.TryGetValue(dogzId,out redpoint);
+ return redpoint;
+ }
+
+ public Redpoint GetDogzEquipPlaceRedpointById(int dogzId,int index)
+ {
+ Redpoint redpoint = null;
+ if(dogzEquipPlaceRedDict.ContainsKey(dogzId))
+ {
+ dogzEquipPlaceRedDict[dogzId].TryGetValue(index, out redpoint);
+ }
+ return redpoint;
+ }
+
+ public void UpdateDogzAssistRed()
+ {
+ foreach(var value in dogzAssistRedDict.Values)
+ {
+ value.state = RedPointState.None;
+ }
+ bool isMaxAssistNum = GetAssistDogzCount() >= DogzAssistDefaultCnt ? true : false;
+ if(!isMaxAssistNum)
+ {
+ int maxDogzId = 0;
+ foreach(var dogzId in m_DogzEquipLimit.Keys)
+ {
+ var equips = GetDogzEquips(dogzId);
+ int equipNum = equips == null ? 0 : equips.Count;
+ if(equipNum >= 5 && maxDogzId < dogzId
+ && !TryGetAssistDogzState(dogzId))
{
- presentSelectDogz = key;
+ maxDogzId = dogzId;
}
}
+ if(maxDogzId > 0)
+ {
+ Redpoint assistRedpoint = GetDogzAssistRedpointById(maxDogzId);
+ if(assistRedpoint.state == RedPointState.None)
+ {
+ assistRedpoint.state = RedPointState.Simple;
+ }
+ }
+ }
+ else
+ {
+ foreach (var dogzId in m_DogzEquipLimit.Keys)
+ {
+ var equips = GetDogzEquips(dogzId);
+ int equipNum = equips == null ? 0 : equips.Count;
+ if(!TryGetAssistDogzState(dogzId) && equipNum == 5)
+ {
+ Redpoint assistRedpoint = GetDogzAssistRedpointById(dogzId);
+ if (assistRedpoint.state == RedPointState.None)
+ {
+ assistRedpoint.state = RedPointState.Simple;
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ public void UpdateDogzEquipPlaceRed()
+ {
+ foreach(var value in dogzEquipPlaceRedDict.Values)
+ {
+ foreach(var value2 in value.Values)
+ {
+ value2.state = RedPointState.None;
+ }
+ }
+
+ foreach(var value in dogzAssistRedDict.Values)
+ {
+ if(value.state == RedPointState.Simple)
+ {
+ return;
+ }
+ }
+ bool isMaxAssistNum = GetAssistDogzCount() >= DogzAssistDefaultCnt ? true : false;
+ if (!isMaxAssistNum)
+ {
+ int maxEquipNum = 0;
+ int spaceDogzId = 0;
+ foreach (var dogzId in m_DogzEquipLimit.Keys)
+ {
+ var equips = GetDogzEquips(dogzId);
+ int equipNum = equips == null ? 0 : equips.Count;
+ if (equipNum < 5)
+ {
+ if (spaceDogzId == 0)
+ {
+ if (maxEquipNum <= equipNum)
+ {
+ maxEquipNum = equipNum;
+ spaceDogzId = dogzId;
+ }
+ }
+ else
+ {
+ if (maxEquipNum < equipNum)
+ {
+ maxEquipNum = equipNum;
+ spaceDogzId = dogzId;
+ }
+ }
+ }
+ }
+
+ if(spaceDogzId != 0)
+ {
+ for(int i = 0; i < 5; i++)
+ {
+ ItemModel _data;
+ bool _equiped = TryGetDogzEquip(spaceDogzId, i + 101, out _data);
+ if(!_equiped)
+ {
+ GetDogzItemListByIndex(spaceDogzId,i);
+ if (selectEquipPlacelist.Count > 0)
+ {
+ Redpoint equipPlaceRedpoint = GetDogzEquipPlaceRedpointById(spaceDogzId,i);
+ if(equipPlaceRedpoint.state == RedPointState.None)
+ {
+ equipPlaceRedpoint.state = RedPointState.Simple;
+ }
+ break;
+ }
+ }
+ }
+ }
+ }
+ else
+ {
+ int minAlreadyAssistId = 0;
+ foreach (var dogzId in m_DogzEquipLimit.Keys)
+ {
+ if(TryGetAssistDogzState(dogzId)
+ && minAlreadyAssistId != 0
+ && minAlreadyAssistId < dogzId)
+ {
+ minAlreadyAssistId = dogzId;
+ }
+ }
+
+ foreach (var dogzId in m_DogzEquipLimit.Keys)
+ {
+ var equips = GetDogzEquips(dogzId);
+ int equipNum = equips == null ? 0 : equips.Count;
+ bool isBetterDogz = true;
+ if(!TryGetAssistDogzState(dogzId) && dogzId > minAlreadyAssistId && equipNum < 5)
+ {
+ for (int i = 0; i < 5; i++)
+ {
+ ItemModel _data;
+ bool _equiped = TryGetDogzEquip(dogzId, i + 101, out _data);
+ if (!_equiped)
+ {
+ GetDogzItemListByIndex(dogzId,i);
+ if (selectEquipPlacelist.Count < 1)
+ {
+ isBetterDogz = false;
+ break;
+ }
+ }
+ }
+ }
+ else
+ {
+ isBetterDogz = false;
+ }
+
+ if(isBetterDogz)
+ {
+ for (int i = 0; i < 5; i++)
+ {
+ ItemModel _data;
+ bool _equiped = TryGetDogzEquip(dogzId, i + 101, out _data);
+ if (!_equiped)
+ {
+ Redpoint equipPlaceRedpoint = GetDogzEquipPlaceRedpointById(dogzId, i);
+ if (equipPlaceRedpoint.state == RedPointState.None)
+ {
+ equipPlaceRedpoint.state = RedPointState.Simple;
+ break;
+ }
+ }
+ }
+ break;
+ }
+ }
+ }
+ }
+
+ public void UpdateAssistNumRed()
+ {
+ if(CheckIsAddAssistNum())
+ {
+ if(addAssistDogzRedpoint.state == RedPointState.None)
+ {
+ addAssistDogzRedpoint.state = RedPointState.Simple;
+ }
+ }
+ else
+ {
+ addAssistDogzRedpoint.state = RedPointState.None;
}
}
#endregion
--
Gitblit v1.8.0