From 80002ec69d578ea80089b1a3297273fcfa7935c1 Mon Sep 17 00:00:00 2001
From: Ny Bruker <robinhs@stud.ntnu.no>
Date: Sat, 29 Oct 2022 19:14:58 +0200
Subject: [PATCH] Changed to use the new AbilityParam. - Also changed dodge to
 use the movement direction.

---
 .../Code/Core/Abilities/AbilityDodge.cs       | 17 ++++++-----------
 .../Assets/Code/Core/Abilities/BasicArrow.cs  | 19 ++++++-------------
 .../Code/Core/Abilities/BasicProjectile1.cs   | 15 +++++----------
 .../Core/Abilities/BiggerSlowerProjectile.cs  | 15 +++++----------
 4 files changed, 22 insertions(+), 44 deletions(-)

diff --git a/MrBigsock/Assets/Code/Core/Abilities/AbilityDodge.cs b/MrBigsock/Assets/Code/Core/Abilities/AbilityDodge.cs
index c7afea53..ff78922d 100644
--- a/MrBigsock/Assets/Code/Core/Abilities/AbilityDodge.cs
+++ b/MrBigsock/Assets/Code/Core/Abilities/AbilityDodge.cs
@@ -28,19 +28,14 @@ namespace BigSock {
 		/*
 			Activates the ability.
 		*/
-		protected override bool Activate(Character actor, Vector3? target) {
-			if(target == null) return false;
-
-			// Get direction.
-			var temp = (target.Value - actor.transform.position);
-			temp.z = 0;
-			var direction = (Vector2) temp.normalized;
-
-			// Get the force.
-			var force = BASE_FORCE * actor.Stats.MoveSpeed;
+		protected override bool Activate(IAbilityParam par) {
+			var actor = par.Actor; 
+			var direction = par.MovementDir;
 
+			if(direction == null) return false;
+			
 			// Apply the push and iframes.
-			actor.KnockBack(force, direction);
+			actor.KnockBack(BASE_FORCE * actor.Stats.MoveSpeed, direction.Value);
 			actor.AddStatusEffect(StatusEffectType.Invincible, IFRAME_DURATION);
 
 			return true;
diff --git a/MrBigsock/Assets/Code/Core/Abilities/BasicArrow.cs b/MrBigsock/Assets/Code/Core/Abilities/BasicArrow.cs
index 9520f110..f5a4686d 100644
--- a/MrBigsock/Assets/Code/Core/Abilities/BasicArrow.cs
+++ b/MrBigsock/Assets/Code/Core/Abilities/BasicArrow.cs
@@ -41,31 +41,24 @@ namespace BigSock {
 				- Even if nothing was hit, used to indicate that cooldowns should be updated.
 			This should be overridden in sub-classes for the actual abilities.
 		*/
-		protected override bool Activate(Character actor, Vector3? target) {
+		protected override bool Activate(IAbilityParam par) {
+			var actor = par.Actor; 
+			var target = par.TargetPos;
+
 			if(target == null)
-			 return false;
+				return false;
 
 			var attack = (AttackStats) AttackStats.Calculate(actor.Stats);
-			//var attack = (AttackStats) AttackStats.Apply(actor.Stats);
 			attack.Actor = actor;
 
-
-			var temp = (target.Value - actor.transform.position);
-			var temp1 = temp;
-
-
-			temp.z = 0;
-			temp1.z = 90;
-			
 			var bullet = PrefabService.SINGLETON.Instance(PROJECTILE_NAME, actor.transform.position);
 
 			//bullet.transform.rotation = Quaternion.LookRotation(temp.normalized);
 			//bullet.transform.rotation = Quaternion.LookRotation(temp1 ,Vector3.up);
 
 			var bulletScript = bullet.GetComponent<AttackMovement>();
-			//bulletScript.Actor = actor;
 			bulletScript.Stats = attack;
-			bulletScript.Direction = temp.normalized;
+			bulletScript.Direction = (target.Value - (Vector2) actor.transform.position).normalized;
 
 
 			//MonoBehaviour.Instantiate(PROJECTILE_BASE, (Vector3) actor.transform.position, PROJECTILE_BASE.transform.rotation);
diff --git a/MrBigsock/Assets/Code/Core/Abilities/BasicProjectile1.cs b/MrBigsock/Assets/Code/Core/Abilities/BasicProjectile1.cs
index c8e0f73b..60a935cc 100644
--- a/MrBigsock/Assets/Code/Core/Abilities/BasicProjectile1.cs
+++ b/MrBigsock/Assets/Code/Core/Abilities/BasicProjectile1.cs
@@ -42,25 +42,20 @@ namespace BigSock {
 				- Even if nothing was hit, used to indicate that cooldowns should be updated.
 			This should be overridden in sub-classes for the actual abilities.
 		*/
-		protected override bool Activate(Character actor, Vector3? target) {
+		protected override bool Activate(IAbilityParam par) {
+			var actor = par.Actor; 
+			var target = par.TargetPos;
+
 			if(target == null) return false;
 
 			var attack = (AttackStats) AttackStats.Calculate(actor.Stats);
-			//var attack = (AttackStats) AttackStats.Apply(actor.Stats);
 			attack.Actor = actor;
 
-
-			var temp = (target.Value - actor.transform.position);
-			temp.z = 0;
-
 			var bullet = PrefabService.SINGLETON.Instance(PROJECTILE_NAME, actor.transform.position);
 			var bulletScript = bullet.GetComponent<AttackMovement>();
-			//bulletScript.Actor = actor;
 			bulletScript.Stats = attack;
-			bulletScript.Direction = temp.normalized;
-
+			bulletScript.Direction = (target.Value - (Vector2) actor.transform.position).normalized;
 
-			//MonoBehaviour.Instantiate(PROJECTILE_BASE, (Vector3) actor.transform.position, PROJECTILE_BASE.transform.rotation);
 			return true;
 		}
 
diff --git a/MrBigsock/Assets/Code/Core/Abilities/BiggerSlowerProjectile.cs b/MrBigsock/Assets/Code/Core/Abilities/BiggerSlowerProjectile.cs
index ffd0050c..ce60bcde 100644
--- a/MrBigsock/Assets/Code/Core/Abilities/BiggerSlowerProjectile.cs
+++ b/MrBigsock/Assets/Code/Core/Abilities/BiggerSlowerProjectile.cs
@@ -45,25 +45,20 @@ namespace BigSock {
 				- Even if nothing was hit, used to indicate that cooldowns should be updated.
 			This should be overridden in sub-classes for the actual abilities.
 		*/
-		protected override bool Activate(Character actor, Vector3? target) {
+		protected override bool Activate(IAbilityParam par) {
+			var actor = par.Actor; 
+			var target = par.TargetPos;
+
 			if(target == null) return false;
 
 			var attack = (AttackStats) AttackStats.Calculate(actor.Stats);
-			//var attack = (AttackStats) AttackStats.Apply(actor.Stats);
 			attack.Actor = actor;
 
-
-			var temp = (target.Value - actor.transform.position);
-			temp.z = 0;
-
 			var bullet = PrefabService.SINGLETON.Instance(PROJECTILE_NAME, actor.transform.position);
 			var bulletScript = bullet.GetComponent<AttackMovement>();
-			//bulletScript.Actor = actor;
 			bulletScript.Stats = attack;
-			bulletScript.Direction = temp.normalized;
-
+			bulletScript.Direction = (target.Value - (Vector2) actor.transform.position).normalized;
 
-			//MonoBehaviour.Instantiate(PROJECTILE_BASE, (Vector3) actor.transform.position, PROJECTILE_BASE.transform.rotation);
 			return true;
 		}
 
-- 
GitLab