summaryrefslogtreecommitdiff
path: root/GameCode/DodgeGround.cs
blob: a7d3815af646a42e32390ce5733d383b8ab5d0f5 (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
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
using Photon.Pun;
using Sonigon;
using UnityEngine;

public class DodgeGround : MonoBehaviour
{
	[Header("Sound")]
	public SoundEvent soundSneakyDodgeGroundLoop;

	private bool soundIsPlaying;

	private float soundTimeToStopPlaying = 0.5f;

	private float soundTimeCurrent;

	private Transform spawnedSpawnerTransform;

	[Header("Settings")]
	public float rayLength = 3f;

	public float rayUp = 0.3f;

	public float force;

	public LayerMask mask;

	private MoveTransform move;

	private SpawnedAttack spawned;

	public ParticleSystem p1;

	public ParticleSystem p2;

	public ParticleSystem p3;

	public LineRenderer l1;

	public LineRenderer l2;

	private float c3;

	private void Start()
	{
		spawned = GetComponentInParent<SpawnedAttack>();
		move = GetComponentInParent<MoveTransform>();
		GetComponentInParent<SyncProjectile>().active = true;
		if (spawned != null && spawned.spawner != null)
		{
			spawnedSpawnerTransform = spawned.spawner.transform;
		}
	}

	private void SoundStart()
	{
		if (!soundIsPlaying && spawnedSpawnerTransform != null)
		{
			soundIsPlaying = true;
			SoundManager.Instance.PlayAtPosition(soundSneakyDodgeGroundLoop, spawnedSpawnerTransform, base.transform);
		}
	}

	private void SoundStop()
	{
		if (soundIsPlaying && spawnedSpawnerTransform != null)
		{
			soundIsPlaying = false;
			SoundManager.Instance.StopAtPosition(soundSneakyDodgeGroundLoop, base.transform);
		}
	}

	private void OnDestroy()
	{
		SoundStop();
	}

	private void Update()
	{
		float magnitude = move.velocity.magnitude;
		c3 += TimeHandler.deltaTime;
		l1.enabled = false;
		l2.enabled = false;
		bool flag = false;
		float num = 1f;
		RaycastHit2D raycastHit2D = Physics2D.Raycast(base.transform.position, base.transform.forward + base.transform.right * rayUp, rayLength, mask);
		if ((bool)raycastHit2D && (bool)raycastHit2D.transform && !raycastHit2D.collider.GetComponent<Damagable>() && raycastHit2D.transform.gameObject.layer != 10)
		{
			flag = true;
		}
		bool flag2 = false;
		RaycastHit2D raycastHit2D2 = Physics2D.Raycast(base.transform.position, base.transform.forward + base.transform.right * (0f - rayUp), rayLength, mask);
		if ((bool)raycastHit2D2 && (bool)raycastHit2D2.transform && !raycastHit2D2.collider.GetComponent<Damagable>() && raycastHit2D2.transform.gameObject.layer != 10)
		{
			flag2 = true;
		}
		if (flag && flag2 && raycastHit2D.transform == raycastHit2D2.transform)
		{
			if (raycastHit2D.distance < raycastHit2D2.distance)
			{
				flag2 = false;
			}
			else
			{
				flag = false;
			}
		}
		if (flag)
		{
			move.velocity += (Vector3)raycastHit2D.normal * force * move.velocity.magnitude * num * TimeHandler.deltaTime;
			l1.enabled = true;
			l1.SetPosition(0, base.transform.position);
			l1.SetPosition(1, raycastHit2D.point);
		}
		if (flag2)
		{
			move.velocity += (Vector3)raycastHit2D2.normal * force * move.velocity.magnitude * num * TimeHandler.deltaTime;
			l2.enabled = true;
			l2.SetPosition(0, base.transform.position);
			l2.SetPosition(1, raycastHit2D2.point);
		}
		if (flag || flag2)
		{
			soundTimeCurrent = soundTimeToStopPlaying;
			SoundStart();
		}
		else if (soundIsPlaying)
		{
			soundTimeCurrent -= TimeHandler.deltaTime;
			if (soundTimeCurrent < 0f)
			{
				SoundStop();
			}
		}
		move.velocity = move.velocity.normalized * magnitude;
		if (flag && c3 > 0.05f)
		{
			c3 = 0f;
			p3.Emit(1);
		}
	}
}