From 7a2f79e9e6c570638297268b39669be290d215a1 Mon Sep 17 00:00:00 2001
From: Ny Bruker <robinhs@stud.ntnu.no>
Date: Tue, 4 Oct 2022 13:45:32 +0200
Subject: [PATCH] Added mana & stamina properties.

---
 MrBigsock/Assets/Code/Character.cs            |  5 +++
 MrBigsock/Assets/Code/Core/CharacterStats.cs  | 22 ++++++++++
 MrBigsock/Assets/Code/Core/ICharacterStats.cs | 43 ++++++++++++++++++-
 3 files changed, 69 insertions(+), 1 deletion(-)

diff --git a/MrBigsock/Assets/Code/Character.cs b/MrBigsock/Assets/Code/Character.cs
index bf17da2b..0d3c07c9 100644
--- a/MrBigsock/Assets/Code/Character.cs
+++ b/MrBigsock/Assets/Code/Character.cs
@@ -114,6 +114,11 @@ namespace BigSock {
 			// Set the base stats.
 			BaseStats = new CharacterStats {
 				MaxHP = baseMaxHP,
+				MaxMana = 10,
+				MaxStamina = 10,
+				RegenMana = 2,
+				RegenStamina = 2,
+				
 				Damage = baseDamage,
 				MoveSpeed = baseMovementSpeed,
 				Knockback = knockbackForce,
diff --git a/MrBigsock/Assets/Code/Core/CharacterStats.cs b/MrBigsock/Assets/Code/Core/CharacterStats.cs
index f9e6e247..8ee6c2b7 100644
--- a/MrBigsock/Assets/Code/Core/CharacterStats.cs
+++ b/MrBigsock/Assets/Code/Core/CharacterStats.cs
@@ -16,6 +16,28 @@ namespace BigSock {
 		*/
 		public float MaxHP { get; set; }
 
+		/*
+			The max mana of the character.
+		*/
+		public float MaxMana { get; set; }
+
+		/*
+			The max stamina of the character.
+		*/
+		public float MaxStamina { get; set; }
+
+		/*
+			The regeneration rate of the character's mana.
+		*/
+		public float RegenMana { get; set; }
+
+		/*
+			The regeneration rate of the character's stamina.
+		*/
+		public float RegenStamina { get; set; }
+
+
+
 		/*
 			The damage of the character.
 		*/
diff --git a/MrBigsock/Assets/Code/Core/ICharacterStats.cs b/MrBigsock/Assets/Code/Core/ICharacterStats.cs
index d18f091c..4fa71d78 100644
--- a/MrBigsock/Assets/Code/Core/ICharacterStats.cs
+++ b/MrBigsock/Assets/Code/Core/ICharacterStats.cs
@@ -12,10 +12,31 @@ namespace BigSock {
 	*/
 	public interface ICharacterStats {
 		/*
-			The hp of the character.
+			The max hp of the character.
 		*/
 		float MaxHP { get; }
 
+		/*
+			The max mana of the character.
+		*/
+		float MaxMana { get; }
+
+		/*
+			The max stamina of the character.
+		*/
+		float MaxStamina { get; }
+
+		/*
+			The regeneration rate of the character's mana.
+		*/
+		float RegenMana { get; }
+
+		/*
+			The regeneration rate of the character's stamina.
+		*/
+		float RegenStamina { get; }
+
+
 		/*
 			The damage of the character.
 		*/
@@ -67,6 +88,11 @@ namespace BigSock {
 		*/
 		public static readonly ICharacterStats IDENTITY = new CharacterStats{
 			MaxHP = 1,
+			MaxMana = 1,
+			MaxStamina = 1,
+			RegenMana = 1,
+			RegenStamina = 1,
+
 			Damage = 1,
 			MoveSpeed = 1,
 			Knockback = 1,
@@ -83,6 +109,11 @@ namespace BigSock {
 		public static ICharacterStats Add(this ICharacterStats a, ICharacterStats b) {
 			return new CharacterStats{
 				MaxHP = a.MaxHP + b.MaxHP,
+				MaxMana = a.MaxMana + b.MaxMana,
+				MaxStamina = a.MaxStamina + b.MaxStamina,
+				RegenMana = a.RegenMana + b.RegenMana,
+				RegenStamina = a.RegenStamina + b.RegenStamina,
+
 				Damage = a.Damage + b.Damage,
 				MoveSpeed = a.MoveSpeed + b.MoveSpeed,
 				Knockback = a.Knockback + b.Knockback,
@@ -101,6 +132,11 @@ namespace BigSock {
 		public static ICharacterStats Remove(this ICharacterStats a, ICharacterStats b) {
 			return new CharacterStats{
 				MaxHP = a.MaxHP - b.MaxHP,
+				MaxMana = a.MaxMana - b.MaxMana,
+				MaxStamina = a.MaxStamina - b.MaxStamina,
+				RegenMana = a.RegenMana - b.RegenMana,
+				RegenStamina = a.RegenStamina - b.RegenStamina,
+
 				Damage = a.Damage - b.Damage,
 				MoveSpeed = a.MoveSpeed - b.MoveSpeed,
 				Knockback = a.Knockback - b.Knockback,
@@ -118,6 +154,11 @@ namespace BigSock {
 		public static ICharacterStats Multiply(this ICharacterStats a, ICharacterStats b) {
 			return new CharacterStats{
 				MaxHP = a.MaxHP * b.MaxHP,
+				MaxMana = a.MaxMana * b.MaxMana,
+				MaxStamina = a.MaxStamina * b.MaxStamina,
+				RegenMana = a.RegenMana * b.RegenMana,
+				RegenStamina = a.RegenStamina * b.RegenStamina,
+
 				Damage = a.Damage * b.Damage,
 				MoveSpeed = a.MoveSpeed * b.MoveSpeed,
 				Knockback = a.Knockback * b.Knockback,
-- 
GitLab