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

597 lines
14 KiB
C#

using System;
using PixelCrushers.DialogueSystem;
using TMPro;
using UnityEngine;
using UnityEngine.UI;
// Token: 0x020000C7 RID: 199
public class OverHeadUI : MonoBehaviour
{
// Token: 0x06001287 RID: 4743 RVA: 0x001669DC File Offset: 0x00164BDC
private void Awake()
{
this.tr = base.transform;
this.originalScale = this.tr.localScale;
if (this.img)
{
this.img.enabled = false;
if (this.sprite1 != null)
{
this.img.sprite = this.sprite1;
}
}
if (this.img2)
{
this.img2.enabled = false;
}
if (this.text)
{
this.text.enabled = false;
this.text.text = "";
}
if (this.textWorld)
{
this.textWorld.enabled = false;
this.textWorld.text = "";
}
if (!this.camTr)
{
this.camTr = Links.x.worldCamera.gameObject.transform;
}
this.forw = Vector3.forward;
this.up = Vector3.up;
}
// Token: 0x06001288 RID: 4744 RVA: 0x00166AE8 File Offset: 0x00164CE8
public void Setup(Body playerBody)
{
if (!playerBody)
{
return;
}
this.canvas = Links.x.hudCanvas;
this.body = playerBody;
this.player = this.body.character;
this.tr.localScale = this.originalScale;
if (this.img)
{
this.img.enabled = true;
}
if (this.img2)
{
this.img2.enabled = true;
}
if (this.text)
{
this.text.enabled = true;
if (!this.textRT)
{
this.textRT = this.text.gameObject.GetComponent<RectTransform>();
}
this.textRT.sizeDelta = new Vector2(this.text.preferredWidth, this.text.preferredHeight);
this.rt.sizeDelta = new Vector2(this.textRT.sizeDelta.x, this.textRT.sizeDelta.y);
this.textSize = new Vector2(this.text.preferredWidth, this.text.preferredHeight);
}
if (this.textWorld)
{
this.textWorld.enabled = true;
this.l = (float)this.textWorld.text.Length;
}
this.startTime = Time.timeSinceLevelLoad;
this.startGameTime = Links.x.gameplay.seconds;
this.opacity = 1f;
this.animTime = Time.realtimeSinceStartup;
this.currentAnimIndex = 0;
if (this.doAnimation)
{
this.img.enabled = false;
this.img.sprite = this.sprite1;
this.textRT.localScale = new Vector3(0f, 0f, 0f);
this.spriteSizeMultiplierX = this.textRT.sizeDelta.x / this.sprite6size.x;
this.spriteSizeMultiplierY = this.textRT.sizeDelta.y / this.sprite6size.y;
this.rt.sizeDelta = this.sprite1size * new Vector2(this.spriteSizeMultiplierX, this.spriteSizeMultiplierY);
}
this.ending = false;
}
// Token: 0x06001289 RID: 4745 RVA: 0x00166D48 File Offset: 0x00164F48
public void ReturnToCellar()
{
this.emphasize = false;
this.txt = "";
if (!this.menu)
{
this.tr.position = new Vector3(10000f, 100000f, 0f);
}
if (this.img)
{
this.img.enabled = false;
if (this.sprite1 != null)
{
this.img.sprite = this.sprite1;
}
}
if (this.img2)
{
this.img2.enabled = false;
}
if (this.text)
{
this.text.enabled = false;
this.txt = "";
this.text.text = "";
}
if (this.textWorld)
{
this.textWorld.enabled = false;
this.textWorld.text = "";
}
if (this.typewriter)
{
this.typewriter.enabled = false;
}
if (this.typewriter)
{
Object.Destroy(this.typewriter);
}
}
// Token: 0x0600128A RID: 4746 RVA: 0x00166E70 File Offset: 0x00165070
public void UpdateImage2(int state)
{
if (state == 0 || !Records.x.InCombat(false))
{
if (this.img2.enabled)
{
this.img2.enabled = false;
return;
}
}
else
{
if (state == 2)
{
this.img2.enabled = true;
return;
}
if (state == 1)
{
this.img2.enabled = true;
this.img2.color = Links.x.GetPartyColorRGB(this.player);
}
}
}
// Token: 0x0600128B RID: 4747 RVA: 0x00166EE4 File Offset: 0x001650E4
public void End()
{
if (this.doAnimation)
{
this.ending = true;
this.animTime = Time.realtimeSinceStartup - 0.03f;
this.currentAnimIndex = 0;
this.img.sprite = this.sprite5;
this.rt.sizeDelta = this.sprite5size * new Vector2(this.spriteSizeMultiplierX, this.spriteSizeMultiplierY);
if (!this.textRT)
{
this.textRT = this.text.gameObject.GetComponent<RectTransform>();
}
this.textRT.localScale = new Vector3(0f, 0f, 0f);
if (this.typewriter)
{
Object.Destroy(this.typewriter);
return;
}
}
else
{
this.EndFinal();
}
}
// Token: 0x0600128C RID: 4748 RVA: 0x00166FB4 File Offset: 0x001651B4
public void EndFinal()
{
base.gameObject.SetActive(false);
this.player = null;
this.body = null;
this.ending = false;
this.currentAnimIndex = 0;
if (this.doAnimation)
{
if (this.img)
{
this.img.sprite = this.sprite1;
}
if (this.textRT)
{
this.textRT.localScale = new Vector3(0f, 0f, 0f);
this.spriteSizeMultiplierX = this.textRT.sizeDelta.x / this.sprite6size.x;
this.spriteSizeMultiplierY = this.textRT.sizeDelta.y / this.sprite6size.y;
}
if (this.rt)
{
this.rt.sizeDelta = this.sprite1size * new Vector2(this.spriteSizeMultiplierX, this.spriteSizeMultiplierY);
}
}
if (this.img)
{
this.img.enabled = false;
}
if (this.img2)
{
this.img2.enabled = false;
}
if (this.text)
{
this.text.enabled = false;
this.txt = "";
this.text.text = "";
}
if (this.textWorld)
{
this.textWorld.enabled = false;
this.textWorld.text = "";
}
if (this.typewriter)
{
this.typewriter.enabled = false;
}
if (this.toCellar)
{
this.ReturnToCellar();
}
if (this.typewriter)
{
Object.Destroy(this.typewriter);
}
}
// Token: 0x0600128D RID: 4749 RVA: 0x00167184 File Offset: 0x00165384
private void LateUpdate()
{
if (Links.x.gameplay.seconds > this.startGameTime + 144f)
{
this.EndFinal();
return;
}
this.Position();
}
// Token: 0x0600128E RID: 4750 RVA: 0x001671B0 File Offset: 0x001653B0
private void Position()
{
float num = this.yHeight;
Camera camera = Links.x.worldCamera;
if (this.menu)
{
camera = Links.x.camera3D;
}
if (this.menu)
{
num += 2f;
}
if (this.doAnimation)
{
if (Time.realtimeSinceStartup > this.animTime + 0.03f && (this.ending || this.currentAnimIndex < 6))
{
this.animTime = Time.realtimeSinceStartup;
this.currentAnimIndex++;
if (this.ending)
{
if (this.currentAnimIndex >= 5)
{
this.EndFinal();
return;
}
if (this.currentAnimIndex == 1)
{
this.img.sprite = this.sprite4;
this.rt.sizeDelta = this.sprite4size * new Vector2(this.spriteSizeMultiplierX, this.spriteSizeMultiplierY);
}
if (this.currentAnimIndex == 2)
{
this.img.sprite = this.sprite3;
this.rt.sizeDelta = this.sprite3size * new Vector2(this.spriteSizeMultiplierX, this.spriteSizeMultiplierY);
}
if (this.currentAnimIndex == 3)
{
this.img.sprite = this.sprite2;
this.rt.sizeDelta = this.sprite2size * new Vector2(this.spriteSizeMultiplierX, this.spriteSizeMultiplierY);
}
if (this.currentAnimIndex == 4)
{
this.img.sprite = this.sprite1;
this.rt.sizeDelta = this.sprite1size * new Vector2(this.spriteSizeMultiplierX, this.spriteSizeMultiplierY);
}
}
else
{
if (this.currentAnimIndex == 1)
{
this.img.enabled = true;
this.img.sprite = this.sprite2;
this.rt.sizeDelta = this.sprite2size * new Vector2(this.spriteSizeMultiplierX, this.spriteSizeMultiplierY);
}
if (this.currentAnimIndex == 2)
{
this.img.enabled = true;
this.img.sprite = this.sprite3;
this.rt.sizeDelta = this.sprite3size * new Vector2(this.spriteSizeMultiplierX, this.spriteSizeMultiplierY);
}
if (this.currentAnimIndex == 3)
{
this.img.enabled = true;
this.img.sprite = this.sprite4;
this.rt.sizeDelta = this.sprite4size * new Vector2(this.spriteSizeMultiplierX, this.spriteSizeMultiplierY);
}
if (this.currentAnimIndex == 4)
{
this.img.enabled = true;
this.img.sprite = this.sprite5;
this.rt.sizeDelta = this.sprite5size * new Vector2(this.spriteSizeMultiplierX, this.spriteSizeMultiplierY);
}
if (this.currentAnimIndex == 5)
{
this.img.enabled = true;
this.img.sprite = this.sprite6;
this.textRT.localScale = new Vector3(1f, 1f, 1f);
this.rt.sizeDelta = this.textRT.sizeDelta;
this.img.type = Image.Type.Sliced;
}
}
}
if (this.textRT)
{
this.spriteSizeMultiplierX = this.textRT.sizeDelta.x / this.sprite6size.x;
this.spriteSizeMultiplierY = this.textRT.sizeDelta.y / this.sprite6size.y;
if (this.textRT.sizeDelta.y != this.textSize.y)
{
this.textRT.sizeDelta = new Vector2(this.textSize.x, this.textSize.y);
this.rt.sizeDelta = new Vector2(this.textRT.sizeDelta.x, this.textRT.sizeDelta.y);
}
}
}
if (this.emphasize && !this.menu && Time.timeSinceLevelLoad > this.startTime + 0.4f && this.tr.localScale == this.originalScale)
{
this.tr.localScale = this.originalScale * 1.15f;
Links.x.itemPickupFX.gameObject.SetActive(true);
Links.x.itemPickupFX.gameObject.GetComponent<HannahAnimator>().Play("Idle");
Vector3 position = this.tr.GetChild(0).position;
Vector3 vector = Links.x.worldCamera.WorldToScreenPoint(position);
vector.z = 0f;
vector.x = vector.x * (1920f / (float)Screen.width) - 960f;
vector.y = vector.y * (Links.x.canvasRT.sizeDelta.y / (float)Screen.height) - Links.x.canvasRT.sizeDelta.y / 2f;
Links.x.itemPickupFX.localPosition = vector;
}
if (this.body)
{
Transform head = this.body.GetHead();
if (head)
{
Vector3 vector2 = head.position;
vector2 += new Vector3(this.xOffset, num, 0f);
if (!Links.x.worldCamera.orthographic)
{
vector2.y += 0.3f;
}
if (this.body.character && this.body.character.stats.pinning)
{
vector2.y += 0.5f;
}
if (!this.menu)
{
if (!this.useWorldUI)
{
this.screenPos = camera.WorldToScreenPoint(vector2);
if (this.screenPos.y / (float)Screen.height > 0.95f && !Links.x.worldCamera.orthographic)
{
this.screenPos.y = this.screenPos.y - 150f;
}
this.screenPos.z = 0f;
this.screenPos.x = this.screenPos.x * (1920f / (float)Screen.width) - 960f;
this.screenPos.y = this.screenPos.y * (Links.x.canvasRT.sizeDelta.y / (float)Screen.height) - Links.x.canvasRT.sizeDelta.y / 2f;
this.rt.localPosition = this.screenPos;
}
else
{
this.tr.position = vector2;
this.tr.LookAt(this.tr.position + this.camTr.rotation * this.forw, this.camTr.rotation * this.up);
}
}
}
}
if (this.player)
{
if ((this.player.dead || this.player.missing || this.player.stunned) && !this.ending)
{
this.End();
}
if (Links.x.hasMain && this.player.indoorID != Links.x.main.indoorID)
{
this.ReturnToCellar();
}
}
if (this.textWorld)
{
if (Links.x.characterSheet.open || Records.x.dialogue)
{
if (this.text)
{
Color color = this.text.color;
if (!this.menu)
{
color.a = 0f;
this.text.color = color;
return;
}
color.a = this.opacity;
this.text.color = color;
return;
}
else if (this.textWorld)
{
Color color2 = this.textWorld.color;
if (!this.menu)
{
color2.a = 0f;
this.textWorld.color = color2;
return;
}
color2.a = this.opacity;
this.textWorld.color = color2;
return;
}
}
else
{
Color color3 = this.textWorld.color;
if (Time.timeSinceLevelLoad > this.startTime + (0.8f + this.l * 0.05f))
{
this.opacity = Mathf.Lerp(this.opacity, 0f, Time.deltaTime * 2f);
}
color3.a = this.opacity;
this.textWorld.color = color3;
}
}
}
// Token: 0x04001E8B RID: 7819
public Character player;
// Token: 0x04001E8C RID: 7820
public Body body;
// Token: 0x04001E8D RID: 7821
public float yHeight;
// Token: 0x04001E8E RID: 7822
public float xOffset;
// Token: 0x04001E8F RID: 7823
private Transform tr;
// Token: 0x04001E90 RID: 7824
private Canvas canvas;
// Token: 0x04001E91 RID: 7825
public Image img;
// Token: 0x04001E92 RID: 7826
public Image img2;
// Token: 0x04001E93 RID: 7827
public RectTransform rt;
// Token: 0x04001E94 RID: 7828
public RectTransform textRT;
// Token: 0x04001E95 RID: 7829
private Vector3 originalScale;
// Token: 0x04001E96 RID: 7830
public TextMeshProUGUI text;
// Token: 0x04001E97 RID: 7831
public TextMeshPro textWorld;
// Token: 0x04001E98 RID: 7832
public Vector3 screenPos;
// Token: 0x04001E99 RID: 7833
public string txt;
// Token: 0x04001E9A RID: 7834
public TextMeshProTypewriterEffect typewriter;
// Token: 0x04001E9B RID: 7835
public bool menu;
// Token: 0x04001E9C RID: 7836
public bool useWorldUI;
// Token: 0x04001E9D RID: 7837
private Transform camTr;
// Token: 0x04001E9E RID: 7838
private Vector3 forw;
// Token: 0x04001E9F RID: 7839
private Vector3 up;
// Token: 0x04001EA0 RID: 7840
public bool emphasize;
// Token: 0x04001EA1 RID: 7841
private float startTime;
// Token: 0x04001EA2 RID: 7842
public float startGameTime;
// Token: 0x04001EA3 RID: 7843
private float opacity;
// Token: 0x04001EA4 RID: 7844
private float l;
// Token: 0x04001EA5 RID: 7845
public bool doAnimation;
// Token: 0x04001EA6 RID: 7846
public bool toCellar;
// Token: 0x04001EA7 RID: 7847
public Sprite sprite1;
// Token: 0x04001EA8 RID: 7848
public Sprite sprite2;
// Token: 0x04001EA9 RID: 7849
public Sprite sprite3;
// Token: 0x04001EAA RID: 7850
public Sprite sprite4;
// Token: 0x04001EAB RID: 7851
public Sprite sprite5;
// Token: 0x04001EAC RID: 7852
public Sprite sprite6;
// Token: 0x04001EAD RID: 7853
public Vector2 sprite1size;
// Token: 0x04001EAE RID: 7854
public Vector2 sprite2size;
// Token: 0x04001EAF RID: 7855
public Vector2 sprite3size;
// Token: 0x04001EB0 RID: 7856
public Vector2 sprite4size;
// Token: 0x04001EB1 RID: 7857
public Vector2 sprite5size;
// Token: 0x04001EB2 RID: 7858
public Vector2 sprite6size;
// Token: 0x04001EB3 RID: 7859
public float spriteSizeMultiplierX = 0.5f;
// Token: 0x04001EB4 RID: 7860
public float spriteSizeMultiplierY = 0.25f;
// Token: 0x04001EB5 RID: 7861
public float animTime;
// Token: 0x04001EB6 RID: 7862
public int currentAnimIndex;
// Token: 0x04001EB7 RID: 7863
public bool ending;
// Token: 0x04001EB8 RID: 7864
public Vector2 textSize;
}