using System.Collections.Generic; using UnityEngine; using LitJson; using System; using System.Linq; public class MinggeManager : GameSystemManager { public int m_GanwuLV; //感悟等级,从1开始 public int m_GanwuExp; //当前感悟等级经验,每级从0开始 public int m_Lingying; //当前灵应值 public event Action OnMinggeInfoUpdate; public int equipShowPresetID; // 显示装备时,当前的子方案ID public ItemModel selectFloorEquip; public bool waitTYOPPack; public event Action OnOPCallbackEvent; public Dictionary minggeAttrDict = new Dictionary(); public bool qlNotNotify; //配置 public const int TotleEquip = 12; //一套装备的总数 public int[] unlockAttrLVList; //解锁属性所需命格物品等级列表 public int tyItemID; //推演物品ID public int qlItemID; //祈灵物品ID public int[] minggeItemTypeList; //可携带意象的卦玉类型列表 public List minggeSkillEquipPlaceList = new List(); //可携带意象的卦玉类型的装备位置 public int maxSuiteSkillCount; public int[] minggeSkillTypeIDList; //意向效果技能TypeID列表 public int deitemID; //卦玉分解的物品ID public override void Init() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin += OnBeforePlayerDataInitializeRelogin; DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent += OnBeforePlayerDataInitialize; PackManager.Instance.RefreshItemEvent += RefreshItemEvent; DTCA814_tagMCMakeItemAnswer.MakeItemAnswerEvent += OnEquipResult; DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOK; FuncPresetManager.Instance.OnFuncPresetUseDataEvent += OnFuncPresetUseDataEvent; GlobalTimeEvent.Instance.MSEvent += OnMSEvent; FuncOpen.Instance.OnFuncStateChangeEvent += OnFuncStateChangeEvent; ParseConfig(); } public override void Release() { DTC0102_tagCDBPlayer.beforePlayerDataInitializeEventOnRelogin -= OnBeforePlayerDataInitializeRelogin; DTC0102_tagCDBPlayer.beforePlayerDataInitializeEvent -= OnBeforePlayerDataInitialize; PackManager.Instance.RefreshItemEvent -= RefreshItemEvent; DTCA814_tagMCMakeItemAnswer.MakeItemAnswerEvent -= OnEquipResult; DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOK; FuncPresetManager.Instance.OnFuncPresetUseDataEvent -= OnFuncPresetUseDataEvent; GlobalTimeEvent.Instance.MSEvent -= OnMSEvent; FuncOpen.Instance.OnFuncStateChangeEvent -= OnFuncStateChangeEvent; } void ParseConfig() { var config = FuncConfigConfig.Get("MinggeCfg"); unlockAttrLVList = JsonMapper.ToObject(config.Numerical1); tyItemID = int.Parse(config.Numerical2); qlItemID = int.Parse(config.Numerical3); config = FuncConfigConfig.Get("MinggeTY"); deitemID = ConfigParse.GetMultipleStr(config.Numerical1)[0]; minggeItemTypeList = JsonMapper.ToObject(config.Numerical4); minggeSkillTypeIDList = JsonMapper.ToObject(config.Numerical5); config = FuncConfigConfig.Get("MinggeTY2"); fightAttrIDList = JsonMapper.ToObject(config.Numerical1); deFightAttrIDList = JsonMapper.ToObject(config.Numerical2); autoCostCntList = JsonMapper.ToObject(config.Numerical3); autoTYCDs = JsonMapper.ToObject(config.Numerical4); needOfficialRank = int.Parse(config.Numerical5); for (int i = 0; i < minggeItemTypeList.Length; i++) { minggeSkillEquipPlaceList.Add(MGGuayuTypeConfig.Get(minggeItemTypeList[i]).EquipPlace); } maxSuiteSkillCount = minggeSkillEquipPlaceList.Count; } private void OnBeforePlayerDataInitializeRelogin() { m_GanwuLV = 1; m_GanwuExp = 0; m_Lingying = 0; isStartAuto = false; isPauseAuto = false; qlNotNotify = false; decomposeMGList.Clear(); } private void OnBeforePlayerDataInitialize() { waitTYOPPack = false; } void OnFuncStateChangeEvent(int id) { if (id == (int)FuncOpenEnum.Mingge) { InitAutoSet(); } } void OnPlayerLoginOK() { InitAutoSet(); UpdateRedPoint(); redpointAuto.state = RedPointState.None; isMGEquipUIDecomposeToggle = true; } private void OnEquipResult(HA814_tagMCMakeItemAnswer info) { if (info.MakeType == (int)MakeType.MinggeTY) { waitTYOPPack = false; autoTYTime = Time.time; CalcEquip(); OnOPCallbackEvent?.Invoke(0); } else if (info.MakeType == (int)MakeType.MinggeEquip) { waitTYOPPack = false; autoTYTime = Time.time; CalcEquip(); OnOPCallbackEvent?.Invoke(1); } } void RefreshItemEvent(PackType type, int index, int itemID) { if (type == PackType.Item && (itemID == tyItemID || itemID == qlItemID)) { UpdateRedPoint(); } } //处理未处理的命格 public bool CalcEquip() { var items = PackManager.Instance.GetItems(PackType.MinggeDrop); if (items.IsNullOrEmpty()) { if (UIManager.Instance.IsOpened()) { UIManager.Instance.CloseWindow(); } return false; } Debug.Log("命格掉落背包中的物品数量:" + items.Count); foreach (var item in items) { if (OpenMinggeEquipWin(item)) { //需要玩家处理装备 if (!decomposeMGList.IsNullOrEmpty()) { SendDecompose(decomposeMGList.ToArray()); decomposeMGList.Clear(); } return true; } } //需要玩家处理装备 if (!decomposeMGList.IsNullOrEmpty()) { SendDecompose(decomposeMGList.ToArray()); decomposeMGList.Clear(); } return false; } public void UpdateMinggeInfo(HB132_tagSCMinggeInfo netPack) { var beforeLV = m_GanwuLV; m_GanwuLV = netPack.GanwuLV; m_GanwuExp = (int)netPack.GanwuExp; m_Lingying = (int)netPack.Lingying; if (beforeLV != m_GanwuLV) { UpdateRedPoint(); beforeLV = m_GanwuLV; } OnMinggeInfoUpdate?.Invoke(); } void OnFuncPresetUseDataEvent(int type) { UpdateRedPoint(); } //获取当前在使用方案的技能信息 意向技能类型ID:【物品guid..】 public Dictionary> GetMinggeSkillTypeIDDict() { var presetID = FuncPresetManager.Instance.GetFuncPresetIDByBattleType((int)BattlePreSetType.Story, (int)FuncPresetType.Mingge); var startIndex = (presetID - 1) * TotleEquip;//对应卦玉背包索引 = (套编号-1)*12+装备位-1 var dict = new Dictionary>(); for (int i = 0; i < minggeSkillEquipPlaceList.Count; i++) { var equip = PackManager.Instance.GetItemByIndex(PackType.Mingge, startIndex + minggeSkillEquipPlaceList[i] - 1); var skillID = EquipModel.Instance.GetEquipSkillID(equip); if (skillID == 0) continue; if (dict.ContainsKey(skillID)) { dict[skillID].Add(equip.guid); } else { dict[skillID] = new List() { equip.guid }; } } return dict; } //获取指定方案的技能信息 意向技能类型ID:数量 public Dictionary GetMinggeSkillCountDictByPresetID(int presetID) { var startIndex = (presetID - 1) * TotleEquip;//对应卦玉背包索引 = (套编号-1)*12+装备位-1 var dict = new Dictionary(); for (int i = 0; i < minggeSkillEquipPlaceList.Count; i++) { var equip = PackManager.Instance.GetItemByIndex(PackType.Mingge, startIndex + minggeSkillEquipPlaceList[i] - 1); var skillID = EquipModel.Instance.GetEquipSkillID(equip); if (skillID == 0) continue; if (dict.ContainsKey(skillID)) { dict[skillID] += 1; } else { dict[skillID] = 1; } } return dict; } public bool OpenMinggeEquipWin(ItemModel equip) { if (equip == null) { return false; } if (!DTC0403_tagPlayerLoginLoadOK.finishedLogin) { return false; } //自动处理: 判断分解 和战力高低 和决定是哪个方案下的装备对比 int autoPreseetID; if (!AutoCalcMG(equip, out autoPreseetID)) { return false; } //非自动情况下,默认当前方案 if (autoPreseetID == 0) { equipShowPresetID = FuncPresetManager.Instance.GetFuncPresetIDByBattleType((int)BattlePreSetType.Story, (int)FuncPresetType.Mingge); } else { equipShowPresetID = autoPreseetID; } selectFloorEquip = equip; if (UIManager.Instance.IsOpened()) { if (selectFloorEquip.config.EquipPlace == 0) { Debug.LogError($"配置错误物品 {selectFloorEquip.itemId} 装备位为0"); return true; } if (!UIManager.Instance.IsOpened()) { UIManager.Instance.OpenWindow(); } else { //刷新界面 var win = UIManager.Instance.GetUI(); win.RefreshUI(); } } else { //打开界面 且外部提醒有需要处理的装备,在关闭界面的时候判断重置标识 isPauseAuto = true; redpointAuto.state = RedPointState.Simple; } return true; } public int GetPackIndex(int presetID, int equipPlace) { return (presetID - 1) * TotleEquip + equipPlace - 1;//对应卦玉背包索引 = (套编号-1)*12+装备位-1 } public void SendTY(int count) { // if (CalcEquip()) // { // return; // } // if (waitTYOPPack) // { // return; // } // if (!ItemLogicUtility.CheckItemCount(PackType.Item, tyItemID, count, 2)) // { // return; // } if (waitTYOPPack) { return; } waitTYOPPack = true; var pack = new CB250_tagCSMinggeTuiyan(); pack.Count = (byte)count; GameNetSystem.Instance.SendInfo(pack); } public void SendChangeMingge(int selectMinggePresetID, int dropIndex, bool autodec) { var pack = new CB252_tagCSMinggeEquip(); pack.MGNum = (byte)selectMinggePresetID; pack.Index = (byte)dropIndex; pack.AutoDec = (byte)(autodec ? 1 : 0); GameNetSystem.Instance.SendInfo(pack); autoTYTime = Time.time; waitTYOPPack = true; } public void SendDecompose(byte[] itemIndexList) { var pack = new CB251_tagCSMinggeDecompose(); pack.IndexList = itemIndexList; pack.Count = (byte)itemIndexList.Length; GameNetSystem.Instance.SendInfo(pack); autoTYTime = Time.time; waitTYOPPack = true; } public void RefrehMinggeAttrs() { minggeAttrDict.Clear(); //身上命格属性重置 var minggePresetID = FuncPresetManager.Instance.GetFuncPresetIDByBattleType((int)BattlePreSetType.Story, (int)FuncPresetType.Mingge); var starIndex = (minggePresetID - 1) * TotleEquip; for (int i = starIndex; i < starIndex + TotleEquip; i++) { var equip = PackManager.Instance.GetItemByIndex(PackType.Mingge, i); if (equip == null) { continue; } var fightIDAttrs = EquipModel.Instance.GetEquipFightAttrs(equip); var fightValueAttrs = EquipModel.Instance.GetEquipFightValues(equip); if (fightIDAttrs != null) { for (int j = 0; j < fightIDAttrs.Count; j++) { if (!minggeAttrDict.ContainsKey(fightIDAttrs[j])) { minggeAttrDict[fightIDAttrs[j]] = fightValueAttrs[j]; } else { minggeAttrDict[fightIDAttrs[j]] += fightValueAttrs[j]; } } } } } public List GetQLRate(int value) { var keys = MGLingyingQualityConfig.GetKeys(); keys.Sort(); int littleValue = 0; int bigValue = 0; for (int i = 0; i < keys.Count; i++) { var key = keys[i]; if (value < key) { bigValue = key; littleValue = keys[i - 1]; break; } else if (i == keys.Count - 1 && value >= key) { bigValue = key; littleValue = key; } } var littleRateList = MGLingyingQualityConfig.Get(littleValue).ItemColorWeightList; if (littleValue == bigValue) { return littleRateList.ToList(); } var bigRateList = MGLingyingQualityConfig.Get(bigValue).ItemColorWeightList; //对比下一阶段的灵应值配置,比较同品质的权重差值与两个阶段的灵应差值求出每增加1点灵应对某个品质的权重变化值,变化值可能提升或者降低 var rateList = new List(); for (int i = 0; i < littleRateList.Length; i++) { var littleRateValue = littleRateList[i]; var bigRateValue = bigRateList[i]; var diffRate = littleRateValue + (bigRateValue - littleRateValue) / (float)(bigValue - littleValue) * (value - littleValue); rateList.Add((int)diffRate); } return rateList; } #region 红点 Redpoint tmpRP = new Redpoint(MainRedDot.MainAffairsRedpoint, MainRedDot.RedPoint_Mingge); Redpoint redpointMG = new Redpoint(MainRedDot.RedPoint_Mingge, MainRedDot.RedPoint_Mingge * 10 + 1); Redpoint redpointPray = new Redpoint(MainRedDot.RedPoint_Mingge, MainRedDot.RedPoint_Mingge * 10 + 2); Redpoint redpointPreset = new Redpoint(MainRedDot.RedPoint_Mingge, MainRedDot.RedPoint_Mingge * 10 + 3); public Redpoint redpointAuto = new Redpoint(MainRedDot.RedPoint_Mingge, MainRedDot.RedPoint_Mingge * 10 + 4); void UpdateRedPoint() { redpointMG.state = RedPointState.None; redpointPray.state = RedPointState.None; redpointPreset.state = RedPointState.None; if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Mingge)) { return; } if (PackManager.Instance.GetItemCountByID(PackType.Item, tyItemID) > 0 && !isStartAuto) { redpointMG.state = RedPointState.Simple; } if (PackManager.Instance.GetItemCountByID(PackType.Item, qlItemID) > 0) { redpointPray.state = RedPointState.Simple; } if (FuncPresetManager.Instance.GetNeedShowRedID((int)FuncPresetType.Mingge) != 0) { redpointPreset.state = RedPointState.Simple; } } #endregion #region 自动设置 public int[] fightAttrIDList; public int[] deFightAttrIDList; public int[] autoCostCntList; public float[] autoTYCDs; //秒 public float autoTYTime; public int needOfficialRank; public bool isMGEquipUIDecomposeToggle; //装备对比界面 是否勾选了分解 //公共部分 public bool autoCostToggle { get { return LocalSave.GetBool($"MGCost_{PlayerDatas.Instance.baseData.PlayerID}", false); } set { LocalSave.SetBool($"MGCost_{PlayerDatas.Instance.baseData.PlayerID}", value); } } //勾选后展示用的 public int autoCostCount { get { return LocalSave.GetInt($"MGCostCnt_{PlayerDatas.Instance.baseData.PlayerID}", 1); } set { LocalSave.SetInt($"MGCostCnt_{PlayerDatas.Instance.baseData.PlayerID}", value); } } //实际消耗用的 不勾选的时候默认返回1 public int useAutoCostCnt { get { if (!autoCostToggle) { return 1; } return autoCostCount; } } public bool autoSpeedUP { get { return LocalSave.GetBool($"MGSpeedUP_{PlayerDatas.Instance.baseData.PlayerID}", false); } set { LocalSave.SetBool($"MGSpeedUP_{PlayerDatas.Instance.baseData.PlayerID}", value); } } public event Action ChangeAutoEvent; bool m_IsStartAuto; //是否开启自动 public bool isStartAuto { get { return m_IsStartAuto; } private set { m_IsStartAuto = value; isPauseAuto = false; decomposeMGList.Clear(); UpdateRedPoint(); ChangeAutoEvent?.Invoke(); } } public bool isPauseAuto; //开启的情况下,因为某些原因暂停自动 //每套方案各自的信息 public List autoSetList = new List(); public void InitAutoSet() { autoSetList.Clear(); if (!FuncOpen.Instance.IsFuncOpen((int)FuncOpenEnum.Mingge)) { return; } var maxCnt = PresetUnlockConfig.GetFuncPresetMaxCount((int)FuncPresetType.Mingge); for (int i = 1; i <= maxCnt; i++) { var autoSet = new MinggeAutoSet(); autoSet.presetID = i; autoSetList.Add(autoSet); } } public MinggeAutoSet GetMGAutoSet(int presetID) { for (int i = 0; i < autoSetList.Count; i++) { if (autoSetList[i].presetID == presetID) { return autoSetList[i]; } } return null; } //检查至少要有一个启动中 public bool CanChangeStartToFalse(int presetID) { for (int i = 0; i < autoSetList.Count; i++) { if (autoSetList[i].presetID != presetID && autoSetList[i].startToggle) { return true; } } return false; } public void StartAuto(bool isStart) { if (isStart) { bool canStart = false; for (int i = 0; i < autoSetList.Count; i++) { if (autoSetList[i].startToggle) { canStart = true; } } if (!canStart) { SysNotifyMgr.Instance.ShowTip("MinggeAuto2"); isStartAuto = false; return; } if (!ItemLogicUtility.CheckItemCount(PackType.Item, tyItemID, useAutoCostCnt, 2)) { isStartAuto = false; TimingGiftManager.Instance.TryAddWhenInsufficient(6, PackType.Item, tyItemID, useAutoCostCnt); return; } UIManager.Instance.CloseWindow(); TimingGiftManager.Instance.TryAddWhenExactConsumption(6, PackType.Item, tyItemID, useAutoCostCnt); } isStartAuto = isStart; if (isStartAuto) { //先处理装备一次,后续通过物品包自动处理 CalcEquip(); } else { SysNotifyMgr.Instance.ShowTip("MinggeAuto1"); } } //自动处理装备,返回成功代表需要手动处理装备,其他情况一律返回false如分解 或防范 bool AutoCalcMG(ItemModel mgEquip, out int autoPreseetID) { autoPreseetID = 0; if (mgEquip == null) { return false; } if (!isStartAuto) return true; if (!isMGEquipUIDecomposeToggle && UIManager.Instance.IsOpened()) { //玩家没有勾选装备对比界面的分解, 那么自动不可处理分解 return true; } //优先判断当前方案命格 var curPresetID = FuncPresetManager.Instance.GetFuncPresetID((int)FuncPresetType.Mingge); var autoSet = GetMGAutoSet(curPresetID); if (!CanDecomposeMG(mgEquip, autoSet)) { autoPreseetID = curPresetID; return true; } //判断其他方案 for (int i = 0; i < autoSetList.Count; i++) { if (autoSetList[i].presetID == curPresetID) { continue; } if (!CanDecomposeMG(mgEquip, autoSetList[i])) { autoPreseetID = autoSetList[i].presetID; return true; } } // SendDecompose(new byte[] { (byte)mgEquip.gridIndex }); AddDecomposeMG((byte)mgEquip.gridIndex); return false; } List decomposeMGList = new List(); void AddDecomposeMG(byte index) { if (decomposeMGList.Contains(index)) { return; } decomposeMGList.Add(index); } //单方案判断,未开启的也当作可分解,外层多套判断有一套需要就是需要穿戴 bool CanDecomposeMG(ItemModel mgEquip, MinggeAutoSet autoSet) { if (!autoSet.startToggle) { return true; } if (mgEquip.config.ItemColor < autoSet.quanlity) { //品质不满足 return true; } if (!autoSet.fightPowerToggle && !autoSet.fightAttrToggle && !autoSet.skillToggle) { //都不勾选 return false; } //先判断技能,再判断属性 最后战力(比较消耗) //技能勾选的情况 if (autoSet.skillToggle && !autoSet.fightPowerToggle && !autoSet.fightAttrToggle) { return !IsSkillOK(mgEquip, autoSet); } if (autoSet.skillToggle && autoSet.fightAttrToggle && !autoSet.fightPowerToggle) { if (autoSet.andOrSkillToggle == 1) { return !(IsSkillOK(mgEquip, autoSet) && IsFightAttrOK(mgEquip, autoSet)); } else { return !(IsSkillOK(mgEquip, autoSet) || IsFightAttrOK(mgEquip, autoSet)); } } if (autoSet.skillToggle && autoSet.fightPowerToggle && !autoSet.fightAttrToggle) { if (autoSet.andOrSkillToggle == 1) { return !(IsSkillOK(mgEquip, autoSet) && IsFightPowerOK(mgEquip, autoSet)); } else { return !(IsSkillOK(mgEquip, autoSet) || IsFightPowerOK(mgEquip, autoSet)); } } if (autoSet.skillToggle && autoSet.fightPowerToggle && autoSet.fightAttrToggle) { if (autoSet.andOrSkillToggle == 1 && autoSet.andOrFPToggle == 1) { return !(IsSkillOK(mgEquip, autoSet) && IsFightAttrOK(mgEquip, autoSet) && IsFightPowerOK(mgEquip, autoSet)); } else if (autoSet.andOrSkillToggle == 1 && autoSet.andOrFPToggle == 2) { return !((IsSkillOK(mgEquip, autoSet) && IsFightAttrOK(mgEquip, autoSet)) || IsFightPowerOK(mgEquip, autoSet)); } else if (autoSet.andOrSkillToggle == 2 && autoSet.andOrFPToggle == 1) { return !((IsFightAttrOK(mgEquip, autoSet) && IsFightPowerOK(mgEquip, autoSet)) || IsSkillOK(mgEquip, autoSet)); } else { return !(IsSkillOK(mgEquip, autoSet) || IsFightAttrOK(mgEquip, autoSet) || IsFightPowerOK(mgEquip, autoSet)); } } //属性勾选的情况 if (autoSet.fightAttrToggle && !autoSet.fightPowerToggle) { return !IsFightAttrOK(mgEquip, autoSet); } if (autoSet.fightAttrToggle && autoSet.fightPowerToggle) { if (autoSet.andOrFPToggle == 1) { return !(IsFightAttrOK(mgEquip, autoSet) && IsFightPowerOK(mgEquip, autoSet)); } else { return !(IsFightAttrOK(mgEquip, autoSet) || IsFightPowerOK(mgEquip, autoSet)); } } //战力勾选的情况 if (autoSet.fightPowerToggle) { return !IsFightPowerOK(mgEquip, autoSet); } return false; } //技能是否满足条件 bool IsSkillOK(ItemModel mgEquip, MinggeAutoSet autoSet) { var skillID = EquipModel.Instance.GetEquipSkillID(mgEquip); if (skillID == 0) { return false; } if (autoSet.skillID == 0) { //任意 return true; } if (skillID != autoSet.skillID) { return false; } return true; } //属性是否满足条件 bool IsFightAttrOK(ItemModel mgEquip, MinggeAutoSet autoSet) { var fightAttrs = EquipModel.Instance.GetEquipFightAttrs(mgEquip); // 如果指定了属性,则检查装备是否包含该属性 bool deFightAttrOK = autoSet.deFightAttrID == 0 || fightAttrs.Contains(autoSet.deFightAttrID); bool fightAttrOK = autoSet.fightAttrID == 0 || fightAttrs.Contains(autoSet.fightAttrID); return deFightAttrOK && fightAttrOK; } bool IsFightPowerOK(ItemModel mgEquip, MinggeAutoSet autoSet) { long showFightPower = FightPowerManager.Instance.GetFightPowerMinggeChange(mgEquip, autoSet.presetID); if (showFightPower > 0) { return true; } return false; } public void AutoTY() { //先处理装备,再推演 // 每一套方案都要综合判断 // if (CalcEquip()) // { // return; // } if (UIManager.Instance.IsOpened()) { return; } if (!PackManager.Instance.GetItems(PackType.MinggeDrop).IsNullOrEmpty()) { return; } if (!ItemLogicUtility.CheckItemCount(PackType.Item, tyItemID, useAutoCostCnt, 1)) { isStartAuto = false; SysNotifyMgr.Instance.ShowTip("MinggeAuto1"); TimingGiftManager.Instance.TryAddWhenInsufficient(6, PackType.Item, tyItemID, useAutoCostCnt); return; } TimingGiftManager.Instance.TryAddWhenExactConsumption(6, PackType.Item, tyItemID, useAutoCostCnt); autoTYTime = Time.time; SendTY(useAutoCostCnt); } void OnMSEvent() { if (isPauseAuto) { return; } if (!isStartAuto) { return; } if (Time.time - autoTYTime < autoTYCDs[autoSpeedUP ? 1 : 0]) { if (!waitTYOPPack) { if (UIManager.Instance.IsOpened()) { //显示特效 var ui = UIManager.Instance.GetUI(); if (!ui.tyEffect.isPlaying) { ui.tyEffect.onComplete = null; ui.tyEffect.Play(); if (autoSpeedUP) { ui.tyEffect.SetSpeed(autoTYCDs[0] / autoTYCDs[1]); } else { ui.tyEffect.SetSpeed(1); } } } } return; } AutoTY(); } #endregion } public class MinggeAutoSet { public int presetID; public bool startToggle { get { return LocalSave.GetBool($"MGStart{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", false); } set { LocalSave.SetBool($"MGStart{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", value); } } public int quanlity { get { return LocalSave.GetInt($"MGQuanlity{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", 1); } set { LocalSave.SetInt($"MGQuanlity{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", value); } } public bool fightPowerToggle { get { return LocalSave.GetBool($"MGFightPower{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", false); } set { LocalSave.SetBool($"MGFightPower{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", value); } } //0 都不勾选 1同时 2 或者 public int andOrFPToggle { get { return LocalSave.GetInt($"MGAndOrFP{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", 0); } set { LocalSave.SetInt($"MGAndOrFP{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", value); } } public bool fightAttrToggle { get { return LocalSave.GetBool($"MGFightAttr{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", false); } set { LocalSave.SetBool($"MGFightAttr{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", value); } } public int fightAttrID { get { return LocalSave.GetInt($"MGFightAttrID{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", 0); } set { LocalSave.SetInt($"MGFightAttrID{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", value); } } public int deFightAttrID { get { return LocalSave.GetInt($"MGDeFightAttrID{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", 0); } set { LocalSave.SetInt($"MGDeFightAttrID{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", value); } } public bool skillToggle { get { return LocalSave.GetBool($"MGSkill{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", false); } set { LocalSave.SetBool($"MGSkill{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", value); } } public int skillID { get { return LocalSave.GetInt($"MGSkillID{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", 0); } set { LocalSave.SetInt($"MGSkillID{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", value); } } //0 都不勾选 1同时 2 或者 public int andOrSkillToggle { get { return LocalSave.GetInt($"MGAndOrSkill{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", 0); } set { LocalSave.SetInt($"MGAndOrSkill{presetID}_{PlayerDatas.Instance.baseData.PlayerID}", value); } } }