From f89ab59fdf49898d35ae92967fc450b1b8769f9c Mon Sep 17 00:00:00 2001 From: Stedd Date: Sat, 1 Oct 2022 16:22:40 +0200 Subject: [PATCH] Changed to using Runtime sets Handlers are now using runtime sets instead of owning lists. Entities that are instantiated assign themselves to their respective Runtime sets. Heavily inspired by: https://www.youtube.com/watch?v=raQ3iHhE_Kk https://github.com/roboryantron/Unite2017 --- Assets/AsteroidGame.asmdef | 7 +-- .../Entities/Enemies/AvailableEnemies.asset | 15 +++++ .../Enemies/AvailableEnemies.asset.meta | 8 +++ Assets/Entities/Enemies/Enemy.prefab | 2 + Assets/Entities/Enemies/Scripts/EnemyBase.cs | 17 ++++- Assets/Entities/Entities.asmdef | 3 +- Assets/Entities/EntityBase.cs | 13 ++++ .../RuntimeSet.meta} | 5 +- .../Entities/RuntimeSet/ActiveEnemies.asset | 15 +++++ .../RuntimeSet/ActiveEnemies.asset.meta | 8 +++ .../Entities/RuntimeSet/ActiveEntities.asset | 15 +++++ .../RuntimeSet/ActiveEntities.asset.meta | 8 +++ .../RuntimeSet/ActiveStructures.asset | 15 +++++ .../RuntimeSet/ActiveStructures.asset.meta | 8 +++ .../{Structures => }/ScriptableObjects.meta | 2 +- .../ScriptableObjects/SEnemyBaseList.cs | 12 ++++ .../ScriptableObjects/SEnemyBaseList.cs.meta | 11 ++++ .../ScriptableObjects/SEnemyBaseRuntimeSet.cs | 11 ++++ .../SEnemyBaseRuntimeSet.cs.meta | 11 ++++ .../SEntityBaseRuntimeSet.cs | 10 +++ .../SEntityBaseRuntimeSet.cs.meta | 11 ++++ .../ScriptableObjects/SStructureBaseList.cs | 11 ++++ .../SStructureBaseList.cs.meta} | 0 .../SStructureBaseRuntimeSet.cs | 10 +++ .../SStructureBaseRuntimeSet.cs.meta | 11 ++++ .../ScriptableObjects/SWeaponConfig.cs | 0 .../ScriptableObjects/SWeaponConfig.cs.meta | 0 .../Structures/PowerPlant/PowerPlant.prefab | 2 + .../Entities/Structures/Scripts/Disabler.cs | 28 +++++++++ .../Structures/Scripts/Disabler.cs.meta | 11 ++++ .../Structures/Scripts/StructureBase.cs | 14 ++++- .../Scripts/StructureBaseScriptableObject.cs | 27 -------- Assets/Entities/Structures/Turret/Turret.cs | 6 +- .../Entities/Structures/Turret/Turret.prefab | 3 + Assets/Handlers/BuildingHandler.cs | 62 +++++++++---------- Assets/Handlers/BuildingHandler.prefab | 3 +- Assets/Handlers/EnemyHandler.cs | 42 +++---------- Assets/Handlers/EnemyHandler.prefab | 6 +- Assets/Handlers/Handlers.asmdef | 22 ------- Assets/Handlers/PowerHandler.cs | 20 +----- Assets/Handlers/PowerHandler.prefab | 3 +- Assets/Handlers/ScoreHandler.cs | 1 - Assets/Scenes/Playground 1.unity | 57 +++++++++++++++++ Assets/ScriptableObjects.meta | 8 +++ Assets/ScriptableObjects/SRuntimeSet.cs | 20 ++++++ Assets/ScriptableObjects/SRuntimeSet.cs.meta | 11 ++++ .../ScriptableObjects.asmdef} | 7 +-- .../ScriptableObjects.asmdef.meta} | 2 +- Assets/Scripts/ScriptableObjects.meta | 8 +++ Assets/UI/BuildMenuUiController.cs | 6 +- AsteroidGame.csproj.DotSettings | 3 + Entities.csproj.DotSettings | 1 + Scripts.csproj.DotSettings | 3 + 53 files changed, 452 insertions(+), 163 deletions(-) create mode 100644 Assets/Entities/Enemies/AvailableEnemies.asset create mode 100644 Assets/Entities/Enemies/AvailableEnemies.asset.meta rename Assets/{Handlers/Handlers.asmdef.meta => Entities/RuntimeSet.meta} (57%) create mode 100644 Assets/Entities/RuntimeSet/ActiveEnemies.asset create mode 100644 Assets/Entities/RuntimeSet/ActiveEnemies.asset.meta create mode 100644 Assets/Entities/RuntimeSet/ActiveEntities.asset create mode 100644 Assets/Entities/RuntimeSet/ActiveEntities.asset.meta create mode 100644 Assets/Entities/RuntimeSet/ActiveStructures.asset create mode 100644 Assets/Entities/RuntimeSet/ActiveStructures.asset.meta rename Assets/Entities/{Structures => }/ScriptableObjects.meta (77%) create mode 100644 Assets/Entities/ScriptableObjects/SEnemyBaseList.cs create mode 100644 Assets/Entities/ScriptableObjects/SEnemyBaseList.cs.meta create mode 100644 Assets/Entities/ScriptableObjects/SEnemyBaseRuntimeSet.cs create mode 100644 Assets/Entities/ScriptableObjects/SEnemyBaseRuntimeSet.cs.meta create mode 100644 Assets/Entities/ScriptableObjects/SEntityBaseRuntimeSet.cs create mode 100644 Assets/Entities/ScriptableObjects/SEntityBaseRuntimeSet.cs.meta create mode 100644 Assets/Entities/ScriptableObjects/SStructureBaseList.cs rename Assets/Entities/{Structures/Scripts/StructureBaseScriptableObject.cs.meta => ScriptableObjects/SStructureBaseList.cs.meta} (100%) create mode 100644 Assets/Entities/ScriptableObjects/SStructureBaseRuntimeSet.cs create mode 100644 Assets/Entities/ScriptableObjects/SStructureBaseRuntimeSet.cs.meta rename Assets/Entities/{Structures => }/ScriptableObjects/SWeaponConfig.cs (100%) rename Assets/Entities/{Structures => }/ScriptableObjects/SWeaponConfig.cs.meta (100%) create mode 100644 Assets/Entities/Structures/Scripts/Disabler.cs create mode 100644 Assets/Entities/Structures/Scripts/Disabler.cs.meta delete mode 100644 Assets/Entities/Structures/Scripts/StructureBaseScriptableObject.cs delete mode 100644 Assets/Handlers/Handlers.asmdef create mode 100644 Assets/ScriptableObjects.meta create mode 100644 Assets/ScriptableObjects/SRuntimeSet.cs create mode 100644 Assets/ScriptableObjects/SRuntimeSet.cs.meta rename Assets/{Scripts/Scripts.asmdef => ScriptableObjects/ScriptableObjects.asmdef} (67%) rename Assets/{Scripts/Scripts.asmdef.meta => ScriptableObjects/ScriptableObjects.asmdef.meta} (76%) create mode 100644 Assets/Scripts/ScriptableObjects.meta create mode 100644 AsteroidGame.csproj.DotSettings create mode 100644 Scripts.csproj.DotSettings diff --git a/Assets/AsteroidGame.asmdef b/Assets/AsteroidGame.asmdef index d5db32e..fa942c3 100644 --- a/Assets/AsteroidGame.asmdef +++ b/Assets/AsteroidGame.asmdef @@ -2,13 +2,12 @@ "name": "AsteroidGame", "rootNamespace": "AsteroidGame", "references": [ - "GUID:bc7863ca0989b494d84426bfd28432fa", "GUID:6055be8ebefd69e48b49212b09b47b2f", - "GUID:5041af1ee0cf75e4a9a52f5f23a0bfae", - "GUID:857695c8a9ee988459c9b50e4e75e660", + "GUID:75469ad4d38634e559750d17036d5f7c", + "GUID:f008ecc6829887e478aeb5eb004eb01b", "GUID:17a5862fcd6383b4b97bad4dcb1e2e5d", "GUID:f26d68a0bdefa1043b120b820f55e190", - "GUID:75469ad4d38634e559750d17036d5f7c" + "GUID:eb3099ff524d60545a136315a154d67b" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Assets/Entities/Enemies/AvailableEnemies.asset b/Assets/Entities/Enemies/AvailableEnemies.asset new file mode 100644 index 0000000..391cdb0 --- /dev/null +++ b/Assets/Entities/Enemies/AvailableEnemies.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: 11500000, guid: 1260fd8b7346bdf41a685d24b968a231, type: 3} + m_Name: AvailableEnemies + m_EditorClassIdentifier: + _list: [] diff --git a/Assets/Entities/Enemies/AvailableEnemies.asset.meta b/Assets/Entities/Enemies/AvailableEnemies.asset.meta new file mode 100644 index 0000000..3276b42 --- /dev/null +++ b/Assets/Entities/Enemies/AvailableEnemies.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 00c435d92e1df55499826c91b4f1e62f +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Entities/Enemies/Enemy.prefab b/Assets/Entities/Enemies/Enemy.prefab index 18673bc..040fe6a 100644 --- a/Assets/Entities/Enemies/Enemy.prefab +++ b/Assets/Entities/Enemies/Enemy.prefab @@ -412,6 +412,8 @@ MonoBehaviour: _centerPosition: {fileID: 3291032053430181389} _basePosition: {fileID: 2692714622321691895} _uiFriendlyName: Enemy + _entityBaseSet: {fileID: 11400000, guid: c5542e77624472441a67b1f34e19a116, type: 2} + _enemyBaseSet: {fileID: 11400000, guid: 5f6dc84d75dbd9a459e519de42279066, type: 2} --- !u!1 &6940800288144322101 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Entities/Enemies/Scripts/EnemyBase.cs b/Assets/Entities/Enemies/Scripts/EnemyBase.cs index d3464ba..eefb416 100644 --- a/Assets/Entities/Enemies/Scripts/EnemyBase.cs +++ b/Assets/Entities/Enemies/Scripts/EnemyBase.cs @@ -1,10 +1,21 @@ -using System; using UnityEngine; -namespace AsteroidGame.Entities.Enemies.Scripts +namespace AsteroidGame.Entities { public class EnemyBase : EntityBase { + [SerializeField] private SEnemyBaseRuntimeSet _enemyBaseSet; + protected override void OnEnable() + { + base.OnEnable(); + _enemyBaseSet.Add(this); + } + + protected override void OnDisable() + { + base.OnDisable(); + _enemyBaseSet.Remove(this); + } } -} +} \ No newline at end of file diff --git a/Assets/Entities/Entities.asmdef b/Assets/Entities/Entities.asmdef index 0621ea4..9e0932f 100644 --- a/Assets/Entities/Entities.asmdef +++ b/Assets/Entities/Entities.asmdef @@ -2,7 +2,8 @@ "name": "Entities", "rootNamespace": "AsteroidGame", "references": [ - "GUID:17a5862fcd6383b4b97bad4dcb1e2e5d" + "GUID:17a5862fcd6383b4b97bad4dcb1e2e5d", + "GUID:eb3099ff524d60545a136315a154d67b" ], "includePlatforms": [], "excludePlatforms": [], diff --git a/Assets/Entities/EntityBase.cs b/Assets/Entities/EntityBase.cs index 128d24a..b4ed7ca 100644 --- a/Assets/Entities/EntityBase.cs +++ b/Assets/Entities/EntityBase.cs @@ -17,6 +17,9 @@ namespace AsteroidGame.Entities [Header("UI")] [SerializeField] protected string _uiFriendlyName; + [Space] + [SerializeField] private SEntityBaseRuntimeSet _entityBaseSet; + #region Props public bool IsInvulnerable => _isInvulnerable; @@ -24,6 +27,16 @@ namespace AsteroidGame.Entities #endregion + protected virtual void OnEnable() + { + _entityBaseSet.Add(this); + } + + protected virtual void OnDisable() + { + _entityBaseSet.Remove(this); + } + #region Methods public void ModifyHealth(int healthChange) diff --git a/Assets/Handlers/Handlers.asmdef.meta b/Assets/Entities/RuntimeSet.meta similarity index 57% rename from Assets/Handlers/Handlers.asmdef.meta rename to Assets/Entities/RuntimeSet.meta index c7da719..a7e26f9 100644 --- a/Assets/Handlers/Handlers.asmdef.meta +++ b/Assets/Entities/RuntimeSet.meta @@ -1,6 +1,7 @@ fileFormatVersion: 2 -guid: 857695c8a9ee988459c9b50e4e75e660 -AssemblyDefinitionImporter: +guid: 3b846d413af4ba14ab89d5f44be1a3b7 +folderAsset: yes +DefaultImporter: externalObjects: {} userData: assetBundleName: diff --git a/Assets/Entities/RuntimeSet/ActiveEnemies.asset b/Assets/Entities/RuntimeSet/ActiveEnemies.asset new file mode 100644 index 0000000..44a21e5 --- /dev/null +++ b/Assets/Entities/RuntimeSet/ActiveEnemies.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: 11500000, guid: 33f48df2d03212c4986fe2c47c5de796, type: 3} + m_Name: ActiveEnemies + m_EditorClassIdentifier: + _list: [] diff --git a/Assets/Entities/RuntimeSet/ActiveEnemies.asset.meta b/Assets/Entities/RuntimeSet/ActiveEnemies.asset.meta new file mode 100644 index 0000000..eae21c2 --- /dev/null +++ b/Assets/Entities/RuntimeSet/ActiveEnemies.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5f6dc84d75dbd9a459e519de42279066 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Entities/RuntimeSet/ActiveEntities.asset b/Assets/Entities/RuntimeSet/ActiveEntities.asset new file mode 100644 index 0000000..4d2f144 --- /dev/null +++ b/Assets/Entities/RuntimeSet/ActiveEntities.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: 11500000, guid: 9da2d6a0206101c47a22881a0ba2ece2, type: 3} + m_Name: ActiveEntities + m_EditorClassIdentifier: + _list: [] diff --git a/Assets/Entities/RuntimeSet/ActiveEntities.asset.meta b/Assets/Entities/RuntimeSet/ActiveEntities.asset.meta new file mode 100644 index 0000000..f76b7df --- /dev/null +++ b/Assets/Entities/RuntimeSet/ActiveEntities.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c5542e77624472441a67b1f34e19a116 +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Entities/RuntimeSet/ActiveStructures.asset b/Assets/Entities/RuntimeSet/ActiveStructures.asset new file mode 100644 index 0000000..1d21fdd --- /dev/null +++ b/Assets/Entities/RuntimeSet/ActiveStructures.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: 11500000, guid: fbc6f67c9903cc8448f793da64d840cf, type: 3} + m_Name: ActiveStructures + m_EditorClassIdentifier: + _list: [] diff --git a/Assets/Entities/RuntimeSet/ActiveStructures.asset.meta b/Assets/Entities/RuntimeSet/ActiveStructures.asset.meta new file mode 100644 index 0000000..96c0c99 --- /dev/null +++ b/Assets/Entities/RuntimeSet/ActiveStructures.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bccdf438a1004a444bc24492728d6fbd +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Entities/Structures/ScriptableObjects.meta b/Assets/Entities/ScriptableObjects.meta similarity index 77% rename from Assets/Entities/Structures/ScriptableObjects.meta rename to Assets/Entities/ScriptableObjects.meta index 06c4f7b..e08223f 100644 --- a/Assets/Entities/Structures/ScriptableObjects.meta +++ b/Assets/Entities/ScriptableObjects.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 91195dc9638557a4aa7380bb7bb3c5cc +guid: f690b649bafc7be4595cacba515c2c11 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Entities/ScriptableObjects/SEnemyBaseList.cs b/Assets/Entities/ScriptableObjects/SEnemyBaseList.cs new file mode 100644 index 0000000..1737136 --- /dev/null +++ b/Assets/Entities/ScriptableObjects/SEnemyBaseList.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using AsteroidGame.Entities.Enemies.Scripts; +using UnityEngine; + +namespace AsteroidGame.Entities +{ + [CreateAssetMenu(fileName = "newEnemyList", menuName = "Enemies/EnemyList")] + public class SEnemyBaseList : ScriptableObject + { + public List _list; + } +} \ No newline at end of file diff --git a/Assets/Entities/ScriptableObjects/SEnemyBaseList.cs.meta b/Assets/Entities/ScriptableObjects/SEnemyBaseList.cs.meta new file mode 100644 index 0000000..074638d --- /dev/null +++ b/Assets/Entities/ScriptableObjects/SEnemyBaseList.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1260fd8b7346bdf41a685d24b968a231 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Entities/ScriptableObjects/SEnemyBaseRuntimeSet.cs b/Assets/Entities/ScriptableObjects/SEnemyBaseRuntimeSet.cs new file mode 100644 index 0000000..c0d4478 --- /dev/null +++ b/Assets/Entities/ScriptableObjects/SEnemyBaseRuntimeSet.cs @@ -0,0 +1,11 @@ +using AsteroidGame.Entities.Enemies.Scripts; +using AsteroidGame.ScriptableObjects; +using UnityEngine; + +namespace AsteroidGame.Entities +{ + [CreateAssetMenu(fileName = "newEnemyBaseRuntimeSet", menuName = "RuntimeSet/EnemyBase")] + public class SEnemyBaseRuntimeSet : SRuntimeSet + { + } +} \ No newline at end of file diff --git a/Assets/Entities/ScriptableObjects/SEnemyBaseRuntimeSet.cs.meta b/Assets/Entities/ScriptableObjects/SEnemyBaseRuntimeSet.cs.meta new file mode 100644 index 0000000..2e05c60 --- /dev/null +++ b/Assets/Entities/ScriptableObjects/SEnemyBaseRuntimeSet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 33f48df2d03212c4986fe2c47c5de796 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Entities/ScriptableObjects/SEntityBaseRuntimeSet.cs b/Assets/Entities/ScriptableObjects/SEntityBaseRuntimeSet.cs new file mode 100644 index 0000000..371c740 --- /dev/null +++ b/Assets/Entities/ScriptableObjects/SEntityBaseRuntimeSet.cs @@ -0,0 +1,10 @@ +using AsteroidGame.ScriptableObjects; +using UnityEngine; + +namespace AsteroidGame.Entities +{ + [CreateAssetMenu(fileName = "newEntityBaseRuntimeSet", menuName = "RuntimeSet/EntityBase")] + public class SEntityBaseRuntimeSet : SRuntimeSet + { + } +} \ No newline at end of file diff --git a/Assets/Entities/ScriptableObjects/SEntityBaseRuntimeSet.cs.meta b/Assets/Entities/ScriptableObjects/SEntityBaseRuntimeSet.cs.meta new file mode 100644 index 0000000..ce92792 --- /dev/null +++ b/Assets/Entities/ScriptableObjects/SEntityBaseRuntimeSet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9da2d6a0206101c47a22881a0ba2ece2 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Entities/ScriptableObjects/SStructureBaseList.cs b/Assets/Entities/ScriptableObjects/SStructureBaseList.cs new file mode 100644 index 0000000..6eb1d0d --- /dev/null +++ b/Assets/Entities/ScriptableObjects/SStructureBaseList.cs @@ -0,0 +1,11 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace AsteroidGame.Entities +{ + [CreateAssetMenu(fileName = "newStructureList", menuName = "Structures/StructureList")] + public class SStructureBaseList : ScriptableObject + { + public List _structureList; + } +} \ No newline at end of file diff --git a/Assets/Entities/Structures/Scripts/StructureBaseScriptableObject.cs.meta b/Assets/Entities/ScriptableObjects/SStructureBaseList.cs.meta similarity index 100% rename from Assets/Entities/Structures/Scripts/StructureBaseScriptableObject.cs.meta rename to Assets/Entities/ScriptableObjects/SStructureBaseList.cs.meta diff --git a/Assets/Entities/ScriptableObjects/SStructureBaseRuntimeSet.cs b/Assets/Entities/ScriptableObjects/SStructureBaseRuntimeSet.cs new file mode 100644 index 0000000..4f43567 --- /dev/null +++ b/Assets/Entities/ScriptableObjects/SStructureBaseRuntimeSet.cs @@ -0,0 +1,10 @@ +using AsteroidGame.ScriptableObjects; +using UnityEngine; + +namespace AsteroidGame.Entities +{ + [CreateAssetMenu(fileName = "newStructureBaseRuntimeSet", menuName = "RuntimeSet/StructureBase")] + public class SStructureBaseRuntimeSet : SRuntimeSet + { + } +} \ No newline at end of file diff --git a/Assets/Entities/ScriptableObjects/SStructureBaseRuntimeSet.cs.meta b/Assets/Entities/ScriptableObjects/SStructureBaseRuntimeSet.cs.meta new file mode 100644 index 0000000..c009ffc --- /dev/null +++ b/Assets/Entities/ScriptableObjects/SStructureBaseRuntimeSet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fbc6f67c9903cc8448f793da64d840cf +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Entities/Structures/ScriptableObjects/SWeaponConfig.cs b/Assets/Entities/ScriptableObjects/SWeaponConfig.cs similarity index 100% rename from Assets/Entities/Structures/ScriptableObjects/SWeaponConfig.cs rename to Assets/Entities/ScriptableObjects/SWeaponConfig.cs diff --git a/Assets/Entities/Structures/ScriptableObjects/SWeaponConfig.cs.meta b/Assets/Entities/ScriptableObjects/SWeaponConfig.cs.meta similarity index 100% rename from Assets/Entities/Structures/ScriptableObjects/SWeaponConfig.cs.meta rename to Assets/Entities/ScriptableObjects/SWeaponConfig.cs.meta diff --git a/Assets/Entities/Structures/PowerPlant/PowerPlant.prefab b/Assets/Entities/Structures/PowerPlant/PowerPlant.prefab index 03471a6..a56e5fc 100644 --- a/Assets/Entities/Structures/PowerPlant/PowerPlant.prefab +++ b/Assets/Entities/Structures/PowerPlant/PowerPlant.prefab @@ -52,6 +52,7 @@ MonoBehaviour: _centerPosition: {fileID: 1841478903898566568} _basePosition: {fileID: 493861824998956378} _uiFriendlyName: Power\nPlant + _entityBaseSet: {fileID: 11400000, guid: c5542e77624472441a67b1f34e19a116, type: 2} _cost: 100 _buildPlacementBlocked: 0 _buildTimer: 0 @@ -59,6 +60,7 @@ MonoBehaviour: _isConsumer: 0 _maxPower: 100 _currentPower: 0 + _structureBaseSet: {fileID: 11400000, guid: bccdf438a1004a444bc24492728d6fbd, type: 2} --- !u!1 &1863277996181035512 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Entities/Structures/Scripts/Disabler.cs b/Assets/Entities/Structures/Scripts/Disabler.cs new file mode 100644 index 0000000..34c7410 --- /dev/null +++ b/Assets/Entities/Structures/Scripts/Disabler.cs @@ -0,0 +1,28 @@ +using UnityEngine; +using UnityEngine.Serialization; + +namespace AsteroidGame.Entities +{ + public class Disabler : MonoBehaviour + { + [FormerlySerializedAs("Set")] + [SerializeField] private SStructureBaseRuntimeSet _set; + + [ContextMenu("Disable All")] + public void DisableAll() + { + // Loop backwards since the list may change when disabling + for (int i = _set._list.Count - 1; i >= 0; i--) + { + _set._list[i].gameObject.SetActive(false); + } + } + + [ContextMenu("Disable Random")] + public void DisableRandom() + { + int index = Random.Range(0, _set._list.Count); + _set._list[index].gameObject.SetActive(false); + } + } +} \ No newline at end of file diff --git a/Assets/Entities/Structures/Scripts/Disabler.cs.meta b/Assets/Entities/Structures/Scripts/Disabler.cs.meta new file mode 100644 index 0000000..ae99616 --- /dev/null +++ b/Assets/Entities/Structures/Scripts/Disabler.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f60f8a4b6b214b04083229f46bf1170b +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Entities/Structures/Scripts/StructureBase.cs b/Assets/Entities/Structures/Scripts/StructureBase.cs index fcfea0a..9552528 100644 --- a/Assets/Entities/Structures/Scripts/StructureBase.cs +++ b/Assets/Entities/Structures/Scripts/StructureBase.cs @@ -1,3 +1,4 @@ + using AsteroidGame.Interfaces; using UnityEngine; @@ -16,6 +17,9 @@ namespace AsteroidGame.Entities [SerializeField] protected int _maxPower; [SerializeField] protected int _currentPower; + [Header("Configuration")] + [SerializeField] private SStructureBaseRuntimeSet _structureBaseSet; + #region Private #endregion @@ -28,12 +32,20 @@ namespace AsteroidGame.Entities #endregion - private void OnEnable() + protected override void OnEnable() { + base.OnEnable(); if (!_isConsumer && !_isGenerator) { Debug.LogWarning("Power consumer/generator not set!"); } + _structureBaseSet.Add(this); + } + + protected override void OnDisable() + { + base.OnDisable(); + _structureBaseSet.Remove(this); } private void OnTriggerStay(Collider other) diff --git a/Assets/Entities/Structures/Scripts/StructureBaseScriptableObject.cs b/Assets/Entities/Structures/Scripts/StructureBaseScriptableObject.cs deleted file mode 100644 index ac5b772..0000000 --- a/Assets/Entities/Structures/Scripts/StructureBaseScriptableObject.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; - -namespace AsteroidGame.Entities -{ - [CreateAssetMenu(fileName = "newStructureList", menuName = "Structures/StructureList")] - public class StructureBaseScriptableObject : ScriptableObject - { - public List _structureList; - } - - // public static class MakeScriptableObject - // { - // [MenuItem("Assets/Create/ScriptableObject:AvailableStructures")] - // public static void CreateMyAsset() - // { - // StructureBaseScriptableObject asset = ScriptableObject.CreateInstance(); - // - // AssetDatabase.CreateAsset(asset, "Assets/Entities/Structures/AvailableStructures.asset"); - // AssetDatabase.SaveAssets(); - // - // EditorUtility.FocusProjectWindow(); - // - // Selection.activeObject = asset; - // } - // } -} \ No newline at end of file diff --git a/Assets/Entities/Structures/Turret/Turret.cs b/Assets/Entities/Structures/Turret/Turret.cs index d89c19b..88e1f5f 100644 --- a/Assets/Entities/Structures/Turret/Turret.cs +++ b/Assets/Entities/Structures/Turret/Turret.cs @@ -22,14 +22,16 @@ namespace AsteroidGame.Entities [SerializeField] private Transform _barrel; #region Privates + [Header("Target")] + [SerializeField] private SEnemyBaseRuntimeSet _activeEnemies; + [SerializeField] private EnemyBase _targetEnemy; [SerializeField] private enum TargetStrategy { ClosestEnemy, LowestHealth }; - - [SerializeField] private EnemyBase _targetEnemy; + [SerializeField] private Transform[] _buildingParts; #endregion diff --git a/Assets/Entities/Structures/Turret/Turret.prefab b/Assets/Entities/Structures/Turret/Turret.prefab index c2e342d..8dc6c18 100644 --- a/Assets/Entities/Structures/Turret/Turret.prefab +++ b/Assets/Entities/Structures/Turret/Turret.prefab @@ -748,6 +748,7 @@ MonoBehaviour: _centerPosition: {fileID: 5103935544759496321} _basePosition: {fileID: 8324879816836607384} _uiFriendlyName: Turret + _entityBaseSet: {fileID: 11400000, guid: c5542e77624472441a67b1f34e19a116, type: 2} _cost: 10 _buildPlacementBlocked: 0 _buildTimer: 0 @@ -755,6 +756,7 @@ MonoBehaviour: _isConsumer: 1 _maxPower: 10 _currentPower: 0 + _structureBaseSet: {fileID: 11400000, guid: bccdf438a1004a444bc24492728d6fbd, type: 2} _weaponRange: 40 _damage: 1 _fireRate: 1 @@ -763,5 +765,6 @@ MonoBehaviour: _score: 0 _turretHead: {fileID: 5103935544653627402} _barrel: {fileID: 5103935545559248087} + _activeEnemies: {fileID: 11400000, guid: 5f6dc84d75dbd9a459e519de42279066, type: 2} _targetEnemy: {fileID: 0} _buildingParts: [] diff --git a/Assets/Handlers/BuildingHandler.cs b/Assets/Handlers/BuildingHandler.cs index cf52411..df96d9c 100644 --- a/Assets/Handlers/BuildingHandler.cs +++ b/Assets/Handlers/BuildingHandler.cs @@ -1,30 +1,28 @@ -using System.Collections.Generic; using AsteroidGame.Entities; using UnityEngine; using UnityEngine.InputSystem; +using UnityEngine.Serialization; namespace AsteroidGame.Handlers { public class BuildingHandler : HandlerBase { - [Header("Config")] + [Header("Config")] [SerializeField] private Color _colorGhost = new Color(1f, 1f, 1f, 0.12f); [SerializeField] private Color _colorBuildingBlocked = new Color(1f, 0f, 0f, 0.12f); [SerializeField] private Material _ghostStructureMaterial; - [Header("State")] + [Header("State")] [SerializeField] private bool _isBuilding; [SerializeField] private int _buildingSelector; - [Header("Structures")] - [SerializeField] private StructureBaseScriptableObject _availableStructuresObject; + [FormerlySerializedAs("_availableStructures")] + [Header("Structures")] + [SerializeField] private SStructureBaseList _availableSStructures; #region Private - - private readonly Dictionary _availableStructures = new(); private Color _colorCurrent; private Camera _camera; - [SerializeField] private List _activeStructures; private Vector3 _tempVec; private Plane _buildPlane; private StructureBase _tempStructure; @@ -32,17 +30,18 @@ namespace AsteroidGame.Handlers private MeshRenderer[] _ghostStructureMeshRenderers; #endregion - + protected override void OnEnable() { base.OnEnable(); - for (int i = 0; i < _availableStructuresObject._structureList.Count; i++) - { - _availableStructures.Add(i, _availableStructuresObject._structureList[i]); - } + // for (int i = 0; i < _availableStructuresObject._structureList.Count; i++) + // { + // _availableStructures.Add(i, _availableStructuresObject._structureList[i]); + // } + _camera = Camera.main; _buildPlane = new Plane(Vector3.up, Vector3.zero); - _activeStructures.Clear(); + //_activeStructures.Clear(); } private void Update() @@ -89,7 +88,6 @@ namespace AsteroidGame.Handlers } SpawnStructure(); - } private void AbortPlaceStructure() @@ -109,7 +107,8 @@ namespace AsteroidGame.Handlers private void SpawnGhostStructure() { - _ghostStructure = Instantiate(_availableStructures[_buildingSelector], GetPlanePoint(), Quaternion.identity, transform); + _ghostStructure = Instantiate(_availableSStructures._structureList[_buildingSelector], GetPlanePoint(), Quaternion.identity, + transform); _ghostStructure.name = "GhostStructure"; var rb = _ghostStructure.gameObject.AddComponent(); @@ -132,12 +131,14 @@ namespace AsteroidGame.Handlers private void SpawnStructure() { - _tempStructure = Instantiate(_availableStructures[_buildingSelector], GetPlanePoint(), Quaternion.identity, transform); - _activeStructures.Add(_tempStructure); + _tempStructure = Instantiate(_availableSStructures._structureList[_buildingSelector], GetPlanePoint(), Quaternion.identity, + transform); + // _activeStructures.Add(_tempStructure); + // _buildingLists[0].Add(_tempStructure); } #region Getters - + private Vector3 GetPlanePoint() { Ray ray = _camera.ScreenPointToRay(Mouse.current.position.ReadValue()); @@ -145,20 +146,20 @@ namespace AsteroidGame.Handlers { return ray.GetPoint(distance); } - + print("BuildPlaneNotHit"); return Vector3.zero; } - - public Dictionary GetAvailableStructures() - { - return _availableStructures; - } - - public List GetActiveStructures() - { - return _activeStructures; - } + + // public List GetAvailableStructures() + // { + // return _availableStructures._structureList; + // } + + // public List GetActiveStructures() + // { + // return _activeStructures; + // } #endregion @@ -170,6 +171,5 @@ namespace AsteroidGame.Handlers } #endregion - } } \ No newline at end of file diff --git a/Assets/Handlers/BuildingHandler.prefab b/Assets/Handlers/BuildingHandler.prefab index 11a9b98..2265bab 100644 --- a/Assets/Handlers/BuildingHandler.prefab +++ b/Assets/Handlers/BuildingHandler.prefab @@ -49,5 +49,4 @@ MonoBehaviour: _ghostStructureMaterial: {fileID: 2100000, guid: dc919a35edbf85647939132e73b39642, type: 2} _isBuilding: 0 _buildingSelector: 0 - _availableStructuresObject: {fileID: 11400000, guid: f789f54c47873664284d6e8544724693, type: 2} - _activeStructures: [] + _availableSStructures: {fileID: 11400000, guid: f789f54c47873664284d6e8544724693, type: 2} diff --git a/Assets/Handlers/EnemyHandler.cs b/Assets/Handlers/EnemyHandler.cs index 8a10ca6..ed2e6a7 100644 --- a/Assets/Handlers/EnemyHandler.cs +++ b/Assets/Handlers/EnemyHandler.cs @@ -1,46 +1,18 @@ -using System.Collections.Generic; +using AsteroidGame.Entities; using UnityEngine; -using UnityEngine.Pool; namespace AsteroidGame.Handlers { public class EnemyHandler : HandlerBase { [Header("Parameters")] - [SerializeField] [Range(0.1f, 60f)] float _spawnRate = 60f; - [SerializeField] int _objectPoolSize = 15; + [SerializeField] [Range(0.1f, 60f)] private float _spawnRate = 60f; + [SerializeField] private int _objectPoolSize = 15; - [Header("Prefabs")] - [SerializeField] GameObject _objectPool; - [SerializeField] List _enemyPrefabs = new List(); + [Header("Configuration")] + [SerializeField] private SEnemyBaseList _availableEnemies; [Header("Lists")] - [SerializeField] List _enemyPools = new List(); - [SerializeField] List _allEnemies = new List(); - - private void Start() - { - - } - - public void AddEnemyToAllEnemies(GameObject enemy) - { - _allEnemies.Add(enemy); - } - - public void RemoveEnemy(GameObject enemy) - { - _allEnemies.Remove(enemy); - } - - public List ReturnAllEnemies() - { - return _allEnemies; - } - - public void NotifyEnemiesOfNewPath() - { - BroadcastMessage("RecalculatePath", SendMessageOptions.DontRequireReceiver); - } + [SerializeField] private SEnemyBaseRuntimeSet _activeEnemies; } -} +} \ No newline at end of file diff --git a/Assets/Handlers/EnemyHandler.prefab b/Assets/Handlers/EnemyHandler.prefab index 50a8039..64e155d 100644 --- a/Assets/Handlers/EnemyHandler.prefab +++ b/Assets/Handlers/EnemyHandler.prefab @@ -46,7 +46,5 @@ MonoBehaviour: m_EditorClassIdentifier: _spawnRate: 60 _objectPoolSize: 15 - _objectPool: {fileID: 0} - _enemyPrefabs: [] - _enemyPools: [] - _allEnemies: [] + _availableEnemies: {fileID: 11400000, guid: 00c435d92e1df55499826c91b4f1e62f, type: 2} + _activeEnemies: {fileID: 11400000, guid: 5f6dc84d75dbd9a459e519de42279066, type: 2} diff --git a/Assets/Handlers/Handlers.asmdef b/Assets/Handlers/Handlers.asmdef deleted file mode 100644 index 37e530b..0000000 --- a/Assets/Handlers/Handlers.asmdef +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "Handlers", - "rootNamespace": "AsteroidGame", - "references": [ - "GUID:6055be8ebefd69e48b49212b09b47b2f", - "GUID:75469ad4d38634e559750d17036d5f7c", - "GUID:f008ecc6829887e478aeb5eb004eb01b", - "GUID:f26d68a0bdefa1043b120b820f55e190", - "GUID:5041af1ee0cf75e4a9a52f5f23a0bfae", - "GUID:bc7863ca0989b494d84426bfd28432fa", - "GUID:17a5862fcd6383b4b97bad4dcb1e2e5d" - ], - "includePlatforms": [], - "excludePlatforms": [], - "allowUnsafeCode": false, - "overrideReferences": false, - "precompiledReferences": [], - "autoReferenced": true, - "defineConstraints": [], - "versionDefines": [], - "noEngineReferences": false -} \ No newline at end of file diff --git a/Assets/Handlers/PowerHandler.cs b/Assets/Handlers/PowerHandler.cs index 9874f83..6b3aa6c 100644 --- a/Assets/Handlers/PowerHandler.cs +++ b/Assets/Handlers/PowerHandler.cs @@ -1,5 +1,4 @@ using System; -using System.Collections.Generic; using AsteroidGame.Entities; using UnityEngine; @@ -13,26 +12,13 @@ namespace AsteroidGame.Handlers [SerializeField] private float _powerFactor; [Header("Connections")] - [SerializeField] private BuildingHandler _buildingHandler; - - #region Private - - [SerializeField] private List _activeStructures = new(); - - #endregion - - protected override void OnEnable() - { - base.OnEnable(); - _buildingHandler = FindObjectOfType(); - _activeStructures = _buildingHandler.GetActiveStructures(); - } - + [SerializeField] private SStructureBaseRuntimeSet _activeStructures; + private void Update() { _powerConsumption = 0; _powerCapacity = 0; - foreach (var structure in _activeStructures) + foreach (var structure in _activeStructures._list) { if (structure.IsConsumer) { diff --git a/Assets/Handlers/PowerHandler.prefab b/Assets/Handlers/PowerHandler.prefab index ee46721..7ea268e 100644 --- a/Assets/Handlers/PowerHandler.prefab +++ b/Assets/Handlers/PowerHandler.prefab @@ -47,5 +47,4 @@ MonoBehaviour: _powerConsumption: 0 _powerCapacity: 0 _powerFactor: 0 - _buildingHandler: {fileID: 0} - _activeStructures: [] + _activeStructures: {fileID: 11400000, guid: bccdf438a1004a444bc24492728d6fbd, type: 2} diff --git a/Assets/Handlers/ScoreHandler.cs b/Assets/Handlers/ScoreHandler.cs index a50e225..f959884 100644 --- a/Assets/Handlers/ScoreHandler.cs +++ b/Assets/Handlers/ScoreHandler.cs @@ -1,7 +1,6 @@ using TMPro; using UnityEngine; using UnityEngine.SceneManagement; -using UnityEngine.Serialization; namespace AsteroidGame.Handlers { diff --git a/Assets/Scenes/Playground 1.unity b/Assets/Scenes/Playground 1.unity index dde8b0e..d115918 100644 --- a/Assets/Scenes/Playground 1.unity +++ b/Assets/Scenes/Playground 1.unity @@ -274,6 +274,51 @@ Transform: m_CorrespondingSourceObject: {fileID: 5263199550015624126, guid: 2e352ad6389b4234083764d15d4e6a5f, type: 3} m_PrefabInstance: {fileID: 5263199549561108292} m_PrefabAsset: {fileID: 0} +--- !u!1 &732841883 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 732841885} + - component: {fileID: 732841884} + m_Layer: 0 + m_Name: Disabler + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &732841884 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 732841883} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f60f8a4b6b214b04083229f46bf1170b, type: 3} + m_Name: + m_EditorClassIdentifier: + _set: {fileID: 11400000, guid: bccdf438a1004a444bc24492728d6fbd, type: 2} +--- !u!4 &732841885 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 732841883} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: -1.8230318, y: 5.3787107, z: -4.0428505} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 6 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!4 &991542217 stripped Transform: m_CorrespondingSourceObject: {fileID: 493861824998956378, guid: 57a75520298c47140a928041b05d7f3c, type: 3} @@ -751,6 +796,18 @@ PrefabInstance: propertyPath: m_LocalEulerAnglesHint.z value: 0 objectReference: {fileID: 0} + - target: {fileID: 664620742648054781, guid: 3a89f87af6ee84a459d98a4c296dd1be, type: 3} + propertyPath: _availableStructures + value: + objectReference: {fileID: 11400000, guid: f789f54c47873664284d6e8544724693, type: 2} + - target: {fileID: 664620742648054781, guid: 3a89f87af6ee84a459d98a4c296dd1be, type: 3} + propertyPath: _buildingLists.Array.size + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 664620742648054781, guid: 3a89f87af6ee84a459d98a4c296dd1be, type: 3} + propertyPath: _buildingLists.Array.data[0] + value: + objectReference: {fileID: 11400000, guid: bccdf438a1004a444bc24492728d6fbd, type: 2} - target: {fileID: 664620742648054783, guid: 3a89f87af6ee84a459d98a4c296dd1be, type: 3} propertyPath: m_Name value: BuildingHandler diff --git a/Assets/ScriptableObjects.meta b/Assets/ScriptableObjects.meta new file mode 100644 index 0000000..e8e6906 --- /dev/null +++ b/Assets/ScriptableObjects.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 4b8bc87700fc5a44b88c1b13c4bdb3cf +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/ScriptableObjects/SRuntimeSet.cs b/Assets/ScriptableObjects/SRuntimeSet.cs new file mode 100644 index 0000000..9a6cb87 --- /dev/null +++ b/Assets/ScriptableObjects/SRuntimeSet.cs @@ -0,0 +1,20 @@ +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 new file mode 100644 index 0000000..483e99a --- /dev/null +++ b/Assets/ScriptableObjects/SRuntimeSet.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 1e81b384c7f010b4fa3c1b8f293a4c42 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Scripts.asmdef b/Assets/ScriptableObjects/ScriptableObjects.asmdef similarity index 67% rename from Assets/Scripts/Scripts.asmdef rename to Assets/ScriptableObjects/ScriptableObjects.asmdef index ca44ae3..35574c9 100644 --- a/Assets/Scripts/Scripts.asmdef +++ b/Assets/ScriptableObjects/ScriptableObjects.asmdef @@ -1,10 +1,7 @@ { - "name": "Scripts", + "name": "ScriptableObjects", "rootNamespace": "AsteroidGame", - "references": [ - "GUID:75469ad4d38634e559750d17036d5f7c", - "GUID:f008ecc6829887e478aeb5eb004eb01b" - ], + "references": [], "includePlatforms": [], "excludePlatforms": [], "allowUnsafeCode": false, diff --git a/Assets/Scripts/Scripts.asmdef.meta b/Assets/ScriptableObjects/ScriptableObjects.asmdef.meta similarity index 76% rename from Assets/Scripts/Scripts.asmdef.meta rename to Assets/ScriptableObjects/ScriptableObjects.asmdef.meta index 4c9188e..7c9b25d 100644 --- a/Assets/Scripts/Scripts.asmdef.meta +++ b/Assets/ScriptableObjects/ScriptableObjects.asmdef.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 896bd127e4aae4c4d86d99385f967c0c +guid: eb3099ff524d60545a136315a154d67b AssemblyDefinitionImporter: externalObjects: {} userData: diff --git a/Assets/Scripts/ScriptableObjects.meta b/Assets/Scripts/ScriptableObjects.meta new file mode 100644 index 0000000..de84a41 --- /dev/null +++ b/Assets/Scripts/ScriptableObjects.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 624b0cf4f0dd38a459121c046c909786 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/UI/BuildMenuUiController.cs b/Assets/UI/BuildMenuUiController.cs index a283b57..1e8b3a1 100644 --- a/Assets/UI/BuildMenuUiController.cs +++ b/Assets/UI/BuildMenuUiController.cs @@ -3,13 +3,15 @@ using AsteroidGame.Entities; using UnityEngine; using UnityEngine.UIElements; using AsteroidGame.Handlers; +using UnityEngine.Serialization; namespace AsteroidGame.UI { public class BuildMenuUiController : MonoBehaviour { + [FormerlySerializedAs("_availableStructuresObject")] [Header("Structures")] - [SerializeField] private StructureBaseScriptableObject _availableStructuresObject; + [SerializeField] private SStructureBaseList _availableSStructuresObject; private VisualElement _mRoot; private VisualElement _mSlotContainer; @@ -18,7 +20,7 @@ namespace AsteroidGame.UI private void OnEnable() { - _buildings = _availableStructuresObject._structureList; + _buildings = _availableSStructuresObject._structureList; _buildingHandler = FindObjectOfType(); //Store the root from the UI Document component diff --git a/AsteroidGame.csproj.DotSettings b/AsteroidGame.csproj.DotSettings new file mode 100644 index 0000000..9fb2a27 --- /dev/null +++ b/AsteroidGame.csproj.DotSettings @@ -0,0 +1,3 @@ + + + True \ No newline at end of file diff --git a/Entities.csproj.DotSettings b/Entities.csproj.DotSettings index a71a85d..80d98ab 100644 --- a/Entities.csproj.DotSettings +++ b/Entities.csproj.DotSettings @@ -1,6 +1,7 @@  True True + True True True True diff --git a/Scripts.csproj.DotSettings b/Scripts.csproj.DotSettings new file mode 100644 index 0000000..69355fa --- /dev/null +++ b/Scripts.csproj.DotSettings @@ -0,0 +1,3 @@ + + False + True \ No newline at end of file