ClientServer/Client/Assets/Scripts/UI/OnScreenKeyboard.cs

103 lines
2.9 KiB
C#
Raw Normal View History

2025-09-06 17:17:39 +04:00
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
using TMPro;
using UnityEngine.EventSystems;
public class OnScreenKeyboard : MonoBehaviour
{
public static OnScreenKeyboard Instance;
[System.NonSerialized] public TMP_InputField currentInputField;
//private TMP_InputField previousInputField;
[System.NonSerialized] public string word = null;
[System.NonSerialized] public string completedWord = null;
[System.NonSerialized] public bool isPassWordField;
private OnKeyboardButton[] keyboardButtons;
[System.NonSerialized] public Animator keyboardAnimator;
private void Awake()
{
Instance = this;
keyboardButtons = FindObjectsOfType<OnKeyboardButton>();
keyboardAnimator = transform.GetChild(0).GetComponent<Animator>();
}
public void ToggleCapitalization()
{
foreach (OnKeyboardButton kButton in keyboardButtons)
{
kButton.ToggleCapitalization();
}
}
public void ToggleSymbols()
{
foreach (OnKeyboardButton kButton in keyboardButtons)
{
kButton.ToggleSymbols();
}
}
public IEnumerator CloseKeyboardRoutine()
{
keyboardAnimator.SetBool("CloseKeyboard", true);
completedWord = word;
currentInputField.text = completedWord;
if (currentInputField == UIManager.Instance.ChatInputField && UIManager.Instance.ChatInputField.text != "" && UIManager.Instance.ChatInputField.text.Length < 250)
{
PacketManager.sendChatMessage(UIManager.Instance.ChatInputField.text);
UIManager.Instance.ChatInputField.text = "";
}
currentInputField = null;
Instance.word = null;
SetSelectableOnKeyboardClose();
UIManager.Instance.ChatInputField.text = "";
UIManager.Instance.ChatBox.UsingChatBox = false;
yield return new WaitForSeconds(0.3f);
UIManager.Instance.hideInterface("OnScreenKeyboard");
}
public void InsertSpace()
{
word += " ";
}
private void SetSelectableOnKeyboardClose()
{
if (UIManager.Instance.loginScreen)
{
EventSystem.current.SetSelectedGameObject(UIManager.Instance.LoginButton);
}
if (!UIManager.Instance.loginScreen && !UIManager.Instance.CryptoWalletMenu.activeInHierarchy)
{
Player.Instance.UpdatePlayerOnMenuClose();
}
if (UIManager.Instance.CreateAccountMenu.activeInHierarchy)
{
EventSystem.current.SetSelectedGameObject(UIManager.Instance.CreateAccountRegisterButton.gameObject);
}
}
public void TypeLetter(string letter)
{
word += letter;
currentInputField.text = word;
}
public void DeleteLetter()
{
if (word.Length > 0)
{
word = word.Substring(0, word.Length - 1);
currentInputField.text = word;
}
}
}