From e0d5864bfa74f3639baa87dc7e5d915fd9b7ae71 Mon Sep 17 00:00:00 2001 From: MuhamadAjiW <16521119@mahasiswa.itb.ac.id> Date: Tue, 23 Apr 2024 09:27:49 +0700 Subject: [PATCH] refactor: data types --- Assets/_Scripts/Config/GameConfig.cs | 24 +++++++++---------- .../_Scripts/Core/Entities/Mobs/BossEntity.cs | 13 ++++++++++ .../Core/Entities/Mobs/EnemyEntity.cs | 6 ++--- .../_Scripts/Core/Entities/Pets/Companion.cs | 3 +++ .../Core/Objects/Weapons/WeaponObject.cs | 1 - Assets/_Scripts/Core/Player/Player.cs | 4 ++-- .../EntityObject/CombatantEntity.cs | 4 ++-- .../BaseClasses/EntityObject/PlayerEntity.cs | 14 +++++++++++ .../Library/DataTypes/CompanionData.cs | 5 ++++ .../Library/DataTypes/DifficultyData.cs | 12 ++++------ .../Library/DataTypes/ProjectileData.cs | 2 +- .../_Scripts/Library/DataTypes/WeaponData.cs | 6 ++++- .../Library/Interfaces/IAccompanied.cs | 3 +++ 13 files changed, 68 insertions(+), 29 deletions(-) diff --git a/Assets/_Scripts/Config/GameConfig.cs b/Assets/_Scripts/Config/GameConfig.cs index f02be23d..b7941cc8 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 9554a3f7..5aec3ba4 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 9ffb4e15..f35a0ec5 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 aa820e9f..00ab2489 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 46562480..8bed7c9e 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 89d543c1..aacf5dd0 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 70030882..5e16f79f 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 b006629a..68b2f0b3 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 f8ae9dc7..5bfb22e7 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 a8cc3c72..59859f94 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 556b46f6..9215a845 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 b8031157..3a1f31fb 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 0c46aa5b..ec66b003 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); } -- GitLab