feature: Added remaining icons text

This commit is contained in:
Gerard Gascón 2024-01-28 08:17:17 +01:00
parent a06b96eb8d
commit b2bd875508
4 changed files with 654 additions and 446 deletions

File diff suppressed because one or more lines are too long

View file

@ -156,6 +156,7 @@ MonoBehaviour:
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
fieldText: {fileID: 2089551590} fieldText: {fileID: 2089551590}
remainingIconsText: {fileID: 1539763156}
--- !u!114 &23275627 --- !u!114 &23275627
MonoBehaviour: MonoBehaviour:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -655,6 +656,7 @@ RectTransform:
m_Children: m_Children:
- {fileID: 2089551592} - {fileID: 2089551592}
- {fileID: 1152326132} - {fileID: 1152326132}
- {fileID: 1539763155}
m_Father: {fileID: 23275630} m_Father: {fileID: 23275630}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0.5, y: 0} m_AnchorMin: {x: 0.5, y: 0}
@ -2382,6 +2384,140 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3} m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
--- !u!1 &1539763154
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1539763155}
- component: {fileID: 1539763157}
- component: {fileID: 1539763156}
m_Layer: 5
m_Name: RemainingEmojis
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!224 &1539763155
RectTransform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1539763154}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 507035066}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
m_AnchorMin: {x: 0, y: 1}
m_AnchorMax: {x: 0, y: 1}
m_AnchoredPosition: {x: 270, y: -213}
m_SizeDelta: {x: 11, y: 11}
m_Pivot: {x: 0, y: 1}
--- !u!114 &1539763156
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1539763154}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Material: {fileID: 0}
m_Color: {r: 1, g: 1, b: 1, a: 1}
m_RaycastTarget: 1
m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0}
m_Maskable: 1
m_OnCullStateChanged:
m_PersistentCalls:
m_Calls: []
m_text: 0
m_isRightToLeft: 0
m_fontAsset: {fileID: 11400000, guid: f1576c7f923ce3e4a982e515b076cf0b, type: 2}
m_sharedMaterial: {fileID: -1538904502437759526, guid: f1576c7f923ce3e4a982e515b076cf0b, type: 2}
m_fontSharedMaterials: []
m_fontMaterial: {fileID: 0}
m_fontMaterials: []
m_fontColor32:
serializedVersion: 2
rgba: 4285671014
m_fontColor: {r: 0.4, g: 0.14901961, b: 0.44705883, a: 1}
m_enableVertexGradient: 0
m_colorMode: 3
m_fontColorGradient:
topLeft: {r: 1, g: 1, b: 1, a: 1}
topRight: {r: 1, g: 1, b: 1, a: 1}
bottomLeft: {r: 1, g: 1, b: 1, a: 1}
bottomRight: {r: 1, g: 1, b: 1, a: 1}
m_fontColorGradientPreset: {fileID: 0}
m_spriteAsset: {fileID: 0}
m_tintAllSprites: 0
m_StyleSheet: {fileID: 0}
m_TextStyleHashCode: -1183493901
m_overrideHtmlColors: 0
m_faceColor:
serializedVersion: 2
rgba: 4294967295
m_fontSize: 8
m_fontSizeBase: 8
m_fontWeight: 400
m_enableAutoSizing: 0
m_fontSizeMin: 18
m_fontSizeMax: 72
m_fontStyle: 0
m_HorizontalAlignment: 1
m_VerticalAlignment: 256
m_textAlignment: 65535
m_characterSpacing: 0
m_wordSpacing: 0
m_lineSpacing: 0
m_lineSpacingMax: 0
m_paragraphSpacing: 0
m_charWidthMaxAdj: 0
m_enableWordWrapping: 1
m_wordWrappingRatios: 0.4
m_overflowMode: 0
m_linkedTextComponent: {fileID: 0}
parentLinkedComponent: {fileID: 0}
m_enableKerning: 1
m_enableExtraPadding: 0
checkPaddingRequired: 0
m_isRichText: 1
m_parseCtrlCharacters: 1
m_isOrthographic: 1
m_isCullingEnabled: 0
m_horizontalMapping: 0
m_verticalMapping: 0
m_uvLineOffset: 0
m_geometrySortingOrder: 0
m_IsTextObjectScaleStatic: 0
m_VertexBufferAutoSizeReduction: 0
m_useMaxVisibleDescender: 1
m_pageToDisplay: 1
m_margin: {x: 0, y: 0, z: 0, w: 0}
m_isUsingLegacyAnimationComponent: 0
m_isVolumetricText: 0
m_hasFontAssetChanged: 0
m_baseMaterial: {fileID: 0}
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
--- !u!222 &1539763157
CanvasRenderer:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1539763154}
m_CullTransparentMesh: 1
--- !u!114 &1620770958 stripped --- !u!114 &1620770958 stripped
MonoBehaviour: MonoBehaviour:
m_CorrespondingSourceObject: {fileID: 5596010678248324506, guid: 5430324ec74b5f04581d090658d90b3e, type: 3} m_CorrespondingSourceObject: {fileID: 5596010678248324506, guid: 5430324ec74b5f04581d090658d90b3e, type: 3}
@ -3126,7 +3262,7 @@ GameObject:
- component: {fileID: 2089551591} - component: {fileID: 2089551591}
- component: {fileID: 2089551590} - component: {fileID: 2089551590}
m_Layer: 5 m_Layer: 5
m_Name: Text (TMP) m_Name: SendText
m_TagString: Untagged m_TagString: Untagged
m_Icon: {fileID: 0} m_Icon: {fileID: 0}
m_NavMeshLayer: 0 m_NavMeshLayer: 0

View file

@ -5,21 +5,46 @@ using UnityEngine;
namespace Messaging.Composer { namespace Messaging.Composer {
public class InputField : MonoBehaviour { public class InputField : MonoBehaviour {
[SerializeField] private TMP_Text fieldText; [SerializeField] private TMP_Text fieldText;
[SerializeField] private TMP_Text remainingIconsText;
public string Text => fieldText.text; public string Text => fieldText.text;
public void WriteEmoji(string emoji) { private int _numberIcons;
fieldText.text += emoji; 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]+)(?![^>]*\/>)[^>]*>)"); 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() { public void RemoveEmoji() {
string newText = _removeRegex.Replace(fieldText.text, ""); string newText = _removeRegex.Replace(fieldText.text, "");
if (newText != fieldText.text) {
_iconsWritten--;
remainingIconsText.text = GetRemainingIcons().ToString();
}
fieldText.SetText(newText); fieldText.SetText(newText);
} }
public void ClearText() { public void ClearText() {
_iconsWritten = 0;
remainingIconsText.text = GetRemainingIcons().ToString();
fieldText.SetText(""); fieldText.SetText("");
} }
} }

View file

@ -97,6 +97,7 @@ namespace Messaging {
private List<string> GetResultEmojis() { private List<string> GetResultEmojis() {
MatchCollection emojis = _emojiGetter.Matches(_currentJoke.AnswerMessage.Key); MatchCollection emojis = _emojiGetter.Matches(_currentJoke.AnswerMessage.Key);
FindObjectOfType<InputField>().NumberIcons = emojis.Count;
List<string> emojiStrings = new(); List<string> emojiStrings = new();
foreach (Match emoji in emojis) { foreach (Match emoji in emojis) {