diff --git a/Assets/Prefabs/Dimension1/Dimension1.prefab b/Assets/Prefabs/Dimension1/Dimension1.prefab index bd5c6b7..5b6aa08 100644 --- a/Assets/Prefabs/Dimension1/Dimension1.prefab +++ b/Assets/Prefabs/Dimension1/Dimension1.prefab @@ -1,5 +1,117 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &67967346821688300 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6517108537521656539} + - component: {fileID: 459774398216996810} + - component: {fileID: 4897165587889719944} + - component: {fileID: 7318524898374017457} + - component: {fileID: 6753800174768827148} + m_Layer: 0 + m_Name: DIMENSION_CONTROLLER + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &6517108537521656539 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 67967346821688300} + m_LocalRotation: {x: -0.01151752, y: -0, z: -0, w: 0.9999337} + m_LocalPosition: {x: 6.404957, y: -9.653287, z: 4.0262146} + m_LocalScale: {x: 72.31021, y: 11.12011, z: 85.71496} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 2398580280527440449} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: -1.32, y: 0, z: 0} +--- !u!33 &459774398216996810 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 67967346821688300} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &4897165587889719944 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 67967346821688300} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 5871250831bcf02499be76202d393f00, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!64 &7318524898374017457 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 67967346821688300} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &6753800174768827148 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 67967346821688300} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5dfc667192d2c2641bbd86b84f6dea74, type: 3} + m_Name: + m_EditorClassIdentifier: + dimensionId: 1 --- !u!1 &2398580280414332521 GameObject: m_ObjectHideFlags: 0 @@ -114,7 +226,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2398580280527440449} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: -1.32, y: 0, z: 0} --- !u!33 &2398580280414369016 MeshFilter: @@ -368,7 +480,7 @@ Transform: - {fileID: 2398580281473075025} - {fileID: 2398580282036884597} m_Father: {fileID: 2398580280527440449} - m_RootOrder: 2 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &2398580280527440454 GameObject: @@ -398,6 +510,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 6517108537521656539} - {fileID: 2398580280414369023} - {fileID: 2398580281173991539} - {fileID: 2398580280514116546} @@ -976,7 +1089,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2398580280527440449} - m_RootOrder: 5 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: -1.32, y: 0, z: 0} --- !u!33 &2398580281113924508 MeshFilter: @@ -1059,7 +1172,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2398580280527440449} - m_RootOrder: 1 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: -28.332, y: 0, z: 0} --- !u!33 &2398580281173991549 MeshFilter: @@ -1230,7 +1343,7 @@ Transform: - {fileID: 2398580280414332520} - {fileID: 2398580280739990207} m_Father: {fileID: 2398580280527440449} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &2398580281378808008 GameObject: @@ -1263,7 +1376,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2398580280527440449} - m_RootOrder: 6 + m_RootOrder: 7 m_LocalEulerAnglesHint: {x: -1.32, y: 0, z: 0} --- !u!33 &2398580281378808021 MeshFilter: @@ -1844,7 +1957,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2398580280527440449} - m_RootOrder: 4 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: -1.32, y: 0, z: 0} --- !u!33 &2398580281909144681 MeshFilter: diff --git a/Assets/Prefabs/Dimension2/Dimension2.prefab b/Assets/Prefabs/Dimension2/Dimension2.prefab index 909bb9a..1ee1d70 100644 --- a/Assets/Prefabs/Dimension2/Dimension2.prefab +++ b/Assets/Prefabs/Dimension2/Dimension2.prefab @@ -1,5 +1,117 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &2067193707710349373 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 4430806670354009071} + - component: {fileID: 7737647499063995998} + - component: {fileID: 4923766802100698631} + - component: {fileID: 6538802797101006760} + - component: {fileID: 1793164356031741670} + m_Layer: 0 + m_Name: DIMENSION_CONTROLLER + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &4430806670354009071 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067193707710349373} + m_LocalRotation: {x: -0.01151752, y: -0, z: -0, w: 0.9999337} + m_LocalPosition: {x: 6.404957, y: -9.653287, z: 4.0262146} + m_LocalScale: {x: 72.31022, y: 11.12011, z: 85.71496} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 5015426421145494681} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: -1.32, y: 0, z: 0} +--- !u!33 &7737647499063995998 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067193707710349373} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &4923766802100698631 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067193707710349373} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 5871250831bcf02499be76202d393f00, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!64 &6538802797101006760 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067193707710349373} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &1793164356031741670 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2067193707710349373} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5dfc667192d2c2641bbd86b84f6dea74, type: 3} + m_Name: + m_EditorClassIdentifier: + dimensionId: 2 --- !u!1 &5015426419719319481 GameObject: m_ObjectHideFlags: 0 @@ -280,7 +392,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5015426421145494681} - m_RootOrder: 1 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: -1.32, y: 0, z: 0} --- !u!33 &5015426419922235452 MeshFilter: @@ -363,7 +475,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5015426421145494681} - m_RootOrder: 2 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: -28.332, y: 0, z: 0} --- !u!33 &5015426420008476192 MeshFilter: @@ -954,7 +1066,7 @@ Transform: - {fileID: 5015426421754054403} - {fileID: 5015426421163371972} m_Father: {fileID: 5015426421145494681} - m_RootOrder: 4 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &5015426420985307132 GameObject: @@ -987,7 +1099,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5015426421145494681} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: -1.32, y: 0, z: 0} --- !u!33 &5015426420985307121 MeshFilter: @@ -1067,6 +1179,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 4430806670354009071} - {fileID: 5015426420985307135} - {fileID: 5015426419922235450} - {fileID: 5015426420008476206} @@ -1191,7 +1304,7 @@ Transform: - {fileID: 5015426421686547116} - {fileID: 5015426421255727514} m_Father: {fileID: 5015426421145494681} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &5015426421255727515 GameObject: diff --git a/Assets/Prefabs/Dimension3/Dimension3.prefab b/Assets/Prefabs/Dimension3/Dimension3.prefab index b6c152e..c942408 100644 --- a/Assets/Prefabs/Dimension3/Dimension3.prefab +++ b/Assets/Prefabs/Dimension3/Dimension3.prefab @@ -29,7 +29,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3716208031609914071} - m_RootOrder: 4 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &3716208030383299724 GameObject: @@ -145,7 +145,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3716208031609914071} - m_RootOrder: 1 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: -1.32, y: 0, z: 0} --- !u!33 &3716208030397492586 MeshFilter: @@ -394,7 +394,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3716208031609914071} - m_RootOrder: 0 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: -1.32, y: 0, z: 0} --- !u!33 &3716208030742951721 MeshFilter: @@ -565,7 +565,7 @@ Transform: - {fileID: 3716208030782673088} - {fileID: 3716208030383299723} m_Father: {fileID: 3716208031609914071} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &3716208031331476248 GameObject: @@ -831,7 +831,7 @@ GameObject: m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 - m_IsActive: 0 + m_IsActive: 1 --- !u!4 &3716208031609914071 Transform: m_ObjectHideFlags: 0 @@ -844,6 +844,7 @@ Transform: m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: + - {fileID: 3245312110220836615} - {fileID: 3716208030742951723} - {fileID: 3716208030397492588} - {fileID: 3716208031751796222} @@ -883,7 +884,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 3716208031609914071} - m_RootOrder: 2 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: -28.332, y: 0, z: 0} --- !u!33 &3716208031751796220 MeshFilter: @@ -935,3 +936,115 @@ MeshRenderer: m_SortingLayer: 0 m_SortingOrder: 0 m_AdditionalVertexStreams: {fileID: 0} +--- !u!1 &8121996451995446280 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 3245312110220836615} + - component: {fileID: 3676918812394908649} + - component: {fileID: 2307911361203150439} + - component: {fileID: 3658960410802415625} + - component: {fileID: 1714981871496760148} + m_Layer: 0 + m_Name: DIMENSION_CONTROLLER + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!4 &3245312110220836615 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8121996451995446280} + m_LocalRotation: {x: -0.01151752, y: -0, z: -0, w: 0.9999337} + m_LocalPosition: {x: 6.404957, y: -9.653287, z: 4.0262146} + m_LocalScale: {x: 72.31022, y: 11.12011, z: 85.71496} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 3716208031609914071} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: -1.32, y: 0, z: 0} +--- !u!33 &3676918812394908649 +MeshFilter: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8121996451995446280} + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &2307911361203150439 +MeshRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8121996451995446280} + m_Enabled: 1 + m_CastShadows: 1 + m_ReceiveShadows: 1 + m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 + m_MotionVectors: 1 + m_LightProbeUsage: 1 + m_ReflectionProbeUsage: 1 + m_RayTracingMode: 2 + m_RayTraceProcedural: 0 + m_RenderingLayerMask: 1 + m_RendererPriority: 0 + m_Materials: + - {fileID: 2100000, guid: 5871250831bcf02499be76202d393f00, type: 2} + m_StaticBatchInfo: + firstSubMesh: 0 + subMeshCount: 0 + m_StaticBatchRoot: {fileID: 0} + m_ProbeAnchor: {fileID: 0} + m_LightProbeVolumeOverride: {fileID: 0} + m_ScaleInLightmap: 1 + m_ReceiveGI: 1 + m_PreserveUVs: 0 + m_IgnoreNormalsForChartDetection: 0 + m_ImportantGI: 0 + m_StitchLightmapSeams: 1 + m_SelectedEditorRenderState: 3 + m_MinimumChartSize: 4 + m_AutoUVMaxDistance: 0.5 + m_AutoUVMaxAngle: 89 + m_LightmapParameters: {fileID: 0} + m_SortingLayerID: 0 + m_SortingLayer: 0 + m_SortingOrder: 0 + m_AdditionalVertexStreams: {fileID: 0} +--- !u!64 &3658960410802415625 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8121996451995446280} + m_Material: {fileID: 0} + m_IsTrigger: 1 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 1 + m_CookingOptions: 30 + m_Mesh: {fileID: 10207, guid: 0000000000000000e000000000000000, type: 0} +--- !u!114 &1714981871496760148 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8121996451995446280} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5dfc667192d2c2641bbd86b84f6dea74, type: 3} + m_Name: + m_EditorClassIdentifier: + dimensionId: 3 diff --git a/Assets/Scripts/DimensionController.cs b/Assets/Scripts/DimensionController.cs index 662b597..64dd683 100644 --- a/Assets/Scripts/DimensionController.cs +++ b/Assets/Scripts/DimensionController.cs @@ -2,18 +2,23 @@ using UnityEngine; public class DimensionController : MonoBehaviour { + static private int STARTING_HP = 25; + [SerializeField] private int dimensionId; - [SerializeField] private int maxHp; private float _hp; - + private float _maxHp; + private void Start() { - _hp = maxHp; + _maxHp = STARTING_HP; + _hp = _maxHp; } private void OnTriggerEnter(Collider other) { + if (_hp <= 0) { return; } + var enemy = other.GetComponent(); if (ReferenceEquals(enemy, null)) return; @@ -22,8 +27,7 @@ public class DimensionController : MonoBehaviour // Destroy projectile Destroy(other.gameObject); - - // Check loss condition - if (_hp <= 0) GameManager.Instance.TriggerGameOver(dimensionId); + + GameManager.Instance.DealDamage(dimensionId, _hp, _maxHp); } } diff --git a/Assets/Scripts/GameManager.cs b/Assets/Scripts/GameManager.cs index 56132f4..ede9118 100644 --- a/Assets/Scripts/GameManager.cs +++ b/Assets/Scripts/GameManager.cs @@ -3,6 +3,8 @@ using UnityEngine.InputSystem; public class GameManager : MonoBehaviour { + private const int STARTING_DIMENSION_ID = 2; + [SerializeField] private PlayerInput controls; [SerializeField] private CannonScript[] cannonList; [SerializeField] private UIController uiController; @@ -10,6 +12,7 @@ public class GameManager : MonoBehaviour [Header("Game Variables")] [SerializeField, ReadOnly] private GameState state; [SerializeField, ReadOnly] private float points; + [SerializeField, ReadOnly] private int currentDimensionID = STARTING_DIMENSION_ID; public static GameManager Instance { get; private set; } @@ -22,13 +25,23 @@ public class GameManager : MonoBehaviour else { Instance = this; + currentDimensionID = STARTING_DIMENSION_ID; state = GameState.InGame; points = 0f; uiController.UpdatePointsText(points); } } - public void TriggerGameOver(int dimensionID) + public void DealDamage(int dimensionID, float hp, float maxHP) + { + uiController.SetDimensionHP(currentDimensionID, dimensionID, hp, maxHP); + + // Check loss condition + if (hp <= 0) + TriggerGameOver(dimensionID); + } + + private void TriggerGameOver(int dimensionID) { if (state == GameState.Loss) return; diff --git a/Assets/Scripts/UI.meta b/Assets/Scripts/UI.meta new file mode 100644 index 0000000..48d1399 --- /dev/null +++ b/Assets/Scripts/UI.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6465f8911e4b1cc48b234ad098abd56c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/HealthBar.meta b/Assets/Scripts/UI/HealthBar.meta new file mode 100644 index 0000000..2b6bc25 --- /dev/null +++ b/Assets/Scripts/UI/HealthBar.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: cd45a64a48c65414d8dea5ccb9ba90a4 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/HealthBar/HealthBar.cs b/Assets/Scripts/UI/HealthBar/HealthBar.cs new file mode 100644 index 0000000..173c7fe --- /dev/null +++ b/Assets/Scripts/UI/HealthBar/HealthBar.cs @@ -0,0 +1,23 @@ +using System.Collections; +using UnityEngine; +using UnityEngine.UI; + +public class HealthBar : MonoBehaviour +{ + [SerializeField] private Image img_fill; + [SerializeField] private Image img_fillWhite; + [SerializeField] private float imgWhiteFillSpeed = 1f; + + private float targetFillAmount; + + private void Update() + { + img_fillWhite.fillAmount = Mathf.Lerp(img_fillWhite.fillAmount, targetFillAmount, Time.deltaTime * imgWhiteFillSpeed); + } + + public void SetFillingAmount(float fillingAmount) + { + targetFillAmount = fillingAmount; + img_fill.fillAmount = targetFillAmount; + } +} \ No newline at end of file diff --git a/Assets/Scripts/UI/HealthBar/HealthBar.cs.meta b/Assets/Scripts/UI/HealthBar/HealthBar.cs.meta new file mode 100644 index 0000000..fd2027a --- /dev/null +++ b/Assets/Scripts/UI/HealthBar/HealthBar.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: fc7ea5b1fff48b444b980ce43abc135c +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UIController.cs b/Assets/Scripts/UIController.cs index 4ea60f8..0d31872 100644 --- a/Assets/Scripts/UIController.cs +++ b/Assets/Scripts/UIController.cs @@ -1,14 +1,30 @@ using System.Collections; using System.Collections.Generic; using UnityEngine; +using UnityEngine.UI; using TMPro; public class UIController : MonoBehaviour { - [SerializeField]private TMP_Text pointsTxt; + [SerializeField] private TMP_Text pointsTxt; + + [SerializeField] private HealthBar mainHealtBars; + [SerializeField] private HealthBar[] verticalHealthBars; public void UpdatePointsText(float points) { pointsTxt.text = points.ToString("0"); } + + public void SetDimensionHP(int currentDimensionID, int dimensionID, float hp, float maxHP) + { + float hpFillingAmount = hp / maxHP; + verticalHealthBars[dimensionID - 1].SetFillingAmount(hpFillingAmount); + + // Also change main HP bar if this is the current dimension. + if (currentDimensionID == dimensionID) + { + mainHealtBars.SetFillingAmount(hpFillingAmount); + } + } }