374 lines
9.6 KiB
C#
374 lines
9.6 KiB
C#
using System;
|
|
using System.Collections;
|
|
using DarkTonic.MasterAudio;
|
|
using TMPro;
|
|
using UnityEngine;
|
|
using UnityEngine.EventSystems;
|
|
using UnityEngine.UI;
|
|
|
|
// Token: 0x020000DD RID: 221
|
|
public class TextParser : MonoBehaviour
|
|
{
|
|
// Token: 0x060014A0 RID: 5280 RVA: 0x0018FD94 File Offset: 0x0018DF94
|
|
private void Awake()
|
|
{
|
|
this.inputField.text = "";
|
|
this.rt = base.gameObject.GetComponent<RectTransform>();
|
|
this.animator = base.gameObject.GetComponent<Animator>();
|
|
this.img = base.gameObject.transform.GetChild(1).gameObject.GetComponent<Image>();
|
|
this.img2 = base.gameObject.transform.GetChild(0).gameObject.GetComponent<Image>();
|
|
this.img2.enabled = false;
|
|
this.img.gameObject.SetActive(true);
|
|
this.img2.gameObject.SetActive(true);
|
|
this.contents1.SetActive(false);
|
|
this.contents2.SetActive(false);
|
|
this.img.enabled = false;
|
|
this.animator.enabled = false;
|
|
}
|
|
|
|
// Token: 0x060014A1 RID: 5281 RVA: 0x0018FE74 File Offset: 0x0018E074
|
|
public void StartMenu(Portrait portrait)
|
|
{
|
|
if (this.cannotInterrupt)
|
|
{
|
|
return;
|
|
}
|
|
this.character = portrait.character;
|
|
if (this.character.stunned || this.character.dead)
|
|
{
|
|
return;
|
|
}
|
|
if (Links.x.mk)
|
|
{
|
|
EventSystem.current.SetSelectedGameObject(this.inputField.gameObject);
|
|
}
|
|
if (this.parsing != null)
|
|
{
|
|
base.StopCoroutine(this.parsing);
|
|
this.parsing = null;
|
|
}
|
|
this.inputField.text = "";
|
|
Records.x.SetTypingState(true);
|
|
if (!this.character.mainSelected)
|
|
{
|
|
this.character.portrait.SelectCharacter();
|
|
}
|
|
base.gameObject.transform.position = portrait.queuedIconBorder.gameObject.transform.position;
|
|
base.gameObject.transform.SetAsLastSibling();
|
|
this.contents1.SetActive(true);
|
|
this.contents2.SetActive(true);
|
|
Records.x.shouting = true;
|
|
this.animator.enabled = true;
|
|
this.img2.enabled = true;
|
|
this.animator.Play("TextParserStart");
|
|
MasterAudio.PlaySoundAndForget("Paper Open 2", Random.Range(0.2f, 0.3f), new float?(1f), 0f, "", null);
|
|
this.parsedWord = "";
|
|
this.open = true;
|
|
this.inputField.interactable = true;
|
|
this.inputField.OnSelect(null);
|
|
if (Links.x.joy)
|
|
{
|
|
Links.x.partyColliderAdventure.ToggleMenu(false);
|
|
Links.x.keyboardScript.StartMenu(this.inputField, null, base.gameObject, "Shout");
|
|
return;
|
|
}
|
|
base.StartCoroutine(this.SelectInput());
|
|
}
|
|
|
|
// Token: 0x060014A2 RID: 5282 RVA: 0x00190051 File Offset: 0x0018E251
|
|
private IEnumerator SelectInput()
|
|
{
|
|
yield return new WaitForSeconds(0.1f);
|
|
this.inputField.OnSelect(null);
|
|
yield break;
|
|
}
|
|
|
|
// Token: 0x060014A3 RID: 5283 RVA: 0x00190060 File Offset: 0x0018E260
|
|
public void EndFromRaycast()
|
|
{
|
|
if (Links.x.mk)
|
|
{
|
|
this.EndMenuStart();
|
|
}
|
|
}
|
|
|
|
// Token: 0x060014A4 RID: 5284 RVA: 0x00190074 File Offset: 0x0018E274
|
|
public void KeyboardParse()
|
|
{
|
|
if (Links.x.mk)
|
|
{
|
|
this.Parse();
|
|
}
|
|
}
|
|
|
|
// Token: 0x060014A5 RID: 5285 RVA: 0x00190088 File Offset: 0x0018E288
|
|
public void EndMenuStart()
|
|
{
|
|
if (this.parsedWord != "")
|
|
{
|
|
return;
|
|
}
|
|
this.animator.Play("TextParserEnd");
|
|
this.inputField.interactable = false;
|
|
this.img2.enabled = false;
|
|
if (Links.x.joy)
|
|
{
|
|
Links.x.gameplay.endDockNavigation = true;
|
|
Links.x.hudControl.JoyBox(false);
|
|
Links.x.partyColliderAdventure.ToggleMenu(true);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060014A6 RID: 5286 RVA: 0x0019010C File Offset: 0x0018E30C
|
|
public void StartEndMenu()
|
|
{
|
|
}
|
|
|
|
// Token: 0x060014A7 RID: 5287 RVA: 0x00190110 File Offset: 0x0018E310
|
|
public void EndMenu()
|
|
{
|
|
this.open = false;
|
|
Records.x.SetTypingState(false);
|
|
Records.x.shouting = false;
|
|
this.contents1.SetActive(false);
|
|
this.contents2.SetActive(false);
|
|
this.img.enabled = false;
|
|
this.animator.enabled = false;
|
|
this.img2.enabled = false;
|
|
}
|
|
|
|
// Token: 0x060014A8 RID: 5288 RVA: 0x00190178 File Offset: 0x0018E378
|
|
public void Parse()
|
|
{
|
|
string text = this.inputField.text;
|
|
this.originalWord = text;
|
|
if (Links.x.mk && (text == "" || text == " " || text == " " || text == " "))
|
|
{
|
|
return;
|
|
}
|
|
this.parsedWord = text.ToLower();
|
|
this.animator.Play("TextParserDone");
|
|
Debug.Log("Parse");
|
|
}
|
|
|
|
// Token: 0x060014A9 RID: 5289 RVA: 0x001901FF File Offset: 0x0018E3FF
|
|
public void ParseSuccess()
|
|
{
|
|
if (this.parsing != null)
|
|
{
|
|
base.StopCoroutine(this.parsing);
|
|
this.parsing = null;
|
|
}
|
|
this.parsing = this.Parsing();
|
|
base.StartCoroutine(this.Parsing());
|
|
}
|
|
|
|
// Token: 0x060014AA RID: 5290 RVA: 0x00190238 File Offset: 0x0018E438
|
|
private void PauseVisual()
|
|
{
|
|
string text = this.parsedWord;
|
|
if (text.Length >= 3)
|
|
{
|
|
this.parsedWord.Substring(0, 3);
|
|
}
|
|
text += "...";
|
|
this.inputField.text = text;
|
|
this.animator.Play("TextParserWaitingForEnd");
|
|
this.img2.enabled = false;
|
|
Records.x.SetTypingState(false);
|
|
Records.x.shouting = false;
|
|
}
|
|
|
|
// Token: 0x060014AB RID: 5291 RVA: 0x001902AD File Offset: 0x0018E4AD
|
|
private IEnumerator Parsing()
|
|
{
|
|
this.inputField.interactable = false;
|
|
bool changeAnim = false;
|
|
float currentTime = this.animator.GetCurrentAnimatorStateInfo(0).normalizedTime;
|
|
string word = this.parsedWord;
|
|
string abilityName = "";
|
|
bool wordOfPower = false;
|
|
while (Records.x.paused)
|
|
{
|
|
if (!changeAnim)
|
|
{
|
|
this.PauseVisual();
|
|
changeAnim = true;
|
|
if (wordOfPower && this.character.actions)
|
|
{
|
|
while (this.character.inRecovery)
|
|
{
|
|
yield return null;
|
|
}
|
|
if (this.character.actions)
|
|
{
|
|
this.character.actions.ClearSelectedActionRealTime();
|
|
}
|
|
if (this.character.actions)
|
|
{
|
|
this.character.actions.Interrupt();
|
|
}
|
|
if (this.character.actions)
|
|
{
|
|
this.character.actions.CheckIfRunningAI();
|
|
}
|
|
this.character.actions.hasWaypoint = false;
|
|
this.character.actions.ClearTargetCharacters();
|
|
this.character.actions.RemoveAbility();
|
|
this.character.actions.Ability(abilityName, "", false, true);
|
|
this.character.timelineIcon.WaitForAction(this.character.actions.GetActionSpeed("Word"), true, true);
|
|
}
|
|
}
|
|
yield return null;
|
|
}
|
|
if (Records.x.pocketPause)
|
|
{
|
|
Links.x.gameplay.PocketPause(false);
|
|
}
|
|
this.parsedWord = "";
|
|
if (changeAnim)
|
|
{
|
|
this.inputField.text = word;
|
|
this.animator.Play("TextParserDone", 0, currentTime + 0.1f);
|
|
}
|
|
this.cannotInterrupt = true;
|
|
MasterAudio.PlaySoundAndForget("Feedback", 0.2f, new float?(1f), 0f, "Box Close", null);
|
|
bool doQuip = false;
|
|
bool flag = false;
|
|
if (word == "bribe" || word == "sorry" || word == "stop")
|
|
{
|
|
if (Records.x.BribeBadgeCount() > 0)
|
|
{
|
|
Character character = Links.x.sensory.BribeCharacterNear(this.character, false);
|
|
this.character.StartQuip(word + "!");
|
|
if (character)
|
|
{
|
|
Links.x.gameplay.StartDialogue(character, this.character, null, null, "Party/Bribe");
|
|
}
|
|
else
|
|
{
|
|
Links.x.gameFeed.ShowNotice("No one heard you");
|
|
}
|
|
}
|
|
else
|
|
{
|
|
Character bribeCharacter = Links.x.sensory.BribeCharacterNear(this.character, false);
|
|
this.character.StartQuip(word + "!");
|
|
Links.x.gameFeed.AddFeed("No need to bribe anyone at this time");
|
|
if (bribeCharacter)
|
|
{
|
|
yield return new WaitForSeconds(1f);
|
|
bribeCharacter.StartQuip("No need");
|
|
}
|
|
bribeCharacter = null;
|
|
}
|
|
flag = true;
|
|
}
|
|
if (word == "topa-din" || word == "topadin" || word == "topa din")
|
|
{
|
|
this.character.StartQuip("Topa-din");
|
|
Character bribeCharacter = Links.x.sensory.NearestNPC(this.character);
|
|
if (bribeCharacter)
|
|
{
|
|
yield return new WaitForSeconds(0.75f);
|
|
bribeCharacter.StartQuip("Topa-du");
|
|
if (!bribeCharacter.inCombat)
|
|
{
|
|
bribeCharacter.SetRotation(Quaternion.LookRotation(this.character.tr.position - bribeCharacter.tr.position), true, false);
|
|
}
|
|
}
|
|
flag = true;
|
|
bribeCharacter = null;
|
|
}
|
|
if (word == "topa du" || word == "topadu" || word == "topa-du")
|
|
{
|
|
this.character.StartQuip("Topa-du");
|
|
Character bribeCharacter = Links.x.sensory.NearestNPC(this.character);
|
|
if (bribeCharacter)
|
|
{
|
|
yield return new WaitForSeconds(0.75f);
|
|
bribeCharacter.StartQuip("Topa-din");
|
|
if (!bribeCharacter.inCombat)
|
|
{
|
|
bribeCharacter.SetRotation(Quaternion.LookRotation(this.character.tr.position - bribeCharacter.tr.position), true, false);
|
|
}
|
|
}
|
|
flag = true;
|
|
bribeCharacter = null;
|
|
}
|
|
if (Links.x.gaia.boroControls && word == Records.x.boroName.ToLower())
|
|
{
|
|
Links.x.gameplay.CallBoro();
|
|
}
|
|
if (doQuip)
|
|
{
|
|
this.character.StartQuip(this.originalWord + "!");
|
|
}
|
|
if (word.Contains("deadhands526"))
|
|
{
|
|
Records.x.secrets = true;
|
|
Links.x.inputControls.enabled = true;
|
|
Links.x.inputControls.Lists();
|
|
Links.x.inputControls.NewScene();
|
|
Links.x.inputControls.child.SetActive(true);
|
|
}
|
|
if (!flag)
|
|
{
|
|
this.character.StartQuip(this.originalWord + "!");
|
|
}
|
|
Records.x.SetShout(this.originalWord, Time.timeSinceLevelLoad);
|
|
this.cannotInterrupt = false;
|
|
this.parsing = null;
|
|
if (Links.x.joy || Links.x.mk)
|
|
{
|
|
this.EndMenuStart();
|
|
}
|
|
yield break;
|
|
}
|
|
|
|
// Token: 0x040023B5 RID: 9141
|
|
public TMP_InputField inputField;
|
|
|
|
// Token: 0x040023B6 RID: 9142
|
|
public bool open;
|
|
|
|
// Token: 0x040023B7 RID: 9143
|
|
private Portrait portrait;
|
|
|
|
// Token: 0x040023B8 RID: 9144
|
|
private Character character;
|
|
|
|
// Token: 0x040023B9 RID: 9145
|
|
private RectTransform rt;
|
|
|
|
// Token: 0x040023BA RID: 9146
|
|
private Animator animator;
|
|
|
|
// Token: 0x040023BB RID: 9147
|
|
public string parsedWord;
|
|
|
|
// Token: 0x040023BC RID: 9148
|
|
public string originalWord;
|
|
|
|
// Token: 0x040023BD RID: 9149
|
|
public GameObject contents1;
|
|
|
|
// Token: 0x040023BE RID: 9150
|
|
public GameObject contents2;
|
|
|
|
// Token: 0x040023BF RID: 9151
|
|
private Image img;
|
|
|
|
// Token: 0x040023C0 RID: 9152
|
|
private Image img2;
|
|
|
|
// Token: 0x040023C1 RID: 9153
|
|
public bool cannotInterrupt;
|
|
|
|
// Token: 0x040023C2 RID: 9154
|
|
private IEnumerator parsing;
|
|
|
|
// Token: 0x040023C3 RID: 9155
|
|
private StringFast str = new StringFast(64);
|
|
}
|