440 lines
11 KiB
C#
440 lines
11 KiB
C#
// ***********************************************************************
|
|
// Assembly : Game
|
|
// Author : Kimch
|
|
// Created : 2020-11-06
|
|
// Description :
|
|
// Last Modified By :
|
|
// Last Modified On :
|
|
// ***********************************************************************
|
|
// <copyright file= "InputPanel" company="Kunpo"></copyright>
|
|
// <summary></summary>
|
|
// ***********************************************************************
|
|
|
|
using PureMVC.Interfaces;
|
|
using System.Collections.Generic;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.UI;
|
|
|
|
namespace G.UI
|
|
{
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
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
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
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
|
|
|
|
/// <summary>
|
|
///
|
|
/// </summary>
|
|
private void Awake()
|
|
{
|
|
SetViewData();
|
|
|
|
_moveJoystick = _goMoveJoystick.GetComponent<MoveJoystick>();
|
|
|
|
_skillJoystick0 = _goSkillJoystick0.GetComponent<SkillJoystick>();
|
|
_skillJoystick1 = _goSkillJoystick1.GetComponent<SkillJoystick>();
|
|
_skillJoystick2 = _goSkillJoystick2.GetComponent<SkillJoystick>();
|
|
_skillJoystick3 = _goSkillJoystick3.GetComponent<SkillJoystick>();
|
|
_skillJoystick4 = _goSkillJoystick4.GetComponent<SkillJoystick>();
|
|
|
|
_skillBtn0 = _goSkillJoystick0.GetComponent<Button>();
|
|
_skillBtn0.onClick.AddListener(this.OnSkillBtnClick0);
|
|
|
|
_skillBtn1 = _goSkillJoystick1.GetComponent<Button>();
|
|
_skillBtn1.onClick.AddListener(this.OnSkillBtnClick1);
|
|
_skillBtn2 = _goSkillJoystick2.GetComponent<Button>();
|
|
_skillBtn2.onClick.AddListener(this.OnSkillBtnClick2);
|
|
_skillBtn3 = _goSkillJoystick3.GetComponent<Button>();
|
|
_skillBtn3.onClick.AddListener(this.OnSkillBtnClick3);
|
|
_skillBtn4 = _goSkillJoystick4.GetComponent<Button>();
|
|
_skillBtn4.onClick.AddListener(this.OnSkillBtnClick4);
|
|
|
|
_btnAuto.onClick.AddListener(this.OnAutoBtnClick);
|
|
_btnSpeedUp.onClick.AddListener(this.OnSpeedUpBtnClick);
|
|
_btnAutoSkill.onClick.AddListener(this.OnAutoSkillBtnClick);
|
|
|
|
LoadSetting();
|
|
}
|
|
|
|
private void OnEnable()
|
|
{
|
|
RegisterThis();
|
|
UI_Ingame.Instance.joystick = _moveJoystick;
|
|
|
|
_goSkillJoystick0.SetActive(false);
|
|
_goSkillJoystick1.SetActive(false);
|
|
_goSkillJoystick2.SetActive(false);
|
|
_goSkillJoystick3.SetActive(false);
|
|
_goSkillJoystick4.SetActive(false);
|
|
|
|
Refresh();
|
|
}
|
|
|
|
private void OnDisable()
|
|
{
|
|
UnregisterThis();
|
|
}
|
|
|
|
//private void LateUpdate()
|
|
//{
|
|
// int spProgress = Mathf.Clamp((int)(UI_Ingame.Instance.chasp / UI_Ingame.Instance.chamaxsp * 100f), 0, 100);
|
|
// if (spProgress < 100)
|
|
// {
|
|
// _skillBtn0.interactable = false;
|
|
// _goSpMax.SetActive(false);
|
|
// _tmpSpProgress.gameObject.SetActive(true);
|
|
// _tmpSpProgress.text = $"{spProgress}%";
|
|
// _imgSpProgress.fillAmount = spProgress * 0.01f;
|
|
// }
|
|
// else
|
|
// {
|
|
// _skillBtn0.interactable = true;
|
|
// _goSpMax.SetActive(true);
|
|
// _tmpSpProgress.gameObject.SetActive(false);
|
|
// _imgSpProgress.fillAmount = 1f;
|
|
// }
|
|
//}
|
|
|
|
#endregion
|
|
|
|
#region Meditor
|
|
|
|
readonly int[] _notificationInterests = new int[]
|
|
{
|
|
GlobalDefine.EVENT_SKILL_STATE,
|
|
};
|
|
|
|
public override IList<int> ListNotificationInterests()
|
|
{
|
|
return _notificationInterests;
|
|
}
|
|
|
|
public override void HandleNotification(INotification notification)
|
|
{
|
|
if (notification.Name == GlobalDefine.EVENT_SKILL_STATE)
|
|
{
|
|
if (notification.Type == "add_skill")
|
|
{
|
|
if (!_goSkillJoystick1.activeSelf)
|
|
{
|
|
_goSkillJoystick1.SetActive(true);
|
|
_skillBtn1.interactable = true;
|
|
_skillJoystick1.SetBuff((Cha_Moves.MovesInfo)notification.Body);
|
|
}
|
|
else if (!_goSkillJoystick2.activeSelf)
|
|
{
|
|
_goSkillJoystick2.SetActive(true);
|
|
_skillBtn2.interactable = true;
|
|
_skillJoystick2.SetBuff((Cha_Moves.MovesInfo)notification.Body);
|
|
}
|
|
else if (!_goSkillJoystick3.activeSelf)
|
|
{
|
|
_goSkillJoystick3.SetActive(true);
|
|
_skillBtn3.interactable = true;
|
|
_skillJoystick3.SetBuff((Cha_Moves.MovesInfo)notification.Body);
|
|
}
|
|
else if (!_goSkillJoystick4.activeSelf)
|
|
{
|
|
_goSkillJoystick4.SetActive(true);
|
|
_skillBtn4.interactable = true;
|
|
_skillJoystick4.SetBuff((Cha_Moves.MovesInfo)notification.Body);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
#endregion
|
|
}
|
|
}
|