diff --git a/Assets/CoreSystems b/Assets/CoreSystems index 510aaf1..cf3cf65 160000 --- a/Assets/CoreSystems +++ b/Assets/CoreSystems @@ -1 +1 @@ -Subproject commit 510aaf1b6755c4fe76ecac137cdefc1564c8a086 +Subproject commit cf3cf65b068d861d5bd65db2fbbb53a55f5bbf4d diff --git a/Assets/Entities/Scripts/PowerBase.cs b/Assets/Entities/Scripts/PowerBase.cs index 1f870c1..008fe28 100644 --- a/Assets/Entities/Scripts/PowerBase.cs +++ b/Assets/Entities/Scripts/PowerBase.cs @@ -1,4 +1,5 @@ using GameDev.CoreSystems; +using ScriptableObjectArchitecture; using UnityEngine; namespace AsteroidGame.Entities @@ -10,7 +11,7 @@ namespace AsteroidGame.Entities [SerializeField] protected bool _isConsumer = true; [SerializeField] protected int _maxPower; [SerializeField] protected int _currentPower; - [field: SerializeField] public bool PowerLost { get; set; } + [field: SerializeField] public BoolReference PowerLost { get; set; } [SerializeField] private SoPowerSystemRuntimeSet _powerBaseSet; diff --git a/Assets/Entities/Structures/PowerPlant/PowerPlant.prefab b/Assets/Entities/Structures/PowerPlant/PowerPlant.prefab index 5821e21..35825cd 100644 --- a/Assets/Entities/Structures/PowerPlant/PowerPlant.prefab +++ b/Assets/Entities/Structures/PowerPlant/PowerPlant.prefab @@ -239,6 +239,7 @@ Transform: m_Children: - {fileID: 5508661882298666976} - {fileID: 705421445933726062} + - {fileID: 4118684648214416899} m_Father: {fileID: 493861824998956378} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &4141114696578461492 @@ -830,3 +831,56 @@ Transform: m_Children: [] m_Father: {fileID: 7701460482385480461} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &8688796530504241915 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4118684648214416899} + - component: {fileID: 6322483218802957310} + m_Layer: 0 + m_Name: Power + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4118684648214416899 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8688796530504241915} + 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: 5262269693041317168} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &6322483218802957310 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8688796530504241915} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5aca1826fdd547e1afd4a67d55a0f25c, type: 3} + m_Name: + m_EditorClassIdentifier: + _isGenerator: 1 + _isConsumer: 1 + _maxPower: 0 + _currentPower: 0 + k__BackingField: + _useConstant: 0 + _constantValue: 0 + _variable: {fileID: 11400000, guid: 6c917fb47e31d328fb812b6305fe834a, type: 2} + _powerBaseSet: {fileID: 0} diff --git a/Assets/Entities/Structures/Scripts/StructureBase.cs b/Assets/Entities/Structures/Scripts/StructureBase.cs index 5596d5d..f294f3b 100644 --- a/Assets/Entities/Structures/Scripts/StructureBase.cs +++ b/Assets/Entities/Structures/Scripts/StructureBase.cs @@ -32,7 +32,7 @@ namespace AsteroidGame.Entities private void InitializePower() { - powerSystem ??= gameObject.AddComponent(); + powerSystem ??= gameObject.GetComponentInChildren(); powerSystem.Initialize(_powerConfig); } diff --git a/Assets/Entities/Structures/Turret/Turret.cs b/Assets/Entities/Structures/Turret/Turret.cs index dace8fc..cf3441b 100644 --- a/Assets/Entities/Structures/Turret/Turret.cs +++ b/Assets/Entities/Structures/Turret/Turret.cs @@ -44,7 +44,7 @@ namespace AsteroidGame.Entities private void HandleWeapon() { - if (!powerSystem.PowerLost) + if (!powerSystem.PowerLost.Value) { if (Targeter.FoundTarget()) { diff --git a/Assets/Entities/Structures/Turret/Turret.prefab b/Assets/Entities/Structures/Turret/Turret.prefab index 18052c9..5848947 100644 --- a/Assets/Entities/Structures/Turret/Turret.prefab +++ b/Assets/Entities/Structures/Turret/Turret.prefab @@ -29,6 +29,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 205462139360537208} - {fileID: 6280290603549554065} - {fileID: 1742443095838507103} - {fileID: 989884077484375908} @@ -220,6 +221,59 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &4090424431812845262 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 205462139360537208} + - component: {fileID: 7983208663300763676} + m_Layer: 0 + m_Name: Power + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &205462139360537208 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4090424431812845262} + 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: 5898541643653152293} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!114 &7983208663300763676 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4090424431812845262} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5aca1826fdd547e1afd4a67d55a0f25c, type: 3} + m_Name: + m_EditorClassIdentifier: + _isGenerator: 1 + _isConsumer: 1 + _maxPower: 0 + _currentPower: 0 + k__BackingField: + _useConstant: 0 + _constantValue: 0 + _variable: {fileID: 11400000, guid: 6c917fb47e31d328fb812b6305fe834a, type: 2} + _powerBaseSet: {fileID: 0} --- !u!1 &4124039516271301344 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Handlers/PowerHandler.cs b/Assets/Handlers/PowerHandler.cs index 2f13b5a..786d433 100644 --- a/Assets/Handlers/PowerHandler.cs +++ b/Assets/Handlers/PowerHandler.cs @@ -11,7 +11,7 @@ namespace AsteroidGame.Handlers [SerializeField] private int _powerConsumptionPeak; [SerializeField] private IntReference _powerCapacity; [SerializeField] private float _powerFactor; - [SerializeField] private bool _powerLost; + [SerializeField] private BoolReference _powerLost; [Header("Connections")] [SerializeField] private SoPowerSystemRuntimeSet _activePowerStructures; @@ -21,6 +21,7 @@ namespace AsteroidGame.Handlers _powerConsumption.Value = 0; _powerConsumptionPeak = 0; _powerCapacity.Value = 0; + foreach (var structure in _activePowerStructures) { if (structure.IsConsumer) @@ -35,15 +36,7 @@ namespace AsteroidGame.Handlers } } - _powerLost = _powerConsumption.Value > _powerCapacity.Value; - - foreach (IPowerSystem structure in _activePowerStructures) - { - if (structure.IsConsumer) - { - structure.PowerLost = _powerLost; - } - } + _powerLost.Value = _powerConsumption.Value > _powerCapacity.Value; _powerFactor = _powerCapacity.Value > 0 ? (float)_powerConsumption.Value / _powerCapacity.Value : 0; } diff --git a/Assets/Variables/Handlers/PowerHandler/PowerHandler.PowerLost.asset b/Assets/Variables/Handlers/PowerHandler/PowerHandler.PowerLost.asset new file mode 100644 index 0000000..9b80902 --- /dev/null +++ b/Assets/Variables/Handlers/PowerHandler/PowerHandler.PowerLost.asset @@ -0,0 +1,23 @@ +%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: 168ff32065cd13747a95ae8c9d2a0232, type: 3} + m_Name: PowerHandler.PowerLost + m_EditorClassIdentifier: + _value: 0 + _readOnly: 0 + _raiseWarning: 1 + _isClamped: 0 + _minClampedValue: 0 + _maxClampedValue: 0 + _event: + m_PersistentCalls: + m_Calls: [] diff --git a/Assets/Variables/Handlers/PowerHandler/PowerHandler.PowerLost.asset.meta b/Assets/Variables/Handlers/PowerHandler/PowerHandler.PowerLost.asset.meta new file mode 100644 index 0000000..a5c8eac --- /dev/null +++ b/Assets/Variables/Handlers/PowerHandler/PowerHandler.PowerLost.asset.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6c917fb47e31d328fb812b6305fe834a +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 11400000 + userData: + assetBundleName: + assetBundleVariant: