using System; using System.Collections; using System.Collections.Generic; using System.Text; using LitJson; using UnityEngine; public class AutoFightModel : GameSystemManager { //战斗倍数:值越大越快,影响战斗表现,掉落速度等 public int fightSpeed { get { int value = QuickSetting.Instance.GetQuickSettingValue(QuickSettingType.AutoFight_Speed, 0); return Math.Min(Math.Max(value, 1), maxSpeed); } set { QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_Speed, value); } } //消耗倍数 public int fightCost { get { int value = QuickSetting.Instance.GetQuickSettingValue(QuickSettingType.AutoFight_Cost, 0); return Math.Min(Math.Max(value, 1), maxCost); } set { QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_Cost, value); } } //自动模式, 真正点击战锤消耗开启,和休息(或无材料)停止 public bool isAutoAttack = false; //是否开启自动战斗设置 public bool isAutoAttackSet { get { return QuickSetting.Instance.GetQuickSettingBool(QuickSettingType.AutoFight_Open, 0); } set { QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_Open, value); } } //更好装备停止战斗 public bool isStopFightByBetterEquip { get { return QuickSetting.Instance.GetQuickSettingBool(QuickSettingType.AutoFight_FightPower, 0); } set { QuickSetting.Instance.SetQuickSetting(QuickSettingType.AutoFight_FightPower, value); } } public event Action ChangeAutoEvent; public int maxSpeed = 3; //最高速度 public int maxCost; //最高消耗 public int[] autoCostWithBlessLV; //自动战斗消耗倍数关联祝福等级 public int speed2UnlockMissionID; public int speed3UnlockCTGID; public override void Init() { ParseConfig(); DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent += OnPlayerLoginOk; } public override void Release() { DTC0403_tagPlayerLoginLoadOK.playerLoginOkEvent -= OnPlayerLoginOk; } void ParseConfig() { var config = FuncConfigConfig.Get("AutoGuaji"); autoCostWithBlessLV = JsonMapper.ToObject(config.Numerical1); speed2UnlockMissionID = int.Parse(config.Numerical2); speed3UnlockCTGID = int.Parse(config.Numerical3); maxCost = autoCostWithBlessLV.Length; } void OnPlayerLoginOk() { //登录时有装备的处理 } public void SaveAutoFightSetting() { QuickSetting.Instance.SendPackage(); ChangeAutoEvent?.Invoke(); } //自动处理装备,需要等待穿戴返回false,其他情况返回true public bool TryAutoFightDoEquip(ItemModel item) { if (!isAutoAttack) return false; if (item == null) return true; long showFightPower = FightPowerManager.Instance.GetFightPowerChange(item); if (showFightPower < 0) { EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)item.gridIndex }, 1); return true; } else { if (isStopFightByBetterEquip) return false; EquipModel.Instance.SendEquipOP(new ushort[] { (ushort)item.gridIndex }, 1); return true; } } }