summaryrefslogtreecommitdiff
path: root/Valheim_r202102_v0.141.2/Valheim/assembly_guiutils/UIGamePad.cs
diff options
context:
space:
mode:
Diffstat (limited to 'Valheim_r202102_v0.141.2/Valheim/assembly_guiutils/UIGamePad.cs')
-rw-r--r--Valheim_r202102_v0.141.2/Valheim/assembly_guiutils/UIGamePad.cs89
1 files changed, 89 insertions, 0 deletions
diff --git a/Valheim_r202102_v0.141.2/Valheim/assembly_guiutils/UIGamePad.cs b/Valheim_r202102_v0.141.2/Valheim/assembly_guiutils/UIGamePad.cs
new file mode 100644
index 0000000..1bab59e
--- /dev/null
+++ b/Valheim_r202102_v0.141.2/Valheim/assembly_guiutils/UIGamePad.cs
@@ -0,0 +1,89 @@
+using UnityEngine;
+using UnityEngine.UI;
+
+public class UIGamePad : MonoBehaviour
+{
+ public KeyCode m_keyCode;
+
+ public string m_zinputKey;
+
+ public GameObject m_hint;
+
+ private Button m_button;
+
+ private Toggle m_toggle;
+
+ private UIGroupHandler m_group;
+
+ private static int m_lastInteractFrame;
+
+ private void Start()
+ {
+ m_group = GetComponentInParent<UIGroupHandler>();
+ m_button = GetComponent<Button>();
+ m_toggle = GetComponent<Toggle>();
+ if ((bool)m_hint)
+ {
+ m_hint.SetActive(value: false);
+ }
+ }
+
+ private bool IsInteractive()
+ {
+ if (m_button != null && !m_button.IsInteractable())
+ {
+ return false;
+ }
+ if ((bool)m_toggle)
+ {
+ if (!m_toggle.IsInteractable())
+ {
+ return false;
+ }
+ if ((bool)m_toggle.group && !m_toggle.group.allowSwitchOff && m_toggle.isOn)
+ {
+ return false;
+ }
+ }
+ if ((bool)m_group && !m_group.IsActive())
+ {
+ return false;
+ }
+ return true;
+ }
+
+ private void Update()
+ {
+ bool flag = IsInteractive();
+ if ((bool)m_hint)
+ {
+ m_hint.SetActive(flag && ZInput.IsGamepadActive());
+ }
+ if (flag && Time.frameCount - m_lastInteractFrame >= 2 && ButtonPressed())
+ {
+ m_lastInteractFrame = Time.frameCount;
+ ZLog.Log("Button pressed " + base.gameObject.name + " frame:" + Time.frameCount);
+ if (m_button != null)
+ {
+ m_button.OnSubmit(null);
+ }
+ if (m_toggle != null)
+ {
+ m_toggle.OnSubmit(null);
+ }
+ }
+ }
+
+ private bool ButtonPressed()
+ {
+ if (!string.IsNullOrEmpty(m_zinputKey) && ZInput.GetButtonDown(m_zinputKey))
+ {
+ return true;
+ }
+ if (m_keyCode != 0 && Input.GetKeyDown(m_keyCode))
+ {
+ return true;
+ }
+ return false;
+ }
+}