using System; using System.Collections.Generic; using System.Linq; using UnityEngine; using UnityEngine.UI; public class MinggeAutoSetWin : UIBase { [SerializeField] ScrollRect scrollRect; [SerializeField] GroupButtonEx[] presetBtns; List presetNameTexts = new List(); [SerializeField] Button selectQualityBtn; //品质选择 [SerializeField] Text qualityText; [SerializeField] ScrollerController qualityScroller; [SerializeField] Toggle startToggle; [SerializeField] Toggle fightPowerToggle; //战斗力 [SerializeField] Toggle andFPToggle; [SerializeField] Toggle orFPToggle; [SerializeField] Toggle attrToggle; //属性 [SerializeField] Button fightAttrBtn; //六大战斗属性 + 先手 [SerializeField] Text fightAttrText; [SerializeField] ScrollerController fightAttrScroller; [SerializeField] Button deFightAttrBtn; //六大战斗抗性属性 [SerializeField] Text deFightAttrText; [SerializeField] ScrollerController deFightAttrScroller; [SerializeField] Toggle skillToggle; //技能 [SerializeField] Button skillBtn; [SerializeField] Text skillText; [SerializeField] ScrollerController skillScroller; [SerializeField] Toggle andSkillToggle; [SerializeField] Toggle orSkillToggle; [SerializeField] Toggle useMoreItemToggle; //使用更多物品 不勾选默认消耗1个 [SerializeField] Button useMoreItemBtn; [SerializeField] Text useMoreItemText; [SerializeField] ScrollerController useMoreItemScroller; [SerializeField] Text itemNameText; [SerializeField] Toggle speedUPToggle; //加速 特效播放加速 [SerializeField] Button startBtn; [SerializeField] Button cancelBtn; MinggeAutoSet autoSetData; int selectPresetID = 0; protected override void InitComponent() { presetNameTexts.Clear(); for (int i = 0; i < presetBtns.Length; i++) { int index = i + 1; presetBtns[i].AddListener(() => { selectPresetID = index; Display(); }); presetNameTexts.Add(presetBtns[i].GetComponentInChildren()); } selectQualityBtn.AddListener(() => { qualityScroller.SetActive(true); }); startToggle.onValueChanged.AddListener((bool isOn) => { ClickStartToggle(isOn); }); fightPowerToggle.onValueChanged.AddListener((bool isOn) => { autoSetData.fightPowerToggle = isOn; FixAndOrFBToggle(); FixAndOrSkillToggle(); }); andFPToggle.onValueChanged.AddListener((bool isOn) => { ClickAndOrFPToggle(isOn); }); orFPToggle.onValueChanged.AddListener((bool isOn) => { ClickAndOrFPToggle(isOn); }); attrToggle.onValueChanged.AddListener((bool isOn) => { autoSetData.fightAttrToggle = isOn; FixAndOrFBToggle(); FixAndOrSkillToggle(); }); fightAttrBtn.AddListener(() => { fightAttrScroller.SetActive(true); }); deFightAttrBtn.AddListener(() => { deFightAttrScroller.SetActive(true); }); skillToggle.onValueChanged.AddListener((bool isOn) => { autoSetData.skillToggle = isOn; FixAndOrFBToggle(); FixAndOrSkillToggle(); }); skillBtn.AddListener(() => { skillScroller.SetActive(true); }); andSkillToggle.onValueChanged.AddListener((bool isOn) => { ClickAndOrSkillToggle(isOn); }); orSkillToggle.onValueChanged.AddListener((bool isOn) => { ClickAndOrSkillToggle(isOn); }); useMoreItemToggle.onValueChanged.AddListener((bool isOn) => { MinggeManager.Instance.autoCostToggle = isOn; }); useMoreItemBtn.AddListener(() => { useMoreItemScroller.SetActive(true); }); speedUPToggle.onValueChanged.AddListener((bool isOn) => { if (!InvestModel.Instance.IsInvested(InvestModel.monthCardType)) { speedUPToggle.SetIsOnWithoutNotify(false); SysNotifyMgr.Instance.ShowTip("MinggeAuto5"); UIManager.Instance.OpenWindow(); return; } MinggeManager.Instance.autoSpeedUP = isOn; }); startBtn.AddListener(() => { if (!MinggeManager.Instance.qlNotNotify && PackManager.Instance.GetItemCountByID(PackType.Item, MinggeManager.Instance.qlItemID) > 0) { ConfirmCancel.ToggleConfirmCancel( Language.Get("L1003"), Language.Get("Mingge31"), Language.Get("TianziBillborad08"), Language.Get("Mingge35"), Language.Get("Mingge34"), (bool isOK, bool isToggle) => { if (isOK) { CloseWindow(); UIManager.Instance.OpenWindow(); } else { MinggeManager.Instance.StartAuto(true); } MinggeManager.Instance.qlNotNotify = isToggle; }, false ); return; } MinggeManager.Instance.StartAuto(true); }); cancelBtn.AddListener(() => { MinggeManager.Instance.StartAuto(false); cancelBtn.SetActive(false); startBtn.SetActive(true); }); } protected override void OnPreOpen() { selectPresetID = FuncPresetManager.Instance.GetFuncPresetID((int)FuncPresetType.Mingge); if (MinggeManager.Instance.isStartAuto) { MinggeManager.Instance.isPauseAuto = true; SysNotifyMgr.Instance.ShowTip("MinggeAuto4"); } qualityScroller.OnRefreshCell += OnRefreshQualityCell; fightAttrScroller.OnRefreshCell += OnRefreshFightAttrCell; deFightAttrScroller.OnRefreshCell += OnRefreshDeFightAttrCell; skillScroller.OnRefreshCell += OnRefreshSkillCell; useMoreItemScroller.OnRefreshCell += OnRefreshUseMoreItemCell; CreateScroller(); DisplayPresetBtns(); Display(); } protected override void OnPreClose() { MinggeManager.Instance.isPauseAuto = false; if (MinggeManager.Instance.isStartAuto) { SysNotifyMgr.Instance.ShowTip("MinggeAuto3"); MinggeManager.Instance.CalcEquip(); } qualityScroller.OnRefreshCell -= OnRefreshQualityCell; fightAttrScroller.OnRefreshCell -= OnRefreshFightAttrCell; deFightAttrScroller.OnRefreshCell -= OnRefreshDeFightAttrCell; skillScroller.OnRefreshCell -= OnRefreshSkillCell; useMoreItemScroller.OnRefreshCell -= OnRefreshUseMoreItemCell; } public void Display() { autoSetData = MinggeManager.Instance.GetMGAutoSet(selectPresetID); if (autoSetData == null) { return; } string qualityName = Language.Get("L1039", MGGuayuQualityConfig.Get(autoSetData.quanlity).ColorName); qualityText.text = Language.Get("Mingge30", UIHelper.AppendColor(autoSetData.quanlity, qualityName, true, 2)); startToggle.SetIsOnWithoutNotify(autoSetData.startToggle); fightPowerToggle.SetIsOnWithoutNotify(autoSetData.fightPowerToggle); andFPToggle.SetIsOnWithoutNotify(autoSetData.andOrFPToggle == 1); orFPToggle.SetIsOnWithoutNotify(autoSetData.andOrFPToggle == 2); attrToggle.SetIsOnWithoutNotify(autoSetData.fightAttrToggle); fightAttrText.text = autoSetData.fightAttrID == 0 ? Language.Get("Mingge33") : PlayerPropertyConfig.Get(autoSetData.fightAttrID).Name; deFightAttrText.text = autoSetData.deFightAttrID == 0 ? Language.Get("Mingge33") : PlayerPropertyConfig.Get(autoSetData.deFightAttrID).Name; skillToggle.SetIsOnWithoutNotify(autoSetData.skillToggle); skillText.text = autoSetData.skillID == 0 ? Language.Get("Mingge33") : Language.Get($"MinggeSkillType_{autoSetData.skillID}"); andSkillToggle.SetIsOnWithoutNotify(autoSetData.andOrSkillToggle == 1); orSkillToggle.SetIsOnWithoutNotify(autoSetData.andOrSkillToggle == 2); useMoreItemToggle.SetIsOnWithoutNotify(MinggeManager.Instance.autoCostToggle); useMoreItemText.text = MinggeManager.Instance.autoCostCount.ToString(); itemNameText.text = ItemConfig.Get(MinggeManager.Instance.tyItemID).ItemName; cancelBtn.SetActive(MinggeManager.Instance.isStartAuto); startBtn.SetActive(!MinggeManager.Instance.isStartAuto); speedUPToggle.SetIsOnWithoutNotify(MinggeManager.Instance.autoSpeedUP); } public void DisplayPresetBtns() { var cnt = FuncPresetManager.Instance.GetUnlockCnt((int)FuncPresetType.Mingge); if (cnt == 1) { cnt = 0; } if (cnt > 0) { scrollRect.SetActive(true); for (int i = 0; i < presetBtns.Length; i++) { if (i < cnt) { presetBtns[i].SetActive(true); presetNameTexts[i].text = FuncPresetManager.Instance.GetFuncPreset((int)FuncPresetType.Mingge, i + 1).PresetName; } else { presetBtns[i].SetActive(false); } } presetBtns[selectPresetID - 1].SelectBtn(); //滚动到 selectPresetID 位置 scrollRect.horizontalNormalizedPosition = selectPresetID < 4 ? 0 : selectPresetID * 1f / cnt; } else { scrollRect.SetActive(false); } } void ClickStartToggle(bool isOn) { autoSetData.startToggle = isOn; if (!isOn) { //检查多方案中至少一个勾选 if (!MinggeManager.Instance.CanChangeStartToFalse(selectPresetID)) { startToggle.SetIsOnWithoutNotify(true); autoSetData.startToggle = true; SysNotifyMgr.Instance.ShowTip("MinggeAuto2"); } } } void ClickAndOrFPToggle(bool isOn) { //只有战斗和其他的激活后才能 勾选 FixAndOrFBToggle(); } void ClickAndOrSkillToggle(bool isOn) { //技能和其他任一激活后才能 勾选 FixAndOrSkillToggle(); } void FixAndOrFBToggle() { //只有战斗和属性激活后才能 勾选 //帮取消的情况 if (!fightPowerToggle.isOn || !attrToggle.isOn) { if (andFPToggle.isOn) { andFPToggle.SetIsOnWithoutNotify(false); } if (orFPToggle.isOn) { orFPToggle.SetIsOnWithoutNotify(false); } } //帮勾选的情况,默认勾同时 if (fightPowerToggle.isOn && attrToggle.isOn) { if (!andFPToggle.isOn && !orFPToggle.isOn) { andFPToggle.SetIsOnWithoutNotify(true); } } RefreshAndOrFBToggleValue(); } void FixAndOrSkillToggle() { //技能和其他任一激活后才能 勾选 //帮取消的情况 if (!skillToggle.isOn || (!attrToggle.isOn && !fightPowerToggle.isOn)) { if (andSkillToggle.isOn) { andSkillToggle.SetIsOnWithoutNotify(false); } if (orSkillToggle.isOn) { orSkillToggle.SetIsOnWithoutNotify(false); } } //帮勾选的情况,默认勾同时 if (skillToggle.isOn && (attrToggle.isOn || fightPowerToggle.isOn)) { if (!andSkillToggle.isOn && !orSkillToggle.isOn) { orSkillToggle.SetIsOnWithoutNotify(true); } } RefreshAndOrSkillToggleValue(); } void RefreshAndOrFBToggleValue() { if (andFPToggle.isOn) { autoSetData.andOrFPToggle = 1; } else if (orFPToggle.isOn) { autoSetData.andOrFPToggle = 2; } else { autoSetData.andOrFPToggle = 0; } } void RefreshAndOrSkillToggleValue() { if (andSkillToggle.isOn) { autoSetData.andOrSkillToggle = 1; } else if (orSkillToggle.isOn) { autoSetData.andOrSkillToggle = 2; } else { autoSetData.andOrSkillToggle = 0; } } void CreateScroller() { var rateList = MinggeManager.Instance.GetQLRate(MinggeManager.Instance.m_Lingying); //倒序删除 概率为0的 直到有概率大于0的 for (int i = rateList.Count - 1; i >= 0; i--) { if (rateList[i] == 0) { rateList.RemoveAt(i); } else { break; } } var rect = qualityScroller.GetComponent(); rect.sizeDelta = new Vector2(rect.sizeDelta.x, rateList.Count * 50); qualityScroller.Refresh(); for (int i = 1; i <= rateList.Count; i++) { qualityScroller.AddCell(ScrollerDataType.Header, i); } qualityScroller.Restart(); fightAttrScroller.Refresh(); for (int i = 0; i < MinggeManager.Instance.fightAttrIDList.Length; i++) { fightAttrScroller.AddCell(ScrollerDataType.Header, MinggeManager.Instance.fightAttrIDList[i]); } fightAttrScroller.Restart(); deFightAttrScroller.Refresh(); for (int i = 0; i < MinggeManager.Instance.deFightAttrIDList.Length; i++) { deFightAttrScroller.AddCell(ScrollerDataType.Header, MinggeManager.Instance.deFightAttrIDList[i]); } deFightAttrScroller.Restart(); skillScroller.Refresh(); //特殊处理 需要加上第一个任意 for (int i = 0; i <= MinggeManager.Instance.minggeSkillTypeIDList.Length; i++) { if (i == 0) { skillScroller.AddCell(ScrollerDataType.Header, 0); } else { skillScroller.AddCell(ScrollerDataType.Header, MinggeManager.Instance.minggeSkillTypeIDList[i - 1]); } } skillScroller.Restart(); useMoreItemScroller.Refresh(); for (int i = 0; i < MinggeManager.Instance.autoCostCntList.Length; i++) { useMoreItemScroller.AddCell(ScrollerDataType.Header, MinggeManager.Instance.autoCostCntList[i]); } useMoreItemScroller.Restart(); } void OnRefreshQualityCell(ScrollerDataType type, CellView cell) { var _cell = cell as MinggeAutoSetCell; _cell.Display(1, cell.index, autoSetData, (value) => { qualityScroller.SetActive(false); autoSetData.quanlity = value; string qualityName = Language.Get("L1039", MGGuayuQualityConfig.Get(autoSetData.quanlity).ColorName); qualityText.text = Language.Get("Mingge30", UIHelper.AppendColor(autoSetData.quanlity, qualityName, true, 2)); }); } void OnRefreshFightAttrCell(ScrollerDataType type, CellView cell) { var _cell = cell as MinggeAutoSetCell; _cell.Display(2, cell.index, autoSetData, (value) => { fightAttrScroller.SetActive(false); autoSetData.fightAttrID = value; fightAttrText.text = autoSetData.fightAttrID == 0 ? Language.Get("Mingge33") : PlayerPropertyConfig.Get(autoSetData.fightAttrID).Name; }); } void OnRefreshDeFightAttrCell(ScrollerDataType type, CellView cell) { var _cell = cell as MinggeAutoSetCell; _cell.Display(3, cell.index, autoSetData, (value) => { deFightAttrScroller.SetActive(false); autoSetData.deFightAttrID = value; deFightAttrText.text = autoSetData.deFightAttrID == 0 ? Language.Get("Mingge33") : PlayerPropertyConfig.Get(autoSetData.deFightAttrID).Name; }); } void OnRefreshSkillCell(ScrollerDataType type, CellView cell) { var _cell = cell as MinggeAutoSetCell; _cell.Display(4, cell.index, autoSetData, (value) => { skillScroller.SetActive(false); autoSetData.skillID = value; skillText.text = autoSetData.skillID == 0 ? Language.Get("Mingge33") : Language.Get($"MinggeSkillType_{autoSetData.skillID}"); }); } void OnRefreshUseMoreItemCell(ScrollerDataType type, CellView cell) { var _cell = cell as MinggeAutoSetCell; _cell.Display(5, cell.index, autoSetData, (value) => { useMoreItemScroller.SetActive(false); MinggeManager.Instance.autoCostCount = value; useMoreItemText.text = MinggeManager.Instance.autoCostCount.ToString(); }); } }