From a51aad2ddcf0cb2ffc8e77cac145f6f5d70ffc6b Mon Sep 17 00:00:00 2001
From: client_linchunjie <461730578@qq.com>
Date: 星期四, 04 四月 2019 11:47:52 +0800
Subject: [PATCH] 3335 灵宠坐骑技能整合
---
Core/GameEngine/Model/TelPartialConfig/tagChinSkillConfig.cs | 50 +
System/Mount/MountModel.cs | 99 ++
Core/NetworkPackage/ServerPack/HA3_Function/HA315_tagMCDailyActionCnt.cs | 70
System/Pet/SkillButtonPet.cs | 40
System/Pet/PetModel.cs | 1779 ++++++++++++++++++++++----------------------
System/RoleParticulars/ViewPetSkillCell.cs | 3
/dev/null | 12
Lua/Gen/XLuaGenAutoRegister.cs | 3
System/RoleParticulars/ViewPetDetailWin.cs | 9
System/Mount/MountPanelAssignment.cs | 118 +-
System/Pet/PetAttributeMethods.cs | 9
System/RoleParticulars/ViewHorseSkillCell.cs | 44
System/RoleParticulars/ViewHorseDetailWin.cs | 69 +
13 files changed, 1,295 insertions(+), 1,010 deletions(-)
diff --git a/Core/GameEngine/Model/TelPartialConfig/tagChinSkillConfig.cs b/Core/GameEngine/Model/TelPartialConfig/tagChinSkillConfig.cs
index 2932c40..218c666 100644
--- a/Core/GameEngine/Model/TelPartialConfig/tagChinSkillConfig.cs
+++ b/Core/GameEngine/Model/TelPartialConfig/tagChinSkillConfig.cs
@@ -1,4 +1,5 @@
-锘縰sing System.Collections.Generic;
+锘縰sing Snxxz.UI;
+using System.Collections.Generic;
using System.Threading;
public partial class SkillConfig
@@ -128,5 +129,52 @@
return 0;
}
+ public static SkillEffectValue GetSkillEffectValue(SkillConfig config)
+ {
+ if (config == null)
+ {
+ return default(SkillEffectValue);
+ }
+ return new SkillEffectValue()
+ {
+ effect1 = config.Effect1,
+ effect2 = config.Effect2,
+ effect3 = config.Effect3,
+ effect4 = config.Effect4,
+ effect5 = config.Effect5,
+ effect6 = config.Effect6,
+ };
+ }
+}
+
+public struct SkillEffectValue
+{
+ public int effect1;
+ public int effect2;
+ public int effect3;
+ public int effect4;
+ public int effect5;
+ public int effect6;
+
+ const int INTERVAL = 1000000;
+
+ public override bool Equals(object obj)
+ {
+ var compare = (SkillEffectValue)obj;
+ return compare.effect1 == effect1 &&
+ compare.effect2 == effect2 &&
+ compare.effect3 == effect3 &&
+ compare.effect4 == effect4 &&
+ compare.effect5 == effect5 &&
+ compare.effect6 == effect6;
+ }
+
+ public override int GetHashCode()
+ {
+ var value = INTERVAL + effect1 + INTERVAL * 2 + effect2
+ + INTERVAL * 3 + effect3 + INTERVAL * 4 + effect4
+ + INTERVAL * 5 + effect5 + INTERVAL * 6 + effect6;
+ return value.GetHashCode();
+ }
}
diff --git a/Core/NetworkPackage/ServerPack/HA3_Function/HA315_tagMCDailyActionCnt.cs b/Core/NetworkPackage/ServerPack/HA3_Function/HA315_tagMCDailyActionCnt.cs
index 039489a..1e84e09 100644
--- a/Core/NetworkPackage/ServerPack/HA3_Function/HA315_tagMCDailyActionCnt.cs
+++ b/Core/NetworkPackage/ServerPack/HA3_Function/HA315_tagMCDailyActionCnt.cs
@@ -1,36 +1,36 @@
-锘縰sing UnityEngine;
-using System.Collections;
-
-// A3 15 鏃ュ父娲诲姩娆℃暟閫氱煡 #tagMCDailyActionCnt
-
-public class HA315_tagMCDailyActionCnt : GameNetPackBasic
-{
- public byte Count; // 涓暟
- public tagMCDailyActionInfo[] ActionInfo = null; // 娲诲姩淇℃伅
-
- public HA315_tagMCDailyActionCnt()
- {
- _cmd = (ushort)0xA315;
- }
-
- public override void ReadFromBytes(byte[] vBytes)
- {
- TransBytes(out Count, vBytes, NetDataType.BYTE);
- ActionInfo = new tagMCDailyActionInfo[Count];
- for (int i = 0; i < Count; i++)
- {
- ActionInfo[i] = new tagMCDailyActionInfo();
- TransBytes(out ActionInfo[i].ActionID, vBytes, NetDataType.DWORD);
- TransBytes(out ActionInfo[i].DayFinishCnt, vBytes, NetDataType.WORD);
- TransBytes(out ActionInfo[i].WeekFinishCnt, vBytes, NetDataType.DWORD);
- }
- }
-
- public struct tagMCDailyActionInfo
- {
- public uint ActionID; // ID
- public ushort DayFinishCnt; // 浠婃棩宸插畬鎴愭鏁�
- public uint WeekFinishCnt; // 鏈懆宸插畬鎴愭鏁�
- }
-
+锘縰sing UnityEngine;
+using System.Collections;
+
+// A3 15 鏃ュ父娲诲姩娆℃暟閫氱煡 #tagMCDailyActionCnt
+
+public class HA315_tagMCDailyActionCnt : GameNetPackBasic
+{
+ public byte Count; // 涓暟
+ public tagMCDailyActionInfo[] ActionInfo = null; // 娲诲姩淇℃伅
+
+ public HA315_tagMCDailyActionCnt()
+ {
+ _cmd = (ushort)0xA315;
+ }
+
+ public override void ReadFromBytes(byte[] vBytes)
+ {
+ TransBytes(out Count, vBytes, NetDataType.BYTE);
+ ActionInfo = new tagMCDailyActionInfo[Count];
+ for (int i = 0; i < Count; i++)
+ {
+ ActionInfo[i] = new tagMCDailyActionInfo();
+ TransBytes(out ActionInfo[i].ActionID, vBytes, NetDataType.DWORD);
+ TransBytes(out ActionInfo[i].DayFinishCnt, vBytes, NetDataType.WORD);
+ TransBytes(out ActionInfo[i].WeekFinishCnt, vBytes, NetDataType.DWORD);
+ }
+ }
+
+ public struct tagMCDailyActionInfo
+ {
+ public uint ActionID; // ID
+ public ushort DayFinishCnt; // 浠婃棩宸插畬鎴愭鏁�
+ public uint WeekFinishCnt; // 鏈懆宸插畬鎴愭鏁�
+ }
+
}
\ No newline at end of file
diff --git a/Lua/Gen/PetBackpackWrap.cs b/Lua/Gen/PetBackpackWrap.cs
deleted file mode 100644
index e7f2e50..0000000
--- a/Lua/Gen/PetBackpackWrap.cs
+++ /dev/null
@@ -1,239 +0,0 @@
-锘�#if USE_UNI_LUA
-using LuaAPI = UniLua.Lua;
-using RealStatePtr = UniLua.ILuaState;
-using LuaCSFunction = UniLua.CSharpFunctionDelegate;
-#else
-using LuaAPI = XLua.LuaDLL.Lua;
-using RealStatePtr = System.IntPtr;
-using LuaCSFunction = XLua.LuaDLL.lua_CSFunction;
-#endif
-
-using XLua;
-using System.Collections.Generic;
-
-
-namespace XLua.CSObjectWrap
-{
- using Utils = XLua.Utils;
- public class PetBackpackWrap
- {
- public static void __Register(RealStatePtr L)
- {
- ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
- System.Type type = typeof(PetBackpack);
- Utils.BeginObjectRegister(type, L, translator, 0, 0, 5, 5);
-
-
-
- Utils.RegisterFunc(L, Utils.GETTER_IDX, "PetClass", _g_get_PetClass);
- Utils.RegisterFunc(L, Utils.GETTER_IDX, "PetStatus", _g_get_PetStatus);
- Utils.RegisterFunc(L, Utils.GETTER_IDX, "ItemPlace", _g_get_ItemPlace);
- Utils.RegisterFunc(L, Utils.GETTER_IDX, "PetSkill", _g_get_PetSkill);
- Utils.RegisterFunc(L, Utils.GETTER_IDX, "petExp", _g_get_petExp);
-
- Utils.RegisterFunc(L, Utils.SETTER_IDX, "PetClass", _s_set_PetClass);
- Utils.RegisterFunc(L, Utils.SETTER_IDX, "PetStatus", _s_set_PetStatus);
- Utils.RegisterFunc(L, Utils.SETTER_IDX, "ItemPlace", _s_set_ItemPlace);
- Utils.RegisterFunc(L, Utils.SETTER_IDX, "PetSkill", _s_set_PetSkill);
- Utils.RegisterFunc(L, Utils.SETTER_IDX, "petExp", _s_set_petExp);
-
-
- Utils.EndObjectRegister(type, L, translator, null, null,
- null, null, null);
-
- Utils.BeginClassRegister(type, L, __CreateInstance, 1, 0, 0);
-
-
-
-
-
-
- Utils.EndClassRegister(type, L, translator);
- }
-
- [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
- static int __CreateInstance(RealStatePtr L)
- {
-
- try {
- ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
- if(LuaAPI.lua_gettop(L) == 1)
- {
-
- PetBackpack gen_ret = new PetBackpack();
- translator.Push(L, gen_ret);
-
- return 1;
- }
-
- }
- catch(System.Exception gen_e) {
- return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
- }
- return LuaAPI.luaL_error(L, "invalid arguments to PetBackpack constructor!");
-
- }
-
-
-
-
-
-
-
-
-
-
-
- [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
- static int _g_get_PetClass(RealStatePtr L)
- {
- try {
- ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
-
- PetBackpack gen_to_be_invoked = (PetBackpack)translator.FastGetCSObj(L, 1);
- LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.PetClass);
- } catch(System.Exception gen_e) {
- return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
- }
- return 1;
- }
-
- [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
- static int _g_get_PetStatus(RealStatePtr L)
- {
- try {
- ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
-
- PetBackpack gen_to_be_invoked = (PetBackpack)translator.FastGetCSObj(L, 1);
- LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.PetStatus);
- } catch(System.Exception gen_e) {
- return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
- }
- return 1;
- }
-
- [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
- static int _g_get_ItemPlace(RealStatePtr L)
- {
- try {
- ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
-
- PetBackpack gen_to_be_invoked = (PetBackpack)translator.FastGetCSObj(L, 1);
- LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.ItemPlace);
- } catch(System.Exception gen_e) {
- return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
- }
- return 1;
- }
-
- [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
- static int _g_get_PetSkill(RealStatePtr L)
- {
- try {
- ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
-
- PetBackpack gen_to_be_invoked = (PetBackpack)translator.FastGetCSObj(L, 1);
- translator.Push(L, gen_to_be_invoked.PetSkill);
- } catch(System.Exception gen_e) {
- return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
- }
- return 1;
- }
-
- [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
- static int _g_get_petExp(RealStatePtr L)
- {
- try {
- ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
-
- PetBackpack gen_to_be_invoked = (PetBackpack)translator.FastGetCSObj(L, 1);
- LuaAPI.xlua_pushinteger(L, gen_to_be_invoked.petExp);
- } catch(System.Exception gen_e) {
- return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
- }
- return 1;
- }
-
-
-
- [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
- static int _s_set_PetClass(RealStatePtr L)
- {
- try {
- ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
-
- PetBackpack gen_to_be_invoked = (PetBackpack)translator.FastGetCSObj(L, 1);
- gen_to_be_invoked.PetClass = LuaAPI.xlua_tointeger(L, 2);
-
- } catch(System.Exception gen_e) {
- return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
- }
- return 0;
- }
-
- [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
- static int _s_set_PetStatus(RealStatePtr L)
- {
- try {
- ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
-
- PetBackpack gen_to_be_invoked = (PetBackpack)translator.FastGetCSObj(L, 1);
- gen_to_be_invoked.PetStatus = LuaAPI.xlua_tointeger(L, 2);
-
- } catch(System.Exception gen_e) {
- return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
- }
- return 0;
- }
-
- [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
- static int _s_set_ItemPlace(RealStatePtr L)
- {
- try {
- ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
-
- PetBackpack gen_to_be_invoked = (PetBackpack)translator.FastGetCSObj(L, 1);
- gen_to_be_invoked.ItemPlace = LuaAPI.xlua_tointeger(L, 2);
-
- } catch(System.Exception gen_e) {
- return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
- }
- return 0;
- }
-
- [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
- static int _s_set_PetSkill(RealStatePtr L)
- {
- try {
- ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
-
- PetBackpack gen_to_be_invoked = (PetBackpack)translator.FastGetCSObj(L, 1);
- gen_to_be_invoked.PetSkill = (int[])translator.GetObject(L, 2, typeof(int[]));
-
- } catch(System.Exception gen_e) {
- return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
- }
- return 0;
- }
-
- [MonoPInvokeCallbackAttribute(typeof(LuaCSFunction))]
- static int _s_set_petExp(RealStatePtr L)
- {
- try {
- ObjectTranslator translator = ObjectTranslatorPool.Instance.Find(L);
-
- PetBackpack gen_to_be_invoked = (PetBackpack)translator.FastGetCSObj(L, 1);
- gen_to_be_invoked.petExp = LuaAPI.xlua_tointeger(L, 2);
-
- } catch(System.Exception gen_e) {
- return LuaAPI.luaL_error(L, "c# exception:" + gen_e);
- }
- return 0;
- }
-
-
-
-
-
- }
-}
diff --git a/Lua/Gen/PetBackpackWrap.cs.meta b/Lua/Gen/PetBackpackWrap.cs.meta
deleted file mode 100644
index 8c59168..0000000
--- a/Lua/Gen/PetBackpackWrap.cs.meta
+++ /dev/null
@@ -1,12 +0,0 @@
-fileFormatVersion: 2
-guid: 0c1ed5158eceffc468803d246405607d
-timeCreated: 1550120574
-licenseType: Pro
-MonoImporter:
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Lua/Gen/XLuaGenAutoRegister.cs b/Lua/Gen/XLuaGenAutoRegister.cs
index f55a982..8a7896a 100644
--- a/Lua/Gen/XLuaGenAutoRegister.cs
+++ b/Lua/Gen/XLuaGenAutoRegister.cs
@@ -1278,9 +1278,6 @@
static void wrapInit8(LuaEnv luaenv, ObjectTranslator translator)
{
- translator.DelayWrapLoader(typeof(PetBackpack), PetBackpackWrap.__Register);
-
-
translator.DelayWrapLoader(typeof(PetReinforceModel), PetReinforceModelWrap.__Register);
diff --git a/System/Mount/MountModel.cs b/System/Mount/MountModel.cs
index 20cc50f..77239f0 100644
--- a/System/Mount/MountModel.cs
+++ b/System/Mount/MountModel.cs
@@ -62,6 +62,12 @@
public static Action<int, bool> MultipleEvent;
public static event Action PlayerLoginOKData;
private Dictionary<int, int> DicDefaultMount = new Dictionary<int, int>();
+
+ Dictionary<SkillEffectValue, int> integrationSkills = new Dictionary<SkillEffectValue, int>();
+ Dictionary<SkillEffectValue, List<int>> integrationHorseSkills = new Dictionary<SkillEffectValue, List<int>>();
+ Dictionary<int, SkillEffectValue> horseSkillEffectValues = new Dictionary<int, SkillEffectValue>();
+ Dictionary<int, int> horseSkills = new Dictionary<int, int>();
+
public override void Init()
{
ToAddSorting();
@@ -80,6 +86,39 @@
DicDefaultMount = ConfigParse.GetDic<int, int>(MountRedDotstr);
string HorseUpItem = FuncConfigConfig.Get("HorseUpItem").Numerical2;
HorseDanExp = int.Parse(HorseUpItem);
+
+ var funcConfig = FuncConfigConfig.Get("PetHorseSkillIntegration");
+ var intArray = ConfigParse.GetMultipleStr<int>(funcConfig.Numerical2);
+ for (int i = 0; i < intArray.Length; i++)
+ {
+ var skillConfig = SkillConfig.Get(intArray[i]);
+ if (skillConfig != null)
+ {
+ var effectValue = SkillConfig.GetSkillEffectValue(skillConfig);
+ integrationSkills.Add(effectValue, intArray[i]);
+ }
+ }
+
+ var _horseSkills = GetMountSkillAndItem.Keys;
+ foreach (var skillId in _horseSkills)
+ {
+ var skillConfig = SkillConfig.Get(skillId);
+ var effectValue = SkillConfig.GetSkillEffectValue(skillConfig);
+
+ if (integrationSkills.ContainsKey(effectValue))
+ {
+ List<int> skills = null;
+ if (!integrationHorseSkills.TryGetValue(effectValue, out skills))
+ {
+ skills = new List<int>();
+ integrationHorseSkills.Add(effectValue, skills);
+ }
+ skills.Add(skillId);
+ }
+
+ horseSkills.Add(skillId, GetMountSkillAndItem[skillId].HorseID);
+ horseSkillEffectValues.Add(skillId, effectValue);
+ }
}
public override void UnInit()
@@ -752,6 +791,66 @@
}
}
return mountAttrDict;
+ }
+ #endregion
+
+ #region 鎶�鑳芥暣鍚�
+ public bool TryGetIntegrationSkill(SkillEffectValue effect, out int skillId)
+ {
+ return integrationSkills.TryGetValue(effect, out skillId);
+ }
+
+ public bool TryGetHorseSkills(SkillEffectValue effect, out List<int> skills)
+ {
+ return integrationHorseSkills.TryGetValue(effect, out skills);
+ }
+
+ public bool IsSkillUnlock(int skillId)
+ {
+ var config = SkillConfig.Get(skillId);
+ if (config == null)
+ {
+ return false;
+ }
+ var effect = SkillConfig.GetSkillEffectValue(config);
+
+ if (integrationHorseSkills.ContainsKey(effect)
+ && !integrationHorseSkills[effect].Contains(skillId))
+ {
+ var skills = integrationHorseSkills[effect];
+ foreach (var id in skills)
+ {
+ if (IsSkillUnlock(id))
+ {
+ return true;
+ }
+ }
+ }
+ else
+ {
+ if (GetMountSkillAndItem.ContainsKey(skillId))
+ {
+ var horseId = GetMountSkillAndItem[skillId].HorseID;
+ if (_DicHorse.ContainsKey(horseId))
+ {
+ var horseInfo = _DicHorse[horseId];
+ if (horseInfo.Lv >= GetSkillUnlockLevel(skillId))
+ {
+ return true;
+ }
+ }
+ }
+ }
+ return false;
+ }
+
+ public int GetSkillUnlockLevel(int skillId)
+ {
+ if (GetMountSkillAndItem.ContainsKey(skillId))
+ {
+ return GetMountSkillAndItem[skillId].HorseLV;
+ }
+ return 0;
}
#endregion
}
diff --git a/System/Mount/MountPanelAssignment.cs b/System/Mount/MountPanelAssignment.cs
index 1835599..9a62fb4 100644
--- a/System/Mount/MountPanelAssignment.cs
+++ b/System/Mount/MountPanelAssignment.cs
@@ -28,6 +28,7 @@
[SerializeField] UIEffect m_Uieffect3;//缁忛獙鏉$壒鏁�
[SerializeField] Transform GroupSkill;
+ [SerializeField] FunctionUnlockFlyObjectTarget[] flyObjectTargets;
[SerializeField] GameObject m_YiJieSuo;//瑙i攣闈㈡澘
[SerializeField] GameObject m_BottomOperate;//鍏充簬缁忛獙鏉�
@@ -89,7 +90,6 @@
MountModel.Event_MountHA301U += OnMountHA301Update;
allPetSkillCtrl.OnRefreshCell += RefreshAllMountSkillCell;
- FlySkillIconWin.FlySkillID += FlySkillID;
CreateAllMountSkill();
}
private void OnDisable()
@@ -97,7 +97,6 @@
mount_ID = 0;
MountModel.Event_MountHA301U -= OnMountHA301Update;
allPetSkillCtrl.OnRefreshCell -= RefreshAllMountSkillCell;
- FlySkillIconWin.FlySkillID -= FlySkillID;
m_MountRawImg.gameObject.SetActive(false);
}
@@ -127,22 +126,6 @@
var animator = UI3DModelExhibition.Instance.NpcModelHorse.GetComponent<Animator>();
animator.Play(GAStaticDefine.State_Dance);
}
- }
-
- private void FlySkillID(int skillID)
- {
- int Index = 0;
- Index = GetAllMountSkill.FindIndex((x) =>
- {
- return x.SkillID == skillID;
- });
- if (Index == -1)
- {
- Index = 0;
- }
- int line = Index / 3;
- allPetSkillCtrl.JumpIndex(line);
- allPetSkillCtrl.JumpIndex(-50, 0, EnhancedScroller.TweenType.immediate);
}
private void OnMountHA301Update(int _HorseID)
@@ -479,6 +462,13 @@
{
mountSkill.SetModel(MountSkills[i].SkillID, MountSkills[i].HorseLV, false, HorseID, SkillType.MountSkill);
}
+ if (i < flyObjectTargets.Length)
+ {
+ var flyObjectTarget = flyObjectTargets[i];
+ flyObjectTarget.IdList = new int[] { MountSkills[i].SkillID };
+ flyObjectTarget.Z_UnLockType = FunctionUnlockType.Skill;
+ FunctionUnlockFlyObjectTargetCenter.Register(FunctionUnlockType.Skill, new int[] { MountSkills[i].SkillID }, flyObjectTarget);
+ }
}
else
{
@@ -487,51 +477,84 @@
}
}
- List<HorseSkillClass> GetAllMountSkill = new List<HorseSkillClass>();
+ List<int> displayTotalSkills = new List<int>();
private void CreateAllMountSkill()//鎵�鏈夊潗楠戞妧鑳�
{
- GetAllMountSkill.Clear();
- foreach (int key in mountModel.GetMountSkillAndItem.Keys)
+ displayTotalSkills.Clear();
+ var skills = mountModel.GetMountSkillAndItem.Keys;
+ foreach (var id in skills)
{
- GetAllMountSkill.Add(mountModel.GetMountSkillAndItem[key]);
+ var config = SkillConfig.Get(id);
+ var skillId = 0;
+ var effect = SkillConfig.GetSkillEffectValue(config);
+ if (mountModel.TryGetIntegrationSkill(effect, out skillId))
+ {
+ if (!displayTotalSkills.Contains(skillId))
+ {
+ displayTotalSkills.Add(skillId);
+ }
+ continue;
+ }
+ displayTotalSkills.Add(id);
}
+
ToAddSorting();
+
allPetSkillCtrl.Refresh();
- int line = GetAllMountSkill.Count / 3;
- int remain = GetAllMountSkill.Count % 3;
- if (remain > 0)
- {
- line += 1;
- }
+ int line = Mathf.CeilToInt((float)displayTotalSkills.Count / 3);
for (int i = 0; i < line; i++)
{
allPetSkillCtrl.AddCell(ScrollerDataType.Header, i);
}
+
allPetSkillCtrl.Restart();
}
+
void ToAddSorting()
{
- GetAllMountSkill.Sort(Compare);
+ displayTotalSkills.Sort(Compare);
}
- int Compare(HorseSkillClass x, HorseSkillClass y)
+ int Compare(int lhs, int rhs)
{
- bool havex = IsDeblocking(x.SkillID);
- bool havey = IsDeblocking(y.SkillID);
- if (havex.CompareTo(havey) != 0)
+ var lhs_unlock = mountModel.IsSkillUnlock(lhs);
+ var rhs_unlock = mountModel.IsSkillUnlock(rhs);
+ if (lhs_unlock != rhs_unlock)
{
- return -havex.CompareTo(havey);
- }
- if (x.HorseID.CompareTo(y.HorseID) != 0)
- {
- return x.HorseID.CompareTo(y.HorseID);
+ return -lhs_unlock.CompareTo(rhs_unlock);
}
- if (x.HorseLV.CompareTo(y.HorseLV) != 0)
+ var lhs_config = SkillConfig.Get(lhs);
+ var rhs_config = SkillConfig.Get(rhs);
+ var lhs_Id = 0;
+ var rhs_Id = 0;
+ var lhs_effect = SkillConfig.GetSkillEffectValue(lhs_config);
+ var rhs_effect = SkillConfig.GetSkillEffectValue(rhs_config);
+ var lhs_integration = mountModel.TryGetIntegrationSkill(lhs_effect, out lhs_Id);
+ var rhs_integration = mountModel.TryGetIntegrationSkill(rhs_effect, out rhs_Id);
+
+ if (lhs_integration != rhs_integration)
{
- return x.HorseLV.CompareTo(y.HorseLV);
+ return -lhs_integration.CompareTo(rhs_integration);
}
- return 1;
+ if (lhs_integration && rhs_integration)
+ {
+ return lhs_config.Effect1.CompareTo(rhs_config.Effect1);
+ }
+
+ var lhs_horseInfo = mountModel.GetMountSkillAndItem[lhs];
+ var rhs_horseInfo = mountModel.GetMountSkillAndItem[rhs];
+
+ if (lhs_horseInfo.HorseID != rhs_horseInfo.HorseID)
+ {
+ return lhs_horseInfo.HorseID.CompareTo(rhs_horseInfo.HorseID);
+ }
+
+ if (lhs_horseInfo.HorseLV.CompareTo(rhs_horseInfo.HorseLV) != 0)
+ {
+ return lhs_horseInfo.HorseLV.CompareTo(rhs_horseInfo.HorseLV);
+ }
+ return 0;
}
private bool IsDeblocking(int SkillID)//鏄惁瑙i攣
@@ -554,22 +577,19 @@
return false;
}
}
+
private void RefreshAllMountSkillCell(ScrollerDataType type, CellView cell)
{
int length = cell.transform.childCount;
for (int i = 0; i < length; i++)
{
- int cellCnt = cell.index * 3 + (i + 1);
+ int index = cell.index * 3 + i;
SkillButtonPet skillButton = cell.transform.GetChild(i).GetComponent<SkillButtonPet>();
- FunctionUnlockFlyObjectTarget functionUnlockFlyObjectTarget = cell.transform.GetChild(i).GetComponent<FunctionUnlockFlyObjectTarget>();
- if (cellCnt <= GetAllMountSkill.Count)
+ if (index < displayTotalSkills.Count)
{
skillButton.gameObject.SetActive(true);
- HorseSkillClass horseSkillClass = GetAllMountSkill[cellCnt - 1];
- skillButton.SetModel(horseSkillClass.SkillID, horseSkillClass.HorseLV, IsDeblocking(horseSkillClass.SkillID), horseSkillClass.HorseID, SkillType.MountSkill, true);
- functionUnlockFlyObjectTarget.IdList = new int[] { horseSkillClass.SkillID };
- functionUnlockFlyObjectTarget.Z_UnLockType = FunctionUnlockType.Skill;
- FunctionUnlockFlyObjectTargetCenter.Register(FunctionUnlockType.Skill, new int[] { horseSkillClass.SkillID }, functionUnlockFlyObjectTarget);
+ var skillId = displayTotalSkills[index];
+ skillButton.SetModel(skillId, 0, mountModel.IsSkillUnlock(skillId), 0, SkillType.MountSkill, true);
}
else
{
diff --git a/System/Pet/PetAttributeMethods.cs b/System/Pet/PetAttributeMethods.cs
index 62345dd..fbd8a8f 100644
--- a/System/Pet/PetAttributeMethods.cs
+++ b/System/Pet/PetAttributeMethods.cs
@@ -210,7 +210,8 @@
{
var config = SkillConfig.Get(id);
var skillId = 0;
- if (petmodel.TryGetIntegrationSkill(config.Effect1, out skillId))
+ var effect = SkillConfig.GetSkillEffectValue(config);
+ if (petmodel.TryGetIntegrationSkill(effect, out skillId))
{
if (!displayTotalSkills.Contains(skillId))
{
@@ -668,8 +669,10 @@
var rhs_config = SkillConfig.Get(rhs);
var lhs_Id = 0;
var rhs_Id = 0;
- var lhs_integration = petmodel.TryGetIntegrationSkill(lhs_config.Effect1, out lhs_Id);
- var rhs_integration = petmodel.TryGetIntegrationSkill(rhs_config.Effect1, out rhs_Id);
+ var lhs_effect = SkillConfig.GetSkillEffectValue(lhs_config);
+ var rhs_effect = SkillConfig.GetSkillEffectValue(rhs_config);
+ var lhs_integration = petmodel.TryGetIntegrationSkill(lhs_effect, out lhs_Id);
+ var rhs_integration = petmodel.TryGetIntegrationSkill(rhs_effect, out rhs_Id);
if (lhs_integration != rhs_integration)
{
return -lhs_integration.CompareTo(rhs_integration);
diff --git a/System/Pet/PetModel.cs b/System/Pet/PetModel.cs
index 187f61f..0fc2050 100644
--- a/System/Pet/PetModel.cs
+++ b/System/Pet/PetModel.cs
@@ -1,908 +1,919 @@
-锘縰sing Snxxz.UI;
-using System;
+锘縰sing System;
using System.Collections;
using System.Collections.Generic;
using System.Text.RegularExpressions;
using UnityEngine;
-[XLua.LuaCallCSharp]
-public class PetBackpack//瀹犵墿鑳屽寘
-{
- public int PetClass;//瀹犵墿闃剁骇
- public int PetStatus;//瀹犵墿褰撳墠鐘舵�� 1涓哄嚭鎴� 0鏈嚭鎴�
- public int ItemPlace;//瀹犵墿浣嶇疆绱㈠紩
- public int[] PetSkill;//瀹犵墿褰撳墠瀛︿範鐨勬妧鑳�
- public int petExp; //瀹犵墿褰撳墠缁忛獙
-}
-public enum PetEnum
-{
- PetDan = 0,//鐏靛疇涓�
- PetDebris = 1,//鐏靛疇纰庣墖
- PetStone = 2,//鐏靛疇榄傜煶
-}
-public class PetModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
-{
- public Dictionary<int, int> _TagPetItem = new Dictionary<int, int>();//鍏充簬鐏靛吔榄傜煶
- public Dictionary<int, PetBackpack> _DicPetBack = new Dictionary<int, PetBackpack>();//瀹犵墿鑳屽寘鍒楄〃
- public Dictionary<int, int> _PetSkillAcquire = new Dictionary<int, int>();//鐏靛疇宸茶幏寰楃殑鎶�鑳斤紙鍚岀被鎶�鑳藉彧瀛樻渶楂樼瓑绾э級1.鎶�鑳絋ypeID锛�2.鎶�鑳絀D
- public delegate void Delegate_HB701(HB701_tagMCPetLV info);
- public delegate void Delegate_Ha339(HA339_tagMCAttrFruitEatCntList info);
- public static event Delegate_Ha339 Event_Ha339;//鐏靛吔榄傜煶
- public delegate void Delegate_H0704();
- public static event Delegate_H0704 Event_H0704Add;//鐏靛疇娣诲姞(杩涢樁)
- public static Action<int> Event_H0704Update;//鐏靛疇鍒锋柊
- public delegate void SpiritPetPlay(int _toPlay = 0);//瀹犵墿鏄惁鍑烘垬
- public static event SpiritPetPlay Event_SpiritPetPlay;
- public int PetNow = 0;//鐢ㄦ潵淇濆瓨鍑烘垬鐨勭伒瀹�
- public bool Wait = true;//(浣跨敤鐏靛疇涓�)绛夊緟鍥炲寘
- public Dictionary<int, Redpoint> DeblockingRedPoint = new Dictionary<int, Redpoint>();//瑙i攣鎸夐挳绾㈢偣锛堢伒瀹犵孩鐐瑰瓙绾э級
- public Dictionary<int, Redpoint> PetRedpoint = new Dictionary<int, Redpoint>();//鐏靛疇鍒楄〃
- public Dictionary<int, Redpoint> CultivateRedPoint = new Dictionary<int, Redpoint>();//鐏靛疇鍩瑰吇鎸夐挳绾㈢偣
- private List<PetInfoConfig> Sortpet = new List<PetInfoConfig>();//鐢ㄤ簬绾㈢偣鎺掑簭
-
- public int MinAtkNunber = 0;//鐏靛疇鏈�灏忔敾鍑诲姏
- public int MaxAtkNunber = 0;//鐏靛疇鏈�澶ф敾鍑诲姏
-
- public int PetStoneItemId = 0;//鐢ㄦ潵璁板綍鍧愰獞榄傜煶鐨処D
-
- public bool IsOk = false;
- private int PetDanExp = 0;//鐏靛疇涓圭粡楠�
- public List<int> ListEffectSkill = new List<int>();
- PackModel _playerPack;
- PackModel playerPack
- {
- get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PackModel>()); }
- }
-
- public Dictionary<int, string> petLvNameDict { get; private set; }
- public int curPetId { get; set; }
- public int petUpgradeToolId { get; set; }
-
- public event Action PlayerLoginOkData;
- private Dictionary<int, int> DicDefaultPet = new Dictionary<int, int>();
- List<PetInfoConfig> allPetConfigs = new List<PetInfoConfig>();
-
- Dictionary<int, int> integrationSkills = new Dictionary<int, int>();
- Dictionary<int, List<int>> integrationPetSkills = new Dictionary<int, List<int>>();
- Dictionary<int, int> petSkills = new Dictionary<int, int>();
-
- public override void Init()
- {
- ToAddSorting();
- playerPack.refreshItemCountEvent += OnItemRefreshEvent;
- FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChange;
- PetAttributeWin.IsRedPointCultivate += IsRedPointCultivate;
- PetNumberPreservation();
-
- petLvNameDict = new Dictionary<int, string>();
- FuncConfigConfig petLvName = FuncConfigConfig.Get("PetQuality");
- int[] petLvArray = ConfigParse.GetMultipleStr<int>(petLvName.Numerical1);
- string[] petLvNameArray = ConfigParse.GetMultipleStr(petLvName.Numerical2);
- for (int i = 0; i < petLvArray.Length; i++)
- {
- if (!petLvNameDict.ContainsKey(petLvArray[i]))
- {
- petLvNameDict.Add(petLvArray[i], petLvNameArray[i]);
- }
- }
-
- petUpgradeToolId = int.Parse(FuncConfigConfig.Get("PetUpItem").Numerical1);
- string str = FuncConfigConfig.Get("PetSkillEffect").Numerical1;
- int[] listeffect = ConfigParse.GetMultipleStr<int>(str);
- ListEffectSkill.Clear();
- for (int i = 0; i < listeffect.Length; i++)
- {
- ListEffectSkill.Add(listeffect[i]);
- }
- string PetRedDotstr = FuncConfigConfig.Get("MountPetRedDot").Numerical2;
- DicDefaultPet = ConfigParse.GetDic<int, int>(PetRedDotstr);
- PetDanExp = int.Parse(FuncConfigConfig.Get("PetUpItem").Numerical2);
-
- var funcConfig = FuncConfigConfig.Get("PetHorseSkillIntegration");
- var intArray = ConfigParse.GetMultipleStr<int>(funcConfig.Numerical1);
- for (int i = 0; i < intArray.Length; i++)
+namespace Snxxz.UI
+{
+ public class PetBackpack//瀹犵墿鑳屽寘
+ {
+ public int PetClass;//瀹犵墿闃剁骇
+ public int PetStatus;//瀹犵墿褰撳墠鐘舵�� 1涓哄嚭鎴� 0鏈嚭鎴�
+ public int ItemPlace;//瀹犵墿浣嶇疆绱㈠紩
+ public int[] PetSkill;//瀹犵墿褰撳墠瀛︿範鐨勬妧鑳�
+ public int petExp; //瀹犵墿褰撳墠缁忛獙
+ }
+
+ public enum PetEnum
+ {
+ PetDan = 0,//鐏靛疇涓�
+ PetDebris = 1,//鐏靛疇纰庣墖
+ PetStone = 2,//鐏靛疇榄傜煶
+ }
+
+ public class PetModel : Model, IBeforePlayerDataInitialize, IPlayerLoginOk
+ {
+ public Dictionary<int, int> _TagPetItem = new Dictionary<int, int>();//鍏充簬鐏靛吔榄傜煶
+ public Dictionary<int, PetBackpack> _DicPetBack = new Dictionary<int, PetBackpack>();//瀹犵墿鑳屽寘鍒楄〃
+ public Dictionary<int, int> _PetSkillAcquire = new Dictionary<int, int>();//鐏靛疇宸茶幏寰楃殑鎶�鑳斤紙鍚岀被鎶�鑳藉彧瀛樻渶楂樼瓑绾э級1.鎶�鑳絋ypeID锛�2.鎶�鑳絀D
+ public delegate void Delegate_HB701(HB701_tagMCPetLV info);
+ public delegate void Delegate_Ha339(HA339_tagMCAttrFruitEatCntList info);
+ public static event Delegate_Ha339 Event_Ha339;//鐏靛吔榄傜煶
+ public delegate void Delegate_H0704();
+ public static event Delegate_H0704 Event_H0704Add;//鐏靛疇娣诲姞(杩涢樁)
+ public static Action<int> Event_H0704Update;//鐏靛疇鍒锋柊
+ public delegate void SpiritPetPlay(int _toPlay = 0);//瀹犵墿鏄惁鍑烘垬
+ public static event SpiritPetPlay Event_SpiritPetPlay;
+ public int PetNow = 0;//鐢ㄦ潵淇濆瓨鍑烘垬鐨勭伒瀹�
+ public bool Wait = true;//(浣跨敤鐏靛疇涓�)绛夊緟鍥炲寘
+ public Dictionary<int, Redpoint> DeblockingRedPoint = new Dictionary<int, Redpoint>();//瑙i攣鎸夐挳绾㈢偣锛堢伒瀹犵孩鐐瑰瓙绾э級
+ public Dictionary<int, Redpoint> PetRedpoint = new Dictionary<int, Redpoint>();//鐏靛疇鍒楄〃
+ public Dictionary<int, Redpoint> CultivateRedPoint = new Dictionary<int, Redpoint>();//鐏靛疇鍩瑰吇鎸夐挳绾㈢偣
+ private List<PetInfoConfig> Sortpet = new List<PetInfoConfig>();//鐢ㄤ簬绾㈢偣鎺掑簭
+
+ public int MinAtkNunber = 0;//鐏靛疇鏈�灏忔敾鍑诲姏
+ public int MaxAtkNunber = 0;//鐏靛疇鏈�澶ф敾鍑诲姏
+
+ public int PetStoneItemId = 0;//鐢ㄦ潵璁板綍鍧愰獞榄傜煶鐨処D
+
+ public bool IsOk = false;
+ private int PetDanExp = 0;//鐏靛疇涓圭粡楠�
+ public List<int> ListEffectSkill = new List<int>();
+ PackModel _playerPack;
+ PackModel playerPack
{
- var skillConfig = SkillConfig.Get(intArray[i]);
- if (skillConfig != null)
+ get { return _playerPack ?? (_playerPack = ModelCenter.Instance.GetModel<PackModel>()); }
+ }
+
+ public Dictionary<int, string> petLvNameDict { get; private set; }
+ public int curPetId { get; set; }
+ public int petUpgradeToolId { get; set; }
+
+ public event Action PlayerLoginOkData;
+ private Dictionary<int, int> DicDefaultPet = new Dictionary<int, int>();
+ List<PetInfoConfig> allPetConfigs = new List<PetInfoConfig>();
+
+ Dictionary<SkillEffectValue, int> integrationSkills = new Dictionary<SkillEffectValue, int>();
+ Dictionary<SkillEffectValue, List<int>> integrationPetSkills = new Dictionary<SkillEffectValue, List<int>>();
+ Dictionary<int, SkillEffectValue> petSkillEffectValues = new Dictionary<int, SkillEffectValue>();
+ Dictionary<int, int> petSkills = new Dictionary<int, int>();
+
+ public override void Init()
+ {
+ ToAddSorting();
+ playerPack.refreshItemCountEvent += OnItemRefreshEvent;
+ FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChange;
+ PetAttributeWin.IsRedPointCultivate += IsRedPointCultivate;
+ PetNumberPreservation();
+
+ petLvNameDict = new Dictionary<int, string>();
+ FuncConfigConfig petLvName = FuncConfigConfig.Get("PetQuality");
+ int[] petLvArray = ConfigParse.GetMultipleStr<int>(petLvName.Numerical1);
+ string[] petLvNameArray = ConfigParse.GetMultipleStr(petLvName.Numerical2);
+ for (int i = 0; i < petLvArray.Length; i++)
{
- integrationSkills.Add(skillConfig.Effect1, intArray[i]);
+ if (!petLvNameDict.ContainsKey(petLvArray[i]))
+ {
+ petLvNameDict.Add(petLvArray[i], petLvNameArray[i]);
+ }
+ }
+
+ petUpgradeToolId = int.Parse(FuncConfigConfig.Get("PetUpItem").Numerical1);
+ string str = FuncConfigConfig.Get("PetSkillEffect").Numerical1;
+ int[] listeffect = ConfigParse.GetMultipleStr<int>(str);
+ ListEffectSkill.Clear();
+ for (int i = 0; i < listeffect.Length; i++)
+ {
+ ListEffectSkill.Add(listeffect[i]);
+ }
+ string PetRedDotstr = FuncConfigConfig.Get("MountPetRedDot").Numerical2;
+ DicDefaultPet = ConfigParse.GetDic<int, int>(PetRedDotstr);
+ PetDanExp = int.Parse(FuncConfigConfig.Get("PetUpItem").Numerical2);
+
+ var funcConfig = FuncConfigConfig.Get("PetHorseSkillIntegration");
+ var intArray = ConfigParse.GetMultipleStr<int>(funcConfig.Numerical1);
+ for (int i = 0; i < intArray.Length; i++)
+ {
+ var skillConfig = SkillConfig.Get(intArray[i]);
+ if (skillConfig != null)
+ {
+ var effectValue = SkillConfig.GetSkillEffectValue(skillConfig);
+ integrationSkills.Add(effectValue, intArray[i]);
+ }
+ }
+
+ var configs = PetInfoConfig.GetValues();
+ foreach (var config in configs)
+ {
+ for (int i = 0; i < config.SkillID.Length; i++)
+ {
+ var skillConfig = SkillConfig.Get(config.SkillID[i]);
+ var effectValue = SkillConfig.GetSkillEffectValue(skillConfig);
+
+ if (integrationSkills.ContainsKey(effectValue))
+ {
+ List<int> skills = null;
+ if (!integrationPetSkills.TryGetValue(effectValue, out skills))
+ {
+ skills = new List<int>();
+ integrationPetSkills.Add(effectValue, skills);
+ }
+ skills.Add(config.SkillID[i]);
+ }
+
+ petSkills.Add(config.SkillID[i], config.ID);
+ petSkillEffectValues.Add(config.SkillID[i], effectValue);
+ }
}
}
- var configs = PetInfoConfig.GetValues();
- foreach (var config in configs)
+ public override void UnInit()
{
- for (int i = 0; i < config.SkillID.Length; i++)
+ playerPack.refreshItemCountEvent -= OnItemRefreshEvent;
+ FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChange;
+ PetAttributeWin.IsRedPointCultivate -= IsRedPointCultivate;
+ }
+
+ public void OnBeforePlayerDataInitialize()
+ {
+ Wait = true;
+ IsOk = false;
+ _TagPetItem.Clear();
+ _DicPetBack.Clear();
+ PetNow = 0;
+ MinAtkNunber = 0;
+ MaxAtkNunber = 0;
+ curPetId = 0;
+ }
+
+ public void OnPlayerLoginOk()
+ {
+ GlobalTimeEvent.Instance.secondEvent -= secondEvent;
+ GlobalTimeEvent.Instance.secondEvent += secondEvent;
+ SinglePack singPack = playerPack.GetSinglePack(PackType.PetPack);
+ if (singPack == null) return;
+ foreach (var index in singPack.GetAllItems().Keys)
{
- var skillConfig = SkillConfig.Get(config.SkillID[i]);
- if (integrationSkills.ContainsKey(skillConfig.Effect1))
- {
- List<int> skills = null;
- if (!integrationPetSkills.TryGetValue(skillConfig.Effect1, out skills))
- {
- skills = new List<int>();
- integrationPetSkills.Add(skillConfig.Effect1, skills);
- }
- skills.Add(config.SkillID[i]);
- }
-
- petSkills.Add(config.SkillID[i], config.ID);
+ OnItemRefreshEvent(singPack.type, index, singPack.GetAllItems()[index].itemId);
}
- }
- }
-
- public override void UnInit()
- {
- playerPack.refreshItemCountEvent -= OnItemRefreshEvent;
- FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChange;
- PetAttributeWin.IsRedPointCultivate -= IsRedPointCultivate;
- }
-
- public void OnBeforePlayerDataInitialize()
- {
- Wait = true;
- IsOk = false;
- _TagPetItem.Clear();
- _DicPetBack.Clear();
- PetNow = 0;
- MinAtkNunber = 0;
- MaxAtkNunber = 0;
- curPetId = 0;
- }
-
- public void OnPlayerLoginOk()
- {
- GlobalTimeEvent.Instance.secondEvent -= secondEvent;
- GlobalTimeEvent.Instance.secondEvent += secondEvent;
- SinglePack singPack = playerPack.GetSinglePack(PackType.PetPack);
- if (singPack == null) return;
- foreach (var index in singPack.GetAllItems().Keys)
- {
- OnItemRefreshEvent(singPack.type, index, singPack.GetAllItems()[index].itemId);
- }
- IsOk = true;
- if (PlayerLoginOkData != null)
- {
- PlayerLoginOkData();
- }
- }
- private DateTime dateTimeA;
- private void secondEvent()
- {
- if (!Wait)
- {
- TimeSpan timeS = DateTime.Now - dateTimeA;
- if (timeS.Seconds >= 2f)
- {
- Wait = true;
- }
- }
- else
- {
- dateTimeA = DateTime.Now;
- }
- }
-
- #region 鍙戦�佹湇鍔$璇锋眰
- public void SendPetSwitchQuest(int petIndex)
- {
- C1603_tagCPetStateChange tag_Cpet = new C1603_tagCPetStateChange();
- tag_Cpet.PetID = (uint)petIndex;
- tag_Cpet.State = 1;
- GameNetSystem.Instance.SendInfo(tag_Cpet);
- }
-
- public void SendBreakPetLockQuest(int petId)
- {
- CA702_tagCMActivatePet CMPet = new CA702_tagCMActivatePet();
- CMPet.PetNPCID = (uint)petId;
- GameNetSystem.Instance.SendInfo(CMPet);
- if (ItemOperateUtility.Instance.useItemModel != null)
- {
- ItemOperateUtility.Instance.useItemModel = null;
- }
- }
-
- public void SendPetTrainQuest(int petIndex, int number)
- {
- CA704_tagCMPetClassUP _tagCA704 = new CA704_tagCMPetClassUP();
- _tagCA704.PetItemIndex = (byte)petIndex;
- _tagCA704.UseItemCnt = (ushort)number;
- GameNetSystem.Instance.SendInfo(_tagCA704);
- }
- #endregion
-
-
- private void OnItemRefreshEvent(PackType type, int index, int id)
- {
- PetH0704(playerPack.GetItemByIndex(type, index));
- if (type == PackType.Item)
- {
- if (_TagPetItem.ContainsKey(id))
- {
- PetStoneRed();
- }
- PetActivateRedPoint();
- GetCultivateRedPoint();
-
- }
- }
- private void OnFuncStateChange(int obj)
- {
- if (obj == 6)
- {
- PetStoneRed();
- PetActivateRedPoint();
- GetCultivateRedPoint();
- }
- }
-
- private const int Redpoint_key1 = 1050201;
- private Redpoint redPointStre1 = new Redpoint(MainRedDot.RedPoint_PetKey2, Redpoint_key1);
- private void PetStoneRed()//鐏靛疇榄傜煶绾㈢偣
- {
- redPointStre1.state = RedPointState.None;
- if (!FuncOpen.Instance.IsFuncOpen(6))
- {
- return;
- }
- int type = 0;
- foreach (var key in _TagPetItem.Keys)
- {
- if (_TagPetItem[key] >= AttrFruitConfig.Get(key).MaxUseCnt)
- {
- continue;
- }
- type += playerPack.GetItemCountByID(PackType.Item, key);
-
- }
- if (type > 0)
- {
- redPointStre1.state = RedPointState.Simple;
- return;
- }
- }
- private void PetNumberPreservation()//鐢ㄦ潵瀵圭伒瀹犱釜鏁拌繘琛屼繚瀛�
- {
- if (PetRedpoint.Count != 0)
- {
- return;
- }
- int type = 0;
- if (allPetConfigs.Count <= 0)
- {
- allPetConfigs = PetInfoConfig.GetValues();
- }
- // var allPetConfigs = PetInfoConfig.GetValues();
- foreach (var config in allPetConfigs)
- {
- if (!DeblockingRedPoint.ContainsKey(config.ID))
- {
- type += 1;
- int petID = config.ID;
- int RedPoint_Mountkey = MainRedDot.RedPoint_PetKey2 * 10 + type;
- Redpoint redPointMountStare = new Redpoint(MainRedDot.RedPoint_PetKey2, RedPoint_Mountkey);
- PetRedpoint.Add(petID, redPointMountStare);//鍒楄〃
-
- int RedPoint_Mountkey1 = RedPoint_Mountkey * 10 + type;
- Redpoint redPointMountStare1 = new Redpoint(RedPoint_Mountkey, RedPoint_Mountkey1);
- DeblockingRedPoint.Add(petID, redPointMountStare1);//瑙i攣鎸夐挳
- int RedPoint_Mountkey2 = RedPoint_Mountkey1 * 10 + type;
- Redpoint redPointMountStare2 = new Redpoint(RedPoint_Mountkey, RedPoint_Mountkey2);
- CultivateRedPoint.Add(petID, redPointMountStare2);
- }
- }
- }
-
- private void PetActivateRedPoint()//鐏靛疇婵�娲荤孩鐐�
- {
- foreach (var key in PetRedpoint.Keys)
- {
- DeblockingRedPoint[key].state = RedPointState.None;
- }
- if (!FuncOpen.Instance.IsFuncOpen(6))
- {
- return;
- }
- // var configs = PetInfoConfig.GetValues();
- if (allPetConfigs.Count <= 0)
- {
- allPetConfigs = PetInfoConfig.GetValues();
- }
- foreach (var config in allPetConfigs)
- {
- int unlockItemID = config.UnLockNeedItemID;
- int itemCount = playerPack.GetItemCountByID(PackType.Item, unlockItemID);
- int unlockItemCnt = config.UnLockNeedItemCnt;
- if (itemCount >= unlockItemCnt && !_DicPetBack.ContainsKey(config.ID) && FuncOpen.Instance.IsFuncOpen(6))
- {
- DeblockingRedPoint[config.ID].state = RedPointState.Simple;
- }
- }
- }
- private void IsRedPointCultivate()
- {
- GetCultivateRedPoint();
- }
- private void ToAddSorting()
- {
- Sortpet.Clear();
- if (allPetConfigs.Count <= 0)
- {
- allPetConfigs = PetInfoConfig.GetValues();
- }
- Sortpet = allPetConfigs;
- Sortpet.Sort(Compare);
- }
- int Compare(PetInfoConfig x, PetInfoConfig y)//鏁扮粍鎺掑垪
- {
- if (x.Sort.CompareTo(y.Sort) != 0)
- {
- return x.Sort.CompareTo(y.Sort);
- }
- return 1;
- }
- public void GetCultivateRedPoint()//鐏靛疇鍩瑰吇绾㈢偣
- {
- foreach (var key in CultivateRedPoint.Keys)
- {
- CultivateRedPoint[key].state = RedPointState.None;
- }
- if (!FuncOpen.Instance.IsFuncOpen(6))
- {
- return;
- }
- if (_DicPetBack.Count <= 0)
- {
- return;
- }
- int GetPetId = 0;
- int petLv = 100;
- int itemCount = playerPack.GetItemCountByID(PackType.Item, 4151);
- List<int> ListInt = new List<int>();
- for (int i = 0; i < Sortpet.Count; i++)
- {
- int petID = Sortpet[i].ID;
- int MaxLv = PetInfoConfig.Get(petID).MaxRank;
- if (_DicPetBack.ContainsKey(petID) && _DicPetBack[petID].PetClass < MaxLv)
- {
- int _NeedExp = PetClassCostConfig.GetPetIdAndRank(petID, _DicPetBack[petID].PetClass).UpNeedExp;
- int NeedExp = _NeedExp - _DicPetBack[petID].petExp;
- int NeedNumber = Mathf.CeilToInt((float)NeedExp / PetDanExp);
- if (itemCount >= NeedNumber)
- {
- ListInt.Add(petID);
- }
- }
- }
-
- foreach (var key in _DicPetBack.Keys)//鍥犱负鏈夋垚灏变换鍔¢檺鍒舵墍鏈� 绗竴鍙潗楠戠孩鐐归�昏緫鐗规畩鍐�
- {
- if (DicDefaultPet.ContainsKey(key) && DicDefaultPet[key] > _DicPetBack[key].PetClass
- && itemCount > 0 && CultivateRedPoint.ContainsKey(key))
- {
- CultivateRedPoint[key].state = RedPointState.Simple;
- return;
- }
- }
- List<int> IntListSkill = new List<int>();
- for (int i = 0; i < ListInt.Count; i++)//閫夋嫨鍑哄崌绾х伒瀹犵瓑绾ф渶浣庝笖鏈夋妧鑳芥湭瑙i攣鐨勪笖缁忛獙鏈�鎺ヨ繎
- {
- if (_DicPetBack.ContainsKey(ListInt[i]))
- {
- var PetConfig = PetInfoConfig.Get(ListInt[i]);
- if (PetConfig == null)
- {
- return;
- }
- int[] SkillUnLockInt = PetConfig.SkillUnLock;
- int SkillLvMax = SkillUnLockInt[(SkillUnLockInt.Length - 1)];
- if (_DicPetBack[(ListInt[i])].PetClass < SkillLvMax)
- {
- IntListSkill.Add((ListInt[i]));
- }
- }
- }
- int SkillPetId = GetRedPointPetID(IntListSkill);
- if (SkillPetId != 0 && CultivateRedPoint.ContainsKey(SkillPetId))
- {
- CultivateRedPoint[SkillPetId].state = RedPointState.Simple;
- return;
- }
-
-
- for (int i = 0; i < ListInt.Count; i++)//閫夋嫨鍑虹瓑绾ф渶浣庣殑鐏靛疇
- {
- if (_DicPetBack.ContainsKey(ListInt[i]))
- {
- if (_DicPetBack[(ListInt[i])].PetClass < petLv)
- {
- petLv = _DicPetBack[(ListInt[i])].PetClass;
- GetPetId = (ListInt[i]);
- }
- }
- }
- if (GetPetId != 0 && CultivateRedPoint.ContainsKey(GetPetId))
- {
- CultivateRedPoint[GetPetId].state = RedPointState.Simple;
- return;
- }
- }
-
-
- private int GetRedPointPetID(List<int> PetList)
- {
- int GetSkillMinLv = 999;
- for (int i = 0; i < PetList.Count; i++)
- {
- int SkillminLv = GetSkillLvDis(PetList[i]);
- if (SkillminLv < GetSkillMinLv && SkillminLv!=0)
- {
- GetSkillMinLv = SkillminLv;
- }
- }
-
- int petId = 0;
- int ExpNumber = 999999999;
- for (int i = 0; i < PetList.Count; i++)
- {
- int SkillLv = GetSkillLvDis(PetList[i]);
- if (SkillLv > GetSkillMinLv || SkillLv==0)
- {
- continue;
- }
- var Pet1 = PetClassCostConfig.GetPetIdAndRank(PetList[i], SkillLv);
- var Pet2 = PetClassCostConfig.GetPetIdAndRank(PetList[i], _DicPetBack[(PetList[i])].PetClass);
- int Exp = Pet1.NeedExpTotal - Pet2.NeedExpTotal - _DicPetBack[(PetList[i])].petExp;
- if (Exp < ExpNumber)
- {
- ExpNumber = Exp;
- petId = PetList[i];
- }
- }
- return petId;
- }
- private int GetSkillLvDis(int PetId)//鑾峰彇绂诲崌绾ф渶杩戠殑鎶�鑳界瓑绾�
- {
- int SkillLv = 0;
- var petInfo = PetInfoConfig.Get(PetId);
- if (petInfo == null)
- {
- return 0;
- }
- int[] ListPetSkillUnLock = petInfo.SkillUnLock;
- for (int i = 0; i < ListPetSkillUnLock.Length; i++)
- {
- if (_DicPetBack.ContainsKey(PetId) && ListPetSkillUnLock[i] > _DicPetBack[PetId].PetClass)
- {
- SkillLv = ListPetSkillUnLock[i];
- return SkillLv;
- }
- }
- return SkillLv;
- }
- public int GetMinPetExp()
- {
- foreach (var key in CultivateRedPoint.Keys)//褰撳瓨鍦ㄥ煿鍏荤孩鐐规椂锛岄�変腑褰撴湁绾㈢偣鐨勯偅鍙�
- {
- if (CultivateRedPoint[key].state == RedPointState.Simple)
- {
- return key;
- }
- }
-
- List<int> IntListSkill = new List<int>();
- foreach (var key in _DicPetBack.Keys)
- {
- var petConfig = PetInfoConfig.Get(key);
- if (_DicPetBack[key].PetClass < petConfig.MaxRank)
- {
- IntListSkill.Add(key);
- }
- }
- int SkillPetId = GetRedPointPetID(IntListSkill);
- if (SkillPetId != 0)
- {
- return SkillPetId;
- }
- int GetPetId = 0;
- int GetPetLv = 999;
-
- foreach (var key in _DicPetBack.Keys)//鏃犵孩鐐规椂璺宠浆閫変腑绛夌骇鏈�浣庣殑
- {
- var config = PetInfoConfig.Get(key);
- if (_DicPetBack[key].PetClass < GetPetLv && _DicPetBack[key].PetClass < config.MaxRank)
- {
- GetPetId = key;
- GetPetLv = _DicPetBack[key].PetClass;
- }
- }
- return GetPetId;
- }
- private int GetPetSkillMaxLv(int PetID)
- {
- int maxskillLV = 0;
- int[] curPetUnlocks;
- PetInfoConfig petInfo = PetInfoConfig.Get(PetID);
- if (petInfo != null)
- {
- curPetUnlocks = petInfo.SkillUnLock;
- maxskillLV = curPetUnlocks[(curPetUnlocks.Length) - 1];
- }
- return maxskillLV;
- }
- public void PetA339(HA339_tagMCAttrFruitEatCntList info)
- {
- for (int i = 0; i < info.count; i++)
- {
- var configItem = ItemConfig.Get((int)info.EatCntList[i].ItemID);
- if (configItem == null)
- {
- continue;
- }
- if (_TagPetItem.ContainsKey((int)info.EatCntList[i].ItemID))
- {
- _TagPetItem[(int)info.EatCntList[i].ItemID] = (int)info.EatCntList[i].EatCnt;
- if (Event_Ha339 != null)
- Event_Ha339(info);
- }
- else
- {
- if (configItem.Type == 28)
- {
- _TagPetItem.Add((int)info.EatCntList[i].ItemID, (int)info.EatCntList[i].EatCnt);
-
- }
- }
- }
- PetStoneRed();
- }
-
- private void AddPetSkill(int[] intlist)
- {
- for (int i = 0; i < intlist.Length; i++)
- {
- var skillPet = SkillConfig.Get(intlist[i]);
- if (_PetSkillAcquire.ContainsKey(skillPet.SkillTypeID))
- {
- int skilllv = SkillConfig.Get(_PetSkillAcquire[skillPet.SkillTypeID]).SkillLV;
- if (skillPet.SkillLV > skilllv)
- {
- _PetSkillAcquire[skillPet.SkillTypeID] = skillPet.SkillID;
- }
- }
- else
- {
- _PetSkillAcquire.Add(skillPet.SkillTypeID, skillPet.SkillID);
- }
- }
- }
-
- public void PetH0704(ItemModel info)//瀹犵墿鑳屽寘鍒楄〃
- {
- if (info == null)
- return;
-
- if (info.packType == PackType.PetPack)
- {
- Dictionary<int, int[]> _dic = Analysis(info.itemInfo.userData);
- if (GetUseDataModel(200, _dic) != null)
- {
- int petId = _dic[200][0];
- int petLv = 0;
- int petState = 0;
- int[] petSkill = null;
- int petIndex = info.gridIndex;
- int petExp = 0;
- if (GetUseDataModel(201, _dic) != null)
- {
- petSkill = _dic[201];//瀹犵墿褰撳墠瀛︿範鐨勬妧鑳�
- }
-
- if (GetUseDataModel(202, _dic) != null)
- {
- petLv = _dic[202][0] + 1;//瀹犵墿闃剁骇
- }
-
- if (GetUseDataModel(204, _dic) != null)
- {
- petState = _dic[204][0];//瀹犵墿褰撳墠鐘舵��;
- }
-
- if (GetUseDataModel(208, _dic) != null)
- {
- petExp = _dic[208][0]; //瀹犵墿缁忛獙
- }
-
- if (!_DicPetBack.ContainsKey(petId))
- {
-
- PetBackpack _petBack = new PetBackpack();
- _petBack.PetClass = petLv;
- _petBack.petExp = petExp; //瀹犵墿缁忛獙
- _petBack.PetStatus = petState;//瀹犵墿褰撳墠鐘舵��
- if (_petBack.PetStatus == 1)
- {
- PetNow = petId;
- }
-
- if (petSkill != null)
- {
- _petBack.PetSkill = petSkill;//瀹犵墿褰撳墠瀛︿範鐨勬妧鑳�
- AddPetSkill(_petBack.PetSkill);
- }
- else
- {
- _petBack.PetSkill = null;
- }
- _petBack.ItemPlace = petIndex;//瀹犵墿浣嶇疆绱㈠紩
- _DicPetBack.Add(petId, _petBack);
- if (Event_H0704Add != null && IsOk)
- {
- Event_H0704Add();
- }
-
- }
- else
- {
- _DicPetBack[petId].PetClass = petLv;
- _DicPetBack[petId].PetStatus = petState;
- _DicPetBack[petId].petExp = petExp; //瀹犵墿缁忛獙
- if (petSkill != null)
- {
- _DicPetBack[petId].PetSkill = petSkill;//瀹犵墿褰撳墠瀛︿範鐨勬妧鑳�
- AddPetSkill(_DicPetBack[petId].PetSkill);
- }
- else
- {
- _DicPetBack[petId].PetSkill = null;
- }
-
- _DicPetBack[petId].ItemPlace = petIndex;
- if (Event_H0704Update != null && IsOk)
- {
- Event_H0704Update(petId);
- }
- if (_DicPetBack[petId].PetStatus == 1)
- {
- PetNow = petId;
- if (Event_SpiritPetPlay != null && IsOk)
- {
- Event_SpiritPetPlay(petState);
-
- }
- }
- }
- }
- }
- PetStoneRed();
- PetActivateRedPoint();
- GetCultivateRedPoint();
- GetPetMinAndMaxAttack();
- }
-
- public int[] GetUseDataModel(int key, Dictionary<int, int[]> useDataDict)
- {
- int[] list = null;
- if (useDataDict != null)
- {
- useDataDict.TryGetValue(key, out list);
- }
- return list;
- }
-
- private void GetPetMinAndMaxAttack()
- {
- if (_DicPetBack.Count <= 0)
- {
- return;
- }
- MinAtkNunber = 0;
- MaxAtkNunber = 0;
- foreach (var key in _DicPetBack.Keys)
- {
- PetClassCostConfig _tagPetClass = PetClassCostConfig.GetPetIdAndRank(key, _DicPetBack[key].PetClass);
- MinAtkNunber += _tagPetClass.AtkAdd;
- MaxAtkNunber += _tagPetClass.AtkAdd;
- }
- }
-
- public static Regex userData = new Regex(@"'([0-9]+)':\[(.*?)\]", RegexOptions.Singleline);
-
- public Dictionary<int, int[]> Analysis(string val)//姝e垯琛ㄨ揪寮忕殑瀛楃涓插垎鍓�
- {
- if (!userData.IsMatch(val))
- {
- return null;
- }
- else
- {
- Dictionary<int, int[]> dics = new Dictionary<int, int[]>();
- foreach (Match match in userData.Matches(val))
- {
- int id = int.Parse(match.Groups[1].Value);
- string str = match.Groups[2].Value;
- string[] vals = str.Split(',');
- int[] intarray = new int[vals.Length];
- for (int i = 0; i < vals.Length; i++)
- {
- int intval = int.Parse(vals[i].Replace('\'', ' '));
- intarray[i] = intval;
- }
- if (!dics.ContainsKey(id))
- {
- dics.Add(id, intarray);
- }
- }
- return dics;
- }
- }
-
- public bool IsHint(PetEnum petEnum, int id = 0)//True鎻愮ず锛孎alse涓嶆彁绀�
- {
- bool iSHint = false;
- switch (petEnum)
- {
- case PetEnum.PetDan:
- foreach (var key in _DicPetBack.Keys)
- {
- PetInfoConfig petConfig = PetInfoConfig.Get(key);
- if (petConfig.MaxRank > _DicPetBack[key].PetClass)
- {
- iSHint = true;
- }
- }
- return iSHint;
- case PetEnum.PetDebris:
- if (allPetConfigs.Count <= 0)
- {
- allPetConfigs = PetInfoConfig.GetValues();
- }
- foreach (var value in allPetConfigs)
- {
- if (value.UnLockNeedItemID == id)
- {
- if (!_DicPetBack.ContainsKey(value.ID))
- {
- iSHint = true;
- }
- }
- }
- return iSHint;
- case PetEnum.PetStone:
- int _maxuse = AttrFruitConfig.Get(id).MaxUseCnt;
- if (_TagPetItem.ContainsKey(id))
- {
- if (_maxuse > _TagPetItem[id])
- {
- iSHint = true;
- }
- }
- return iSHint;
- default:
- return true;
- }
- }
-
- public int IsPetPanelRedPointState()//鐢ㄤ簬鍒ゆ柇褰撳墠鐏靛疇椤电鏄惁鏈夌孩鐐逛寒璧�
- {
- int Type = 0;
- foreach (var value in DeblockingRedPoint.Values)
- {
- if (value.state == RedPointState.Simple)
- {
- Type = 2;
- return Type;
- }
- }
- if (MainRedDot.Instance.redPonintPetFunc2.state == RedPointState.Simple)
- {
- Type = 1;
- return Type;
- }
- return Type;
-
- }
-
- #region 棰勮瀹犵墿纰庣墖灞炴��
- Dictionary<int, int> petAttrDict = new Dictionary<int, int>();
- public Dictionary<int, int> GetPetAttrAddDict(int petCode)
- {
- PetInfoConfig infoConfig = PetInfoConfig.Get(petCode);
- petAttrDict.Clear();
- if (infoConfig == null) return petAttrDict;
-
- int maxRank = infoConfig.MaxRank;
- PetClassCostConfig cost = PetClassCostConfig.GetPetIdAndRank(petCode, maxRank);
- int allAtkAdd = 0;
- if (cost != null)
- {
- allAtkAdd = cost.AtkAdd;
- }
- petAttrDict.Add(7, allAtkAdd);
- return petAttrDict;
- }
- #endregion
+ IsOk = true;
+ if (PlayerLoginOkData != null)
+ {
+ PlayerLoginOkData();
+ }
+ }
- #region 鎶�鑳芥暣鍚�
- public ICollection<int> GetPetTotalSkills()
- {
- return petSkills.Keys;
- }
-
- public bool TryGetIntegrationSkill(int effect, out int skillId)
- {
- return integrationSkills.TryGetValue(effect, out skillId);
- }
-
- public bool TryGetPetSkills(int effect,out List<int> skills)
- {
- return integrationPetSkills.TryGetValue(effect, out skills);
- }
-
- public bool TryGetPetId(int skillId,out int petId)
- {
- return petSkills.TryGetValue(skillId, out petId);
- }
-
- public bool IsSkillUnlock(int skillId)
- {
- var config = SkillConfig.Get(skillId);
- if (config == null)
+ private DateTime dateTimeA;
+ private void secondEvent()
{
+ if (!Wait)
+ {
+ TimeSpan timeS = DateTime.Now - dateTimeA;
+ if (timeS.Seconds >= 2f)
+ {
+ Wait = true;
+ }
+ }
+ else
+ {
+ dateTimeA = DateTime.Now;
+ }
+ }
+
+ #region 鍙戦�佹湇鍔$璇锋眰
+ public void SendPetSwitchQuest(int petIndex)
+ {
+ C1603_tagCPetStateChange tag_Cpet = new C1603_tagCPetStateChange();
+ tag_Cpet.PetID = (uint)petIndex;
+ tag_Cpet.State = 1;
+ GameNetSystem.Instance.SendInfo(tag_Cpet);
+ }
+
+ public void SendBreakPetLockQuest(int petId)
+ {
+ CA702_tagCMActivatePet CMPet = new CA702_tagCMActivatePet();
+ CMPet.PetNPCID = (uint)petId;
+ GameNetSystem.Instance.SendInfo(CMPet);
+ if (ItemOperateUtility.Instance.useItemModel != null)
+ {
+ ItemOperateUtility.Instance.useItemModel = null;
+ }
+ }
+
+ public void SendPetTrainQuest(int petIndex, int number)
+ {
+ CA704_tagCMPetClassUP _tagCA704 = new CA704_tagCMPetClassUP();
+ _tagCA704.PetItemIndex = (byte)petIndex;
+ _tagCA704.UseItemCnt = (ushort)number;
+ GameNetSystem.Instance.SendInfo(_tagCA704);
+ }
+ #endregion
+
+
+ private void OnItemRefreshEvent(PackType type, int index, int id)
+ {
+ PetH0704(playerPack.GetItemByIndex(type, index));
+ if (type == PackType.Item)
+ {
+ if (_TagPetItem.ContainsKey(id))
+ {
+ PetStoneRed();
+ }
+ PetActivateRedPoint();
+ GetCultivateRedPoint();
+
+ }
+ }
+ private void OnFuncStateChange(int obj)
+ {
+ if (obj == 6)
+ {
+ PetStoneRed();
+ PetActivateRedPoint();
+ GetCultivateRedPoint();
+ }
+ }
+
+ private const int Redpoint_key1 = 1050201;
+ private Redpoint redPointStre1 = new Redpoint(MainRedDot.RedPoint_PetKey2, Redpoint_key1);
+ private void PetStoneRed()//鐏靛疇榄傜煶绾㈢偣
+ {
+ redPointStre1.state = RedPointState.None;
+ if (!FuncOpen.Instance.IsFuncOpen(6))
+ {
+ return;
+ }
+ int type = 0;
+ foreach (var key in _TagPetItem.Keys)
+ {
+ if (_TagPetItem[key] >= AttrFruitConfig.Get(key).MaxUseCnt)
+ {
+ continue;
+ }
+ type += playerPack.GetItemCountByID(PackType.Item, key);
+
+ }
+ if (type > 0)
+ {
+ redPointStre1.state = RedPointState.Simple;
+ return;
+ }
+ }
+ private void PetNumberPreservation()//鐢ㄦ潵瀵圭伒瀹犱釜鏁拌繘琛屼繚瀛�
+ {
+ if (PetRedpoint.Count != 0)
+ {
+ return;
+ }
+ int type = 0;
+ if (allPetConfigs.Count <= 0)
+ {
+ allPetConfigs = PetInfoConfig.GetValues();
+ }
+ // var allPetConfigs = PetInfoConfig.GetValues();
+ foreach (var config in allPetConfigs)
+ {
+ if (!DeblockingRedPoint.ContainsKey(config.ID))
+ {
+ type += 1;
+ int petID = config.ID;
+ int RedPoint_Mountkey = MainRedDot.RedPoint_PetKey2 * 10 + type;
+ Redpoint redPointMountStare = new Redpoint(MainRedDot.RedPoint_PetKey2, RedPoint_Mountkey);
+ PetRedpoint.Add(petID, redPointMountStare);//鍒楄〃
+
+ int RedPoint_Mountkey1 = RedPoint_Mountkey * 10 + type;
+ Redpoint redPointMountStare1 = new Redpoint(RedPoint_Mountkey, RedPoint_Mountkey1);
+ DeblockingRedPoint.Add(petID, redPointMountStare1);//瑙i攣鎸夐挳
+ int RedPoint_Mountkey2 = RedPoint_Mountkey1 * 10 + type;
+ Redpoint redPointMountStare2 = new Redpoint(RedPoint_Mountkey, RedPoint_Mountkey2);
+ CultivateRedPoint.Add(petID, redPointMountStare2);
+ }
+ }
+ }
+
+ private void PetActivateRedPoint()//鐏靛疇婵�娲荤孩鐐�
+ {
+ foreach (var key in PetRedpoint.Keys)
+ {
+ DeblockingRedPoint[key].state = RedPointState.None;
+ }
+ if (!FuncOpen.Instance.IsFuncOpen(6))
+ {
+ return;
+ }
+ // var configs = PetInfoConfig.GetValues();
+ if (allPetConfigs.Count <= 0)
+ {
+ allPetConfigs = PetInfoConfig.GetValues();
+ }
+ foreach (var config in allPetConfigs)
+ {
+ int unlockItemID = config.UnLockNeedItemID;
+ int itemCount = playerPack.GetItemCountByID(PackType.Item, unlockItemID);
+ int unlockItemCnt = config.UnLockNeedItemCnt;
+ if (itemCount >= unlockItemCnt && !_DicPetBack.ContainsKey(config.ID) && FuncOpen.Instance.IsFuncOpen(6))
+ {
+ DeblockingRedPoint[config.ID].state = RedPointState.Simple;
+ }
+ }
+ }
+ private void IsRedPointCultivate()
+ {
+ GetCultivateRedPoint();
+ }
+ private void ToAddSorting()
+ {
+ Sortpet.Clear();
+ if (allPetConfigs.Count <= 0)
+ {
+ allPetConfigs = PetInfoConfig.GetValues();
+ }
+ Sortpet = allPetConfigs;
+ Sortpet.Sort(Compare);
+ }
+ int Compare(PetInfoConfig x, PetInfoConfig y)//鏁扮粍鎺掑垪
+ {
+ if (x.Sort.CompareTo(y.Sort) != 0)
+ {
+ return x.Sort.CompareTo(y.Sort);
+ }
+ return 1;
+ }
+ public void GetCultivateRedPoint()//鐏靛疇鍩瑰吇绾㈢偣
+ {
+ foreach (var key in CultivateRedPoint.Keys)
+ {
+ CultivateRedPoint[key].state = RedPointState.None;
+ }
+ if (!FuncOpen.Instance.IsFuncOpen(6))
+ {
+ return;
+ }
+ if (_DicPetBack.Count <= 0)
+ {
+ return;
+ }
+ int GetPetId = 0;
+ int petLv = 100;
+ int itemCount = playerPack.GetItemCountByID(PackType.Item, 4151);
+ List<int> ListInt = new List<int>();
+ for (int i = 0; i < Sortpet.Count; i++)
+ {
+ int petID = Sortpet[i].ID;
+ int MaxLv = PetInfoConfig.Get(petID).MaxRank;
+ if (_DicPetBack.ContainsKey(petID) && _DicPetBack[petID].PetClass < MaxLv)
+ {
+ int _NeedExp = PetClassCostConfig.GetPetIdAndRank(petID, _DicPetBack[petID].PetClass).UpNeedExp;
+ int NeedExp = _NeedExp - _DicPetBack[petID].petExp;
+ int NeedNumber = Mathf.CeilToInt((float)NeedExp / PetDanExp);
+ if (itemCount >= NeedNumber)
+ {
+ ListInt.Add(petID);
+ }
+ }
+ }
+
+ foreach (var key in _DicPetBack.Keys)//鍥犱负鏈夋垚灏变换鍔¢檺鍒舵墍鏈� 绗竴鍙潗楠戠孩鐐归�昏緫鐗规畩鍐�
+ {
+ if (DicDefaultPet.ContainsKey(key) && DicDefaultPet[key] > _DicPetBack[key].PetClass
+ && itemCount > 0 && CultivateRedPoint.ContainsKey(key))
+ {
+ CultivateRedPoint[key].state = RedPointState.Simple;
+ return;
+ }
+ }
+ List<int> IntListSkill = new List<int>();
+ for (int i = 0; i < ListInt.Count; i++)//閫夋嫨鍑哄崌绾х伒瀹犵瓑绾ф渶浣庝笖鏈夋妧鑳芥湭瑙i攣鐨勪笖缁忛獙鏈�鎺ヨ繎
+ {
+ if (_DicPetBack.ContainsKey(ListInt[i]))
+ {
+ var PetConfig = PetInfoConfig.Get(ListInt[i]);
+ if (PetConfig == null)
+ {
+ return;
+ }
+ int[] SkillUnLockInt = PetConfig.SkillUnLock;
+ int SkillLvMax = SkillUnLockInt[(SkillUnLockInt.Length - 1)];
+ if (_DicPetBack[(ListInt[i])].PetClass < SkillLvMax)
+ {
+ IntListSkill.Add((ListInt[i]));
+ }
+ }
+ }
+ int SkillPetId = GetRedPointPetID(IntListSkill);
+ if (SkillPetId != 0 && CultivateRedPoint.ContainsKey(SkillPetId))
+ {
+ CultivateRedPoint[SkillPetId].state = RedPointState.Simple;
+ return;
+ }
+
+
+ for (int i = 0; i < ListInt.Count; i++)//閫夋嫨鍑虹瓑绾ф渶浣庣殑鐏靛疇
+ {
+ if (_DicPetBack.ContainsKey(ListInt[i]))
+ {
+ if (_DicPetBack[(ListInt[i])].PetClass < petLv)
+ {
+ petLv = _DicPetBack[(ListInt[i])].PetClass;
+ GetPetId = (ListInt[i]);
+ }
+ }
+ }
+ if (GetPetId != 0 && CultivateRedPoint.ContainsKey(GetPetId))
+ {
+ CultivateRedPoint[GetPetId].state = RedPointState.Simple;
+ return;
+ }
+ }
+
+
+ private int GetRedPointPetID(List<int> PetList)
+ {
+ int GetSkillMinLv = 999;
+ for (int i = 0; i < PetList.Count; i++)
+ {
+ int SkillminLv = GetSkillLvDis(PetList[i]);
+ if (SkillminLv < GetSkillMinLv && SkillminLv != 0)
+ {
+ GetSkillMinLv = SkillminLv;
+ }
+ }
+
+ int petId = 0;
+ int ExpNumber = 999999999;
+ for (int i = 0; i < PetList.Count; i++)
+ {
+ int SkillLv = GetSkillLvDis(PetList[i]);
+ if (SkillLv > GetSkillMinLv || SkillLv == 0)
+ {
+ continue;
+ }
+ var Pet1 = PetClassCostConfig.GetPetIdAndRank(PetList[i], SkillLv);
+ var Pet2 = PetClassCostConfig.GetPetIdAndRank(PetList[i], _DicPetBack[(PetList[i])].PetClass);
+ int Exp = Pet1.NeedExpTotal - Pet2.NeedExpTotal - _DicPetBack[(PetList[i])].petExp;
+ if (Exp < ExpNumber)
+ {
+ ExpNumber = Exp;
+ petId = PetList[i];
+ }
+ }
+ return petId;
+ }
+ private int GetSkillLvDis(int PetId)//鑾峰彇绂诲崌绾ф渶杩戠殑鎶�鑳界瓑绾�
+ {
+ int SkillLv = 0;
+ var petInfo = PetInfoConfig.Get(PetId);
+ if (petInfo == null)
+ {
+ return 0;
+ }
+ int[] ListPetSkillUnLock = petInfo.SkillUnLock;
+ for (int i = 0; i < ListPetSkillUnLock.Length; i++)
+ {
+ if (_DicPetBack.ContainsKey(PetId) && ListPetSkillUnLock[i] > _DicPetBack[PetId].PetClass)
+ {
+ SkillLv = ListPetSkillUnLock[i];
+ return SkillLv;
+ }
+ }
+ return SkillLv;
+ }
+ public int GetMinPetExp()
+ {
+ foreach (var key in CultivateRedPoint.Keys)//褰撳瓨鍦ㄥ煿鍏荤孩鐐规椂锛岄�変腑褰撴湁绾㈢偣鐨勯偅鍙�
+ {
+ if (CultivateRedPoint[key].state == RedPointState.Simple)
+ {
+ return key;
+ }
+ }
+
+ List<int> IntListSkill = new List<int>();
+ foreach (var key in _DicPetBack.Keys)
+ {
+ var petConfig = PetInfoConfig.Get(key);
+ if (_DicPetBack[key].PetClass < petConfig.MaxRank)
+ {
+ IntListSkill.Add(key);
+ }
+ }
+ int SkillPetId = GetRedPointPetID(IntListSkill);
+ if (SkillPetId != 0)
+ {
+ return SkillPetId;
+ }
+ int GetPetId = 0;
+ int GetPetLv = 999;
+
+ foreach (var key in _DicPetBack.Keys)//鏃犵孩鐐规椂璺宠浆閫変腑绛夌骇鏈�浣庣殑
+ {
+ var config = PetInfoConfig.Get(key);
+ if (_DicPetBack[key].PetClass < GetPetLv && _DicPetBack[key].PetClass < config.MaxRank)
+ {
+ GetPetId = key;
+ GetPetLv = _DicPetBack[key].PetClass;
+ }
+ }
+ return GetPetId;
+ }
+ private int GetPetSkillMaxLv(int PetID)
+ {
+ int maxskillLV = 0;
+ int[] curPetUnlocks;
+ PetInfoConfig petInfo = PetInfoConfig.Get(PetID);
+ if (petInfo != null)
+ {
+ curPetUnlocks = petInfo.SkillUnLock;
+ maxskillLV = curPetUnlocks[(curPetUnlocks.Length) - 1];
+ }
+ return maxskillLV;
+ }
+ public void PetA339(HA339_tagMCAttrFruitEatCntList info)
+ {
+ for (int i = 0; i < info.count; i++)
+ {
+ var configItem = ItemConfig.Get((int)info.EatCntList[i].ItemID);
+ if (configItem == null)
+ {
+ continue;
+ }
+ if (_TagPetItem.ContainsKey((int)info.EatCntList[i].ItemID))
+ {
+ _TagPetItem[(int)info.EatCntList[i].ItemID] = (int)info.EatCntList[i].EatCnt;
+ if (Event_Ha339 != null)
+ Event_Ha339(info);
+ }
+ else
+ {
+ if (configItem.Type == 28)
+ {
+ _TagPetItem.Add((int)info.EatCntList[i].ItemID, (int)info.EatCntList[i].EatCnt);
+
+ }
+ }
+ }
+ PetStoneRed();
+ }
+
+ private void AddPetSkill(int[] intlist)
+ {
+ for (int i = 0; i < intlist.Length; i++)
+ {
+ var skillPet = SkillConfig.Get(intlist[i]);
+ if (_PetSkillAcquire.ContainsKey(skillPet.SkillTypeID))
+ {
+ int skilllv = SkillConfig.Get(_PetSkillAcquire[skillPet.SkillTypeID]).SkillLV;
+ if (skillPet.SkillLV > skilllv)
+ {
+ _PetSkillAcquire[skillPet.SkillTypeID] = skillPet.SkillID;
+ }
+ }
+ else
+ {
+ _PetSkillAcquire.Add(skillPet.SkillTypeID, skillPet.SkillID);
+ }
+ }
+ }
+
+ public void PetH0704(ItemModel info)//瀹犵墿鑳屽寘鍒楄〃
+ {
+ if (info == null)
+ return;
+
+ if (info.packType == PackType.PetPack)
+ {
+ Dictionary<int, int[]> _dic = Analysis(info.itemInfo.userData);
+ if (GetUseDataModel(200, _dic) != null)
+ {
+ int petId = _dic[200][0];
+ int petLv = 0;
+ int petState = 0;
+ int[] petSkill = null;
+ int petIndex = info.gridIndex;
+ int petExp = 0;
+ if (GetUseDataModel(201, _dic) != null)
+ {
+ petSkill = _dic[201];//瀹犵墿褰撳墠瀛︿範鐨勬妧鑳�
+ }
+
+ if (GetUseDataModel(202, _dic) != null)
+ {
+ petLv = _dic[202][0] + 1;//瀹犵墿闃剁骇
+ }
+
+ if (GetUseDataModel(204, _dic) != null)
+ {
+ petState = _dic[204][0];//瀹犵墿褰撳墠鐘舵��;
+ }
+
+ if (GetUseDataModel(208, _dic) != null)
+ {
+ petExp = _dic[208][0]; //瀹犵墿缁忛獙
+ }
+
+ if (!_DicPetBack.ContainsKey(petId))
+ {
+
+ PetBackpack _petBack = new PetBackpack();
+ _petBack.PetClass = petLv;
+ _petBack.petExp = petExp; //瀹犵墿缁忛獙
+ _petBack.PetStatus = petState;//瀹犵墿褰撳墠鐘舵��
+ if (_petBack.PetStatus == 1)
+ {
+ PetNow = petId;
+ }
+
+ if (petSkill != null)
+ {
+ _petBack.PetSkill = petSkill;//瀹犵墿褰撳墠瀛︿範鐨勬妧鑳�
+ AddPetSkill(_petBack.PetSkill);
+ }
+ else
+ {
+ _petBack.PetSkill = null;
+ }
+ _petBack.ItemPlace = petIndex;//瀹犵墿浣嶇疆绱㈠紩
+ _DicPetBack.Add(petId, _petBack);
+ if (Event_H0704Add != null && IsOk)
+ {
+ Event_H0704Add();
+ }
+
+ }
+ else
+ {
+ _DicPetBack[petId].PetClass = petLv;
+ _DicPetBack[petId].PetStatus = petState;
+ _DicPetBack[petId].petExp = petExp; //瀹犵墿缁忛獙
+ if (petSkill != null)
+ {
+ _DicPetBack[petId].PetSkill = petSkill;//瀹犵墿褰撳墠瀛︿範鐨勬妧鑳�
+ AddPetSkill(_DicPetBack[petId].PetSkill);
+ }
+ else
+ {
+ _DicPetBack[petId].PetSkill = null;
+ }
+
+ _DicPetBack[petId].ItemPlace = petIndex;
+ if (Event_H0704Update != null && IsOk)
+ {
+ Event_H0704Update(petId);
+ }
+ if (_DicPetBack[petId].PetStatus == 1)
+ {
+ PetNow = petId;
+ if (Event_SpiritPetPlay != null && IsOk)
+ {
+ Event_SpiritPetPlay(petState);
+
+ }
+ }
+ }
+ }
+ }
+ PetStoneRed();
+ PetActivateRedPoint();
+ GetCultivateRedPoint();
+ GetPetMinAndMaxAttack();
+ }
+
+ public int[] GetUseDataModel(int key, Dictionary<int, int[]> useDataDict)
+ {
+ int[] list = null;
+ if (useDataDict != null)
+ {
+ useDataDict.TryGetValue(key, out list);
+ }
+ return list;
+ }
+
+ private void GetPetMinAndMaxAttack()
+ {
+ if (_DicPetBack.Count <= 0)
+ {
+ return;
+ }
+ MinAtkNunber = 0;
+ MaxAtkNunber = 0;
+ foreach (var key in _DicPetBack.Keys)
+ {
+ PetClassCostConfig _tagPetClass = PetClassCostConfig.GetPetIdAndRank(key, _DicPetBack[key].PetClass);
+ MinAtkNunber += _tagPetClass.AtkAdd;
+ MaxAtkNunber += _tagPetClass.AtkAdd;
+ }
+ }
+
+ public static Regex userData = new Regex(@"'([0-9]+)':\[(.*?)\]", RegexOptions.Singleline);
+
+ public Dictionary<int, int[]> Analysis(string val)//姝e垯琛ㄨ揪寮忕殑瀛楃涓插垎鍓�
+ {
+ if (!userData.IsMatch(val))
+ {
+ return null;
+ }
+ else
+ {
+ Dictionary<int, int[]> dics = new Dictionary<int, int[]>();
+ foreach (Match match in userData.Matches(val))
+ {
+ int id = int.Parse(match.Groups[1].Value);
+ string str = match.Groups[2].Value;
+ string[] vals = str.Split(',');
+ int[] intarray = new int[vals.Length];
+ for (int i = 0; i < vals.Length; i++)
+ {
+ int intval = int.Parse(vals[i].Replace('\'', ' '));
+ intarray[i] = intval;
+ }
+ if (!dics.ContainsKey(id))
+ {
+ dics.Add(id, intarray);
+ }
+ }
+ return dics;
+ }
+ }
+
+ public bool IsHint(PetEnum petEnum, int id = 0)//True鎻愮ず锛孎alse涓嶆彁绀�
+ {
+ bool iSHint = false;
+ switch (petEnum)
+ {
+ case PetEnum.PetDan:
+ foreach (var key in _DicPetBack.Keys)
+ {
+ PetInfoConfig petConfig = PetInfoConfig.Get(key);
+ if (petConfig.MaxRank > _DicPetBack[key].PetClass)
+ {
+ iSHint = true;
+ }
+ }
+ return iSHint;
+ case PetEnum.PetDebris:
+ if (allPetConfigs.Count <= 0)
+ {
+ allPetConfigs = PetInfoConfig.GetValues();
+ }
+ foreach (var value in allPetConfigs)
+ {
+ if (value.UnLockNeedItemID == id)
+ {
+ if (!_DicPetBack.ContainsKey(value.ID))
+ {
+ iSHint = true;
+ }
+ }
+ }
+ return iSHint;
+ case PetEnum.PetStone:
+ int _maxuse = AttrFruitConfig.Get(id).MaxUseCnt;
+ if (_TagPetItem.ContainsKey(id))
+ {
+ if (_maxuse > _TagPetItem[id])
+ {
+ iSHint = true;
+ }
+ }
+ return iSHint;
+ default:
+ return true;
+ }
+ }
+
+ public int IsPetPanelRedPointState()//鐢ㄤ簬鍒ゆ柇褰撳墠鐏靛疇椤电鏄惁鏈夌孩鐐逛寒璧�
+ {
+ int Type = 0;
+ foreach (var value in DeblockingRedPoint.Values)
+ {
+ if (value.state == RedPointState.Simple)
+ {
+ Type = 2;
+ return Type;
+ }
+ }
+ if (MainRedDot.Instance.redPonintPetFunc2.state == RedPointState.Simple)
+ {
+ Type = 1;
+ return Type;
+ }
+ return Type;
+
+ }
+
+ #region 棰勮瀹犵墿纰庣墖灞炴��
+ Dictionary<int, int> petAttrDict = new Dictionary<int, int>();
+ public Dictionary<int, int> GetPetAttrAddDict(int petCode)
+ {
+ PetInfoConfig infoConfig = PetInfoConfig.Get(petCode);
+ petAttrDict.Clear();
+ if (infoConfig == null) return petAttrDict;
+
+ int maxRank = infoConfig.MaxRank;
+ PetClassCostConfig cost = PetClassCostConfig.GetPetIdAndRank(petCode, maxRank);
+ int allAtkAdd = 0;
+ if (cost != null)
+ {
+ allAtkAdd = cost.AtkAdd;
+ }
+ petAttrDict.Add(7, allAtkAdd);
+ return petAttrDict;
+ }
+ #endregion
+
+ #region 鎶�鑳芥暣鍚�
+ public ICollection<int> GetPetTotalSkills()
+ {
+ return petSkills.Keys;
+ }
+
+ public bool TryGetIntegrationSkill(SkillEffectValue effect, out int skillId)
+ {
+ return integrationSkills.TryGetValue(effect, out skillId);
+ }
+
+ public bool TryGetPetSkills(SkillEffectValue effect, out List<int> skills)
+ {
+ return integrationPetSkills.TryGetValue(effect, out skills);
+ }
+
+ public bool TryGetPetId(int skillId, out int petId)
+ {
+ return petSkills.TryGetValue(skillId, out petId);
+ }
+
+ public bool IsSkillUnlock(int skillId)
+ {
+ var config = SkillConfig.Get(skillId);
+ if (config == null)
+ {
+ return false;
+ }
+ var effect = SkillConfig.GetSkillEffectValue(config);
+
+ if (integrationPetSkills.ContainsKey(effect)
+ && !integrationPetSkills[effect].Contains(skillId))
+ {
+ var skills = integrationPetSkills[effect];
+ foreach (var id in skills)
+ {
+ if (IsSkillUnlock(id))
+ {
+ return true;
+ }
+ }
+ }
+ else
+ {
+ if (petSkills.ContainsKey(skillId))
+ {
+ var petId = petSkills[skillId];
+ if (!_DicPetBack.ContainsKey(petId))
+ {
+ return false;
+ }
+ var petInfo = _DicPetBack[petId];
+ if (petInfo.PetClass >= GetSkillUnlockLevel(skillId))
+ {
+ return true;
+ }
+ }
+ }
return false;
}
- if (integrationPetSkills.ContainsKey(config.Effect1)
- && !integrationPetSkills[config.Effect1].Contains(skillId))
+
+ public int GetSkillUnlockLevel(int skillId)
{
- var skills = integrationPetSkills[config.Effect1];
- foreach (var id in skills)
+ var petId = 0;
+ if (TryGetPetId(skillId, out petId))
{
- if (IsSkillUnlock(id))
+ var petConfig = PetInfoConfig.Get(petId);
+ var index = 0;
+ for (int i = 0; i < petConfig.SkillID.Length; i++)
{
- return true;
+ if (petConfig.SkillID[i] == skillId)
+ {
+ index = i;
+ }
+ }
+ if (index < petConfig.SkillUnLock.Length)
+ {
+ return petConfig.SkillUnLock[index];
}
}
+ return 0;
}
- else
- {
- if (petSkills.ContainsKey(skillId))
- {
- var petId = petSkills[skillId];
- if (!_DicPetBack.ContainsKey(petId))
- {
- return false;
- }
- var petInfo = _DicPetBack[petId];
- if (petInfo.PetClass >= GetSkillUnlockLevel(skillId))
- {
- return true;
- }
- }
- }
- return false;
- }
-
- public int GetSkillUnlockLevel(int skillId)
- {
- var petId = 0;
- if (TryGetPetId(skillId, out petId))
- {
- var petConfig = PetInfoConfig.Get(petId);
- var index = 0;
- for (int i = 0; i < petConfig.SkillID.Length; i++)
- {
- if (petConfig.SkillID[i] == skillId)
- {
- index = i;
- }
- }
- if (index < petConfig.SkillUnLock.Length)
- {
- return petConfig.SkillUnLock[index];
- }
- }
- return 0;
- }
- #endregion
+ #endregion
+ }
}
diff --git a/System/Pet/SkillButtonPet.cs b/System/Pet/SkillButtonPet.cs
index 19d0e6d..0ff03ea 100644
--- a/System/Pet/SkillButtonPet.cs
+++ b/System/Pet/SkillButtonPet.cs
@@ -21,6 +21,7 @@
[SerializeField] Text lockLvText;
PetModel petModel { get { return ModelCenter.Instance.GetModel<PetModel>(); } }
+ MountModel mountModel { get { return ModelCenter.Instance.GetModel<MountModel>(); } }
public void SetModel(int skillId, int skillUnlock, bool isUnlock, int petId, SkillType skillType, bool isAll = false)
{
@@ -69,7 +70,8 @@
{
List<int> skills;
var value = 0;
- if (petModel.TryGetPetSkills(skillConfig.Effect1, out skills))
+ var effect = SkillConfig.GetSkillEffectValue(skillConfig);
+ if (petModel.TryGetPetSkills(effect, out skills))
{
foreach (var id in skills)
{
@@ -86,13 +88,39 @@
}
break;
case SkillType.MountSkill:
- HorseConfig horseInfo = HorseConfig.Get(petId);
- if (horseInfo != null)
{
- str[0] = skillConfig.Description;
- str[1] = Language.Get("pet_SkillTipLv", horseInfo.Name, skillUnlock);
+ if (mountModel.GetMountSkillAndItem.ContainsKey(skillId))
+ {
+ var horseId = mountModel.GetMountSkillAndItem[skillId].HorseID;
+ var horseConfig = HorseConfig.Get(horseId);
+ if (horseConfig != null)
+ {
+ str[0] = skillConfig.Description;
+ str[1] = Language.Get("pet_SkillTipLv", horseConfig.Name, mountModel.GetSkillUnlockLevel(skillId));
+ }
+ fightPower = skillConfig.FightPower;
+ }
+ else
+ {
+ var effect = SkillConfig.GetSkillEffectValue(skillConfig);
+ List<int> skills;
+ var value = 0;
+ if (mountModel.TryGetHorseSkills(effect, out skills))
+ {
+ foreach (var id in skills)
+ {
+ if (mountModel.IsSkillUnlock(id))
+ {
+ var config = SkillConfig.Get(id);
+ value += config.EffectValue11;
+ fightPower += config.FightPower;
+ }
+ }
+ }
+ str[0] = string.Format(skillConfig.Description, value);
+ str[1] = string.Empty;
+ }
}
- fightPower = skillConfig.FightPower;
break;
}
SkillDetails.ShowSkillDetails(skillId, SkillDetails.SkillSourceType.PetSkill, fightPower, str);
diff --git a/System/RoleParticulars/ViewHorseDetailWin.cs b/System/RoleParticulars/ViewHorseDetailWin.cs
index 693ee4f..164849b 100644
--- a/System/RoleParticulars/ViewHorseDetailWin.cs
+++ b/System/RoleParticulars/ViewHorseDetailWin.cs
@@ -32,9 +32,11 @@
List<int> skills = new List<int>();
- [NonSerialized] public List<int> activeSkills = new List<int>();
+ [NonSerialized] public List<int> displayTotalSkills = new List<int>();
+ [NonSerialized] public List<int> unlockTotalSkills = new List<int>();
RoleParticularModel model { get { return ModelCenter.Instance.GetModel<RoleParticularModel>(); } }
+ MountModel mountModel { get { return ModelCenter.Instance.GetModel<MountModel>(); } }
#region Built-in
protected override void BindController()
{
@@ -157,14 +159,34 @@
void DisplayTotalSkills(List<RoleParticularModel.HorseInfo> horses)
{
- activeSkills.Clear();
+ displayTotalSkills.Clear();
+ unlockTotalSkills.Clear();
+
for (int i = 0; i < horses.Count; i++)
{
HorseUpConfig.GetHorseSkills(horses[i].id, horses[i].lv, true, ref skills);
- activeSkills.AddRange(skills);
+ unlockTotalSkills.AddRange(skills);
+ foreach (var id in skills)
+ {
+ var config = SkillConfig.Get(id);
+ var effect = SkillConfig.GetSkillEffectValue(config);
+ var skillId = 0;
+ if (mountModel.TryGetIntegrationSkill(effect, out skillId))
+ {
+ if (!displayTotalSkills.Contains(skillId))
+ {
+ displayTotalSkills.Add(skillId);
+ }
+ continue;
+ }
+ displayTotalSkills.Add(id);
+ }
}
+
+ displayTotalSkills.Sort(Compare);
+
m_SkillController.Refresh();
- var line = Mathf.CeilToInt((float)activeSkills.Count / m_LineCount);
+ var line = Mathf.CeilToInt((float)displayTotalSkills.Count / m_LineCount);
for (int i = 0; i < line; i++)
{
m_SkillController.AddCell(ScrollerDataType.Header, i);
@@ -199,6 +221,40 @@
var line = cell.index;
ViewHorseSkillCell skillCell = cell as ViewHorseSkillCell;
skillCell.Display(line, this);
+ }
+
+ int Compare(int lhs, int rhs)
+ {
+ var lhs_config = SkillConfig.Get(lhs);
+ var rhs_config = SkillConfig.Get(rhs);
+ var lhs_Id = 0;
+ var rhs_Id = 0;
+ var lhs_effect = SkillConfig.GetSkillEffectValue(lhs_config);
+ var rhs_effect = SkillConfig.GetSkillEffectValue(rhs_config);
+ var lhs_integration = mountModel.TryGetIntegrationSkill(lhs_effect, out lhs_Id);
+ var rhs_integration = mountModel.TryGetIntegrationSkill(rhs_effect, out rhs_Id);
+ if (lhs_integration != rhs_integration)
+ {
+ return -lhs_integration.CompareTo(rhs_integration);
+ }
+ if (lhs_integration && rhs_integration)
+ {
+ return lhs_config.Effect1.CompareTo(rhs_config.Effect1);
+ }
+
+ var lhs_horseInfo = mountModel.GetMountSkillAndItem[lhs];
+ var rhs_horseInfo = mountModel.GetMountSkillAndItem[rhs];
+
+ if (lhs_horseInfo.HorseID != rhs_horseInfo.HorseID)
+ {
+ return lhs_horseInfo.HorseID.CompareTo(rhs_horseInfo.HorseID);
+ }
+
+ if (lhs_horseInfo.HorseLV.CompareTo(rhs_horseInfo.HorseLV) != 0)
+ {
+ return lhs_horseInfo.HorseLV.CompareTo(rhs_horseInfo.HorseLV);
+ }
+ return 0;
}
[Serializable]
@@ -244,8 +300,9 @@
{
var config = HorseConfig.Get(horseId);
var skillConfig = SkillConfig.Get(skillId);
- SkillDetails.ShowSkillDetails(skillId, SkillDetails.SkillSourceType.ViewHorsePet, skillConfig == null ? 0 : skillConfig.FightPower,
- Language.Get("pet_SkillTipLv", config.Name, HorseUpConfig.GetSkillCondition(horseId, skillId)));
+ var label1 = skillConfig.Description;
+ var label2 = Language.Get("pet_SkillTipLv", config.Name, HorseUpConfig.GetSkillCondition(horseId, skillId));
+ SkillDetails.ShowSkillDetails(skillId, SkillDetails.SkillSourceType.ViewHorsePet, skillConfig.FightPower, label1, label2);
}
public void SetActive(bool active)
diff --git a/System/RoleParticulars/ViewHorseSkillCell.cs b/System/RoleParticulars/ViewHorseSkillCell.cs
index 5ebc937..a352dbc 100644
--- a/System/RoleParticulars/ViewHorseSkillCell.cs
+++ b/System/RoleParticulars/ViewHorseSkillCell.cs
@@ -8,6 +8,8 @@
{
[SerializeField] SkillBehaviour[] m_Skills;
+ MountModel model { get { return ModelCenter.Instance.GetModel<MountModel>(); } }
+
ViewHorseDetailWin displayWindow;
public void Display(int line, ViewHorseDetailWin win)
{
@@ -15,10 +17,10 @@
for (int i = 0; i < displayWindow.lineCount; i++)
{
var index = line * displayWindow.lineCount + i;
- if (index < displayWindow.activeSkills.Count)
+ if (index < displayWindow.displayTotalSkills.Count)
{
m_Skills[i].gameObject.SetActive(true);
- m_Skills[i].Display(displayWindow.activeSkills[index]);
+ m_Skills[i].Display(displayWindow.displayTotalSkills[index]);
m_Skills[i].onClick -= OnSkillClick;
m_Skills[i].onClick += OnSkillClick;
}
@@ -32,13 +34,41 @@
public void OnSkillClick(int skillId)
{
- int horseId = 0;
- if (HorseUpConfig.TryGetHorseBySkill(skillId, out horseId))
+ var skillConfig = SkillConfig.Get(skillId);
+
+ if (model.GetMountSkillAndItem.ContainsKey(skillId))
{
+ int horseId = model.GetMountSkillAndItem[skillId].HorseID;
var config = HorseConfig.Get(horseId);
- var skillConfig = SkillConfig.Get(skillId);
- SkillDetails.ShowSkillDetails(skillId, SkillDetails.SkillSourceType.ViewHorsePet, skillConfig == null ? 0 : skillConfig.FightPower,
- Language.Get("pet_SkillTipLv", config.Name, HorseUpConfig.GetSkillCondition(horseId, skillId)));
+ var label1 = skillConfig.Description;
+ var label2 = Language.Get("pet_SkillTipLv", config.Name, model.GetSkillUnlockLevel(skillId));
+ SkillDetails.ShowSkillDetails(skillId, SkillDetails.SkillSourceType.ViewHorsePet,
+ skillConfig == null ? 0 : skillConfig.FightPower, label1, label2);
+ }
+ else
+ {
+ List<int> skills;
+ var value = 0;
+ var fightPower = 0;
+
+ var effect = SkillConfig.GetSkillEffectValue(skillConfig);
+
+ if (model.TryGetHorseSkills(effect, out skills))
+ {
+ foreach (var id in skills)
+ {
+ if (displayWindow.unlockTotalSkills.Contains(id))
+ {
+ var config = SkillConfig.Get(id);
+ value += config.EffectValue11;
+ fightPower += config.FightPower;
+ }
+ }
+ }
+ var label1 = string.Format(skillConfig.Description, value);
+ var label2 = string.Empty;
+ SkillDetails.ShowSkillDetails(skillId, SkillDetails.SkillSourceType.ViewHorsePet,
+ fightPower, label1, label2);
}
}
}
diff --git a/System/RoleParticulars/ViewPetDetailWin.cs b/System/RoleParticulars/ViewPetDetailWin.cs
index c46e39c..4fe7043 100644
--- a/System/RoleParticulars/ViewPetDetailWin.cs
+++ b/System/RoleParticulars/ViewPetDetailWin.cs
@@ -150,7 +150,8 @@
{
var config = SkillConfig.Get(id);
var skillId = 0;
- if (petModel.TryGetIntegrationSkill(config.Effect1, out skillId))
+ var effect = SkillConfig.GetSkillEffectValue(config);
+ if (petModel.TryGetIntegrationSkill(effect, out skillId))
{
if (!displayTotalSkills.Contains(skillId))
{
@@ -213,8 +214,10 @@
var rhs_config = SkillConfig.Get(rhs);
var lhs_Id = 0;
var rhs_Id = 0;
- var lhs_integration = petModel.TryGetIntegrationSkill(lhs_config.Effect1, out lhs_Id);
- var rhs_integration = petModel.TryGetIntegrationSkill(rhs_config.Effect1, out rhs_Id);
+ var lhs_effect = SkillConfig.GetSkillEffectValue(lhs_config);
+ var rhs_effect = SkillConfig.GetSkillEffectValue(rhs_config);
+ var lhs_integration = petModel.TryGetIntegrationSkill(lhs_effect, out lhs_Id);
+ var rhs_integration = petModel.TryGetIntegrationSkill(rhs_effect, out rhs_Id);
if (lhs_integration != rhs_integration)
{
return -lhs_integration.CompareTo(rhs_integration);
diff --git a/System/RoleParticulars/ViewPetSkillCell.cs b/System/RoleParticulars/ViewPetSkillCell.cs
index cb0ea0b..2557fae 100644
--- a/System/RoleParticulars/ViewPetSkillCell.cs
+++ b/System/RoleParticulars/ViewPetSkillCell.cs
@@ -55,7 +55,8 @@
var value = 0;
var fightPower = 0;
- if (model.TryGetPetSkills(skillConfig.Effect1, out skills))
+ var effect = SkillConfig.GetSkillEffectValue(skillConfig);
+ if (model.TryGetPetSkills(effect, out skills))
{
foreach (var id in skills)
{
--
Gitblit v1.8.0