summaryrefslogtreecommitdiff
path: root/GameCode/DeathEffect.cs
blob: 5819e64230b94c9e41e24a4d943aa46d33176530 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
using System.Collections;
using Sonigon;
using UnityEngine;

public class DeathEffect : MonoBehaviour
{
	[Header("Sounds")]
	public SoundEvent soundPhoenixActivate;

	public SoundEvent soundPhoenixChargeLoop;

	public SoundEvent soundPhoenixRespawn;

	private SoundParameterIntensity soundParameterChargeLoopIntensity = new SoundParameterIntensity(0f, UpdateMode.Continuous);

	[Header("Settings")]
	public float forceMulti = 1f;

	public float minScale = 0.9f;

	public float maxScale = 1.1f;

	public float minDrag = 0.9f;

	public float maxDrag = 1.1f;

	public float minForce = 0.9f;

	public float maxForce = 1.1f;

	public float spread = 0.5f;

	private Rigidbody2D[] rigs;

	private Color baseColor;

	private ParticleSystem[] parts;

	public ParticleSystem partToColor;

	public ParticleSystem[] partsToColor;

	private float respawnTimeCurrent;

	private float respawnTime = 2.53f;

	private void Update()
	{
	}

	public void PlayDeath(Color color, PlayerVelocity playerRig, Vector2 vel, int playerIDToRevive = -1)
	{
		if (vel.magnitude < 30f)
		{
			vel = vel.normalized * 30f;
		}
		vel *= 1f;
		parts = GetComponentsInChildren<ParticleSystem>();
		for (int i = 0; i < parts.Length; i++)
		{
			_ = parts[i].main;
			if (parts[i].name.Contains("ROT"))
			{
				parts[i].transform.rotation = Quaternion.LookRotation(vel);
			}
		}
		ParticleSystem.MainModule main = partToColor.main;
		main.startColor = PlayerSkinBank.GetPlayerSkinColors(playerRig.GetComponent<Player>().playerID).color;
		for (int j = 0; j < partsToColor.Length; j++)
		{
			ParticleSystem.MainModule main2 = partsToColor[j].main;
			main2.startColor = PlayerSkinBank.GetPlayerSkinColors(playerRig.GetComponent<Player>().playerID).color;
		}
		if (playerIDToRevive != -1)
		{
			SoundManager.Instance.Play(soundPhoenixActivate, base.transform);
			SoundManager.Instance.Play(soundPhoenixChargeLoop, base.transform, soundParameterChargeLoopIntensity);
			StartCoroutine(RespawnPlayer(playerIDToRevive));
		}
	}

	private IEnumerator RespawnPlayer(int playerIDToRevive = -1)
	{
		while (respawnTimeCurrent < respawnTime)
		{
			soundParameterChargeLoopIntensity.intensity = respawnTimeCurrent / respawnTime;
			respawnTimeCurrent += 0.1f;
			yield return new WaitForSeconds(0.1f);
		}
		SoundManager.Instance.Play(soundPhoenixRespawn, base.transform);
		SoundManager.Instance.Stop(soundPhoenixChargeLoop, base.transform);
		PlayerManager.instance.players[playerIDToRevive].data.healthHandler.Revive(isFullRevive: false);
		PlayerManager.instance.players[playerIDToRevive].data.block.RPCA_DoBlock(firstBlock: true);
	}

	private IEnumerator DoEffect(Rigidbody2D rig)
	{
		yield return new WaitForSeconds(Random.Range(0.05f, 0.15f));
		rig.GetComponent<SpriteRenderer>().color = baseColor;
	}
}