Emojiji/Assets/Scripts/Messaging/Composer/InputField.cs

51 lines
No EOL
1.3 KiB
C#

using System.Text.RegularExpressions;
using TMPro;
using UnityEngine;
namespace Messaging.Composer {
public class InputField : MonoBehaviour {
[SerializeField] private TMP_Text fieldText;
[SerializeField] private TMP_Text remainingIconsText;
public string Text => fieldText.text;
private int _numberIcons;
public int NumberIcons {
set {
_iconsWritten = 0;
_numberIcons = value;
remainingIconsText.text = GetRemainingIcons().ToString();
}
get => _numberIcons;
}
private int _iconsWritten;
private readonly Regex _removeRegex = new(@"<([a-z]+)(?![^>]*\/>)[^>]*>(?!.*<([a-z]+)(?![^>]*\/>)[^>]*>)");
public void WriteEmoji(string emoji) {
if (GetRemainingIcons() <= 0) return;
_iconsWritten++;
fieldText.text += emoji;
remainingIconsText.text = GetRemainingIcons().ToString();
}
private int GetRemainingIcons() => _numberIcons - _iconsWritten;
public void RemoveEmoji() {
string newText = _removeRegex.Replace(fieldText.text, "");
if (newText != fieldText.text) {
_iconsWritten--;
remainingIconsText.text = GetRemainingIcons().ToString();
}
fieldText.SetText(newText);
}
public void ClearText() {
_iconsWritten = 0;
remainingIconsText.text = GetRemainingIcons().ToString();
fieldText.SetText("");
}
}
}