using System; using UnityEngine; using UnityEngine.UI; public class AutoFightWin : UIBase { [SerializeField] Button autoStartBtn; [SerializeField] GameObject usingAutoObj; [SerializeField] Button autoStopBtn; [SerializeField] Button autoSaveBtn; [SerializeField] Button changeCostBtn; [SerializeField] Image costArrow; [SerializeField] Text costText; [SerializeField] Text costTip; [SerializeField] ScrollerController costScroll; [SerializeField] Button changeSpeedBtn; [SerializeField] Text speedText; [SerializeField] Image speedArrow; [SerializeField] ScrollerController speedScroll; [SerializeField] Toggle betterEquipToggle; [SerializeField] Toggle autoChangeBetterEquipToggle; // 自动替换高战力装备 [SerializeField] Toggle autoChallengeBossToggle; [SerializeField] Button tryChallengeBtn; [SerializeField] Text tryChallengeText; [SerializeField] Image tryChallengeArrow; [SerializeField] ScrollerController tryChallengeScroll; [SerializeField] Button tryChallengeTipBtn; [SerializeField] Toggle autoFinishTaskToggle; [SerializeField] Button autoFinishTaskTipBtn; [SerializeField] Button recordBtn; bool isOpenCostScroll = false; bool isOpenSpeedScroll = false; bool isOpenTryChallengeScroll = false; protected override void InitComponent() { autoStartBtn.AddListener(OnClickAutoStart); autoStopBtn.AddListener(OnClickAutoStop); autoSaveBtn.AddListener(OnClickAutoStart); tryChallengeTipBtn.AddListener(() => { DislayTip("AutoFight15", tryChallengeTipBtn.transform.position); }); autoFinishTaskTipBtn.AddListener(() => { DislayTip("AutoFight16", autoFinishTaskTipBtn.transform.position); }); changeCostBtn.AddListener(() => { isOpenCostScroll = !isOpenCostScroll; costScroll.SetActive(isOpenCostScroll); costArrow.transform.localRotation = Quaternion.Euler(0, 0, isOpenCostScroll ? 180 : 0); AutoFightModel.Instance.ClickCostRed(); }); changeSpeedBtn.AddListener(() => { isOpenSpeedScroll = !isOpenSpeedScroll; speedScroll.SetActive(isOpenSpeedScroll); speedArrow.transform.localRotation = Quaternion.Euler(0, 0, isOpenSpeedScroll ? 180 : 0); AutoFightModel.Instance.ClickSpeedRed(); }); tryChallengeBtn.AddListener(() => { isOpenTryChallengeScroll = !isOpenTryChallengeScroll; tryChallengeScroll.SetActive(isOpenTryChallengeScroll); tryChallengeArrow.transform.localRotation = Quaternion.Euler(0, 0, isOpenTryChallengeScroll ? 180 : 0); AutoFightModel.Instance.ClickSpeedRed(); }); betterEquipToggle.AddListener((bool value) => { betterEquipToggle.isOn = value; //取消勾选时,取消自动替换高战力装备的选项 if (!value) { autoChangeBetterEquipToggle.isOn = false; } }); autoChangeBetterEquipToggle.AddListener((bool value) => { autoChangeBetterEquipToggle.isOn = value; //勾选时,勾选装备战力提升时停止的选项 if (value) { betterEquipToggle.isOn = true; } }); autoChallengeBossToggle.AddListener((bool value) => { if (!IsOpenTryChallenge()) { SysNotifyMgr.Instance.ShowTip("autofight5", AutoFightModel.Instance.openAutoChallengeBossCond / 100, AutoFightModel.Instance.openAutoChallengeBossCond % 100); autoChallengeBossToggle.SetIsOnWithoutNotify(false); return; } autoChallengeBossToggle.isOn = value; }); autoFinishTaskToggle.AddListener((bool value) => { if (!IsOpenAutoFinishTask()) { SysNotifyMgr.Instance.ShowTip("autofight4", AutoFightModel.Instance.openAutoFinishCond); autoFinishTaskToggle.SetIsOnWithoutNotify(false); return; } autoFinishTaskToggle.isOn = value; }); costScroll.GetComponent().AddListener(() => { isOpenCostScroll = false; costArrow.transform.localRotation = Quaternion.Euler(0, 0, 0); }); speedScroll.GetComponent().AddListener(() => { isOpenSpeedScroll = false; speedArrow.transform.localRotation = Quaternion.Euler(0, 0, 0); }); tryChallengeScroll.GetComponent().AddListener(() => { isOpenTryChallengeScroll = false; tryChallengeArrow.transform.localRotation = Quaternion.Euler(0, 0, 0); }); recordBtn.SetListener(() => { UIManager.Instance.OpenWindow(); }); } protected override void OnPreOpen() { costScroll.OnRefreshCell += OnRefreshCostCell; speedScroll.OnRefreshCell += OnRefreshSpeedCell; tryChallengeScroll.OnRefreshCell += OnRefreshTryChallengeCell; Display(); } protected override void OnPreClose() { costScroll.OnRefreshCell -= OnRefreshCostCell; speedScroll.OnRefreshCell -= OnRefreshSpeedCell; tryChallengeScroll.OnRefreshCell -= OnRefreshTryChallengeCell; } bool IsOpenTryChallenge() { return PlayerDatas.Instance.baseData.ExAttr1 / 100 > AutoFightModel.Instance.openAutoChallengeBossCond; } bool IsOpenAutoFinishTask() { return BlessLVManager.Instance.m_TreeLV >= AutoFightModel.Instance.openAutoFinishCond; } void DislayTip(string key, Vector3 worldPos) { SmallTipWin.showText = Language.Get(key); SmallTipWin.worldPos = worldPos; SmallTipWin.isDownShow = false; UIManager.Instance.OpenWindow(); } void Display() { costText.text = AutoFightModel.Instance.fightCost.ToString(); speedText.text = AutoFightModel.Instance.fightSpeed.ToString(); tryChallengeText.text = AutoFightModel.Instance.tryChallengeCount.ToString(); betterEquipToggle.isOn = AutoFightModel.Instance.isStopFightByBetterEquip; autoChangeBetterEquipToggle.isOn = AutoFightModel.Instance.isAutoChangeBetterEquip; autoChallengeBossToggle.isOn = AutoFightModel.Instance.isAutoChallengeBoss; autoFinishTaskToggle.isOn = AutoFightModel.Instance.isAutoFinishTask; costTip.text = Language.Get("AutoFight2", ItemConfig.Get(GeneralDefine.MoneyDisplayModel[41]).ItemName, AutoFightModel.Instance.fightCost); if (AutoFightModel.Instance.isAutoAttackSet) { usingAutoObj.SetActive(true); autoStartBtn.SetActive(false); } else { usingAutoObj.SetActive(false); autoStartBtn.SetActive(true); } costScroll.SetActive(false); speedScroll.SetActive(false); tryChallengeScroll.SetActive(false); costArrow.transform.localRotation = Quaternion.Euler(0, 0, 0); speedArrow.transform.localRotation = Quaternion.Euler(0, 0, 0); tryChallengeArrow.transform.localRotation = Quaternion.Euler(0, 0, 0); CreateCostScroll(); CreateSpeedScroll(); CreateTryChallengeScroll(); } void CreateCostScroll() { costScroll.Refresh(); for (int i = 0; i < AutoFightModel.Instance.maxCost; i++) { costScroll.AddCell(ScrollerDataType.Header, i + 1); } costScroll.Restart(); if (BlessLVManager.Instance.m_TreeLV >= AutoFightModel.Instance.autoCostWithBlessLV[Math.Min(AutoFightModel.Instance.autoCostWithBlessLV.Length - 1, 2)]) { costScroll.JumpIndex(2); } } void CreateSpeedScroll() { speedScroll.Refresh(); for (int i = 0; i < AutoFightModel.Instance.maxSpeed; i++) { speedScroll.AddCell(ScrollerDataType.Header, i + 1); } speedScroll.Restart(); } void CreateTryChallengeScroll() { tryChallengeScroll.Refresh(); for (int i = 0; i < AutoFightModel.Instance.maxTryChallengeCount; i++) { tryChallengeScroll.AddCell(ScrollerDataType.Header, i + 1); } tryChallengeScroll.Restart(); } void OnRefreshCostCell(ScrollerDataType type, CellView cell) { var btn = cell.GetComponent