diff --git a/.idea/.idea.AsteroidGame/.idea/vcs.xml b/.idea/.idea.AsteroidGame/.idea/vcs.xml
deleted file mode 100644
index 94a25f7..0000000
--- a/.idea/.idea.AsteroidGame/.idea/vcs.xml
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-
-
-
-
\ No newline at end of file
diff --git a/Assets/AsteroidGame.asmdef b/Assets/AsteroidGame.asmdef
index fa942c3..8bf3aa0 100644
--- a/Assets/AsteroidGame.asmdef
+++ b/Assets/AsteroidGame.asmdef
@@ -7,7 +7,8 @@
"GUID:f008ecc6829887e478aeb5eb004eb01b",
"GUID:17a5862fcd6383b4b97bad4dcb1e2e5d",
"GUID:f26d68a0bdefa1043b120b820f55e190",
- "GUID:eb3099ff524d60545a136315a154d67b"
+ "GUID:eb3099ff524d60545a136315a154d67b",
+ "GUID:5d38ea13ae8f69a4395d425d401a557a"
],
"includePlatforms": [],
"excludePlatforms": [],
diff --git a/Assets/CoreSystems b/Assets/CoreSystems
index f2355fc..c473d58 160000
--- a/Assets/CoreSystems
+++ b/Assets/CoreSystems
@@ -1 +1 @@
-Subproject commit f2355fc7825d8f09a407b31aaa4178b6fbdd3406
+Subproject commit c473d58817fa7c0cdd6d6f488cf6c8b9ffd5c52e
diff --git a/Assets/Entities/Enemies/Enemy.prefab b/Assets/Entities/Enemies/Enemy.prefab
index afdef29..ea6957a 100644
--- a/Assets/Entities/Enemies/Enemy.prefab
+++ b/Assets/Entities/Enemies/Enemy.prefab
@@ -23,6 +23,7 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 631532845000205954}
+ serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
@@ -32,7 +33,6 @@ Transform:
- {fileID: 91949040360545666}
- {fileID: 8001059947964412310}
m_Father: {fileID: 7780103704517281592}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &700493555145955010
GameObject:
@@ -57,6 +57,7 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 700493555145955010}
+ serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
@@ -65,8 +66,54 @@ Transform:
- {fileID: 1671077540319194627}
- {fileID: 3955427233603104958}
m_Father: {fileID: 3291032053430181389}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!1 &1312307913408260796
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4626427865743511805}
+ - component: {fileID: 4299120351774448665}
+ m_Layer: 0
+ m_Name: Damageable
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4626427865743511805
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1312307913408260796}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 5123077350175375293}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &4299120351774448665
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1312307913408260796}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a845ca774f1a2d341b32451b100c0d1c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ k__BackingField: 0
+ k__BackingField: 0
+ k__BackingField: 0
--- !u!1 &1856154329861502355
GameObject:
m_ObjectHideFlags: 0
@@ -92,13 +139,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1856154329861502355}
+ serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0.7071068, w: 0.7071068}
m_LocalPosition: {x: 0.341, y: 0, z: 0.587}
m_LocalScale: {x: 0.24, y: 0.4597677, z: 0.19977282}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 5355765884551595638}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90}
--- !u!33 &4938033185760690219
MeshFilter:
@@ -150,6 +197,39 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &1900887375425358919
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 5123077350175375293}
+ m_Layer: 0
+ m_Name: Functions
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &5123077350175375293
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 1900887375425358919}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 4626427865743511805}
+ - {fileID: 3486364872742429245}
+ m_Father: {fileID: 2692714622321691895}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &3867128990362458971
GameObject:
m_ObjectHideFlags: 0
@@ -175,13 +255,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 3867128990362458971}
+ serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.536, y: 0.206, z: -0.193}
m_LocalScale: {x: 0.1, y: 0.1, z: 0.1}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 91949040360545666}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &8811483340839899384
MeshFilter:
@@ -257,13 +337,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4192276824634724634}
+ serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 3291032053430181389}
- m_RootOrder: 2
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!65 &5604178963170827772
BoxCollider:
@@ -273,9 +353,17 @@ BoxCollider:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4192276824634724634}
m_Material: {fileID: 0}
+ m_IncludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_ExcludeLayers:
+ serializedVersion: 2
+ m_Bits: 0
+ m_LayerOverridePriority: 0
m_IsTrigger: 0
+ m_ProvidesContacts: 0
m_Enabled: 1
- serializedVersion: 2
+ serializedVersion: 3
m_Size: {x: 1.3168308, y: 1, z: 1.3902934}
m_Center: {x: 0.15841538, y: 0, z: -0.0017904043}
--- !u!1 &4921375452445824178
@@ -303,13 +391,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 4921375452445824178}
+ serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.536, y: 0.206, z: 0.205}
m_LocalScale: {x: 0.1, y: 0.1, z: 0.1}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 91949040360545666}
- m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &274824493129163367
MeshFilter:
@@ -361,6 +449,53 @@ MeshRenderer:
m_SortingLayer: 0
m_SortingOrder: 0
m_AdditionalVertexStreams: {fileID: 0}
+--- !u!1 &5367121395816538489
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 3486364872742429245}
+ - component: {fileID: 4691274110434226497}
+ m_Layer: 0
+ m_Name: Targetable
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &3486364872742429245
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5367121395816538489}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children: []
+ m_Father: {fileID: 5123077350175375293}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
+--- !u!114 &4691274110434226497
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 5367121395816538489}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 11500000, guid: a845ca774f1a2d341b32451b100c0d1c, type: 3}
+ m_Name:
+ m_EditorClassIdentifier:
+ k__BackingField: 0
+ k__BackingField: 0
+ k__BackingField: 0
--- !u!1 &5599539567497807159
GameObject:
m_ObjectHideFlags: 0
@@ -385,14 +520,15 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 5599539567497807159}
+ serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0.5, y: 0.5, z: 0.5}
m_ConstrainProportionsScale: 1
m_Children:
- - {fileID: 191376514769192977}
+ - {fileID: 5123077350175375293}
+ - {fileID: 4114072049224310043}
m_Father: {fileID: 0}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &1411216412654489461
MonoBehaviour:
@@ -418,6 +554,38 @@ MonoBehaviour:
_targeter: {fileID: 0}
_target: {fileID: 0}
_navMeshAgent: {fileID: 0}
+--- !u!1 &6015068770338930083
+GameObject:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ serializedVersion: 6
+ m_Component:
+ - component: {fileID: 4114072049224310043}
+ m_Layer: 0
+ m_Name: Rig
+ m_TagString: Untagged
+ m_Icon: {fileID: 0}
+ m_NavMeshLayer: 0
+ m_StaticEditorFlags: 0
+ m_IsActive: 1
+--- !u!4 &4114072049224310043
+Transform:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 6015068770338930083}
+ serializedVersion: 2
+ m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
+ m_LocalPosition: {x: 0, y: 0, z: 0}
+ m_LocalScale: {x: 1, y: 1, z: 1}
+ m_ConstrainProportionsScale: 0
+ m_Children:
+ - {fileID: 191376514769192977}
+ m_Father: {fileID: 2692714622321691895}
+ m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &6940800288144322101
GameObject:
m_ObjectHideFlags: 0
@@ -441,14 +609,14 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 6940800288144322101}
- m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068}
+ serializedVersion: 2
+ m_LocalRotation: {x: -0, y: -0.7071068, z: -0, w: 0.7071068}
m_LocalPosition: {x: 0, y: 2.01, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children:
- {fileID: 7780103704517281592}
- m_Father: {fileID: 2692714622321691895}
- m_RootOrder: 0
+ m_Father: {fileID: 4114072049224310043}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &7089677990206923544
GameObject:
@@ -473,6 +641,7 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 7089677990206923544}
+ serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
@@ -480,7 +649,6 @@ Transform:
m_Children:
- {fileID: 3291032053430181389}
m_Father: {fileID: 191376514769192977}
- m_RootOrder: 0
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &8831453991117079309
GameObject:
@@ -507,6 +675,7 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8831453991117079309}
+ serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 1, y: 1, z: 1}
@@ -515,7 +684,6 @@ Transform:
- {fileID: 7956298909069556562}
- {fileID: 4518982824339893338}
m_Father: {fileID: 3291032053430181389}
- m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!33 &5128498621595353232
MeshFilter:
@@ -592,13 +760,13 @@ Transform:
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 8931538593362537433}
+ serializedVersion: 2
m_LocalRotation: {x: -0, y: -0, z: -0.7071068, w: 0.7071068}
m_LocalPosition: {x: 0.34100002, y: 0, z: -0.603}
m_LocalScale: {x: 0.24, y: 0.4597677, z: 0.19977282}
m_ConstrainProportionsScale: 1
m_Children: []
m_Father: {fileID: 5355765884551595638}
- m_RootOrder: 1
m_LocalEulerAnglesHint: {x: 0, y: 0, z: -90}
--- !u!33 &6582230243926515993
MeshFilter:
diff --git a/Assets/Entities/Enemies/Scripts/EnemyBase.cs b/Assets/Entities/Enemies/Scripts/EnemyBase.cs
index f2d192e..d1374c9 100644
--- a/Assets/Entities/Enemies/Scripts/EnemyBase.cs
+++ b/Assets/Entities/Enemies/Scripts/EnemyBase.cs
@@ -1,4 +1,5 @@
-using System;
+using AsteroidGame.ScriptableObjects;
+using GameDev.CoreSystems;
using UnityEngine;
using UnityEngine.AI;
@@ -8,19 +9,21 @@ namespace AsteroidGame.Entities
{
[SerializeField] private SoEntityBaseRuntimeSet _enemyBaseSet;
- [Header("Targeter")]
- [SerializeField] private Targeter _targeter;
- [SerializeField] private EntityBase _target;
-
- [Header("NavMeshAgent")]
+ [field: Header("Targeter")]
[SerializeField] private SoTargeterConfig _targeterConfig;
+ [field: SerializeField] public Targeter Targeter { get; set; }
+
+ [field: Header("NavMeshAgent")]
[SerializeField] private NavMeshAgent _navMeshAgent;
protected override void OnEnable()
{
base.OnEnable();
+
_enemyBaseSet.Add(this);
+
InitializeTargeter();
+
InitializeNavMeshAgent();
}
@@ -32,9 +35,9 @@ namespace AsteroidGame.Entities
private void InitializeTargeter()
{
- _targeter = gameObject.AddComponent();
- _targeter.SetParent(this);
- _targeter.SetConfig(_targeterConfig);
+ Targeter = gameObject.AddComponent();
+ Targeter.SetParent(this);
+ Targeter.SetConfig(_targeterConfig);
}
protected override void OnDisable()
@@ -45,11 +48,10 @@ namespace AsteroidGame.Entities
private void Update()
{
- if (_targeter.FoundTarget())
- {
- _target = _targeter.GetTarget();
- _navMeshAgent.SetDestination(_target.GetBasePosition());
- }
+ if (!Targeter.FoundTarget()) return;
+
+ Target = Targeter.GetTarget();
+ _navMeshAgent.SetDestination(_target.GetBasePosition());
}
}
}
\ No newline at end of file
diff --git a/Assets/Entities/Entities.asmdef b/Assets/Entities/Entities.asmdef
index a41f803..1414387 100644
--- a/Assets/Entities/Entities.asmdef
+++ b/Assets/Entities/Entities.asmdef
@@ -2,8 +2,6 @@
"name": "Entities",
"rootNamespace": "AsteroidGame",
"references": [
- "GUID:17a5862fcd6383b4b97bad4dcb1e2e5d",
- "GUID:eb3099ff524d60545a136315a154d67b",
"GUID:5d38ea13ae8f69a4395d425d401a557a"
],
"includePlatforms": [],
diff --git a/Assets/Entities/RuntimeSet/newEnemyBaseRuntimeSet.asset b/Assets/Entities/RuntimeSet/newEnemyBaseRuntimeSet.asset
new file mode 100644
index 0000000..20c85a0
--- /dev/null
+++ b/Assets/Entities/RuntimeSet/newEnemyBaseRuntimeSet.asset
@@ -0,0 +1,15 @@
+%YAML 1.1
+%TAG !u! tag:unity3d.com,2011:
+--- !u!114 &11400000
+MonoBehaviour:
+ m_ObjectHideFlags: 0
+ m_CorrespondingSourceObject: {fileID: 0}
+ m_PrefabInstance: {fileID: 0}
+ m_PrefabAsset: {fileID: 0}
+ m_GameObject: {fileID: 0}
+ m_Enabled: 1
+ m_EditorHideFlags: 0
+ m_Script: {fileID: 0}
+ m_Name: newEnemyBaseRuntimeSet
+ m_EditorClassIdentifier:
+ _list: []
diff --git a/Assets/ScriptableObjects/ScriptableObjects.asmdef.meta b/Assets/Entities/RuntimeSet/newEnemyBaseRuntimeSet.asset.meta
similarity index 52%
rename from Assets/ScriptableObjects/ScriptableObjects.asmdef.meta
rename to Assets/Entities/RuntimeSet/newEnemyBaseRuntimeSet.asset.meta
index 7c9b25d..9492ee3 100644
--- a/Assets/ScriptableObjects/ScriptableObjects.asmdef.meta
+++ b/Assets/Entities/RuntimeSet/newEnemyBaseRuntimeSet.asset.meta
@@ -1,7 +1,8 @@
fileFormatVersion: 2
-guid: eb3099ff524d60545a136315a154d67b
-AssemblyDefinitionImporter:
+guid: d681acab3b5d24f458e9c1c281d375cb
+NativeFormatImporter:
externalObjects: {}
+ mainObjectFileID: 11400000
userData:
assetBundleName:
assetBundleVariant:
diff --git a/Assets/Entities/ScriptableObjects/SoEnemyBaseList.cs b/Assets/Entities/ScriptableObjects/SoEnemyBaseList.cs
index 98bf112..37b7d30 100644
--- a/Assets/Entities/ScriptableObjects/SoEnemyBaseList.cs
+++ b/Assets/Entities/ScriptableObjects/SoEnemyBaseList.cs
@@ -1,8 +1,8 @@
using System.Collections.Generic;
-using AsteroidGame.Entities.Enemies.Scripts;
+using AsteroidGame.Entities;
using UnityEngine;
-namespace AsteroidGame.Entities
+namespace AsteroidGame.ScriptableObjects
{
[CreateAssetMenu(fileName = "newEnemyList", menuName = "Enemies/EnemyList")]
public class SoEnemyBaseList : ScriptableObject
diff --git a/Assets/Entities/ScriptableObjects/SoEnemyBaseRuntimeSet.cs b/Assets/Entities/ScriptableObjects/SoEnemyBaseRuntimeSet.cs
index 1598031..5c67086 100644
--- a/Assets/Entities/ScriptableObjects/SoEnemyBaseRuntimeSet.cs
+++ b/Assets/Entities/ScriptableObjects/SoEnemyBaseRuntimeSet.cs
@@ -1,8 +1,8 @@
-using AsteroidGame.Entities.Enemies.Scripts;
-using AsteroidGame.ScriptableObjects;
+using AsteroidGame.Entities;
+using GameDev.CoreSystems;
using UnityEngine;
-namespace AsteroidGame.Entities
+namespace AsteroidGame.ScriptableObjects
{
[CreateAssetMenu(fileName = "newEnemyBaseRuntimeSet", menuName = "RuntimeSet/EnemyBase")]
public class SoEnemyBaseRuntimeSet : SRuntimeSet
diff --git a/Assets/Entities/ScriptableObjects/SoEntityBaseRuntimeSet.cs b/Assets/Entities/ScriptableObjects/SoEntityBaseRuntimeSet.cs
index 2a8532c..7c3ace8 100644
--- a/Assets/Entities/ScriptableObjects/SoEntityBaseRuntimeSet.cs
+++ b/Assets/Entities/ScriptableObjects/SoEntityBaseRuntimeSet.cs
@@ -1,7 +1,8 @@
-using AsteroidGame.ScriptableObjects;
+using AsteroidGame.Entities;
+using GameDev.CoreSystems;
using UnityEngine;
-namespace AsteroidGame.Entities
+namespace AsteroidGame.ScriptableObjects
{
[CreateAssetMenu(fileName = "newEntityBaseRuntimeSet", menuName = "RuntimeSet/EntityBase")]
public class SoEntityBaseRuntimeSet : SRuntimeSet
diff --git a/Assets/Entities/ScriptableObjects/SoPowerBaseRuntimeSet.cs b/Assets/Entities/ScriptableObjects/SoPowerBaseRuntimeSet.cs
index f416b5f..ebc04bd 100644
--- a/Assets/Entities/ScriptableObjects/SoPowerBaseRuntimeSet.cs
+++ b/Assets/Entities/ScriptableObjects/SoPowerBaseRuntimeSet.cs
@@ -1,7 +1,8 @@
-using AsteroidGame.ScriptableObjects;
+using AsteroidGame.Entities;
+using GameDev.CoreSystems;
using UnityEngine;
-namespace AsteroidGame.Entities
+namespace AsteroidGame.ScriptableObjects
{
[CreateAssetMenu(fileName = "newPowerBaseRuntimeSet", menuName = "RuntimeSet/PowerBase")]
public class SoPowerBaseRuntimeSet : SRuntimeSet
diff --git a/Assets/Entities/ScriptableObjects/SoPowerConfig.cs b/Assets/Entities/ScriptableObjects/SoPowerConfig.cs
index 3d2295d..03dacd5 100644
--- a/Assets/Entities/ScriptableObjects/SoPowerConfig.cs
+++ b/Assets/Entities/ScriptableObjects/SoPowerConfig.cs
@@ -1,6 +1,6 @@
using UnityEngine;
-namespace AsteroidGame.Entities
+namespace AsteroidGame.ScriptableObjects
{
[CreateAssetMenu(fileName = "newPowerConfiguration", menuName = "Configuration/Power")]
public class SoPowerConfig : ScriptableObject
diff --git a/Assets/Entities/ScriptableObjects/SoStructureBaseList.cs b/Assets/Entities/ScriptableObjects/SoStructureBaseList.cs
index 564cc35..42ea48c 100644
--- a/Assets/Entities/ScriptableObjects/SoStructureBaseList.cs
+++ b/Assets/Entities/ScriptableObjects/SoStructureBaseList.cs
@@ -1,7 +1,8 @@
using System.Collections.Generic;
+using AsteroidGame.Entities;
using UnityEngine;
-namespace AsteroidGame.Entities
+namespace AsteroidGame.ScriptableObjects
{
[CreateAssetMenu(fileName = "newStructureList", menuName = "Structures/StructureList")]
public class SoStructureBaseList : ScriptableObject
diff --git a/Assets/Entities/ScriptableObjects/SoStructureBaseRuntimeSet.cs b/Assets/Entities/ScriptableObjects/SoStructureBaseRuntimeSet.cs
index 06bbc75..9680470 100644
--- a/Assets/Entities/ScriptableObjects/SoStructureBaseRuntimeSet.cs
+++ b/Assets/Entities/ScriptableObjects/SoStructureBaseRuntimeSet.cs
@@ -1,7 +1,8 @@
-using AsteroidGame.ScriptableObjects;
+using AsteroidGame.Entities;
+using GameDev.CoreSystems;
using UnityEngine;
-namespace AsteroidGame.Entities
+namespace AsteroidGame.ScriptableObjects
{
[CreateAssetMenu(fileName = "newStructureBaseRuntimeSet", menuName = "RuntimeSet/StructureBase")]
public class SoStructureBaseRuntimeSet : SRuntimeSet
diff --git a/Assets/Entities/ScriptableObjects/SoTargeterConfig.cs b/Assets/Entities/ScriptableObjects/SoTargeterConfig.cs
index edc8e95..11d3bbb 100644
--- a/Assets/Entities/ScriptableObjects/SoTargeterConfig.cs
+++ b/Assets/Entities/ScriptableObjects/SoTargeterConfig.cs
@@ -1,13 +1,14 @@
+using GameDev.CoreSystems;
using UnityEngine;
-namespace AsteroidGame.Entities
+namespace AsteroidGame.ScriptableObjects
{
[CreateAssetMenu(fileName = "newTargeterConfiguration", menuName = "Configuration/Targeter")]
public class SoTargeterConfig : ScriptableObject
{
public float _range;
public TargetStrategy _selectedTargetStrategy;
- public SoEntityBaseRuntimeSet _activeEntities;
+ public SoTargetableRuntimeSet _activeEntities;
public enum TargetStrategy
{
diff --git a/Assets/Entities/ScriptableObjects/SoWeaponConfig.cs b/Assets/Entities/ScriptableObjects/SoWeaponConfig.cs
index 3cd4700..2b656d3 100644
--- a/Assets/Entities/ScriptableObjects/SoWeaponConfig.cs
+++ b/Assets/Entities/ScriptableObjects/SoWeaponConfig.cs
@@ -1,7 +1,7 @@
-using AsteroidGame.CoreSystems;
+using GameDev.CoreSystems;
using UnityEngine;
-namespace AsteroidGame.Entities
+namespace AsteroidGame.ScriptableObjects
{
public class SoWeaponConfig : ScriptableObject, IWeapon
{
diff --git a/Assets/Entities/Scripts/EntityBase.cs b/Assets/Entities/Scripts/EntityBase.cs
index 3afcb4d..03e4780 100644
--- a/Assets/Entities/Scripts/EntityBase.cs
+++ b/Assets/Entities/Scripts/EntityBase.cs
@@ -1,18 +1,16 @@
-using AsteroidGame.Interfaces;
+using AsteroidGame.ScriptableObjects;
+using GameDev.CoreSystems;
using UnityEngine;
namespace AsteroidGame.Entities
{
- public class EntityBase : MonoBehaviour, IDamageable, ITargetable
+ public class EntityBase : MonoBehaviour
{
- [Header("Health")]
- [SerializeField] protected int _health;
- [SerializeField] protected int _maxHealth;
- [SerializeField] protected bool _isInvulnerable;
+ [field: Header("Damageable")]
+ [field: SerializeField] public Damageable Damageable { get; set; }
- [Header("TargetPositions")]
- [SerializeField] private Transform _centerPosition;
- [SerializeField] private Transform _basePosition;
+ [field: Header("Targetable")]
+ [field: SerializeField] public Targetable Targetable { get; set; }
[Header("UI")]
[SerializeField] protected string _uiFriendlyName;
@@ -22,7 +20,6 @@ namespace AsteroidGame.Entities
#region Props
- public bool IsInvulnerable => _isInvulnerable;
public string UiFriendlyName => _uiFriendlyName;
#endregion
@@ -30,6 +27,10 @@ namespace AsteroidGame.Entities
protected virtual void OnEnable()
{
_entityBaseSet.Add(this);
+
+ InitializeDamageable();
+
+ InitializeTargetable();
}
protected virtual void OnDisable()
@@ -37,40 +38,14 @@ namespace AsteroidGame.Entities
_entityBaseSet.Remove(this);
}
- #region Methods
-
- public void ModifyHealth(int healthChange)
+ private void InitializeTargetable()
{
- if (!_isInvulnerable)
- {
- _health += healthChange;
- }
+ Targetable = gameObject.AddComponent();
}
- #endregion
-
- #region Setters
-
- public void SetHealth(int newHealth) => _health = newHealth;
-
- public void SetMaxHealth(int newHealth) => _maxHealth = newHealth;
-
- public void SetInvulnerable(bool newState) => _isInvulnerable = newState;
-
- #endregion
-
- #region Getters
-
- public Vector3 GetCenterPosition() => _centerPosition.transform.position;
-
- public Vector3 GetBasePosition() => _basePosition.transform.position;
-
- public int GetHealth() => _health;
-
- public int GetMaxHealth() => _maxHealth;
-
- public float GetHealthFactor() => (float)_health / (float)_maxHealth;
-
- #endregion
+ private void InitializeDamageable()
+ {
+ Damageable = gameObject.AddComponent();
+ }
}
}
\ No newline at end of file
diff --git a/Assets/Entities/Scripts/PowerBase.cs b/Assets/Entities/Scripts/PowerBase.cs
index fa579c5..8feaa01 100644
--- a/Assets/Entities/Scripts/PowerBase.cs
+++ b/Assets/Entities/Scripts/PowerBase.cs
@@ -1,5 +1,5 @@
-using System;
-using AsteroidGame.Interfaces;
+using AsteroidGame.ScriptableObjects;
+using GameDev.CoreSystems;
using UnityEngine;
namespace AsteroidGame.Entities
diff --git a/Assets/Entities/Scripts/Targeter.cs b/Assets/Entities/Scripts/Targeter.cs
index ca0d3c5..9bdfbeb 100644
--- a/Assets/Entities/Scripts/Targeter.cs
+++ b/Assets/Entities/Scripts/Targeter.cs
@@ -1,3 +1,5 @@
+using AsteroidGame.ScriptableObjects;
+using GameDev.CoreSystems;
using UnityEngine;
namespace AsteroidGame.Entities
@@ -5,12 +7,12 @@ namespace AsteroidGame.Entities
public class Targeter : MonoBehaviour
{
[SerializeField] private float _range;
- [SerializeField] private EntityBase _targeterParent;
- [SerializeField] private EntityBase _targetEntity;
[SerializeField] private SoTargeterConfig.TargetStrategy _targetStrategy;
- [SerializeField] private SoEntityBaseRuntimeSet _activeEntities;
+ [SerializeField] private SoTargetableRuntimeSet _activeEntities;
+ [SerializeField] private Targetable _targeterParent;
+ [SerializeField] private Targetable _targetEntity;
- public void SetParent(EntityBase newParent) => _targeterParent = newParent;
+ public void SetParent(Transform newParent) => _targeterParent.transform.parent = newParent;
public void SetConfig(SoTargeterConfig config)
{
@@ -19,7 +21,7 @@ namespace AsteroidGame.Entities
_activeEntities = config._activeEntities;
}
- public EntityBase GetTarget()
+ public Targetable GetTarget()
{
return _targetEntity;
}
@@ -29,7 +31,7 @@ namespace AsteroidGame.Entities
float currentBestValue = Mathf.Infinity;
var targetFound = false;
- foreach (EntityBase targetEntity in _activeEntities._list)
+ foreach (var targetEntity in _activeEntities._list)
{
float distanceToTarget =
Vector3.Magnitude(targetEntity.GetCenterPosition() - _targeterParent.GetCenterPosition());
@@ -53,7 +55,8 @@ namespace AsteroidGame.Entities
}
case SoTargeterConfig.TargetStrategy.LowestHealth:
{
- float enemyHealth = targetEntity.GetHealth();
+ float enemyHealth = targetEntity.transform.parent.GetComponent()
+ .GetCurrentHealth();
bool isLowestHealth = enemyHealth < currentBestValue;
if (isLowestHealth)
diff --git a/Assets/Entities/Structures/Scripts/Disabler.cs b/Assets/Entities/Structures/Scripts/Disabler.cs
index 09e52c8..504c63c 100644
--- a/Assets/Entities/Structures/Scripts/Disabler.cs
+++ b/Assets/Entities/Structures/Scripts/Disabler.cs
@@ -1,3 +1,4 @@
+using AsteroidGame.ScriptableObjects;
using UnityEngine;
using UnityEngine.Serialization;
diff --git a/Assets/Entities/Structures/Scripts/StructureBase.cs b/Assets/Entities/Structures/Scripts/StructureBase.cs
index e1c69d5..17c2143 100644
--- a/Assets/Entities/Structures/Scripts/StructureBase.cs
+++ b/Assets/Entities/Structures/Scripts/StructureBase.cs
@@ -1,5 +1,5 @@
-using System;
-using AsteroidGame.Interfaces;
+using AsteroidGame.ScriptableObjects;
+using GameDev.CoreSystems;
using UnityEngine;
namespace AsteroidGame.Entities
diff --git a/Assets/Entities/Structures/Turret/Turret.cs b/Assets/Entities/Structures/Turret/Turret.cs
index 574392c..b5e0f39 100644
--- a/Assets/Entities/Structures/Turret/Turret.cs
+++ b/Assets/Entities/Structures/Turret/Turret.cs
@@ -1,5 +1,5 @@
-using System;
-using AsteroidGame.Entities.Enemies.Scripts;
+using AsteroidGame.ScriptableObjects;
+using GameDev.CoreSystems;
using UnityEngine;
namespace AsteroidGame.Entities
@@ -22,7 +22,7 @@ namespace AsteroidGame.Entities
[Header("Targeter")]
[SerializeField] private SoTargeterConfig _targeterConfig;
[SerializeField] private Targeter _targeter;
- [SerializeField] private EntityBase _target;
+ [SerializeField] private Targetable _target;
#region Publics
@@ -43,17 +43,16 @@ namespace AsteroidGame.Entities
private void InitializeTargeter()
{
_targeter = gameObject.AddComponent();
- _targeter.SetParent(this);
+ //_targeter.SetParent(this);
_targeter.SetConfig(_targeterConfig);
}
private void Update()
{
- if (_targeter.FoundTarget())
- {
- _target = _targeter.GetTarget();
- _turretHead.transform.LookAt(_target.GetCenterPosition());
- }
+ if (!_targeter.FoundTarget()) return;
+
+ _target = _targeter.GetTarget();
+ _turretHead.transform.LookAt(_target.GetCenterPosition());
}
}
}
\ No newline at end of file
diff --git a/Assets/Handlers/BuildingHandler.cs b/Assets/Handlers/BuildingHandler.cs
index e93edca..bef7e1b 100644
--- a/Assets/Handlers/BuildingHandler.cs
+++ b/Assets/Handlers/BuildingHandler.cs
@@ -1,4 +1,5 @@
using AsteroidGame.Entities;
+using AsteroidGame.ScriptableObjects;
using UnityEngine;
using UnityEngine.InputSystem;
using UnityEngine.Serialization;
diff --git a/Assets/Handlers/EnemyHandler.cs b/Assets/Handlers/EnemyHandler.cs
index 5130fdf..2f77c78 100644
--- a/Assets/Handlers/EnemyHandler.cs
+++ b/Assets/Handlers/EnemyHandler.cs
@@ -1,4 +1,4 @@
-using AsteroidGame.Entities;
+using AsteroidGame.ScriptableObjects;
using UnityEngine;
namespace AsteroidGame.Handlers
diff --git a/Assets/Handlers/PowerHandler.cs b/Assets/Handlers/PowerHandler.cs
index 1e7bbcb..5fcf96a 100644
--- a/Assets/Handlers/PowerHandler.cs
+++ b/Assets/Handlers/PowerHandler.cs
@@ -1,5 +1,5 @@
using System;
-using AsteroidGame.Entities;
+using AsteroidGame.ScriptableObjects;
using UnityEngine;
namespace AsteroidGame.Handlers
diff --git a/Assets/ScriptableObjects.meta b/Assets/ScriptableObjects.meta
deleted file mode 100644
index e8e6906..0000000
--- a/Assets/ScriptableObjects.meta
+++ /dev/null
@@ -1,8 +0,0 @@
-fileFormatVersion: 2
-guid: 4b8bc87700fc5a44b88c1b13c4bdb3cf
-folderAsset: yes
-DefaultImporter:
- externalObjects: {}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/ScriptableObjects/SRuntimeSet.cs b/Assets/ScriptableObjects/SRuntimeSet.cs
deleted file mode 100644
index 9a6cb87..0000000
--- a/Assets/ScriptableObjects/SRuntimeSet.cs
+++ /dev/null
@@ -1,20 +0,0 @@
-using System.Collections.Generic;
-using UnityEngine;
-
-namespace AsteroidGame.ScriptableObjects
-{
- public abstract class SRuntimeSet : ScriptableObject
- {
- public List _list;
-
- public void Add(T component)
- {
- _list.Add(component);
- }
-
- public void Remove(T component)
- {
- _list.Remove(component);
- }
- }
-}
\ No newline at end of file
diff --git a/Assets/ScriptableObjects/SRuntimeSet.cs.meta b/Assets/ScriptableObjects/SRuntimeSet.cs.meta
deleted file mode 100644
index 483e99a..0000000
--- a/Assets/ScriptableObjects/SRuntimeSet.cs.meta
+++ /dev/null
@@ -1,11 +0,0 @@
-fileFormatVersion: 2
-guid: 1e81b384c7f010b4fa3c1b8f293a4c42
-MonoImporter:
- externalObjects: {}
- serializedVersion: 2
- defaultReferences: []
- executionOrder: 0
- icon: {instanceID: 0}
- userData:
- assetBundleName:
- assetBundleVariant:
diff --git a/Assets/ScriptableObjects/ScriptableObjects.asmdef b/Assets/ScriptableObjects/ScriptableObjects.asmdef
deleted file mode 100644
index 35574c9..0000000
--- a/Assets/ScriptableObjects/ScriptableObjects.asmdef
+++ /dev/null
@@ -1,14 +0,0 @@
-{
- "name": "ScriptableObjects",
- "rootNamespace": "AsteroidGame",
- "references": [],
- "includePlatforms": [],
- "excludePlatforms": [],
- "allowUnsafeCode": false,
- "overrideReferences": false,
- "precompiledReferences": [],
- "autoReferenced": true,
- "defineConstraints": [],
- "versionDefines": [],
- "noEngineReferences": false
-}
\ No newline at end of file
diff --git a/Assets/Scripts/CameraController.cs b/Assets/Scripts/CameraController.cs
index f87b33d..0fb4396 100644
--- a/Assets/Scripts/CameraController.cs
+++ b/Assets/Scripts/CameraController.cs
@@ -1,4 +1,3 @@
-using InputSystem;
using UnityEngine;
using UnityEngine.InputSystem;
diff --git a/Assets/UI/BuildMenuUiController.cs b/Assets/UI/BuildMenuUiController.cs
index 6c1a1cc..c9fbdd1 100644
--- a/Assets/UI/BuildMenuUiController.cs
+++ b/Assets/UI/BuildMenuUiController.cs
@@ -3,6 +3,7 @@ using AsteroidGame.Entities;
using UnityEngine;
using UnityEngine.UIElements;
using AsteroidGame.Handlers;
+using AsteroidGame.ScriptableObjects;
using UnityEngine.Serialization;
namespace AsteroidGame.UI
diff --git a/ProjectSettings/ProjectSettings.asset b/ProjectSettings/ProjectSettings.asset
index 2c71d59..f49a8f9 100644
--- a/ProjectSettings/ProjectSettings.asset
+++ b/ProjectSettings/ProjectSettings.asset
@@ -136,8 +136,7 @@ PlayerSettings:
vulkanEnableCommandBufferRecycling: 1
loadStoreDebugModeEnabled: 0
bundleVersion: 0.1
- preloadedAssets:
- - {fileID: 11400000, guid: 2f27ffbbbd54d9c4b9435071982af520, type: 2}
+ preloadedAssets: []
metroInputSource: 0
wsaTransparentSwapchain: 0
m_HolographicPauseOnTrackingLoss: 1