// *********************************************************************** // Assembly : Game // Author : Kimch // Created : 2020-11-06 // Description : // Last Modified By : // Last Modified On : // *********************************************************************** // // // *********************************************************************** using PureMVC.Interfaces; using System.Collections.Generic; using TMPro; using UnityEngine; using UnityEngine.UI; namespace G.UI { /// /// /// public class InputPanel : KUIWidget { #region Field #pragma warning disable CS0649 // 从未对字段赋值,字段将一直保持其默认值 null [KUIFlag] GameObject _goMoveJoystick; [KUIFlag] GameObject _goSkillJoystick0; [KUIFlag] GameObject _goSkillJoystick1; [KUIFlag] GameObject _goSkillJoystick2; [KUIFlag] GameObject _goSkillJoystick3; [KUIFlag] GameObject _goSkillJoystick4; [KUIFlag] Button _btnAuto; [KUIFlag] Button _btnSpeedUp; [KUIFlag] TextMeshProUGUI _tmpSpeed; [KUIFlag] Button _btnAutoSkill; #pragma warning restore CS0649 // 从未对字段赋值,字段将一直保持其默认值 null private MoveJoystick _moveJoystick; private SkillJoystick _skillJoystick0; private SkillJoystick _skillJoystick1; private SkillJoystick _skillJoystick2; private SkillJoystick _skillJoystick3; private SkillJoystick _skillJoystick4; private Button _skillBtn0; private Button _skillBtn1; private Button _skillBtn2; private Button _skillBtn3; private Button _skillBtn4; #endregion #region Property /// /// /// public bool block { get { return LevelProxy.Instance.currentCompletedLevel < 1; } } #endregion #region Method public override void Refresh() { if (!block) { _btnAuto.gameObject.SetActive(true); if (_autoAttack) { EntityMainPlayer.Instance.autoAttack = true; SetAutoBtn(true); } else { SetAutoBtn(false); } } else { _btnAuto.gameObject.SetActive(false); } if (FunctionProxy.Instance.GetFunctionUnlock(FunctionProxy.FunctionId.Vip)) { _btnSpeedUp.gameObject.SetActive(true); float battleSpeed = GlobalVar.BattleSpeed; if (battleSpeed > 1f) { if (_autoSpeedup) GameLevel.Instance.gameSpeed = battleSpeed; SetSpeedUpBtn(GameLevel.Instance.gameSpeed > 1f, true); } else { SetSpeedUpBtn(false, false); } var isOpen = _btnSpeedUp.transform.GetChild(2).gameObject.activeSelf;//新增一键关机开启判断(根据上一级按钮状态判断,非解锁条件判断) _btnAutoSkill.gameObject.SetActive(!isOpen); if (VipProxy.Instance.curVip >= 4) { if (_autoSkill) { EntityMainPlayer.Instance.autoCastSkill = true; SetAutoSkillBtn(true, true); } else { SetAutoSkillBtn(false, true); } } else { SetAutoSkillBtn(false, false); } } else { _btnSpeedUp.gameObject.SetActive(false); _btnAutoSkill.gameObject.SetActive(false); } } private void OnSkillBtnClick0() { UI_Ingame.Instance.OnSkillBtnClick(0); SoundProxy.PlayFxAsync("Sounds/battle_skill_btn.mp3"); } private void OnSkillBtnClick1() { UI_Ingame.Instance.OnSkillBtnClick(_skillJoystick1.GetBuff()); SoundProxy.PlayFxAsync("Sounds/battle_skill_btn.mp3"); } private void OnSkillBtnClick2() { UI_Ingame.Instance.OnSkillBtnClick(_skillJoystick2.GetBuff()); SoundProxy.PlayFxAsync("Sounds/battle_skill_btn.mp3"); } private void OnSkillBtnClick3() { UI_Ingame.Instance.OnSkillBtnClick(_skillJoystick3.GetBuff()); SoundProxy.PlayFxAsync("Sounds/battle_skill_btn.mp3"); } private void OnSkillBtnClick4() { UI_Ingame.Instance.OnSkillBtnClick(_skillJoystick4.GetBuff()); SoundProxy.PlayFxAsync("Sounds/battle_skill_btn.mp3"); } private void OnAutoBtnClick() { var isEnable = UI_Ingame.Instance.OnAutoBtnClick(); SetAutoBtn(isEnable); if (_autoAttack != isEnable) { _autoAttack = isEnable; SaveSetting(); } SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND); } private void SetAutoBtn(bool enable) { var autoT = _btnAuto.transform; autoT.GetChild(0).gameObject.SetActive(enable); autoT.GetChild(1).gameObject.SetActive(!enable); } private void OnAutoSkillBtnClick() { if (VipProxy.Instance.curVip >= 4) { var isEnable = UI_Ingame.Instance.OnAutoSkillBtnClick(); SetAutoSkillBtn(isEnable, true); if (_autoSkill != isEnable) { _autoSkill = isEnable; SaveSetting(); } } else { SetAutoSkillBtn(false, false); ToastBox.ShowText(KLocalization.GetLocalString(35)); } SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND); } private void SetAutoSkillBtn(bool enable, bool unlock) { var autoT = _btnAutoSkill.transform; if (unlock) { autoT.GetChild(0).gameObject.SetActive(enable); autoT.GetChild(1).gameObject.SetActive(!enable); autoT.GetChild(2).gameObject.SetActive(false); } else { autoT.GetChild(0).gameObject.SetActive(false); autoT.GetChild(1).gameObject.SetActive(false); autoT.GetChild(2).gameObject.SetActive(true); } } private void OnSpeedUpBtnClick() { if (GlobalVar.BattleSpeed > 1f) { bool speedup = GameLevel.Instance.gameSpeed > 1f; if (speedup) { GameLevel.Instance.gameSpeed = 1f; SetSpeedUpBtn(false, true); } else { GameLevel.Instance.gameSpeed = GlobalVar.BattleSpeed; SetSpeedUpBtn(true, true); } if (_autoSpeedup == speedup) { _autoSpeedup = !speedup; SaveSetting(); } } else { SetSpeedUpBtn(false, false); ToastBox.ShowText(KLocalization.GetLocalString(20)); } SoundProxy.PlayFxAsync(GlobalDefine.BUTTON_CLICK_SOUND); } private void SetSpeedUpBtn(bool enable, bool unlock) { if (unlock) { var autoT = _btnSpeedUp.transform; autoT.GetChild(0).gameObject.SetActive(enable); autoT.GetChild(1).gameObject.SetActive(!enable); autoT.GetChild(2).gameObject.SetActive(false); if (enable) { if (GlobalVar.BattleSpeed >= 1.75f) _tmpSpeed.text = "x3"; else if (GlobalVar.BattleSpeed >= 1.5f) _tmpSpeed.text = "x2"; else if (GlobalVar.BattleSpeed >= 1.2f) _tmpSpeed.text = "x1"; else _tmpSpeed.text = ""; } else _tmpSpeed.text = ""; } else { var autoT = _btnSpeedUp.transform; autoT.GetChild(0).gameObject.SetActive(false); autoT.GetChild(1).gameObject.SetActive(false); autoT.GetChild(2).gameObject.SetActive(true); } } private bool _autoAttack; private bool _autoSpeedup; private bool _autoSkill; private void LoadSetting() { _autoAttack = PlayerPrefs.GetInt("auto_attack", 0) != 0; _autoSpeedup = PlayerPrefs.GetInt("auto_speed_up", 0) != 0; _autoSkill = PlayerPrefs.GetInt("auto_skill", 0) != 0; } private void SaveSetting() { PlayerPrefs.SetInt("auto_attack", _autoAttack ? 1 : 0); PlayerPrefs.SetInt("auto_speed_up", _autoSpeedup ? 1 : 0); PlayerPrefs.SetInt("auto_skill", _autoSkill ? 1 : 0); PlayerPrefs.Save(); } #endregion #region Unity /// /// /// private void Awake() { SetViewData(); _moveJoystick = _goMoveJoystick.GetComponent(); _skillJoystick0 = _goSkillJoystick0.GetComponent(); _skillJoystick1 = _goSkillJoystick1.GetComponent(); _skillJoystick2 = _goSkillJoystick2.GetComponent(); _skillJoystick3 = _goSkillJoystick3.GetComponent(); _skillJoystick4 = _goSkillJoystick4.GetComponent(); _skillBtn0 = _goSkillJoystick0.GetComponent