feature: Added message parser for better templating
This commit is contained in:
parent
5c27b5e5b6
commit
11243f1474
9 changed files with 247 additions and 13 deletions
8
Assets/Jokes.meta
Normal file
8
Assets/Jokes.meta
Normal file
|
@ -0,0 +1,8 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 024fd80082fcb434c8d0f038e5bfc728
|
||||
folderAsset: yes
|
||||
DefaultImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
1
Assets/Jokes/test.txt
Normal file
1
Assets/Jokes/test.txt
Normal file
|
@ -0,0 +1 @@
|
|||
aaaccc|van 2:1234|y se cae el del medio
|
7
Assets/Jokes/test.txt.meta
Normal file
7
Assets/Jokes/test.txt.meta
Normal file
|
@ -0,0 +1,7 @@
|
|||
fileFormatVersion: 2
|
||||
guid: 709db39fbdad6d64d913304ea83d7f85
|
||||
TextScriptImporter:
|
||||
externalObjects: {}
|
||||
userData:
|
||||
assetBundleName:
|
||||
assetBundleVariant:
|
|
@ -12,7 +12,7 @@ GameObject:
|
|||
- component: {fileID: 81007626358808144}
|
||||
- component: {fileID: 5123271222652756937}
|
||||
m_Layer: 5
|
||||
m_Name: Text (TMP)
|
||||
m_Name: EmojiText
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
|
@ -33,9 +33,9 @@ RectTransform:
|
|||
m_Father: {fileID: 5034134452723103632}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 1, y: 1}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 16}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &81007626358808144
|
||||
CanvasRenderer:
|
||||
|
@ -65,7 +65,7 @@ MonoBehaviour:
|
|||
m_OnCullStateChanged:
|
||||
m_PersistentCalls:
|
||||
m_Calls: []
|
||||
m_text: New Text <sprite=0>
|
||||
m_text: New Textadsdfeqasdfeqpweur
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||
|
@ -134,6 +134,140 @@ MonoBehaviour:
|
|||
m_hasFontAssetChanged: 0
|
||||
m_baseMaterial: {fileID: 0}
|
||||
m_maskOffset: {x: 0, y: 0, z: 0, w: 0}
|
||||
--- !u!1 &2275331047474166448
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
serializedVersion: 6
|
||||
m_Component:
|
||||
- component: {fileID: 2778276168877196149}
|
||||
- component: {fileID: 2740248643807962901}
|
||||
- component: {fileID: 6299244945418012692}
|
||||
m_Layer: 5
|
||||
m_Name: RealText
|
||||
m_TagString: Untagged
|
||||
m_Icon: {fileID: 0}
|
||||
m_NavMeshLayer: 0
|
||||
m_StaticEditorFlags: 0
|
||||
m_IsActive: 1
|
||||
--- !u!224 &2778276168877196149
|
||||
RectTransform:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2275331047474166448}
|
||||
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: 5034134452723103632}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 0}
|
||||
m_AnchorMax: {x: 0, y: 0}
|
||||
m_AnchoredPosition: {x: 0, y: 0}
|
||||
m_SizeDelta: {x: 0, y: 16}
|
||||
m_Pivot: {x: 0.5, y: 0.5}
|
||||
--- !u!222 &2740248643807962901
|
||||
CanvasRenderer:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2275331047474166448}
|
||||
m_CullTransparentMesh: 1
|
||||
--- !u!114 &6299244945418012692
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 2275331047474166448}
|
||||
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: Juan
|
||||
m_isRightToLeft: 0
|
||||
m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||
m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2}
|
||||
m_fontSharedMaterials: []
|
||||
m_fontMaterial: {fileID: 0}
|
||||
m_fontMaterials: []
|
||||
m_fontColor32:
|
||||
serializedVersion: 2
|
||||
rgba: 4278190080
|
||||
m_fontColor: {r: 0, g: 0, b: 0, 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: 16
|
||||
m_fontSizeBase: 16
|
||||
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: 16, 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!1 &3730343923350390943
|
||||
GameObject:
|
||||
m_ObjectHideFlags: 0
|
||||
|
@ -146,6 +280,7 @@ GameObject:
|
|||
- component: {fileID: 5443779664744389533}
|
||||
- component: {fileID: 7160386019866200041}
|
||||
- component: {fileID: -6056302822753658535}
|
||||
- component: {fileID: 7445523924295813971}
|
||||
m_Layer: 5
|
||||
m_Name: Message
|
||||
m_TagString: Untagged
|
||||
|
@ -166,6 +301,7 @@ RectTransform:
|
|||
m_ConstrainProportionsScale: 0
|
||||
m_Children:
|
||||
- {fileID: 158050521503001043}
|
||||
- {fileID: 2778276168877196149}
|
||||
m_Father: {fileID: 0}
|
||||
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
|
||||
m_AnchorMin: {x: 0, y: 1}
|
||||
|
@ -224,3 +360,30 @@ MonoBehaviour:
|
|||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
messageText: {fileID: 5123271222652756937}
|
||||
realMessageText: {fileID: 6299244945418012692}
|
||||
--- !u!114 &7445523924295813971
|
||||
MonoBehaviour:
|
||||
m_ObjectHideFlags: 0
|
||||
m_CorrespondingSourceObject: {fileID: 0}
|
||||
m_PrefabInstance: {fileID: 0}
|
||||
m_PrefabAsset: {fileID: 0}
|
||||
m_GameObject: {fileID: 3730343923350390943}
|
||||
m_Enabled: 1
|
||||
m_EditorHideFlags: 0
|
||||
m_Script: {fileID: 11500000, guid: 30649d3a9faa99c48a7b1166b86bf2a0, type: 3}
|
||||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
m_Padding:
|
||||
m_Left: 0
|
||||
m_Right: 0
|
||||
m_Top: 0
|
||||
m_Bottom: 0
|
||||
m_ChildAlignment: 0
|
||||
m_Spacing: 0
|
||||
m_ChildForceExpandWidth: 0
|
||||
m_ChildForceExpandHeight: 1
|
||||
m_ChildControlWidth: 1
|
||||
m_ChildControlHeight: 0
|
||||
m_ChildScaleWidth: 0
|
||||
m_ChildScaleHeight: 0
|
||||
m_ReverseArrangement: 0
|
||||
|
|
|
@ -1276,6 +1276,7 @@ MonoBehaviour:
|
|||
m_Name:
|
||||
m_EditorClassIdentifier:
|
||||
messageStructureGenerator: {fileID: 1079303793}
|
||||
textAsset: {fileID: 4900000, guid: 709db39fbdad6d64d913304ea83d7f85, type: 3}
|
||||
--- !u!1001 &1869765660
|
||||
PrefabInstance:
|
||||
m_ObjectHideFlags: 0
|
||||
|
|
12
Assets/Scripts/Messaging/MessageParser.cs
Normal file
12
Assets/Scripts/Messaging/MessageParser.cs
Normal file
|
@ -0,0 +1,12 @@
|
|||
using System.Collections.Generic;
|
||||
|
||||
namespace Messaging {
|
||||
public static class MessageParser {
|
||||
private const char MessageDifferentiator = '|';
|
||||
|
||||
public static KeyValuePair<string, string> SplitMessage(string message) {
|
||||
string[] result = message.Split(MessageDifferentiator);
|
||||
return new KeyValuePair<string, string>(result[0], result[1]);
|
||||
}
|
||||
}
|
||||
}
|
3
Assets/Scripts/Messaging/MessageParser.cs.meta
Normal file
3
Assets/Scripts/Messaging/MessageParser.cs.meta
Normal file
|
@ -0,0 +1,3 @@
|
|||
fileFormatVersion: 2
|
||||
guid: d7e3a5f1cf5d487eab9b2b5e232efeda
|
||||
timeCreated: 1706346013
|
|
@ -8,24 +8,34 @@ namespace Messaging {
|
|||
public class Message : MonoBehaviour {
|
||||
public RectTransform RectTransform { private set; get; }
|
||||
public string Text => messageText.text;
|
||||
public string RealText => realMessageText.text;
|
||||
|
||||
[SerializeField] private TMP_Text messageText;
|
||||
[SerializeField] private TMP_Text realMessageText;
|
||||
|
||||
private TextTyper _textTyper;
|
||||
private TextTyper _realTextTyper;
|
||||
private Coroutine _typingCoroutine;
|
||||
private Coroutine _realTypingCoroutine;
|
||||
|
||||
private void Awake() {
|
||||
RectTransform = GetComponent<RectTransform>();
|
||||
_textTyper = new TextTyper(messageText);
|
||||
_realTextTyper = new TextTyper(realMessageText);
|
||||
}
|
||||
|
||||
public void SetMessageText(string text, bool animate) {
|
||||
this.EnsureCoroutineStopped(ref _typingCoroutine);
|
||||
public void SetMessageText(string text, bool animate) =>
|
||||
SetText(ref _typingCoroutine, messageText, _textTyper, text, animate);
|
||||
public void SetMessageRealText(string text, bool animate) =>
|
||||
SetText(ref _realTypingCoroutine, realMessageText, _realTextTyper, text, animate);
|
||||
|
||||
private void SetText(ref Coroutine routine, TMP_Text tmpText, TextTyper typer, string text, bool animate) {
|
||||
this.EnsureCoroutineStopped(ref routine);
|
||||
|
||||
if (animate)
|
||||
_typingCoroutine = StartCoroutine(_textTyper.AnimateTextIn(text, null));
|
||||
routine = StartCoroutine(typer.AnimateTextIn(text, null));
|
||||
else
|
||||
messageText.text = text;
|
||||
tmpText.text = text;
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,32 +1,61 @@
|
|||
using System;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
using UnityEngine;
|
||||
|
||||
namespace Messaging {
|
||||
public class MessageManager : MonoBehaviour{
|
||||
public class MessageManager : MonoBehaviour {
|
||||
[SerializeField] private MessageStructureGenerator messageStructureGenerator;
|
||||
|
||||
private Message[] _messages;
|
||||
|
||||
|
||||
[SerializeField] private TextAsset textAsset;
|
||||
|
||||
private void Awake() {
|
||||
_messages = messageStructureGenerator.GenerateMessages();
|
||||
}
|
||||
|
||||
private async void Start() {
|
||||
string[] fLines = textAsset.text.Split(':');
|
||||
int i = 0;
|
||||
while (Application.isPlaying) {
|
||||
Debug.Log(textAsset.text);
|
||||
CreateMessage(MessageParser.SplitMessage(fLines[i % 2]).Key);
|
||||
++i;
|
||||
await Task.Delay(2000);
|
||||
}
|
||||
}
|
||||
|
||||
public void CreateMessage(string message) {
|
||||
ModifyMessageText(message, _messages.Length - 1);
|
||||
}
|
||||
public void CreateRealMessage(string message) {
|
||||
ModifyRealMessageText(message, _messages.Length - 1);
|
||||
}
|
||||
|
||||
private void ModifyMessageText(string message, int index) {
|
||||
ModifyPreviousMessageText(_messages[index].Text, index - 1);
|
||||
_messages[index].SetMessageText(message, true);
|
||||
}
|
||||
private void ModifyRealMessageText(string message, int index) {
|
||||
ModifyPreviousRealMessageText(_messages[index].Text, index - 1);
|
||||
_messages[index].SetMessageRealText(message, true);
|
||||
}
|
||||
|
||||
private void ModifyPreviousMessageText(string message, int index) {
|
||||
if(index < 0) return;
|
||||
|
||||
if (index < 0) return;
|
||||
|
||||
ModifyPreviousMessageText(_messages[index].Text, index - 1);
|
||||
|
||||
|
||||
_messages[index].SetMessageText(message, false);
|
||||
}
|
||||
|
||||
private void ModifyPreviousRealMessageText(string message, int index) {
|
||||
if (index < 0) return;
|
||||
|
||||
ModifyPreviousRealMessageText(_messages[index].RealText, index - 1);
|
||||
|
||||
_messages[index].SetMessageRealText(message, false);
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue