using System; using System.Collections.Generic; using UnityEngine; namespace vnxbqy.UI { public static class ActivateShow { public static ActivateFunc activateType { get; private set; } public static List propertyCompares = new List(); public static int fightPower { get; private set; } public static string titleIconKey { get; private set; } public static List skills = new List(); public static int currentLv { get; private set; } public static int beforeLv { get; private set; } public static int godWeaponType { get; private set; } public static int godWeaponStage { get; private set; } public static int treasureSoulId { get; private set; } private static Dictionary lastPropertyDict = new Dictionary(); private static Dictionary currentPropertyDict = new Dictionary(); public static event Action prepareFlySkillEvent; public static event Action complelteFlySkillEvent; public static void RealmActivate(int _lv) { activateType = ActivateFunc.Realm; propertyCompares.Clear(); currentPropertyDict.Clear(); lastPropertyDict.Clear(); beforeLv = _lv - 1; currentLv = _lv; var _beforeConfig = RealmConfig.Get(_lv - 1); List _beforeProperties = new List(); if (_beforeConfig != null) { _beforeProperties.AddRange(_beforeConfig.AddAttrType); for (int i = 0; i < _beforeConfig.AddAttrType.Length; i++) { lastPropertyDict.Add(_beforeConfig.AddAttrType[i], _beforeConfig.AddAttrNum[i]); } } var config = RealmConfig.Get(_lv); for (int i = 0; i < config.AddAttrType.Length; i++) { var _index = _beforeProperties.IndexOf(config.AddAttrType[i]); if (_index == -1 || config.AddAttrNum[i] > _beforeConfig.AddAttrNum[_index]) { propertyCompares.Add(new PropertyCompare() { key = config.AddAttrType[i], beforeValue = _index == -1 ? 0 : _beforeConfig.AddAttrNum[_index], currentValue = config.AddAttrNum[i] }); } currentPropertyDict.Add(config.AddAttrType[i], config.AddAttrNum[i]); } fightPower = UIHelper.GetFightPower(currentPropertyDict) - UIHelper.GetFightPower(lastPropertyDict); titleIconKey = "UI_JH_3"; if (!WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Open(); } } public static void GodWeaponActivate(int _type, int _lv, int _beforeLv) { activateType = ActivateFunc.GodWeapon; currentLv = _lv; godWeaponType = _type; beforeLv = _beforeLv; skills.Clear(); propertyCompares.Clear(); lastPropertyDict.Clear(); currentPropertyDict.Clear(); var _model = ModelCenter.Instance.GetModel(); if (_model.godWeaponSkillDict.ContainsKey(_type)) { var _dict = _model.godWeaponSkillDict[_type]; var _skillid = 0; if (_beforeLv == 0) { foreach (var _key in _dict.Keys) { skills.Add(_dict[_key]); } } else if (_model.TryGetUnlockSkill(godWeaponType, _beforeLv, _lv, out _skillid)) { skills.Add(_skillid); } } var _beforeConfig = GodWeaponConfig.GetConfig(_type, _beforeLv); List _beforeProperties = new List(); if (_beforeConfig != null) { _beforeProperties.AddRange(_beforeConfig.AttrType); for (int i = 0; i < _beforeConfig.AttrType.Length; i++) { lastPropertyDict.Add(_beforeConfig.AttrType[i], _beforeConfig.AttrNum[i]); } } var config = GodWeaponConfig.GetConfig(_type, currentLv); for (int i = 0; i < config.AttrType.Length; i++) { var _index = _beforeProperties.IndexOf(config.AttrType[i]); if (_index == -1 || config.AttrNum[i] > _beforeConfig.AttrNum[_index]) { propertyCompares.Add(new PropertyCompare() { key = config.AttrType[i], beforeValue = _index == -1 ? 0 : _beforeConfig.AttrNum[_index], currentValue = config.AttrNum[i] }); } currentPropertyDict.Add(config.AttrType[i], config.AttrNum[i]); } fightPower = UIHelper.GetFightPower(currentPropertyDict) - UIHelper.GetFightPower(lastPropertyDict); if (_beforeLv != 0) { for (int i = 0; i < skills.Count; i++) { var skillConfig = SkillConfig.Get(skills[i]); fightPower += skillConfig.FightPower; } } titleIconKey = _beforeLv == 0 ? "UI_JH_12" : "UI_JH_6"; if (_beforeLv == 0) { var exteriorPower = 0; if (_model.TryGetExteriorPower(_type, out exteriorPower)) { fightPower += exteriorPower; } } if (!WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Open(); } } public static void JadeDynastySkillUnlock(int skillId) { activateType = ActivateFunc.JadeDynastySkill; skills.Clear(); fightPower = 0; skills.Add(skillId); titleIconKey = "UI_JH_6"; var config = SkillConfig.Get(skillId); if (config != null) { fightPower = config.FightPower; } if (!WindowCenter.Instance.IsOpen()) { WindowCenter.Instance.Open(); } } public static void PrepareSkillFly() { if (prepareFlySkillEvent != null) { prepareFlySkillEvent(activateType, skills.Count > 0 ? skills[0] : 0); } } public static void CompleteSkillFly() { if (complelteFlySkillEvent != null) { complelteFlySkillEvent(activateType); } } public enum ActivateFunc { Realm, GodWeapon, Stove, //炼丹炉升级 JadeDynastySkill, } public struct PropertyCompare { public int key; public int beforeValue; public int currentValue; } } }