Add source files
This commit is contained in:
542
Projects/BanquetForFools/Source/Assembly-CSharp/StatusRing.cs
Normal file
542
Projects/BanquetForFools/Source/Assembly-CSharp/StatusRing.cs
Normal file
@@ -0,0 +1,542 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using DarkTonic.MasterAudio;
|
||||
using UnityEngine;
|
||||
|
||||
// Token: 0x02000052 RID: 82
|
||||
public class StatusRing : MonoBehaviour
|
||||
{
|
||||
// Token: 0x06000AC8 RID: 2760 RVA: 0x000D6238 File Offset: 0x000D4438
|
||||
public void AddEffect(string type, Effects effect, bool addToList, int arrows)
|
||||
{
|
||||
this.allUseHead = true;
|
||||
if (this.sprites.Count == 0)
|
||||
{
|
||||
if (!this.tr)
|
||||
{
|
||||
this.tr = base.transform;
|
||||
}
|
||||
this.updateTime = Time.timeSinceLevelLoad;
|
||||
}
|
||||
if (!this.spriteNames.Contains(type) || addToList)
|
||||
{
|
||||
Sprite effectImageMedium = Links.x.archives.GetEffectImageMedium(type);
|
||||
if (effectImageMedium)
|
||||
{
|
||||
GameObject gameObject = new GameObject("Effect");
|
||||
Transform transform = gameObject.transform;
|
||||
transform.SetParent(base.gameObject.transform);
|
||||
transform.localPosition = Vector3.zero;
|
||||
transform.localScale = Vector3.one * this.normalScale;
|
||||
if (Links.x.combat.inPocketAttack)
|
||||
{
|
||||
transform.localScale = Vector3.one * 1f;
|
||||
}
|
||||
gameObject.layer = 3;
|
||||
SpriteRenderer spriteRenderer = gameObject.AddComponent<SpriteRenderer>();
|
||||
spriteRenderer.sprite = effectImageMedium;
|
||||
spriteRenderer.material = Links.x.spriteEffectMaterial;
|
||||
if (type.Contains("Up") || type.Contains("Down"))
|
||||
{
|
||||
GameObject gameObject2 = new GameObject("Arrow");
|
||||
gameObject2.layer = 3;
|
||||
Transform transform2 = gameObject2.transform;
|
||||
transform2.SetParent(transform);
|
||||
transform2.localPosition = new Vector3(-0.55f, 0f, -0.05f);
|
||||
transform2.localScale = Vector3.one * 0.62f;
|
||||
spriteRenderer = gameObject2.AddComponent<SpriteRenderer>();
|
||||
if (type.Contains("Up"))
|
||||
{
|
||||
if (arrows <= 1)
|
||||
{
|
||||
spriteRenderer.sprite = Links.x.archives.arrowUp1;
|
||||
}
|
||||
else if (arrows == 2)
|
||||
{
|
||||
spriteRenderer.sprite = Links.x.archives.arrowUp2;
|
||||
}
|
||||
else if (arrows == 3)
|
||||
{
|
||||
spriteRenderer.sprite = Links.x.archives.arrowUp3;
|
||||
}
|
||||
}
|
||||
else if (arrows <= 1)
|
||||
{
|
||||
spriteRenderer.sprite = Links.x.archives.arrowDown1;
|
||||
}
|
||||
else if (arrows == 2)
|
||||
{
|
||||
spriteRenderer.sprite = Links.x.archives.arrowDown2;
|
||||
}
|
||||
else if (arrows == 3)
|
||||
{
|
||||
spriteRenderer.sprite = Links.x.archives.arrowDown3;
|
||||
}
|
||||
spriteRenderer.material = Links.x.spriteEffectMaterial;
|
||||
}
|
||||
int count = this.sprites.Count;
|
||||
if (addToList)
|
||||
{
|
||||
this.sprites.Add(gameObject);
|
||||
if (count == 0)
|
||||
{
|
||||
int num = Random.Range(0, 8);
|
||||
this.angles.Add((float)num * 45f);
|
||||
}
|
||||
else
|
||||
{
|
||||
float num2 = 3f;
|
||||
if (!this.allUseHead)
|
||||
{
|
||||
num2 = 2f;
|
||||
}
|
||||
if (count == 1)
|
||||
{
|
||||
this.angles.Add(this.angles[0] + 180f * num2);
|
||||
}
|
||||
if (count == 2)
|
||||
{
|
||||
this.angles.Add(this.angles[0] + 90f * num2);
|
||||
}
|
||||
if (count == 3)
|
||||
{
|
||||
this.angles.Add(this.angles[0] + -90f * num2);
|
||||
}
|
||||
if (count == 4)
|
||||
{
|
||||
this.angles.Add(this.angles[0] + 45f * num2);
|
||||
}
|
||||
if (count == 5)
|
||||
{
|
||||
this.angles.Add(this.angles[0] + 135f * num2);
|
||||
}
|
||||
if (count == 6)
|
||||
{
|
||||
this.angles.Add(this.angles[0] + -45f * num2);
|
||||
}
|
||||
if (count == 7)
|
||||
{
|
||||
this.angles.Add(this.angles[0] + -135f * num2);
|
||||
}
|
||||
if (count == 8)
|
||||
{
|
||||
this.angles.Add(this.angles[0] + 22.5f * num2);
|
||||
}
|
||||
if (count == 9)
|
||||
{
|
||||
this.angles.Add(this.angles[0] + 157.5f * num2);
|
||||
}
|
||||
if (count == 10)
|
||||
{
|
||||
this.angles.Add(this.angles[0] + 67.5f * num2);
|
||||
}
|
||||
if (count == 11)
|
||||
{
|
||||
this.angles.Add(this.angles[0] + 202.5f * num2);
|
||||
}
|
||||
if (count == 12)
|
||||
{
|
||||
this.angles.Add(this.angles[0] + -22.5f * num2);
|
||||
}
|
||||
if (count == 13)
|
||||
{
|
||||
this.angles.Add(this.angles[0] + -157.5f * num2);
|
||||
}
|
||||
if (count == 14)
|
||||
{
|
||||
this.angles.Add(this.angles[0] + -67.5f * num2);
|
||||
}
|
||||
if (count == 15)
|
||||
{
|
||||
this.angles.Add(this.angles[0] + -202.5f * num2);
|
||||
}
|
||||
if (count > 15)
|
||||
{
|
||||
this.angles.Add(Random.Range(0f, 360f));
|
||||
}
|
||||
}
|
||||
this.effects.Add(effect);
|
||||
this.fx.Add(null);
|
||||
this.spriteNames.Add(type);
|
||||
this.arrow.Add(arrows);
|
||||
this.timeSinceAdded.Add(Time.timeSinceLevelLoad);
|
||||
MasterAudio.PlaySound3DAtVector3AndForget("Paper", this.character.torsoPosition, 1f, new float?(1f), 0f, "", null);
|
||||
}
|
||||
else
|
||||
{
|
||||
count = this.savedIndex;
|
||||
this.sprites[this.savedIndex] = gameObject;
|
||||
this.angles[this.savedIndex] = this.savedAngle;
|
||||
this.timeSinceAdded[this.savedIndex] = -1f;
|
||||
}
|
||||
int num3 = arrows;
|
||||
for (int i = 0; i < this.spriteNames.Count; i++)
|
||||
{
|
||||
if (this.spriteNames[i] == type && i != count && this.arrow[i] > num3)
|
||||
{
|
||||
num3 += this.arrow[i];
|
||||
}
|
||||
}
|
||||
if (num3 != arrows && this.sprites[count])
|
||||
{
|
||||
if (Records.x.editor)
|
||||
{
|
||||
string text = "Found better arrow amount ";
|
||||
string text2 = " ";
|
||||
Character character = this.character;
|
||||
Debug.Log(text + type + text2 + ((character != null) ? character.ToString() : null));
|
||||
}
|
||||
if (type.Contains("Up") || type.Contains("Down"))
|
||||
{
|
||||
spriteRenderer = this.sprites[count].transform.GetChild(0).gameObject.GetComponent<SpriteRenderer>();
|
||||
if (type.Contains("Up"))
|
||||
{
|
||||
if (arrows <= 1)
|
||||
{
|
||||
spriteRenderer.sprite = Links.x.archives.arrowUp1;
|
||||
}
|
||||
else if (arrows == 2)
|
||||
{
|
||||
spriteRenderer.sprite = Links.x.archives.arrowUp2;
|
||||
}
|
||||
else if (arrows == 3)
|
||||
{
|
||||
spriteRenderer.sprite = Links.x.archives.arrowUp3;
|
||||
}
|
||||
}
|
||||
else if (arrows <= 1)
|
||||
{
|
||||
spriteRenderer.sprite = Links.x.archives.arrowDown1;
|
||||
}
|
||||
else if (arrows == 2)
|
||||
{
|
||||
spriteRenderer.sprite = Links.x.archives.arrowDown2;
|
||||
}
|
||||
else if (arrows == 3)
|
||||
{
|
||||
spriteRenderer.sprite = Links.x.archives.arrowDown3;
|
||||
}
|
||||
}
|
||||
}
|
||||
this.Rotate(count, type);
|
||||
}
|
||||
}
|
||||
else if (addToList)
|
||||
{
|
||||
this.effects.Add(effect);
|
||||
this.fx.Add(null);
|
||||
this.spriteNames.Add(type);
|
||||
this.sprites.Add(null);
|
||||
this.angles.Add(0f);
|
||||
this.timeSinceAdded.Add(0f);
|
||||
this.arrow.Add(arrows);
|
||||
}
|
||||
base.gameObject.SetActive(true);
|
||||
}
|
||||
|
||||
// Token: 0x06000AC9 RID: 2761 RVA: 0x000D6A00 File Offset: 0x000D4C00
|
||||
public void RemoveEffect(string type, Effects effect)
|
||||
{
|
||||
this.removing = true;
|
||||
int num = this.effects.IndexOf(effect);
|
||||
Vector3 vector = Vector3.zero;
|
||||
bool flag = false;
|
||||
if (num > -1)
|
||||
{
|
||||
this.effects.RemoveAt(num);
|
||||
GameObject gameObject = this.sprites[num];
|
||||
if (gameObject)
|
||||
{
|
||||
flag = true;
|
||||
vector = this.sprites[num].transform.position;
|
||||
Object.Destroy(gameObject);
|
||||
}
|
||||
this.sprites.RemoveAt(num);
|
||||
this.fx.RemoveAt(num);
|
||||
this.spriteNames.RemoveAt(num);
|
||||
this.savedAngle = this.angles[num];
|
||||
this.angles.RemoveAt(num);
|
||||
this.arrow.RemoveAt(num);
|
||||
this.timeSinceAdded.RemoveAt(num);
|
||||
}
|
||||
int num2 = this.spriteNames.IndexOf(type);
|
||||
if (num2 > -1 && flag)
|
||||
{
|
||||
this.AddEffect(type, this.effects[num2], false, this.arrow[num2]);
|
||||
}
|
||||
if (num2 == -1)
|
||||
{
|
||||
RectTransform hannahAnimator = Links.x.cellar.GetHannahAnimator(1);
|
||||
hannahAnimator.gameObject.SetActive(true);
|
||||
HannahAnimator component = hannahAnimator.gameObject.GetComponent<HannahAnimator>();
|
||||
component.Play("Idle");
|
||||
Vector3 vector2 = Links.x.worldCamera.WorldToScreenPoint(vector);
|
||||
vector2.z = 0f;
|
||||
vector2.x = vector2.x * (1920f / (float)Screen.width) - 960f;
|
||||
vector2.y = vector2.y * (Links.x.canvasRT.sizeDelta.y / (float)Screen.height) - Links.x.canvasRT.sizeDelta.y / 2f;
|
||||
hannahAnimator.localPosition = vector2;
|
||||
if (type.Contains("Down"))
|
||||
{
|
||||
component.imageRenderer.color = new Color(0.83137256f, 0.23529412f, 0.1764706f, 1f);
|
||||
}
|
||||
else if (type.Contains("Up"))
|
||||
{
|
||||
component.imageRenderer.color = new Color(0.42352942f, 0.6901961f, 0.18039216f, 1f);
|
||||
}
|
||||
else
|
||||
{
|
||||
component.imageRenderer.color = new Color(0.74509805f, 0.41568628f, 0.23529412f, 1f);
|
||||
}
|
||||
}
|
||||
if (this.sprites.Count == 0 && !this.character.party)
|
||||
{
|
||||
this.ending = 1;
|
||||
}
|
||||
this.removing = false;
|
||||
}
|
||||
|
||||
// Token: 0x06000ACA RID: 2762 RVA: 0x000D6C80 File Offset: 0x000D4E80
|
||||
public void End()
|
||||
{
|
||||
for (int i = 0; i < this.sprites.Count; i++)
|
||||
{
|
||||
if (this.sprites[i])
|
||||
{
|
||||
Object.Destroy(this.sprites[i].gameObject);
|
||||
}
|
||||
}
|
||||
for (int j = base.transform.childCount - 1; j >= 0; j--)
|
||||
{
|
||||
if (base.transform.GetChild(j))
|
||||
{
|
||||
Object.Destroy(base.transform.GetChild(j).gameObject);
|
||||
}
|
||||
}
|
||||
Object.Destroy(base.gameObject);
|
||||
}
|
||||
|
||||
// Token: 0x06000ACB RID: 2763 RVA: 0x000D6D18 File Offset: 0x000D4F18
|
||||
private void LateUpdate()
|
||||
{
|
||||
this.Rotate(-1, "");
|
||||
}
|
||||
|
||||
// Token: 0x06000ACC RID: 2764 RVA: 0x000D6D28 File Offset: 0x000D4F28
|
||||
private void Rotate(int index, string n)
|
||||
{
|
||||
if (this.sprites.Count > 0 && !this.removing && this.character)
|
||||
{
|
||||
bool flag = false;
|
||||
if (this.character == Links.x.gameplay.gameCardCharacter && Links.x.gameCard.animator.enabled)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
if (this.character.party && this.character.portrait && this.character.portrait.hovering)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
float num = this.radius;
|
||||
float num2 = this.speedBoost;
|
||||
bool flag2 = this.allUseHead;
|
||||
if (this.character.stats.flying)
|
||||
{
|
||||
flag2 = true;
|
||||
}
|
||||
if (this.character.body.IsHit() || this.character.downed || this.character.dead || this.character.stunned || this.character.sleeping || this.character.animID == 8 || flag2)
|
||||
{
|
||||
float num3 = 1f;
|
||||
if (this.character.neck == this.character.body.tr)
|
||||
{
|
||||
this.tr.position = this.character.body.headBone.position + new Vector3(0f, num3, 0f);
|
||||
}
|
||||
else
|
||||
{
|
||||
this.tr.position = this.character.neck.position + new Vector3(0f, num3, 0f);
|
||||
}
|
||||
num = this.radius * 1.7f;
|
||||
num2 = this.speedBoost * 1f;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.tr.position = this.character.tr.position + new Vector3(0f, this.yAdd, 0f);
|
||||
}
|
||||
Vector3 eulerAngles = Quaternion.LookRotation(this.character.currentPosition - Links.x.worldCamera.gameObject.transform.position).eulerAngles;
|
||||
eulerAngles.x = 0f;
|
||||
eulerAngles.z = 0f;
|
||||
this.tr.rotation = Quaternion.Euler(eulerAngles);
|
||||
if (Time.timeSinceLevelLoad > this.updateTime + this.updateSpeed || index > -1)
|
||||
{
|
||||
this.updateTime = Time.timeSinceLevelLoad;
|
||||
for (int i = 0; i < this.sprites.Count; i++)
|
||||
{
|
||||
if ((index == -1 || i == index) && this.sprites[i])
|
||||
{
|
||||
float num4 = this.angles[i];
|
||||
num4 += this.moveSpeed * Time.deltaTime;
|
||||
this.sprites[i].transform.localPosition = new Vector3(Mathf.Cos(num4 * num2), 0f, Mathf.Sin(num4 * num2)) / num;
|
||||
if (Random.Range(0, 3) == 0)
|
||||
{
|
||||
this.sprites[i].transform.localRotation = Quaternion.Euler(new Vector3(Random.Range(-5f, 5f), Random.Range(-15f, 15f), Random.Range(-5f, 5f)));
|
||||
}
|
||||
this.angles[i] = num4;
|
||||
if (this.fx[i] && this.fx[i].gameObject.activeSelf)
|
||||
{
|
||||
Vector3 vector = Links.x.worldCamera.WorldToScreenPoint(this.sprites[i].transform.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;
|
||||
this.fx[i].localPosition = vector;
|
||||
}
|
||||
if (index > -1)
|
||||
{
|
||||
RectTransform hannahAnimator = Links.x.cellar.GetHannahAnimator(0);
|
||||
this.fx[index] = hannahAnimator;
|
||||
hannahAnimator.gameObject.SetActive(true);
|
||||
HannahAnimator component = hannahAnimator.gameObject.GetComponent<HannahAnimator>();
|
||||
component.Play("Idle");
|
||||
if (n.Contains("Down"))
|
||||
{
|
||||
component.imageRenderer.color = new Color(0.83137256f, 0.23529412f, 0.1764706f, 1f);
|
||||
}
|
||||
else if (n.Contains("Up"))
|
||||
{
|
||||
component.imageRenderer.color = new Color(0.42352942f, 0.6901961f, 0.18039216f, 1f);
|
||||
}
|
||||
else
|
||||
{
|
||||
component.imageRenderer.color = new Color(0.74509805f, 0.41568628f, 0.23529412f, 1f);
|
||||
}
|
||||
Vector3 vector2 = Links.x.worldCamera.WorldToScreenPoint(this.sprites[i].transform.position);
|
||||
vector2.z = 0f;
|
||||
vector2.x = vector2.x * (1920f / (float)Screen.width) - 960f;
|
||||
vector2.y = vector2.y * (Links.x.canvasRT.sizeDelta.y / (float)Screen.height) - Links.x.canvasRT.sizeDelta.y / 2f;
|
||||
hannahAnimator.localPosition = vector2;
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int j = 0; j < this.sprites.Count; j++)
|
||||
{
|
||||
if ((index == -1 || j == index) && this.sprites[j])
|
||||
{
|
||||
if (this.timeSinceAdded[j] > 0f)
|
||||
{
|
||||
if (Time.timeSinceLevelLoad > this.timeSinceAdded[j] + 2f)
|
||||
{
|
||||
float num5 = this.timeSinceAdded[j] + 3f - Time.timeSinceLevelLoad;
|
||||
if (num5 < 0f)
|
||||
{
|
||||
this.sprites[j].transform.localScale = Vector3.one * this.smallScale;
|
||||
this.timeSinceAdded[j] = 0f;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.sprites[j].transform.localScale = Mathf.Lerp(this.normalScale, this.smallScale, 1f - num5) * Vector3.one;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if (flag)
|
||||
{
|
||||
this.sprites[j].transform.localScale = Vector3.one * this.normalScale;
|
||||
}
|
||||
else
|
||||
{
|
||||
this.sprites[j].transform.localScale = Vector3.one * this.smallScale;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int k = 0; k < this.sprites.Count; k++)
|
||||
{
|
||||
if (this.fx[k] && this.sprites[k] && this.fx[k].gameObject.activeSelf)
|
||||
{
|
||||
Vector3 vector3 = Links.x.worldCamera.WorldToScreenPoint(this.sprites[k].transform.position);
|
||||
vector3.z = 0f;
|
||||
vector3.x = vector3.x * (1920f / (float)Screen.width) - 960f;
|
||||
vector3.y = vector3.y * (Links.x.canvasRT.sizeDelta.y / (float)Screen.height) - Links.x.canvasRT.sizeDelta.y / 2f;
|
||||
this.fx[k].localPosition = vector3;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (this.ending > 0)
|
||||
{
|
||||
this.ending++;
|
||||
if (this.ending > 10)
|
||||
{
|
||||
if (this.sprites.Count == 0)
|
||||
{
|
||||
this.End();
|
||||
}
|
||||
this.ending = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Token: 0x04000F55 RID: 3925
|
||||
public Character character;
|
||||
|
||||
// Token: 0x04000F56 RID: 3926
|
||||
public List<Effects> effects = new List<Effects>();
|
||||
|
||||
// Token: 0x04000F57 RID: 3927
|
||||
public List<string> spriteNames = new List<string>();
|
||||
|
||||
// Token: 0x04000F58 RID: 3928
|
||||
public List<GameObject> sprites = new List<GameObject>();
|
||||
|
||||
// Token: 0x04000F59 RID: 3929
|
||||
public List<RectTransform> fx = new List<RectTransform>();
|
||||
|
||||
// Token: 0x04000F5A RID: 3930
|
||||
public List<float> angles = new List<float>();
|
||||
|
||||
// Token: 0x04000F5B RID: 3931
|
||||
public List<int> arrow = new List<int>();
|
||||
|
||||
// Token: 0x04000F5C RID: 3932
|
||||
public List<float> timeSinceAdded = new List<float>();
|
||||
|
||||
// Token: 0x04000F5D RID: 3933
|
||||
public float moveSpeed = 3f;
|
||||
|
||||
// Token: 0x04000F5E RID: 3934
|
||||
public float radius = 1.2f;
|
||||
|
||||
// Token: 0x04000F5F RID: 3935
|
||||
public float yAdd = 0.4f;
|
||||
|
||||
// Token: 0x04000F60 RID: 3936
|
||||
private Transform tr;
|
||||
|
||||
// Token: 0x04000F61 RID: 3937
|
||||
private float updateTime;
|
||||
|
||||
// Token: 0x04000F62 RID: 3938
|
||||
public float updateSpeed = 0.07f;
|
||||
|
||||
// Token: 0x04000F63 RID: 3939
|
||||
public float speedBoost = 2.5f;
|
||||
|
||||
// Token: 0x04000F64 RID: 3940
|
||||
private bool removing;
|
||||
|
||||
// Token: 0x04000F65 RID: 3941
|
||||
private float savedAngle;
|
||||
|
||||
// Token: 0x04000F66 RID: 3942
|
||||
private int savedIndex;
|
||||
|
||||
// Token: 0x04000F67 RID: 3943
|
||||
public bool allUseHead;
|
||||
|
||||
// Token: 0x04000F68 RID: 3944
|
||||
private int ending;
|
||||
|
||||
// Token: 0x04000F69 RID: 3945
|
||||
public float normalScale = 0.65f;
|
||||
|
||||
// Token: 0x04000F6A RID: 3946
|
||||
public float smallScale = 0.45f;
|
||||
}
|
||||
Reference in New Issue
Block a user