| | |
| | | using System.Collections.Generic;
|
| | | using Snxxz.UI;
|
| | | using System.Collections.Generic;
|
| | | using System.Threading;
|
| | |
|
| | | public partial class SkillConfig
|
| | |
| | | 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();
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | static void wrapInit8(LuaEnv luaenv, ObjectTranslator translator) |
| | | { |
| | | |
| | | translator.DelayWrapLoader(typeof(PetBackpack), PetBackpackWrap.__Register); |
| | | |
| | | |
| | | translator.DelayWrapLoader(typeof(PetReinforceModel), PetReinforceModelWrap.__Register); |
| | | |
| | | |
| | |
| | | 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(); |
| | |
| | | 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() |
| | |
| | | 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 |
| | | } |
| | |
| | | [SerializeField] UIEffect m_Uieffect3;//经验条特效
|
| | |
|
| | | [SerializeField] Transform GroupSkill;
|
| | | [SerializeField] FunctionUnlockFlyObjectTarget[] flyObjectTargets;
|
| | |
|
| | | [SerializeField] GameObject m_YiJieSuo;//解锁面板
|
| | | [SerializeField] GameObject m_BottomOperate;//关于经验条
|
| | |
| | |
|
| | | MountModel.Event_MountHA301U += OnMountHA301Update;
|
| | | allPetSkillCtrl.OnRefreshCell += RefreshAllMountSkillCell;
|
| | | FlySkillIconWin.FlySkillID += FlySkillID;
|
| | | CreateAllMountSkill();
|
| | | }
|
| | | private void OnDisable()
|
| | |
| | | mount_ID = 0;
|
| | | MountModel.Event_MountHA301U -= OnMountHA301Update;
|
| | | allPetSkillCtrl.OnRefreshCell -= RefreshAllMountSkillCell;
|
| | | FlySkillIconWin.FlySkillID -= FlySkillID;
|
| | | m_MountRawImg.gameObject.SetActive(false);
|
| | | }
|
| | |
|
| | |
| | | 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)
|
| | |
| | | {
|
| | | 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
|
| | | {
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | 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)//是否解锁
|
| | |
| | | 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
|
| | | {
|
| | |
| | | {
|
| | | 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))
|
| | | {
|
| | |
| | | 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);
|
| | |
| | | using Snxxz.UI; |
| | | using System; |
| | | using System; |
| | | using System.Collections; |
| | | using System.Collections.Generic; |
| | | using System.Text.RegularExpressions; |
| | | using UnityEngine; |
| | | [XLua.LuaCallCSharp] |
| | | |
| | | namespace Snxxz.UI
|
| | | {
|
| | | public class PetBackpack//宠物背包 |
| | | { |
| | | public int PetClass;//宠物阶级 |
| | |
| | | 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>();//关于灵兽魂石 |
| | |
| | | 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<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() |
| | |
| | | var skillConfig = SkillConfig.Get(intArray[i]);
|
| | | if (skillConfig != null)
|
| | | {
|
| | | integrationSkills.Add(skillConfig.Effect1, intArray[i]);
|
| | | var effectValue = SkillConfig.GetSkillEffectValue(skillConfig);
|
| | | integrationSkills.Add(effectValue, intArray[i]);
|
| | | }
|
| | | }
|
| | |
|
| | |
| | | for (int i = 0; i < config.SkillID.Length; i++)
|
| | | {
|
| | | var skillConfig = SkillConfig.Get(config.SkillID[i]);
|
| | | if (integrationSkills.ContainsKey(skillConfig.Effect1))
|
| | | var effectValue = SkillConfig.GetSkillEffectValue(skillConfig);
|
| | |
|
| | | if (integrationSkills.ContainsKey(effectValue))
|
| | | {
|
| | | List<int> skills = null;
|
| | | if (!integrationPetSkills.TryGetValue(skillConfig.Effect1, out skills))
|
| | | if (!integrationPetSkills.TryGetValue(effectValue, out skills))
|
| | | {
|
| | | skills = new List<int>();
|
| | | integrationPetSkills.Add(skillConfig.Effect1, skills);
|
| | | integrationPetSkills.Add(effectValue, skills);
|
| | | }
|
| | | skills.Add(config.SkillID[i]);
|
| | | }
|
| | |
|
| | | petSkills.Add(config.SkillID[i], config.ID);
|
| | | petSkillEffectValues.Add(config.SkillID[i], effectValue);
|
| | | }
|
| | | } |
| | | } |
| | |
| | | PlayerLoginOkData(); |
| | | } |
| | | } |
| | |
|
| | | private DateTime dateTimeA; |
| | | private void secondEvent() |
| | | { |
| | |
| | | return petSkills.Keys;
|
| | | } |
| | | |
| | | public bool TryGetIntegrationSkill(int effect, out int skillId)
|
| | | public bool TryGetIntegrationSkill(SkillEffectValue effect, out int skillId)
|
| | | {
|
| | | return integrationSkills.TryGetValue(effect, out skillId);
|
| | | } |
| | | |
| | | public bool TryGetPetSkills(int effect,out List<int> skills)
|
| | | public bool TryGetPetSkills(SkillEffectValue effect, out List<int> skills)
|
| | | {
|
| | | return integrationPetSkills.TryGetValue(effect, out skills);
|
| | | } |
| | |
| | | {
|
| | | return false;
|
| | | }
|
| | | if (integrationPetSkills.ContainsKey(config.Effect1)
|
| | | && !integrationPetSkills[config.Effect1].Contains(skillId))
|
| | | var effect = SkillConfig.GetSkillEffectValue(config);
|
| | |
|
| | | if (integrationPetSkills.ContainsKey(effect)
|
| | | && !integrationPetSkills[effect].Contains(skillId))
|
| | | {
|
| | | var skills = integrationPetSkills[config.Effect1];
|
| | | var skills = integrationPetSkills[effect];
|
| | | foreach (var id in skills)
|
| | | {
|
| | | if (IsSkillUnlock(id))
|
| | |
| | | } |
| | | #endregion |
| | | } |
| | | } |
| | |
| | | [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)
|
| | | {
|
| | |
| | | {
|
| | | 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)
|
| | | {
|
| | |
| | | }
|
| | | break;
|
| | | case SkillType.MountSkill:
|
| | | HorseConfig horseInfo = HorseConfig.Get(petId);
|
| | | if (horseInfo != null)
|
| | | {
|
| | | 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", horseInfo.Name, skillUnlock);
|
| | | 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;
|
| | | }
|
| | | }
|
| | | break;
|
| | | }
|
| | | SkillDetails.ShowSkillDetails(skillId, SkillDetails.SkillSourceType.PetSkill, fightPower, str);
|
| | |
| | |
|
| | | 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()
|
| | | {
|
| | |
| | |
|
| | | 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);
|
| | |
| | | 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]
|
| | |
| | | {
|
| | | 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)
|
| | |
| | | {
|
| | | [SerializeField] SkillBehaviour[] m_Skills;
|
| | |
|
| | | MountModel model { get { return ModelCenter.Instance.GetModel<MountModel>(); } }
|
| | |
|
| | | ViewHorseDetailWin displayWindow;
|
| | | public void Display(int line, ViewHorseDetailWin win)
|
| | | {
|
| | |
| | | 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;
|
| | | }
|
| | |
| | |
|
| | | public void OnSkillClick(int skillId)
|
| | | {
|
| | | int horseId = 0;
|
| | | if (HorseUpConfig.TryGetHorseBySkill(skillId, out 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)));
|
| | |
|
| | | if (model.GetMountSkillAndItem.ContainsKey(skillId))
|
| | | {
|
| | | int horseId = model.GetMountSkillAndItem[skillId].HorseID;
|
| | | var config = HorseConfig.Get(horseId);
|
| | | 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);
|
| | | }
|
| | | }
|
| | | }
|
| | |
| | | {
|
| | | 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))
|
| | | {
|
| | |
| | | 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);
|
| | |
| | | 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)
|
| | | {
|