Files
BepInEx/Projects/BanquetForFools/Source/Assembly-CSharp/QTE.cs
2025-05-21 20:40:04 +02:00

929 lines
21 KiB
C#

using System;
using System.Collections;
using DarkTonic.MasterAudio;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
// Token: 0x020000CF RID: 207
public class QTE : MonoBehaviour
{
// Token: 0x06001322 RID: 4898 RVA: 0x00172530 File Offset: 0x00170730
public void StartQTE(string type, float customTimeScale)
{
this.eventType = type;
this.resurrecting = false;
if (this.listen != null)
{
base.StopCoroutine(this.listen);
}
this.clicked = false;
this.canClick = false;
this.completed = false;
this.canComplete = false;
this.main = Links.x.main;
this.startHitCount = Links.x.main.stats.hitCount;
this.startPosition = this.main.currentPosition;
this.raycastBlocker.enabled = false;
this.show = Links.x.options.rallyTimePrompt;
if (!Records.x.editor)
{
this.debug = false;
}
this.animator.enabled = false;
this.moonPunch.SetActive(false);
this.moonPunchSuccess.SetActive(false);
this.moonPunchFail.SetActive(false);
this.closeInScaler.SetActive(false);
this.closeInHit.SetActive(false);
this.closeInMiss.SetActive(false);
this.closeInOutside.SetActive(false);
this.closeInInside.SetActive(false);
this.line.SetActive(false);
this.lineSuccess.SetActive(false);
this.lineFail.SetActive(false);
if (type == "ATB")
{
this.animator.Play("QTE_ActionClick", -1, 0f);
this.listen = this.ListenForClick1();
base.StartCoroutine(this.listen);
}
if (type == "Revive")
{
this.listen = this.ListenForRevive2();
base.StartCoroutine(this.listen);
}
if (type == "Spirit1")
{
this.listen = this.ListenForClick2();
base.StartCoroutine(this.listen);
}
if (type == "MoonPunch")
{
this.listen = this.ListenForClickMoonPunch(customTimeScale);
base.StartCoroutine(this.listen);
}
if (type == "Line")
{
this.listen = this.ListenForClickLine();
base.StartCoroutine(this.listen);
}
}
// Token: 0x06001323 RID: 4899 RVA: 0x00172750 File Offset: 0x00170950
public void Reset()
{
this.closeInOutside.SetActive(false);
this.closeInInside.SetActive(false);
this.closeInScaler.SetActive(false);
this.closeInHit.SetActive(false);
this.closeInMiss.SetActive(false);
this.closeInAnimEarlyOut.enabled = false;
}
// Token: 0x06001324 RID: 4900 RVA: 0x001727A8 File Offset: 0x001709A8
private bool Clicked()
{
if (Links.x.joy)
{
if (Links.x.gameplay.cancelStart || Links.x.gameplay.actionDown || Links.x.gameplay.actionStart || Links.x.gameplay.actionUp || Links.x.gameplay.interactStart)
{
return true;
}
}
else
{
if (Input.GetMouseButtonDown(0) || Input.GetMouseButton(0) || Input.GetMouseButtonUp(0))
{
return true;
}
if (Input.anyKey)
{
return true;
}
}
return false;
}
// Token: 0x06001325 RID: 4901 RVA: 0x0017283C File Offset: 0x00170A3C
private bool Holding()
{
if (Links.x.joy)
{
if (Links.x.gameplay.actionDown)
{
return true;
}
}
else
{
if (Input.GetMouseButton(0))
{
return true;
}
if (Input.anyKey)
{
return true;
}
}
return false;
}
// Token: 0x06001326 RID: 4902 RVA: 0x00172874 File Offset: 0x00170A74
public bool Holding2()
{
if (Links.x.joy)
{
if (Links.x.gameplay.actionDown || Links.x.gameplay.actionStart || Links.x.gameplay.actionUp)
{
return true;
}
}
else if (Input.GetMouseButton(0) || Input.GetMouseButtonDown(0) || Input.GetMouseButtonUp(0))
{
return true;
}
return false;
}
// Token: 0x06001327 RID: 4903 RVA: 0x001728DD File Offset: 0x00170ADD
public void CanClick()
{
this.canClick = true;
}
// Token: 0x06001328 RID: 4904 RVA: 0x001728E6 File Offset: 0x00170AE6
private IEnumerator ListenForClick2()
{
this.listenerCloseIn.canClick = false;
this.listenerCloseIn.finished = false;
this.raycastBlocker.enabled = true;
this.closeOutsideSprite.color = Color.white;
this.clicked = false;
bool failed = false;
while (this.Holding())
{
yield return null;
}
this.closeInOutside.SetActive(true);
this.closeInInside.SetActive(true);
this.closeInScaler.SetActive(true);
this.closeInAnimEarlyOut.enabled = false;
this.clickTime = Time.timeSinceLevelLoad;
while (!this.listenerCloseIn.canClick && !failed)
{
if (this.Clicked())
{
failed = true;
}
yield return null;
}
if (failed && this.closeInScalar.GetCurrentAnimatorStateInfo(0).normalizedTime < 0.47f)
{
this.closeInAnimEarlyOut.enabled = true;
}
if (this.Clicked())
{
this.clicked = true;
}
while (this.listenerCloseIn.canClick && !failed && !this.clicked)
{
if (this.Clicked())
{
this.clicked = true;
}
this.clickTime = Time.timeSinceLevelLoad;
yield return null;
}
if (!this.clicked)
{
failed = true;
}
if (failed)
{
this.closeInInside.SetActive(false);
this.closeInMiss.SetActive(true);
}
if (this.clicked)
{
this.closeInHit.SetActive(true);
}
this.raycastBlocker.enabled = false;
if (failed)
{
this.bonus = 1f;
}
else
{
this.bonus = 2f;
}
this.playing = false;
if (failed)
{
float timeToLerp = 0.5f;
float percentage = 0f;
float startTime = Time.time;
while (percentage < 1f)
{
percentage = (Time.time - startTime) / timeToLerp;
this.closeOutsideSprite.color = Color.Lerp(Color.white, Color.clear, percentage);
yield return null;
}
timeToLerp = 0.5f;
percentage = 0f;
startTime = Time.time;
while (percentage < 1f)
{
percentage = (Time.time - startTime) / timeToLerp;
yield return null;
}
}
else
{
float startTime = 0.5f;
float percentage = 0f;
float timeToLerp = Time.time;
while (percentage < 1f)
{
percentage = (Time.time - timeToLerp) / startTime;
this.closeOutsideSprite.color = Color.Lerp(Color.white, Color.clear, percentage);
yield return null;
}
while (!this.listenerCloseIn.finished)
{
yield return null;
}
}
this.closeInScaler.SetActive(false);
this.closeInHit.SetActive(false);
this.closeInMiss.SetActive(false);
this.closeInOutside.SetActive(false);
this.closeInInside.SetActive(false);
this.resurrecting = false;
this.listen = null;
yield break;
}
// Token: 0x06001329 RID: 4905 RVA: 0x001728F8 File Offset: 0x00170AF8
private void SetAnimatorSpeedMoonPunch(float customTimeScale)
{
if (customTimeScale != 1f)
{
float timeScale = Time.timeScale;
float num = 1f / Time.timeScale;
this.moonPunchAnimator.speed = num;
}
}
// Token: 0x0600132A RID: 4906 RVA: 0x0017292B File Offset: 0x00170B2B
private IEnumerator ListenForClickMoonPunch(float customTimeScale)
{
this.listenerMoonPunch.canClick = false;
this.listenerMoonPunch.finished = false;
this.raycastBlocker.enabled = true;
this.clicked = false;
bool failed = false;
this.bonus = 1.5f;
if (this.bonusType == "Evasion")
{
this.bonus = 1f;
}
float baseBonus = this.bonus;
if (!this.show)
{
this.moonPunchGroup.enabled = true;
}
else
{
this.moonPunchGroup.enabled = false;
}
while (this.Holding2())
{
yield return null;
}
this.moonPunch.SetActive(true);
this.moonPunchSuccess.SetActive(false);
this.moonPunchFail.SetActive(false);
this.clickTime = 0f;
this.moonPunchAnimator.speed = 1f;
this.SetAnimatorSpeedMoonPunch(customTimeScale);
while (!this.listenerMoonPunch.canClick && !failed)
{
this.SetAnimatorSpeedMoonPunch(customTimeScale);
if (this.Clicked() && this.show)
{
failed = true;
this.moonPunch.SetActive(false);
this.moonPunchFail.SetActive(true);
}
yield return null;
}
if (this.debug)
{
Debug.Log("Before range - failed? " + failed.ToString() + " " + Time.timeSinceLevelLoad.ToString());
}
this.SetAnimatorSpeedMoonPunch(customTimeScale);
float startClickTime = this.moonPunchAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime;
if (this.Clicked() && this.show)
{
this.clicked = true;
this.clickTime = this.moonPunchAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime + 0.1f;
this.moonPunchSuccess.SetActive(true);
if (this.debug)
{
Debug.Log(string.Concat(new string[]
{
"In range - clicked? ",
this.clicked.ToString(),
" ",
this.clickTime.ToString(),
" ",
Time.timeSinceLevelLoad.ToString()
}));
}
}
while (this.listenerMoonPunch.canClick && !failed && !this.clicked)
{
this.SetAnimatorSpeedMoonPunch(customTimeScale);
if (this.Clicked() && this.show)
{
this.clickTime = this.moonPunchAnimator.GetCurrentAnimatorStateInfo(0).normalizedTime + 0.1f;
this.clicked = true;
this.moonPunchSuccess.SetActive(true);
}
if (this.debug)
{
Debug.Log(string.Concat(new string[]
{
"In range - clicked? ",
this.clicked.ToString(),
" ",
this.clickTime.ToString(),
" ",
Time.timeSinceLevelLoad.ToString()
}));
}
yield return null;
}
if (!this.clicked)
{
failed = true;
}
if (!failed)
{
this.moonPunch.SetActive(false);
float num = 10f;
if (this.bonusType == "Evasion")
{
num = 40f;
}
this.bonus = baseBonus + (this.clickTime - startClickTime) * num;
this.bonus = Mathf.Round(this.bonus * 10f) / 10f;
this.moonPunchText.text = this.bonus.ToString() + "x";
if (this.bonusType == "Evasion")
{
TextMeshProUGUI textMeshProUGUI = this.moonPunchText;
textMeshProUGUI.text += " block";
}
else if (this.bonusType == "Effects")
{
TextMeshProUGUI textMeshProUGUI2 = this.moonPunchText;
textMeshProUGUI2.text += " effects";
}
else
{
TextMeshProUGUI textMeshProUGUI3 = this.moonPunchText;
textMeshProUGUI3.text += " damage";
}
if (this.debug)
{
Debug.Log(string.Concat(new string[]
{
"Bonus: ",
this.bonus.ToString(),
" ",
this.clickTime.ToString(),
" ",
startClickTime.ToString()
}));
}
}
if (this.debug)
{
Debug.Log(string.Concat(new string[]
{
"Range over - clicked? ",
this.clicked.ToString(),
" ",
this.clickTime.ToString(),
" ",
Time.timeSinceLevelLoad.ToString()
}));
}
this.raycastBlocker.enabled = false;
this.playing = false;
float startTime = Time.timeSinceLevelLoad;
while (!this.listenerMoonPunch.finished && Time.timeSinceLevelLoad < startTime + 2f)
{
if (this.moonPunch.activeSelf)
{
this.SetAnimatorSpeedMoonPunch(customTimeScale);
}
yield return null;
}
this.moonPunch.SetActive(false);
this.moonPunchSuccess.SetActive(false);
this.moonPunchFail.SetActive(false);
this.listen = null;
this.bonusType = "";
yield break;
}
// Token: 0x0600132B RID: 4907 RVA: 0x00172941 File Offset: 0x00170B41
private IEnumerator ListenForClickLine()
{
this.listenerLine.canClick = false;
this.listenerLine.finished = false;
this.raycastBlocker.enabled = true;
this.clicked = false;
bool failed = false;
while (this.Holding())
{
yield return null;
}
this.line.SetActive(true);
this.lineSuccess.SetActive(false);
this.lineFail.SetActive(false);
this.clickTime = Time.timeSinceLevelLoad;
this.bonus = 1.5f;
while (!this.listenerLine.canClick && !failed)
{
if (this.Clicked())
{
failed = true;
Debug.Log("Clicked early " + Time.timeSinceLevelLoad.ToString());
}
yield return null;
}
Debug.Log("In range - failed? " + failed.ToString() + " " + Time.timeSinceLevelLoad.ToString());
float startClickTime = Time.timeSinceLevelLoad;
if (this.Clicked())
{
this.clicked = true;
this.bonus += 0.19999999f;
}
while (this.listenerLine.canClick && !failed && !this.clicked)
{
this.clickTime = Time.timeSinceLevelLoad;
if (this.Clicked())
{
this.clicked = true;
this.bonus += (this.clickTime - startClickTime) * 20f;
}
yield return null;
}
Debug.Log("Range over - clicked? " + this.clicked.ToString() + " " + Time.timeSinceLevelLoad.ToString());
if (!this.clicked)
{
failed = true;
}
if (failed)
{
this.lineFail.SetActive(true);
}
else
{
this.lineSuccess.SetActive(true);
}
this.raycastBlocker.enabled = false;
this.playing = false;
while (!this.listenerLine.finished)
{
yield return null;
}
this.line.SetActive(false);
this.lineSuccess.SetActive(false);
this.lineFail.SetActive(false);
this.listen = null;
yield break;
}
// Token: 0x0600132C RID: 4908 RVA: 0x00172950 File Offset: 0x00170B50
private IEnumerator ListenForClick1()
{
while (!this.canClick)
{
yield return null;
}
this.clickTime = Time.timeSinceLevelLoad;
while (!this.Clicked())
{
this.clickTime = Time.timeSinceLevelLoad;
yield return null;
}
this.clicked = true;
yield break;
}
// Token: 0x0600132D RID: 4909 RVA: 0x0017295F File Offset: 0x00170B5F
private IEnumerator ListenForClickRevive()
{
this.resurrecting = true;
float startTime = Time.timeSinceLevelLoad;
bool failed = false;
if (!this.quickStart)
{
while (this.Holding())
{
if (failed)
{
break;
}
if (Time.timeSinceLevelLoad > startTime + 5f)
{
failed = true;
this.animator.Play("QTE_ReviveStartFail", -1, 0f);
}
yield return null;
}
while (!this.Holding() && !failed)
{
if (Time.timeSinceLevelLoad > startTime + 5f)
{
failed = true;
this.animator.Play("QTE_ReviveStartFail", -1, 0f);
}
yield return null;
}
}
this.quickStart = false;
if (!failed)
{
int count = 0;
while (this.Holding() && this.CanRevive())
{
if (count == 0)
{
this.animator.Play("QTE_ReviveHold", -1, 0f);
}
int num = count;
count = num + 1;
if (this.canComplete)
{
this.clickTime = Time.timeSinceLevelLoad;
}
yield return null;
}
}
if (this.playing || failed)
{
if (failed)
{
this.completed = false;
this.playing = false;
}
else if (!this.canComplete)
{
this.completed = false;
this.AnimationDone();
this.listen = null;
}
else
{
this.completed = true;
this.AnimationDone();
this.listen = null;
}
}
yield break;
}
// Token: 0x0600132E RID: 4910 RVA: 0x0017296E File Offset: 0x00170B6E
private IEnumerator ListenForRevive2()
{
this.listenerCloseIn.canClick = false;
this.listenerCloseIn.finished = false;
this.raycastBlocker.enabled = true;
this.closeOutsideSprite.color = Color.white;
this.clicked = false;
bool failed = false;
while (!this.Holding())
{
yield return null;
}
this.closeInOutside.SetActive(true);
this.closeInInside.SetActive(true);
this.closeInScaler.SetActive(true);
this.closeInAnimEarlyOut.enabled = false;
this.clickTime = Time.timeSinceLevelLoad;
while (!this.listenerCloseIn.canClick && !failed)
{
if (!this.CanRevive())
{
failed = true;
}
if (!this.Holding())
{
failed = true;
}
yield return null;
}
if (failed)
{
this.closeInAnimEarlyOut.enabled = true;
}
while (this.listenerCloseIn.canClick && !failed && !this.clicked)
{
if (!this.Holding())
{
this.clicked = true;
}
if (!this.CanRevive())
{
failed = true;
}
this.clickTime = Time.timeSinceLevelLoad;
yield return null;
}
if (!failed)
{
this.clicked = true;
}
if (failed)
{
this.closeInInside.SetActive(false);
this.closeInMiss.SetActive(true);
}
if (this.clicked)
{
this.closeInHit.SetActive(true);
}
this.raycastBlocker.enabled = false;
if (!failed)
{
this.completed = true;
}
this.endTime = Time.timeSinceLevelLoad;
this.bonus = this.endTime - this.clickTime;
if (this.bonus < 0f)
{
this.bonus = 0f;
}
this.bonus *= 10f;
this.bonus += 1f;
this.bonus *= 25f;
this.bonus = Mathf.Ceil(this.bonus);
this.playing = false;
this.resurrectText.text = "+" + this.bonus.ToString() + " health";
if (!failed)
{
MasterAudio.PlaySoundAndForget("Feedback", 0.6f, new float?(1f), 0f, "Song Learned", null);
}
else
{
MasterAudio.PlaySoundAndForget("Feedback", 0.6f, new float?(1f), 0f, "Stat Fail", null);
}
if (failed)
{
float timeToLerp = 0.5f;
float percentage = 0f;
float startTime = Time.time;
while (percentage < 1f)
{
percentage = (Time.time - startTime) / timeToLerp;
this.closeOutsideSprite.color = Color.Lerp(Color.white, Color.clear, percentage);
yield return null;
}
timeToLerp = 0.5f;
percentage = 0f;
startTime = Time.time;
while (percentage < 1f)
{
percentage = (Time.time - startTime) / timeToLerp;
yield return null;
}
}
else
{
float startTime = 0.5f;
float percentage = 0f;
float timeToLerp = Time.time;
while (percentage < 1f)
{
percentage = (Time.time - timeToLerp) / startTime;
this.closeOutsideSprite.color = Color.Lerp(Color.white, Color.clear, percentage);
yield return null;
}
while (!this.listenerCloseIn.finished)
{
yield return null;
}
}
this.closeInScaler.SetActive(false);
this.closeInHit.SetActive(false);
this.closeInMiss.SetActive(false);
this.closeInOutside.SetActive(false);
this.closeInInside.SetActive(false);
this.resurrecting = false;
this.listen = null;
yield break;
}
// Token: 0x0600132F RID: 4911 RVA: 0x00172980 File Offset: 0x00170B80
private bool CanRevive()
{
return !(Links.x.main != this.main) && this.main && this.main.IsSentient() && this.main.stats.hitCount <= this.startHitCount + 2 && !this.main.stats.pinned && !this.main.dodging && !this.main.evading && !this.main.body.IsHit() && (this.main.currentPosition - this.startPosition).sqrMagnitude <= 16f;
}
// Token: 0x06001330 RID: 4912 RVA: 0x00172A4E File Offset: 0x00170C4E
public void MadeIt()
{
this.clickTime = Time.timeSinceLevelLoad;
this.canComplete = true;
}
// Token: 0x06001331 RID: 4913 RVA: 0x00172A64 File Offset: 0x00170C64
public void AnimationDone()
{
if (this.listen != null)
{
base.StopCoroutine(this.listen);
this.listen = null;
}
if (this.eventType == "ATB")
{
this.endTime = Time.timeSinceLevelLoad;
this.bonus = 1f - (this.endTime - this.clickTime);
if (this.bonus < 0f)
{
this.bonus = 0f;
}
this.bonus += 1f;
this.bonus = this.R1(this.bonus);
this.actionText.text = this.bonus.ToString() + " x";
}
else if (!(this.eventType == "Spirit1") && this.eventType == "Revive")
{
this.endTime = Time.timeSinceLevelLoad;
this.bonus = this.endTime - this.clickTime;
if (this.bonus < 0f)
{
this.bonus = 0f;
}
this.bonus *= 10f;
this.bonus += 1f;
this.bonus *= 25f;
this.bonus = Mathf.Ceil(this.bonus);
this.reviveText.text = "+" + this.bonus.ToString() + " health";
if (this.canComplete)
{
this.completed = true;
MasterAudio.PlaySoundAndForget("Feedback", 0.6f, new float?(1f), 0f, "Song Learned", null);
this.animator.Play("QTE_ReviveSuccess", -1, 0f);
}
else
{
MasterAudio.PlaySoundAndForget("Feedback", 0.6f, new float?(1f), 0f, "Stat Fail", null);
this.animator.Play("QTE_ReviveFail", -1, 0f);
}
}
this.playing = false;
this.resurrecting = false;
}
// Token: 0x06001332 RID: 4914 RVA: 0x00172C97 File Offset: 0x00170E97
public float R1(float x)
{
return Mathf.Round(x * 10f) / 10f;
}
// Token: 0x0400203A RID: 8250
public Animator animator;
// Token: 0x0400203B RID: 8251
public Animator closeInAnimEarlyOut;
// Token: 0x0400203C RID: 8252
public Animator closeInScalar;
// Token: 0x0400203D RID: 8253
public Animator moonPunchAnimator;
// Token: 0x0400203E RID: 8254
public GameObject closeInOutside;
// Token: 0x0400203F RID: 8255
public GameObject closeInInside;
// Token: 0x04002040 RID: 8256
public GameObject closeInScaler;
// Token: 0x04002041 RID: 8257
public GameObject closeInHit;
// Token: 0x04002042 RID: 8258
public GameObject closeInMiss;
// Token: 0x04002043 RID: 8259
public GameObject moonPunch;
// Token: 0x04002044 RID: 8260
public GameObject moonPunchSuccess;
// Token: 0x04002045 RID: 8261
public GameObject moonPunchFail;
// Token: 0x04002046 RID: 8262
public GameObject line;
// Token: 0x04002047 RID: 8263
public GameObject lineSuccess;
// Token: 0x04002048 RID: 8264
public GameObject lineFail;
// Token: 0x04002049 RID: 8265
public bool clicked;
// Token: 0x0400204A RID: 8266
public bool canClick;
// Token: 0x0400204B RID: 8267
public bool playing;
// Token: 0x0400204C RID: 8268
private IEnumerator listen;
// Token: 0x0400204D RID: 8269
public float clickTime;
// Token: 0x0400204E RID: 8270
public float endTime;
// Token: 0x0400204F RID: 8271
public float bonus;
// Token: 0x04002050 RID: 8272
public TextMeshProUGUI actionText;
// Token: 0x04002051 RID: 8273
public TextMeshProUGUI reviveText;
// Token: 0x04002052 RID: 8274
public TextMeshProUGUI moonPunchText;
// Token: 0x04002053 RID: 8275
public TextMeshProUGUI resurrectText;
// Token: 0x04002054 RID: 8276
public string eventType;
// Token: 0x04002055 RID: 8277
public bool completed;
// Token: 0x04002056 RID: 8278
public bool canComplete;
// Token: 0x04002057 RID: 8279
public bool quickStart;
// Token: 0x04002058 RID: 8280
public bool resurrecting;
// Token: 0x04002059 RID: 8281
private Character main;
// Token: 0x0400205A RID: 8282
private int startHitCount;
// Token: 0x0400205B RID: 8283
private Vector3 startPosition;
// Token: 0x0400205C RID: 8284
public ListenerQTE listenerCloseIn;
// Token: 0x0400205D RID: 8285
public ListenerQTE listenerMoonPunch;
// Token: 0x0400205E RID: 8286
public ListenerQTE listenerLine;
// Token: 0x0400205F RID: 8287
public Image raycastBlocker;
// Token: 0x04002060 RID: 8288
public Image closeOutsideSprite;
// Token: 0x04002061 RID: 8289
private bool debug;
// Token: 0x04002062 RID: 8290
public bool show;
// Token: 0x04002063 RID: 8291
public CanvasGroup moonPunchGroup;
// Token: 0x04002064 RID: 8292
public string bonusType;
}