-
Notifications
You must be signed in to change notification settings - Fork 0
/
EnergyMineAbility.cs
108 lines (89 loc) · 3.59 KB
/
EnergyMineAbility.cs
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
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class EnergyMineAbility : Ability
{
public static float RECOVERY_TIME = 0.15f;
public static float CAST_TIME = 0.1f;
public static float COOL_DOWN_TIME = 5f;
public static float BASE_DAMAGE = 10.0f;
public static float LIFE_TIME = 1.0f;
public static float EXPLOSION_LIFE_TIME = 0.5f;
public static float RAYCAST_DOWN_AMOUNT = 6.0f;
public List<GameObject> energyMine = new List<GameObject>();
private List<Vector3> targetPositions = new List<Vector3>();
//private Vector3 dropHeight = Vector3.up * 2;
public EnergyMineAbility(CharacterStats character)
: base(character)
{
m_Type = AbilityType.Ranged;
m_CastTime = CAST_TIME;
m_RecoveryTime = RECOVERY_TIME;
m_CoolDownTime = COOL_DOWN_TIME;
m_BaseDamage = BASE_DAMAGE;
Damage = m_BaseDamage + m_Character.Damage;
m_Lifetime = LIFE_TIME;
}
public override void Update()
{
base.Update();
/*
if (m_Lifetime <= Time.time)
{
for (int i = 0; i < energyMine.Count; i++)
{
Hitbox = (GameObject)Object.Instantiate(Resources.Load("DamageHitboxes/EnergyMineHitbox"), energyMine[i].transform);
Hitbox.GetComponent<EnergyMineHitbox>().Initialize(m_Character, m_Type, (int)m_Damage, EXPLOSION_LIFE_TIME);
}
}
*/
}
protected override void ActivateEffect()
{
Quaternion rot = m_Character.transform.rotation;
//Clear information
ResetInfo();
//Find all players within the scene
foreach (GameObject gameObject in GameManager.playerManager.PlayerList())
{
targetPositions.Add(gameObject.transform.position);
}
//Make sure energymine amount is equal to the targetpositions, this is doubling for some reason
energyMine.Capacity = targetPositions.Capacity;
//Set a blank gameobject
for (int i = 0; i < targetPositions.Count; i++)
{
GameObject tempEnergyMine = null;
energyMine.Add(tempEnergyMine);
}
//Spawning them
for (int i = 0; i < energyMine.Count; i++)
{
Ray raycast = new Ray(targetPositions[i], Vector3.down * RAYCAST_DOWN_AMOUNT);
RaycastHit hitInfo = new RaycastHit();
//Debug.DrawRay(targetPositions[i], raycast.direction, Color.blue);
//Debug.Log("Target Pos : " + targetPositions[i]);
if (Physics.Raycast(raycast, out hitInfo))
{
if (hitInfo.transform.tag == "Platform" || hitInfo.transform.tag == "Wall")
{
//targetPositions[i] = hitInfo.transform.position + new Vector3(0, 0.1f, 0);
targetPositions[i] = targetPositions[i] - new Vector3(0, hitInfo.distance, 0);
//Debug.Log("TP + Raycast : " + targetPositions[i]);
}
}
energyMine[i] = (GameObject)Object.Instantiate(Resources.Load("EnergyMine/EnergyMinePrefab"), targetPositions[i], rot);
energyMine[i].GetComponent<EnergyMineObject>().Initialize(m_Character, m_Type, (int)Damage, m_Lifetime);
//energyMine[i].GetComponent<Hitbox>().Initialize(m_Character, m_Type, (int)m_Damage, m_Lifetime);
}
}
private void ResetInfo()
{
energyMine.Clear();
targetPositions.Clear();
}
public override void ResetCooldown()
{
m_CoolDownTime = COOL_DOWN_TIME;
}
}