From d513ad1a879ac8f7892f1b2c642e31b9fe5e45d3 Mon Sep 17 00:00:00 2001 From: Sveske Juice Date: Sun, 21 Apr 2024 01:12:48 +0200 Subject: [PATCH] health bar --- Assets/Prefabs/Towers/BaseTower.prefab | 280 +++++++++++++++++++- Assets/Prefabs/Towers/Turret.prefab | 20 +- Assets/Scenes/TowerTest.unity | 20 -- Assets/Scripts/Tower/Tower.cs | 4 + Assets/Scripts/Utilities/HealthBar.cs | 32 +++ Assets/Scripts/Utilities/HealthBar.cs.meta | 11 + Assets/Scripts/Utilities/HealthComponent.cs | 1 + Assets/Sprites/HealthEmpty.png | Bin 0 -> 9022 bytes Assets/Sprites/HealthEmpty.png.meta | 127 +++++++++ Assets/Sprites/HealthFull.png | Bin 0 -> 4849 bytes Assets/Sprites/HealthFull.png.meta | 127 +++++++++ 11 files changed, 597 insertions(+), 25 deletions(-) create mode 100644 Assets/Scripts/Utilities/HealthBar.cs create mode 100644 Assets/Scripts/Utilities/HealthBar.cs.meta create mode 100644 Assets/Sprites/HealthEmpty.png create mode 100644 Assets/Sprites/HealthEmpty.png.meta create mode 100644 Assets/Sprites/HealthFull.png create mode 100644 Assets/Sprites/HealthFull.png.meta diff --git a/Assets/Prefabs/Towers/BaseTower.prefab b/Assets/Prefabs/Towers/BaseTower.prefab index ab58f6c..5b00d60 100644 --- a/Assets/Prefabs/Towers/BaseTower.prefab +++ b/Assets/Prefabs/Towers/BaseTower.prefab @@ -1,5 +1,273 @@ %YAML 1.1 %TAG !u! tag:unity3d.com,2011: +--- !u!1 &4657144566828515878 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 5000648575824335922} + - component: {fileID: 6088264814045417804} + - component: {fileID: 637976866739038905} + - component: {fileID: 4487353065912845539} + m_Layer: 8 + m_Name: Canvas + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &5000648575824335922 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4657144566828515878} + 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: 629681681890783641} + m_Father: {fileID: 527409087646353271} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.5, y: 0.5} + m_AnchorMax: {x: 0.5, y: 0.5} + m_AnchoredPosition: {x: 0, y: 1} + m_SizeDelta: {x: 1, y: 0.5} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!223 &6088264814045417804 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4657144566828515878} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 2 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_VertexColorAlwaysGammaSpace: 0 + m_AdditionalShaderChannelsFlag: 0 + m_UpdateRectTransformForStandalone: 0 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!114 &637976866739038905 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4657144566828515878} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 0 + m_ReferencePixelsPerUnit: 100 + m_ScaleFactor: 1 + m_ReferenceResolution: {x: 800, y: 600} + m_ScreenMatchMode: 0 + m_MatchWidthOrHeight: 0 + m_PhysicalUnit: 3 + m_FallbackScreenDPI: 96 + m_DefaultSpriteDPI: 96 + m_DynamicPixelsPerUnit: 1 + m_PresetInfoIsWorld: 1 +--- !u!114 &4487353065912845539 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 4657144566828515878} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} + m_Name: + m_EditorClassIdentifier: + m_IgnoreReversedGraphics: 1 + m_BlockingObjects: 0 + m_BlockingMask: + serializedVersion: 2 + m_Bits: 4294967295 +--- !u!1 &6053929021546264277 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 305161391166777012} + - component: {fileID: 6080690796046464904} + - component: {fileID: 5350365205670160062} + m_Layer: 8 + m_Name: Fill + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &305161391166777012 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6053929021546264277} + 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: 629681681890783641} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.0024999976} + m_SizeDelta: {x: -0.2, y: -0.14500001} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &6080690796046464904 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6053929021546264277} + m_CullTransparentMesh: 1 +--- !u!114 &5350365205670160062 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6053929021546264277} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 0 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: e065f0dd3e974200e9cee2ec8fe28f67, type: 3} + m_Type: 3 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 0 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 1 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!1 &8398575655800056308 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 629681681890783641} + - component: {fileID: 4781651999869071551} + - component: {fileID: 7981059992877442340} + - component: {fileID: 3615355125446991462} + m_Layer: 8 + m_Name: HealthBar + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &629681681890783641 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8398575655800056308} + 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: 305161391166777012} + m_Father: {fileID: 5000648575824335922} + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: -0.12} + m_SizeDelta: {x: 0, y: -0.24} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &4781651999869071551 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8398575655800056308} + m_CullTransparentMesh: 1 +--- !u!114 &7981059992877442340 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8398575655800056308} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 21300000, guid: 17c276e38a63bb550a2ea61a38e02dbb, type: 3} + m_Type: 0 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!114 &3615355125446991462 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 8398575655800056308} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e4732ff957835e7cfb6d8aa387c9a3fb, type: 3} + m_Name: + m_EditorClassIdentifier: + healthBar: {fileID: 5350365205670160062} + attachHealth: {fileID: 7883233016828513649} --- !u!1001 &61646009847259292 PrefabInstance: m_ObjectHideFlags: 0 @@ -72,7 +340,11 @@ PrefabInstance: m_RemovedGameObjects: - {fileID: -3133498875991405556, guid: eb5e13df78999ef878da1db5c63224e2, type: 3} - {fileID: 1214824004972775095, guid: eb5e13df78999ef878da1db5c63224e2, type: 3} - m_AddedGameObjects: [] + m_AddedGameObjects: + - targetCorrespondingSourceObject: {fileID: -8679921383154817045, guid: eb5e13df78999ef878da1db5c63224e2, + type: 3} + insertIndex: -1 + addedObject: {fileID: 5000648575824335922} m_AddedComponents: - targetCorrespondingSourceObject: {fileID: 919132149155446097, guid: eb5e13df78999ef878da1db5c63224e2, type: 3} @@ -87,6 +359,12 @@ PrefabInstance: insertIndex: -1 addedObject: {fileID: -4368249141776341009} m_SourcePrefab: {fileID: 100100000, guid: eb5e13df78999ef878da1db5c63224e2, type: 3} +--- !u!4 &527409087646353271 stripped +Transform: + m_CorrespondingSourceObject: {fileID: -8679921383154817045, guid: eb5e13df78999ef878da1db5c63224e2, + type: 3} + m_PrefabInstance: {fileID: 61646009847259292} + m_PrefabAsset: {fileID: 0} --- !u!1 &872127579833310669 stripped GameObject: m_CorrespondingSourceObject: {fileID: 919132149155446097, guid: eb5e13df78999ef878da1db5c63224e2, diff --git a/Assets/Prefabs/Towers/Turret.prefab b/Assets/Prefabs/Towers/Turret.prefab index 77987d4..734b0ed 100644 --- a/Assets/Prefabs/Towers/Turret.prefab +++ b/Assets/Prefabs/Towers/Turret.prefab @@ -911,7 +911,7 @@ PrefabInstance: - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} propertyPath: m_LocalPosition.y - value: 0.7 + value: 0.84 objectReference: {fileID: 0} - target: {fileID: 527409087646353271, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} @@ -963,6 +963,11 @@ PrefabInstance: propertyPath: m_Name value: Turret objectReference: {fileID: 0} + - target: {fileID: 4657144566828515878, guid: f54a14318952c90c5b47a300aedb0d15, + type: 3} + propertyPath: m_IsActive + value: 0 + objectReference: {fileID: 0} - target: {fileID: 5565472806559733162, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} propertyPath: m_Size.x @@ -1036,6 +1041,12 @@ PrefabInstance: insertIndex: -1 addedObject: {fileID: 7437064479105606814} m_SourcePrefab: {fileID: 100100000, guid: f54a14318952c90c5b47a300aedb0d15, type: 3} +--- !u!1 &4140468893953896691 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 4657144566828515878, guid: f54a14318952c90c5b47a300aedb0d15, + type: 3} + m_PrefabInstance: {fileID: 8778754593817981653} + m_PrefabAsset: {fileID: 0} --- !u!1 &8488737342646939416 stripped GameObject: m_CorrespondingSourceObject: {fileID: 872127579833310669, guid: f54a14318952c90c5b47a300aedb0d15, @@ -1067,15 +1078,16 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 3c6fb039e74d12a7bbfde22591bc7eee, type: 3} m_Name: m_EditorClassIdentifier: + selectedUI: {fileID: 4140468893953896691} barrel: {fileID: 2740722787380423134} horizontalArc: {fileID: 8981486734084153558} verticalArc: {fileID: 5247639431516572416} spaceBetweenGhosts: 0.5 - trajectoryBounces: 4 + trajectoryBounces: 3 ghostPrefab: {fileID: 2962360034595352958, guid: f657bc53e175aad72a117bf3ef556359, type: 3} trajectoryLine: {fileID: 3987931586699850031} - trajectoryObjectPoolSize: 25 + trajectoryObjectPoolSize: 100 wallMask: serializedVersion: 2 m_Bits: 257 @@ -1083,7 +1095,7 @@ MonoBehaviour: projectileSequence: - Arc: 0 Amount: 1 - Speed: 20 + Speed: 100 bulletPrefab: {fileID: 2962360034595352958, guid: 32921dff6554af324ba0001ca8b56fee, type: 3} Burst: 0 diff --git a/Assets/Scenes/TowerTest.unity b/Assets/Scenes/TowerTest.unity index 6fa990d..b61d306 100644 --- a/Assets/Scenes/TowerTest.unity +++ b/Assets/Scenes/TowerTest.unity @@ -576,26 +576,6 @@ PrefabInstance: serializedVersion: 3 m_TransformParent: {fileID: 0} m_Modifications: - - target: {fileID: 1491457165970948004, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: OnHealthZero.m_PersistentCalls.m_Calls.Array.size - value: 0 - objectReference: {fileID: 0} - - target: {fileID: 7437064479105606814, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: trajectoryBounces - value: 3 - objectReference: {fileID: 0} - - target: {fileID: 7437064479105606814, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: trajectoryObjectPoolSize - value: 100 - objectReference: {fileID: 0} - - target: {fileID: 7437064479105606814, guid: 9415cb10a1bd579269301ca4f61a1554, - type: 3} - propertyPath: projectileSequence.Array.data[0].Speed - value: 100 - objectReference: {fileID: 0} - target: {fileID: 8488737342646939416, guid: 9415cb10a1bd579269301ca4f61a1554, type: 3} propertyPath: m_Name diff --git a/Assets/Scripts/Tower/Tower.cs b/Assets/Scripts/Tower/Tower.cs index 6581799..e7386f5 100644 --- a/Assets/Scripts/Tower/Tower.cs +++ b/Assets/Scripts/Tower/Tower.cs @@ -4,6 +4,9 @@ using UnityEngine.Assertions; public abstract class Tower : MonoBehaviour { + [SerializeField] + private GameObject selectedUI; + protected bool selected = false; protected HealthComponent healthComp; protected Outline outline; @@ -14,6 +17,7 @@ public abstract class Tower : MonoBehaviour this.selected = selected; outline.enabled = selected; + selectedUI.SetActive(selected); } protected virtual void Awake() diff --git a/Assets/Scripts/Utilities/HealthBar.cs b/Assets/Scripts/Utilities/HealthBar.cs new file mode 100644 index 0000000..f589237 --- /dev/null +++ b/Assets/Scripts/Utilities/HealthBar.cs @@ -0,0 +1,32 @@ +using UnityEngine; +using UnityEngine.UI; + +public class HealthBar : MonoBehaviour +{ + [SerializeField] + private Image healthBar; + + [SerializeField] + private HealthComponent attachHealth; + + private void Awake() + { + attachHealth.OnHealthChange.AddListener(UpdateBar); + } + + private void Start() + { + UpdateBar(0f, attachHealth.currentHealth); // initial check + } + + private void OnDestroy() + { + attachHealth.OnHealthChange.RemoveListener(UpdateBar); + } + + private void UpdateBar(float prev, float curr) + { + float percent = curr / attachHealth.StartHealth; + healthBar.fillAmount = percent; + } +} diff --git a/Assets/Scripts/Utilities/HealthBar.cs.meta b/Assets/Scripts/Utilities/HealthBar.cs.meta new file mode 100644 index 0000000..1a91c02 --- /dev/null +++ b/Assets/Scripts/Utilities/HealthBar.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: e4732ff957835e7cfb6d8aa387c9a3fb +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Utilities/HealthComponent.cs b/Assets/Scripts/Utilities/HealthComponent.cs index 74cefa2..ff97351 100644 --- a/Assets/Scripts/Utilities/HealthComponent.cs +++ b/Assets/Scripts/Utilities/HealthComponent.cs @@ -10,6 +10,7 @@ public class HealthComponent : MonoBehaviour public static event Action OnHealthChangeAtPos; + public float StartHealth => startHealth; public UnityEvent OnHealthZero; public UnityEvent OnHealthChange; diff --git a/Assets/Sprites/HealthEmpty.png b/Assets/Sprites/HealthEmpty.png new file mode 100644 index 0000000000000000000000000000000000000000..4d0613d11c129fdb06087200c513f481424bef0a GIT binary patch literal 9022 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 literal 0 HcmV?d00001 diff --git a/Assets/Sprites/HealthEmpty.png.meta b/Assets/Sprites/HealthEmpty.png.meta new file mode 100644 index 0000000..a724643 --- /dev/null +++ b/Assets/Sprites/HealthEmpty.png.meta @@ -0,0 +1,127 @@ +fileFormatVersion: 2 +guid: 17c276e38a63bb550a2ea61a38e02dbb +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 13 + mipmaps: + mipMapMode: 0 + enableMipMap: 0 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + flipGreenChannel: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMipmapLimit: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: 1 + aniso: 1 + mipBias: 0 + wrapU: 1 + wrapV: 1 + wrapW: 0 + nPOTScale: 0 + lightmap: 0 + compressionQuality: 50 + spriteMode: 1 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 1 + spriteTessellationDetail: -1 + textureType: 8 + textureShape: 1 + singleChannelComponent: 0 + flipbookRows: 1 + flipbookColumns: 1 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + ignorePngGamma: 0 + applyGammaDecoding: 0 + swizzle: 50462976 + cookieLightType: 0 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Standalone + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: WebGL + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + ignorePlatformSupport: 0 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + mipmapLimitGroupName: + pSDRemoveMatte: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Sprites/HealthFull.png b/Assets/Sprites/HealthFull.png new file mode 100644 index 0000000000000000000000000000000000000000..5a710af26716ffcc143e134f013c6c7a421c9f7a GIT binary patch literal 4849 zcmeHKX;f3!77h-;1957f7DbK0v2c@{c_0Bb0TUrW6(~60+%h$2uY zir}-Y+A391aKHf-|CjlAO>sqg__4<#jm78B3W)}gXawFJJ#`S{imWt;f3G}g=^s*efA?LJ7LGXF687V+)>qEWhxV0+m&*uktLk*?%MF+6ke%tN>zJnX_D5-U zIx+Ej*V~N))-P90^xhb6%19XW`;3TBGeU=71<@s`#o}O@So|Rv5JKkHsUqpQDQ?9J zX8l0hW#0m70h(UK)6*EM-In&LNjkJmE_Ck~yyO&4A?vWWTZ=F2hJyrLOt)0PAZb>;on zj5$UvczgcX;{%0EvEKxCkQ-&#x>25H*u(Yn=d7skFW47`=Tbc~kMQB0Z75qqR8S$8T97wR~UA>*j-6ZV>4`)9^!HTcthRDvLdtla!M1PJ8#>@to4Q z!iNLlm*4xZd>~z#G3{TZ6WLd}4-=Nn*I& zK%<$>W~!M<)f-hbI-k#{!3-LM0RaSLiqR2>1=5+^trYDX65NCu)doVX*O9H9h(f=Z z5K$;#o&3Q+twApDq}Q1`Q~-L=EQo5#FqDRCa4jG;0srVd@Pt~~ zB~}mLtSh!~x;p~Qb@KN>e~8@%1}M2)Akm|Xtwv=M5yk4S0MnytOkf)-Sty&wXP}T0 zMidZB$!0(ZgAYS|KAXoz_*^;%XLh5K=}ZKoLvbq=Ag8JU4~L7wFdtV!ILcr_EEq>2 zgu~!MY%Yt*Lg~1Ii^JV0f{bcVm58RhS5_(vP;p@{15qGc2!&ZZh(+hKAq1f-A(n!H zvT-_(%g5+8Dr+7DQ-ft93WM5CZkq|#AcRtH)Pho1>oC39)CCSvYw=kGVwH`~g*kja zm&0LmIWQmQb%DZgqY0Fpm6Z-tnH<{+h6?-uCjv@GtwmHg&7f1+7OaU8fN+4ch_zAy zvuz$kBM=*LgwPv9^m>hmV)cz|rR-dmg9C*j1R_BQ99V-HECI|Az|0Uj7|;bU3xat9 zxEo%Nsg*JR3vE3~-jQCU)&=F__3e=_*c~VCXC-=mg7va_f0m&ek0d+~nrqDWqrCB@1hiHYg|I$Nf z19WRKU|;(jXkDNa(mGpVhhEmE^EZAv^6)oW0MxxkK1$zSxq9XLC_QgMAaxMtZa{HIH77cSBpaX~y7{lg%QFp)^kpIERkZz@!5qllwY6?$dXeU4NRU@)C*ECrc)o8e+Ni+wI1{ieS?DUxquo&lyL*>e2L$ zR-AID?^1fI#%^Wu8)WyR@Gry4*SE!F6-nlJs;)N)$8CFmzlvFt z9_6~pXEI&;onTlH?*ts^PhiQ%o1ZtnXg(J79MhkzrY`#x-#?yOlaZ7^r0ve3 z+M^j-PUOxfGlX-TQIUHl{vvdK^`=uVc2q^)yP5Sq^QGsDc~XI!xPhY%s&l!SAC&$; z98*UOI#9phG&fexw+YXfvPRbbyM@dLvP=` zw8oFM{pRCW%qx*smTkD<`D@MH(HAznOmhwM^7wZ1L9f@9Slrrrzt50E5uEJE1>BLf zC5_9G6+`k_BOe;xj33&SjY3&C#y#S4>~j~l6?nAS{~K3#!{E!&E%DpvXFZhER~wE$ zdv@X?w>ou*Uv+HDt)rsovs=dbcwNjXd3vzqtKG*vqfQJiUGK21!LI%p9;9E8+xoQb z{KN6FmF3Rv`yz7l;wp+WN~ZVCdLQ!jz%ShLg`?rXpod3^?8=m=D;G-!MYJ_tJ#y{v mgwpzP*|~pgA58PcTb$2$B{a{A_djH