// ***********************************************************************
// 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