2025-05-18 01:04:31 +08:00

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
}
}