diff --git a/Assets/_Scripts/Config/GameConfig.cs b/Assets/_Scripts/Config/GameConfig.cs index f02be23dbaa978c836bdc50e4460f0770acfb581..b7941cc8c4041afaee947df5ab2bf502f9184aae 100644 --- a/Assets/_Scripts/Config/GameConfig.cs +++ b/Assets/_Scripts/Config/GameConfig.cs @@ -14,24 +14,24 @@ public static class GameConfig // Difficulty multipliers private static readonly DifficultyData EasyData = new() { - EnemyDamageMultiplier = 0.5f, - EnemyHealthMultiplier = 0.5f, - PlayerDamageMultiplier = 2f, - PlayerHealthMultiplier = 2f, + enemyDamageMultiplier = 0.5f, + enemyHealthMultiplier = 0.5f, + playerDamageMultiplier = 2f, + playerHealthMultiplier = 2f, }; private static readonly DifficultyData MediumData = new() { - EnemyDamageMultiplier = 0.5f, - EnemyHealthMultiplier = 0.5f, - PlayerDamageMultiplier = 2f, - PlayerHealthMultiplier = 2f, + enemyDamageMultiplier = 0.5f, + enemyHealthMultiplier = 0.5f, + playerDamageMultiplier = 2f, + playerHealthMultiplier = 2f, }; private static readonly DifficultyData HardData = new() { - EnemyDamageMultiplier = 2f, - EnemyHealthMultiplier = 2f, - PlayerDamageMultiplier = 0.5f, - PlayerHealthMultiplier = 0.5f, + enemyDamageMultiplier = 2f, + enemyHealthMultiplier = 2f, + playerDamageMultiplier = 0.5f, + playerHealthMultiplier = 0.5f, }; public static readonly Dictionary<DifficultyType, DifficultyData> DIFFICULTY_MODIFIERS = new() diff --git a/Assets/_Scripts/Core/Entities/Mobs/BossEntity.cs b/Assets/_Scripts/Core/Entities/Mobs/BossEntity.cs index 9554a3f7c0c2f95c0e0ac6a501e4d0dfc131ee88..5aec3ba4c01d6b3406aa5f36e23ae0855231b2e8 100644 --- a/Assets/_Scripts/Core/Entities/Mobs/BossEntity.cs +++ b/Assets/_Scripts/Core/Entities/Mobs/BossEntity.cs @@ -5,8 +5,21 @@ public abstract class BossEntity : EnemyEntity, IAccompaniable { // Attributes private readonly List<Companion> companionList = new(); + private readonly List<bool> Activecompanions = new(); // Set-Getters + public List<bool> ActiveCompanions => ActiveCompanions; public List<Companion> Companions => companionList; public MonoBehaviour CompanionController => this; + + // Functions + public void ActivateCompanion(int index) + { + throw new System.NotImplementedException(); + } + + public void DeactivateCompanion(int index) + { + throw new System.NotImplementedException(); + } } diff --git a/Assets/_Scripts/Core/Entities/Mobs/EnemyEntity.cs b/Assets/_Scripts/Core/Entities/Mobs/EnemyEntity.cs index 9ffb4e1555035ddbb8120c4e32441c92966e7170..f35a0ec5b5c19fc6bd9d143b42231a59260546fa 100644 --- a/Assets/_Scripts/Core/Entities/Mobs/EnemyEntity.cs +++ b/Assets/_Scripts/Core/Entities/Mobs/EnemyEntity.cs @@ -2,14 +2,14 @@ public abstract class EnemyEntity : CombatantEntity { // Set-Getters public new string AttackLayerCode => EnvironmentConfig.LAYER_ENEMY_ATTACK; - public new float AttackMultiplier => GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].EnemyDamageMultiplier; + public new float AttackMultiplier => GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].enemyDamageMultiplier; // Functions new protected void Start() { base.Start(); - Health *= GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].EnemyHealthMultiplier; - BaseDamage *= GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].EnemyDamageMultiplier; + Health *= GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].enemyHealthMultiplier; + BaseDamage *= GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].enemyDamageMultiplier; tag = EnvironmentConfig.TAG_ENEMY; } } diff --git a/Assets/_Scripts/Core/Entities/Pets/Companion.cs b/Assets/_Scripts/Core/Entities/Pets/Companion.cs index aa820e9ffc7bb41fa7a66d30f16787ee843e22cb..00ab24893711e8c6f9ce25603b8277e9622e8d3c 100644 --- a/Assets/_Scripts/Core/Entities/Pets/Companion.cs +++ b/Assets/_Scripts/Core/Entities/Pets/Companion.cs @@ -3,6 +3,9 @@ using UnityEngine; public abstract class Companion : DamageableEntity { + // Attributes + public CompanionData data; + // Getter-Setter public IAccompaniable Owner {get; set;} diff --git a/Assets/_Scripts/Core/Objects/Weapons/WeaponObject.cs b/Assets/_Scripts/Core/Objects/Weapons/WeaponObject.cs index 46562480b7c3ba54ed69255504b2536597d3fba8..8bed7c9e627fe966275ed66165d109f1d4f1e9a0 100644 --- a/Assets/_Scripts/Core/Objects/Weapons/WeaponObject.cs +++ b/Assets/_Scripts/Core/Objects/Weapons/WeaponObject.cs @@ -6,7 +6,6 @@ public abstract class WeaponObject : MonoBehaviour { // Attributes - public string prefabPath; public WeaponData data; protected IArmed bearer; private bool canAttack = true; diff --git a/Assets/_Scripts/Core/Player/Player.cs b/Assets/_Scripts/Core/Player/Player.cs index 89d543c1c1d10bdc7a90bf3e7b21b02d19833231..aacf5dd078e24d319bc7fd727ab9b9ed122e9131 100644 --- a/Assets/_Scripts/Core/Player/Player.cs +++ b/Assets/_Scripts/Core/Player/Player.cs @@ -17,14 +17,14 @@ public class Player : PlayerEntity // Set-Getters public new string AttackLayerCode => EnvironmentConfig.LAYER_PLAYER; - public new float AttackMultiplier => GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].PlayerDamageMultiplier; + public new float AttackMultiplier => GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].playerDamageMultiplier; // Constructor new void Start() { base.Start(); SetIdPrefix(ObjectIdPrefix); - Health *= GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].PlayerHealthMultiplier; + Health *= GameConfig.DIFFICULTY_MODIFIERS[GameSaveData.instance.difficulty].playerHealthMultiplier; stateController = new PlayerStateController(this); inputController = new PlayerInputController(this); movementController = new PlayerMovementController(this); diff --git a/Assets/_Scripts/Library/BaseClasses/EntityObject/CombatantEntity.cs b/Assets/_Scripts/Library/BaseClasses/EntityObject/CombatantEntity.cs index 7003088288598bd2a1957e820beaae5c7359921f..5e16f79f60aee40e95680d7573c7fca494640728 100644 --- a/Assets/_Scripts/Library/BaseClasses/EntityObject/CombatantEntity.cs +++ b/Assets/_Scripts/Library/BaseClasses/EntityObject/CombatantEntity.cs @@ -52,9 +52,9 @@ public class CombatantEntity : DamageableEntity, IArmed UnequipWeapon(); WeaponIndex = index; - WeaponObject blueprint = WeaponList[WeaponIndex]; + WeaponObject selectedWeapon = WeaponList[WeaponIndex]; WeaponObject weaponObject = ObjectFactory.CreateObject<WeaponObject>( - prefabPath: blueprint == null? NoWeapon.weaponPrefab : blueprint.prefabPath, + prefabPath: selectedWeapon == null? NoWeapon.weaponPrefab : selectedWeapon.data.prefabPath, parent: transform, objectName: EnvironmentConfig.OBJECT_WEAPON ); diff --git a/Assets/_Scripts/Library/BaseClasses/EntityObject/PlayerEntity.cs b/Assets/_Scripts/Library/BaseClasses/EntityObject/PlayerEntity.cs index b006629a63f2c4b229847fad2ae4042c1d975b18..68b2f0b3453d8d5e53fbd869c132eee34af3dbe6 100644 --- a/Assets/_Scripts/Library/BaseClasses/EntityObject/PlayerEntity.cs +++ b/Assets/_Scripts/Library/BaseClasses/EntityObject/PlayerEntity.cs @@ -5,8 +5,22 @@ public class PlayerEntity : CombatantEntity, IAccompaniable { // Attributes public List<Companion> companionList = new(); + public List<bool> activeCompanions = new(); // Set-Getters public List<Companion> Companions => companionList; + public List<bool> ActiveCompanions => activeCompanions; public MonoBehaviour CompanionController => this; + + // Functions + public void ActivateCompanion(int index) + { + throw new System.NotImplementedException(); + } + + public void DeactivateCompanion(int index) + { + throw new System.NotImplementedException(); + } + } diff --git a/Assets/_Scripts/Library/DataTypes/CompanionData.cs b/Assets/_Scripts/Library/DataTypes/CompanionData.cs index f8ae9dc72790578c30ec82d64667ee1d7997b3ab..5bfb22e78076912a7f9445e2d1717e00dc367525 100644 --- a/Assets/_Scripts/Library/DataTypes/CompanionData.cs +++ b/Assets/_Scripts/Library/DataTypes/CompanionData.cs @@ -4,4 +4,9 @@ using UnityEngine; [CreateAssetMenu(fileName = "NewCompanionData", menuName = "Data/Entity/Companion Data")] public class CompanionData : ScriptableObject { + // Note: prefab system is not quite extendable + // Learn other systems than this obviously + // but I think the window to learn and implement a new system is not viable within the scope of the project + public string prefabPath; + public GameObject model; } \ No newline at end of file diff --git a/Assets/_Scripts/Library/DataTypes/DifficultyData.cs b/Assets/_Scripts/Library/DataTypes/DifficultyData.cs index a8cc3c72c085efa4e669817b2f1c80d620950780..59859f948c033086060162b25ad28c131a6a9a85 100644 --- a/Assets/_Scripts/Library/DataTypes/DifficultyData.cs +++ b/Assets/_Scripts/Library/DataTypes/DifficultyData.cs @@ -1,9 +1,7 @@ -using UnityEngine; - -public class DifficultyData : ScriptableObject +public class DifficultyData { - public float EnemyHealthMultiplier { get; set; } - public float EnemyDamageMultiplier { get; set; } - public float PlayerHealthMultiplier { get; set; } - public float PlayerDamageMultiplier { get; set; } + public float enemyHealthMultiplier; + public float enemyDamageMultiplier; + public float playerHealthMultiplier; + public float playerDamageMultiplier; } diff --git a/Assets/_Scripts/Library/DataTypes/ProjectileData.cs b/Assets/_Scripts/Library/DataTypes/ProjectileData.cs index 556b46f607afcd45405c1be4494f1314bd5992d1..9215a8452d9773ea2fe6b4a84203e79933f9ba99 100644 --- a/Assets/_Scripts/Library/DataTypes/ProjectileData.cs +++ b/Assets/_Scripts/Library/DataTypes/ProjectileData.cs @@ -4,8 +4,8 @@ using UnityEngine; [CreateAssetMenu(fileName = "NewProjectileData", menuName = "Data/Weapon/Projectile Data")] public class ProjectileData : ScriptableObject { + public GameObject model; public float speed; public float travelDistance; public bool through; - public GameObject model; } \ No newline at end of file diff --git a/Assets/_Scripts/Library/DataTypes/WeaponData.cs b/Assets/_Scripts/Library/DataTypes/WeaponData.cs index b80311578336ad3aa59da593325bbc75c9600fea..3a1f31fb51b89f17ead274a7ecc5b1f01e90c08f 100644 --- a/Assets/_Scripts/Library/DataTypes/WeaponData.cs +++ b/Assets/_Scripts/Library/DataTypes/WeaponData.cs @@ -4,9 +4,13 @@ using UnityEngine; [CreateAssetMenu(fileName = "NewWeaponData", menuName = "Data/Weapon/Weapon Data")] public class WeaponData : ScriptableObject { + // Note: prefab system is not quite extendable + // Learn other systems than this obviously + // but I think the window to learn and implement a new system is not viable within the scope of the project + public string prefabPath; + public GameObject model; public float baseDamage; public float knockbackPower; public float attackInterval; public float alternateAttackInterval; - public GameObject model; } \ No newline at end of file diff --git a/Assets/_Scripts/Library/Interfaces/IAccompanied.cs b/Assets/_Scripts/Library/Interfaces/IAccompanied.cs index 0c46aa5b33cfa8f51f39d642e97d00bb14370689..ec66b003b0f6df18d7ae94ec65ea35c026904358 100644 --- a/Assets/_Scripts/Library/Interfaces/IAccompanied.cs +++ b/Assets/_Scripts/Library/Interfaces/IAccompanied.cs @@ -5,5 +5,8 @@ public interface IAccompaniable { // Set-Getters public List<Companion> Companions { get; } + public List<bool> ActiveCompanions { get; } public MonoBehaviour CompanionController { get; } + public void ActivateCompanion(int index); + public void DeactivateCompanion(int index); }