From 6b8d74932c38c7f37f7d3259223d98937942067b Mon Sep 17 00:00:00 2001 From: Vladimir Koshevarov Date: Thu, 17 Nov 2022 14:28:32 +0200 Subject: [PATCH] design and change player stats ui --- Assets/Characters/Read me.txt | 3 +- Assets/Materials/UiBlur.mat | 95 +++++ Assets/Materials/UiBlur.mat.meta | 8 + .../NavMesh.asset => CityOutside.asset} | Bin 10972 -> 10976 bytes ...Mesh.asset.meta => CityOutside.asset.meta} | 0 .../{SampleScene.unity => CityOutside.unity} | 384 +++++++++++++++++- ...cene.unity.meta => CityOutside.unity.meta} | 0 Assets/Scripts/GameUIController.cs | 74 ++-- .../{Scenes/SampleScene.meta => Shaders.meta} | 2 +- Assets/Shaders/UIBlured.shader | 144 +++++++ Assets/Shaders/UIBlured.shader.meta | 10 + Assets/Textures/CalendarIcon.png | Bin 0 -> 2048 bytes Assets/Textures/CalendarIcon.png.meta | 134 ++++++ Assets/Textures/MoneyIcon.png | Bin 0 -> 2536 bytes Assets/Textures/MoneyIcon.png.meta | 134 ++++++ 15 files changed, 928 insertions(+), 60 deletions(-) create mode 100644 Assets/Materials/UiBlur.mat create mode 100644 Assets/Materials/UiBlur.mat.meta rename Assets/Scenes/{SampleScene/NavMesh.asset => CityOutside.asset} (96%) rename Assets/Scenes/{SampleScene/NavMesh.asset.meta => CityOutside.asset.meta} (100%) rename Assets/Scenes/{SampleScene.unity => CityOutside.unity} (97%) rename Assets/Scenes/{SampleScene.unity.meta => CityOutside.unity.meta} (100%) rename Assets/{Scenes/SampleScene.meta => Shaders.meta} (77%) create mode 100644 Assets/Shaders/UIBlured.shader create mode 100644 Assets/Shaders/UIBlured.shader.meta create mode 100644 Assets/Textures/CalendarIcon.png create mode 100644 Assets/Textures/CalendarIcon.png.meta create mode 100644 Assets/Textures/MoneyIcon.png create mode 100644 Assets/Textures/MoneyIcon.png.meta diff --git a/Assets/Characters/Read me.txt b/Assets/Characters/Read me.txt index 97894f95..0f4af2f5 100644 --- a/Assets/Characters/Read me.txt +++ b/Assets/Characters/Read me.txt @@ -1 +1,2 @@ -https://www.mixamo.com/# \ No newline at end of file +https://www.mixamo.com/# +https://assetstore.unity.com/top-assets/top-download?aid=1101la6X4&utm_campaign=unity_affiliate&utm_medium=affiliate&utm_source=partnerize-linkmaker \ No newline at end of file diff --git a/Assets/Materials/UiBlur.mat b/Assets/Materials/UiBlur.mat new file mode 100644 index 00000000..8aca7882 --- /dev/null +++ b/Assets/Materials/UiBlur.mat @@ -0,0 +1,95 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!21 &2100000 +Material: + serializedVersion: 8 + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_Name: UiBlur + m_Shader: {fileID: 4800000, guid: 69c69652c1fc68f4bbe96c9c661781de, type: 3} + m_ValidKeywords: [] + m_InvalidKeywords: [] + m_LightmapFlags: 4 + m_EnableInstancingVariants: 0 + m_DoubleSidedGI: 0 + m_CustomRenderQueue: -1 + stringTagMap: {} + disabledShaderPasses: [] + m_SavedProperties: + serializedVersion: 3 + m_TexEnvs: + - _BlurTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _BumpMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailAlbedoMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailMask: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _DetailNormalMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _EmissionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MainTex: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _MetallicGlossMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _OcclusionMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + - _ParallaxMap: + m_Texture: {fileID: 0} + m_Scale: {x: 1, y: 1} + m_Offset: {x: 0, y: 0} + m_Ints: [] + m_Floats: + - _BumpScale: 1 + - _ColorMask: 15 + - _Cutoff: 0.5 + - _DetailNormalMapScale: 1 + - _DstBlend: 0 + - _GlossMapScale: 1 + - _Glossiness: 0.5 + - _GlossyReflections: 1 + - _Jump: 0.3 + - _Metallic: 0 + - _Mode: 0 + - _OcclusionStrength: 1 + - _Parallax: 0.02 + - _Radius: 49 + - _Size: 2.4 + - _SmoothnessTextureChannel: 0 + - _SpecularHighlights: 1 + - _SrcBlend: 1 + - _Stencil: 0 + - _StencilComp: 8 + - _StencilOp: 0 + - _StencilReadMask: 255 + - _StencilWriteMask: 255 + - _Step: 10 + - _UVSec: 0 + - _UseUIAlphaClip: 0 + - _ZWrite: 1 + m_Colors: + - _Color: {r: 1, g: 1, b: 1, a: 1} + - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} + m_BuildTextureStacks: [] diff --git a/Assets/Materials/UiBlur.mat.meta b/Assets/Materials/UiBlur.mat.meta new file mode 100644 index 00000000..b836b79b --- /dev/null +++ b/Assets/Materials/UiBlur.mat.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6a2ec0e2c18a9274dad7806e229eeeea +NativeFormatImporter: + externalObjects: {} + mainObjectFileID: 2100000 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/SampleScene/NavMesh.asset b/Assets/Scenes/CityOutside.asset similarity index 96% rename from Assets/Scenes/SampleScene/NavMesh.asset rename to Assets/Scenes/CityOutside.asset index 34fb212e41637bde8e0d85fa63d2d62dea279f5b..54cac718b700f836f907ba98341ea0201f59b932 100644 GIT binary patch delta 44 zcmcZ;`XF?IJmZ6n3R6Ux1Vkqv6g8iGL6n=Hn}LDBIkTkFzqF({GbMF1v)D}$0A(W& A1ONa4 delta 40 wcmaD5dM9*(JmZ~>3R6Uxctj^36g8iGL6n=Doq>VDFR{!wwK!ulyVy+;04LB5Gynhq diff --git a/Assets/Scenes/SampleScene/NavMesh.asset.meta b/Assets/Scenes/CityOutside.asset.meta similarity index 100% rename from Assets/Scenes/SampleScene/NavMesh.asset.meta rename to Assets/Scenes/CityOutside.asset.meta diff --git a/Assets/Scenes/SampleScene.unity b/Assets/Scenes/CityOutside.unity similarity index 97% rename from Assets/Scenes/SampleScene.unity rename to Assets/Scenes/CityOutside.unity index 5e0009c0..607741b8 100644 --- a/Assets/Scenes/SampleScene.unity +++ b/Assets/Scenes/CityOutside.unity @@ -2955,8 +2955,7 @@ RectTransform: m_LocalScale: {x: 0, y: 0, z: 0} m_ConstrainProportionsScale: 0 m_Children: - - {fileID: 443940495} - - {fileID: 2089282902} + - {fileID: 497576566} - {fileID: 2137624722} - {fileID: 1928618662} m_Father: {fileID: 0} @@ -3008,18 +3007,18 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 443940494} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + 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: 329780516} - m_RootOrder: 0 + m_Father: {fileID: 1006389537} + m_RootOrder: 1 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: -450, y: 223} - m_SizeDelta: {x: 200, y: 50} + m_AnchoredPosition: {x: 19.5585, y: -0.0203} + m_SizeDelta: {x: 100, y: 18} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &443940496 MonoBehaviour: @@ -3068,8 +3067,8 @@ MonoBehaviour: m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_fontSize: 36 - m_fontSizeBase: 36 + m_fontSize: 15 + m_fontSizeBase: 15 m_fontWeight: 400 m_enableAutoSizing: 0 m_fontSizeMin: 18 @@ -3104,7 +3103,7 @@ MonoBehaviour: m_VertexBufferAutoSizeReduction: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} + m_margin: {x: 0, y: 0, z: -1.1415405, w: 0} m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 m_hasFontAssetChanged: 0 @@ -3212,6 +3211,45 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} +--- !u!1 &497576565 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 497576566} + m_Layer: 5 + m_Name: PlayerStats + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &497576566 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 497576565} + 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: 2051386991} + - {fileID: 1006389537} + - {fileID: 1235246448} + m_Father: {fileID: 329780516} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.9257627} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 22.531006} + m_SizeDelta: {x: 0, y: -45.062} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &631616956 GameObject: m_ObjectHideFlags: 0 @@ -3767,6 +3805,82 @@ Transform: m_Father: {fileID: 274182514} m_RootOrder: 18 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &779251533 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 779251534} + - component: {fileID: 779251536} + - component: {fileID: 779251535} + m_Layer: 5 + m_Name: MoneyIcon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &779251534 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779251533} + 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: 1006389537} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 0, y: 0.5} + m_AnchoredPosition: {x: 17, y: 0} + m_SizeDelta: {x: 30, y: 15} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &779251535 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779251533} + 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: e46ce1f51442ea448bc1091e8d1367d9, 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!222 &779251536 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 779251533} + m_CullTransparentMesh: 1 --- !u!1 &875821251 GameObject: m_ObjectHideFlags: 0 @@ -4941,6 +5055,44 @@ MonoBehaviour: m_EditorClassIdentifier: _playerTransform: {fileID: 1476341267} _smoothFactor: 0.5 +--- !u!1 &1006389536 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1006389537} + m_Layer: 5 + m_Name: Money + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1006389537 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1006389536} + 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: 779251534} + - {fileID: 443940495} + m_Father: {fileID: 497576566} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0.5} + m_AnchorMax: {x: 1, y: 0.5} + m_AnchoredPosition: {x: -413.1, y: -17.039} + m_SizeDelta: {x: -1028.6992, y: 21.462} + m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &1023905085 stripped MonoBehaviour: m_CorrespondingSourceObject: {fileID: 3806516703338386376, guid: ea47665625ccfd4408f6411caf45f910, type: 3} @@ -4968,6 +5120,82 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} m_Name: m_EditorClassIdentifier: +--- !u!1 &1030855391 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1030855392} + - component: {fileID: 1030855394} + - component: {fileID: 1030855393} + m_Layer: 5 + m_Name: CalendarIcon + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1030855392 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1030855391} + 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: 1235246448} + m_RootOrder: 1 + 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: -64.8, y: 0} + m_SizeDelta: {x: 15, y: 15} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1030855393 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1030855391} + 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: 40259e4947454c74bb483b1fab03888e, 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!222 &1030855394 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1030855391} + m_CullTransparentMesh: 1 --- !u!1 &1054444889 GameObject: m_ObjectHideFlags: 0 @@ -5167,7 +5395,7 @@ Mesh: m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_Name: pb_Mesh25070 + m_Name: pb_Mesh26922 serializedVersion: 10 m_SubMeshes: - serializedVersion: 2 @@ -5763,6 +5991,44 @@ MeshFilter: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1232329904} m_Mesh: {fileID: 10202, guid: 0000000000000000e000000000000000, type: 0} +--- !u!1 &1235246447 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1235246448} + m_Layer: 5 + m_Name: Clock + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1235246448 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1235246447} + 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: 2089282902} + - {fileID: 1030855392} + m_Father: {fileID: 497576566} + m_RootOrder: 2 + 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: -265.0797, y: -17.039} + m_SizeDelta: {x: 148.7307, y: 21.462} + m_Pivot: {x: 0.5, y: 0.5} --- !u!1 &1287883232 GameObject: m_ObjectHideFlags: 0 @@ -11875,7 +12141,7 @@ RectTransform: - {fileID: 26194718} - {fileID: 1396013896} m_Father: {fileID: 329780516} - m_RootOrder: 3 + m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} @@ -12136,6 +12402,82 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} +--- !u!1 &2051386990 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2051386991} + - component: {fileID: 2051386993} + - component: {fileID: 2051386992} + m_Layer: 5 + m_Name: Panel + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2051386991 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2051386990} + 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: 497576566} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0.33900002, y: 0} + m_AnchorMax: {x: 0.65355104, y: 0.5} + m_AnchoredPosition: {x: 4.5, y: -17.0386} + m_SizeDelta: {x: 807, y: 34.0772} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &2051386992 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2051386990} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 2100000, guid: 6a2ec0e2c18a9274dad7806e229eeeea, type: 2} + m_Color: {r: 0, g: 0, b: 0, 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: 10907, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + 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!222 &2051386993 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2051386990} + m_CullTransparentMesh: 1 --- !u!1 &2068384140 GameObject: m_ObjectHideFlags: 0 @@ -12296,18 +12638,18 @@ RectTransform: m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2089282901} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + 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: 329780516} - m_RootOrder: 1 + m_Father: {fileID: 1235246448} + m_RootOrder: 0 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: 448, y: 223} - m_SizeDelta: {x: 200, y: 50} + m_AnchoredPosition: {x: 11.814791, y: 0.000021458} + m_SizeDelta: {x: 119.3488, y: 18} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &2089282903 MonoBehaviour: @@ -12356,8 +12698,8 @@ MonoBehaviour: m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_fontSize: 36 - m_fontSizeBase: 36 + m_fontSize: 15 + m_fontSizeBase: 15 m_fontWeight: 400 m_enableAutoSizing: 0 m_fontSizeMin: 18 @@ -12392,7 +12734,7 @@ MonoBehaviour: m_VertexBufferAutoSizeReduction: 0 m_useMaxVisibleDescender: 1 m_pageToDisplay: 1 - m_margin: {x: 0, y: 0, z: 0, w: 0} + m_margin: {x: 0.4031067, y: 1.8140259, z: 0, w: 1.6123657} m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 m_hasFontAssetChanged: 0 @@ -12599,7 +12941,7 @@ RectTransform: - {fileID: 2106039998} - {fileID: 1024192185} m_Father: {fileID: 329780516} - m_RootOrder: 2 + m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0.5, y: 0.5} m_AnchorMax: {x: 0.5, y: 0.5} diff --git a/Assets/Scenes/SampleScene.unity.meta b/Assets/Scenes/CityOutside.unity.meta similarity index 100% rename from Assets/Scenes/SampleScene.unity.meta rename to Assets/Scenes/CityOutside.unity.meta diff --git a/Assets/Scripts/GameUIController.cs b/Assets/Scripts/GameUIController.cs index d524d6cd..b5a09a0f 100644 --- a/Assets/Scripts/GameUIController.cs +++ b/Assets/Scripts/GameUIController.cs @@ -1,37 +1,37 @@ -using TMPro; -using UnityEngine; - -public class GameUIController : MonoBehaviour -{ - [SerializeField] - private DateTimeController _dateTimeController; - - [SerializeField] - private PlayerController _playerController; - - [SerializeField] - private TextMeshProUGUI _timeText; - - [SerializeField] - private TextMeshProUGUI _moneyText; - - // Start is called before the first frame update - void Start() - { - } - - // Update is called once per frame - void Update() - { - _moneyText.text = $"Money: {_playerController.money.Value}$"; - UpdateTime(); - } - - private void UpdateTime() - { - if (_timeText != null) - { - _timeText.text = _dateTimeController.CurrentTime.ToString("HH:mm"); - } - } -} +using TMPro; +using UnityEngine; + +public class GameUIController : MonoBehaviour +{ + [SerializeField] + private DateTimeController _dateTimeController; + + [SerializeField] + private PlayerController _playerController; + + [SerializeField] + private TextMeshProUGUI _timeText; + + [SerializeField] + private TextMeshProUGUI _moneyText; + + // Start is called before the first frame update + void Start() + { + } + + // Update is called once per frame + void Update() + { + _moneyText.text = $"${_playerController.money.Value}"; + UpdateTime(); + } + + private void UpdateTime() + { + if (_timeText != null) + { + _timeText.text = _dateTimeController.CurrentTime.ToString("HH:mm"); + } + } +} diff --git a/Assets/Scenes/SampleScene.meta b/Assets/Shaders.meta similarity index 77% rename from Assets/Scenes/SampleScene.meta rename to Assets/Shaders.meta index 8f4af8ad..7fc0236f 100644 --- a/Assets/Scenes/SampleScene.meta +++ b/Assets/Shaders.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 517198452cd8728408da0ccfa3e4c8fd +guid: 62f2c02198e2a7945944c1b89e5fcb83 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Shaders/UIBlured.shader b/Assets/Shaders/UIBlured.shader new file mode 100644 index 00000000..fcf1a95f --- /dev/null +++ b/Assets/Shaders/UIBlured.shader @@ -0,0 +1,144 @@ +Shader "Custom/UIBlur" +{ + + Properties + { + // Blur properties + [IntRange] _Radius("Blur Radius", Range(0, 64)) = 1 + [IntRange] _Step("Step Size", Range(3, 10)) = 4 + _Jump("Jump Size", Range(0.0001,0.3)) = 0.1 + _BlurTex("Blurred Texture", 2D) = "white" {} + + // Default properties + [PerRendererData] _MainTex("Sprite Texture", 2D) = "white" {} + _Color("Tint", Color) = (1,1,1,1) + + _StencilComp("Stencil Comparison", Float) = 8 + _Stencil("Stencil ID", Float) = 0 + _StencilOp("Stencil Operation", Float) = 0 + _StencilWriteMask("Stencil Write Mask", Float) = 255 + _StencilReadMask("Stencil Read Mask", Float) = 255 + + _ColorMask("Color Mask", Float) = 15 + + [Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip("Use Alpha Clip", Float) = 0 + } + + SubShader + { + Tags + { + "Queue" = "Transparent" + "IgnoreProjector" = "True" + "RenderType" = "Transparent" + "PreviewType" = "Plane" + "CanUseSpriteAtlas" = "True" + } + + Stencil + { + Ref[_Stencil] + Comp[_StencilComp] + Pass[_StencilOp] + ReadMask[_StencilReadMask] + WriteMask[_StencilWriteMask] + } + + Cull Off + Lighting Off + ZWrite Off + ZTest[unity_GUIZTestMode] + Blend SrcAlpha OneMinusSrcAlpha + ColorMask[_ColorMask] + + Pass + { + Name "Default" + CGPROGRAM + #pragma vertex vert + #pragma fragment frag + #pragma target 2.0 + + #include "UnityCG.cginc" + #include "UnityUI.cginc" + + #pragma multi_compile_local _ UNITY_UI_ALPHACLIP + + struct appdata_t + { + float4 vertex : POSITION; + float4 color : COLOR; + float2 texcoord : TEXCOORD0; + UNITY_VERTEX_INPUT_INSTANCE_ID + }; + + struct v2f + { + float4 vertex : SV_POSITION; + fixed4 color : COLOR; + float2 texcoord : TEXCOORD0; + float4 screenPosition : TEXCOORD1; + UNITY_VERTEX_OUTPUT_STEREO + }; + int _Radius; + float _Step; + float _Jump; + sampler2D _BlurTex; + + sampler2D _MainTex; + fixed4 _Color; + fixed4 _TextureSampleAdd; + float4 _ClipRect; + float4 _MainTex_ST; + + half4 GetBlur(float4 uv, half4 pixel) + { + #define GrabPixelXY(kernelx, kernely) tex2Dproj(_BlurTex, UNITY_PROJ_COORD(float4(uv.x + _Jump * kernelx, uv.y + _Jump*kernely, uv.z,uv.w))) + + float4 sum = GrabPixelXY(0,0); + + float range = _Step; + + for (; range <= _Radius; range += _Step) + { + for (float i = 0.06; i <= 0.18; i += 0.03) { + float minus = (0.21 - i); + sum += GrabPixelXY(-range * i, range * minus); + sum += GrabPixelXY(range * i, -range * minus); + sum += GrabPixelXY(-range * minus, -range * i); + sum += GrabPixelXY(range * minus, range * i); + } + } + + half4 result = sum / (_Radius * 2 + 1); + return result * pixel; + } + + v2f vert(appdata_t v) + { + v2f OUT; + UNITY_SETUP_INSTANCE_ID(v); + UNITY_INITIALIZE_VERTEX_OUTPUT_STEREO(OUT); + OUT.vertex = UnityObjectToClipPos(v.vertex); + OUT.screenPosition = ComputeScreenPos(OUT.vertex); + + OUT.texcoord = TRANSFORM_TEX(v.texcoord, _MainTex); + + OUT.color = v.color * _Color; + return OUT; + } + + fixed4 frag(v2f IN) : SV_Target + { + half4 color = (tex2D(_MainTex, IN.texcoord) + _TextureSampleAdd) * IN.color; + + #ifdef UNITY_UI_ALPHACLIP + clip(color.a - 0.001); + #endif + + return GetBlur(IN.screenPosition, color); + } + ENDCG + } + } +} \ No newline at end of file diff --git a/Assets/Shaders/UIBlured.shader.meta b/Assets/Shaders/UIBlured.shader.meta new file mode 100644 index 00000000..43dbf87b --- /dev/null +++ b/Assets/Shaders/UIBlured.shader.meta @@ -0,0 +1,10 @@ +fileFormatVersion: 2 +guid: 69c69652c1fc68f4bbe96c9c661781de +ShaderImporter: + externalObjects: {} + defaultTextures: [] + nonModifiableTextures: [] + preprocessorOverride: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textures/CalendarIcon.png b/Assets/Textures/CalendarIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..645f795cfd662e69fab0d7317114bb25acc9879d GIT binary patch literal 2048 zcma)-dpy(oAIHC2b2gLPkaCHXFy$_a9Jd-Rw&cvUi9{Sk!xUjiE^Y3USZ8jb$z5`6 zBWgN7C4Ran7MffN6LL8lemlQ^em}q8Kj)A4=lyto{`fo|@5kr$dcD)J&L~N^5*z>k zNk<2J7g10At6)Eg&K@h@K2ZY^Tu`<^UBAk#2q1wrPBsA0m?a_f6%(;|xPu1)0Hk{U zDp2p$YJUKL7C745xW?e;Y22_O2l-waR^h+_hz&T$)d7}HEzVdP^gbn!@oqr~;2qM< zm>kyl0bF~KogG-wM5m>CF4d)?1!4Qy?$+GKNH6Z}@d3aZ)tD$uu9mnd`HX6lbaqaM}5o3|KV@M=SrSWy-IBLJo@_eYYYFXclV5ZKg4F0>qJ!zZs$OPyS*(+gMk?4tidPo7Jmo}@ni_2P^Ft|A41+$7p?YYsm<{8*EdHaEmxuoWYtcW4~FA#xFkZ)b<2b;<|~Hr(@nt| zc|PD>P-mwsiR@~YSj7GA<;-Kp9S8gBRy@;OYGz|S}88D-y8w%KPjua%SyG&~(? zyE=kKqf5#v#MWD!gvcaofW7>q4x@j|_UUnRb69$p0)W8US1%8}CM%nj&}cMkNW3^U zqh`2XMNN$mX)wmV$-CRzSEyh9j-Ges7V?sc>PyjxvaX{A;@#zW%p4T9dtpIOERTdA z3khCfnNC=~_Ycg#F>a}A2kV4|tTEi`nQz1w7q}LXjcTm`r>Y^Ff!G5}aS?wmeOtVe zfmsnAKKr6{WMl*%tXA!QTBeQrYs6)FrEgj0Rbp}Liy%7Rrd#S`ys14J(DKnf(O&K)K&1sIGUITkwTpP=(et;!6BPIC5f&f9Jw3!M#}N1q zYxGu_8LTM(d>DIK?&eRLLYeNRr6#AVr9TQ=H<>KcOPoK5q@*#XsqR)ObDQ@>Hs9>i zaM|W#Kb3mY@Oz6C(|6Z-g$*GeK7MT4O46L)dS;Pfidn~U2H1Zp#q1d;t_@M(7h&tx z9Fwlw$I_@BM!qikzzxc^km&LHrjo(z-zKhz|G!T~rgdZioS;`j)Gm30Oi7!F+#8_C zgYg76WMdT6Oo_a@#vdc|9ZWJ;m2Ewb$TsUfw?1-G zq)MWv6NcD;&|fT=ZW^5N`kzeL5fFZ~eUpzo3^R?BALQ!OnNb1R7#4oo?ym9FOZ8ui zC*-W|C`7_S;j2Z@tv1cIDz2#hM;&{?Z*$D4_#Myv7j(%Ooxg|M6UY_~a4EW9C}a|@ zT|?B6o_E4#UhX5LI<)CazeSB?wy%!^q zQfZugXxG1g(h9s&lyV+`$eEWPn)p>PaxadT2Q=@SSIAB~lGs7yYwQiY(uR<(tgO_e zP&hNP1Hr8=@(u=zl5x)%IR=QX&t(FMDNp#JLWDru$iqbvRUQ!;Sy5>XCSgP?AS7}v zxpwwYinktAmL975ii}Lr*`?N{I4N9xo~d~JZDQc-`-5B2*ibnV+!sE6kN2@zx^^b= z1otI}bGps_$dd0o-OZk1@hTR?tKj~zsT_$HkS)`&pGZ158caJp2!JW?F6>raDkL3sVu@-NOe z4zS}lPgH3KO%7FI`YX|eNsSa6T^YoSja%jA2c6IT6LwtfR04KZ!gSYXwRZ11dRFpE zV{>yd5NaAW$R8rk819G4=bxZCZ+v~rz?T{2iSpFKt#Luj_ literal 0 HcmV?d00001 diff --git a/Assets/Textures/CalendarIcon.png.meta b/Assets/Textures/CalendarIcon.png.meta new file mode 100644 index 00000000..e0be7b7a --- /dev/null +++ b/Assets/Textures/CalendarIcon.png.meta @@ -0,0 +1,134 @@ +fileFormatVersion: 2 +guid: 40259e4947454c74bb483b1fab03888e +TextureImporter: + internalIDToNameTable: [] + externalObjects: {} + serializedVersion: 11 + 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 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + vTOnly: 0 + ignoreMasterTextureLimit: 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 + platformSettings: + - serializedVersion: 3 + buildTarget: DefaultTexturePlatform + maxTextureSize: 128 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 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 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + - serializedVersion: 3 + buildTarget: Server + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 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 + androidETC2FallbackOverride: 0 + forceMaximumCompressionQuality_BC6H_BC7: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: 5e97eb03825dee720800000000000000 + internalID: 0 + vertices: [] + indices: + edges: [] + weights: [] + secondaryTextures: [] + nameFileIdTable: {} + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Textures/MoneyIcon.png b/Assets/Textures/MoneyIcon.png new file mode 100644 index 0000000000000000000000000000000000000000..f29292440573d64f37af24f916b5ffa543e7209a GIT binary patch literal 2536 zcmVP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D34KXKK~#8N?VU+) z8#ffk$H^gx<6W{WF9@U{ar03OB=`25Ltz84k4-PhAw9I|u`ZCHhn(BH1Ne(Hi|oWk zZOd9L?@oME-=FhFp3!hLi%5-R&Cejn;fy#E|HH>8ilhe&re3e-C|amgDz7t{jG39B z6{>54>UxQi>jMJ=+h%V22vH&E-rnBU?Ch+_Oz13B_XgE{UX`!|iJ;vIIDe$qVI@puy3fyxtNR;yK%t(1e>0V3t%Qh9!s3^X2oii3y>Asb+zi12^k z;_4>Kl}eqyvha~N#bObW4nbd`V9nqj%7yi71ji>Qh#;uf10Y1DI8P3#nd9WCxLGUs z!qAYzgeX=)VNwf)0+MKX%NvD_`q9x5j)S5_SgxC>SfV;wsSRzSD(^$7yg-8593QC( zMV@s&pkt*)Snigh&{s=$!nPiE4|;Naj&kl{W05c3qCbC~CBPf+IA*jV#Wq9B{iB618v>VSt0 z+y2cN0#fuNg;iU46q~60hNOeY#P1Z=%%m^hQ+UY%=^&tN+`|PqgBVNJ-dYv$hys3$ zZ$K7qHO`hQZKWqCVzR&+zgCJ?NdYqs?EO8=ns1BcvfmsW9GDq4rlzJ4X>YB%xO3-D zPS^FRVWEDJQ-YCPF83mz&wodP6*#Z&=v7hC3g4PZ z2Z0@>>r79I%B}Dfg%=dO#EtAI^*TK%Dq11+ouBydlw-sGy_5P?wAj9+Cq*T}K2hI^ zB!p|Y(GwFBoHC4?H*a#P|L93k$q|CtbwOsCQ-*Q(?p^6M{Xkrzu3-_8gt-V``hVcq zA!Ua1h}F{)Fcuu-OTU-*Yk_mV-&64bot>SzMz+e8GNMp}Al*c4=J)>n`;o_8 zTX?@nBkvVozx|Oc$Q^|u3H0}z~C}63FeM!SM@`4D8dsM2GcE+E( zmN-RS!&;MOc!UU3KeP>~bJ>fTN%snR?3hCItmy@@i3;7iAd|`TwCM$2qR!CMtZlNH4QXoywOTEd8Rihk?83zJp@UMnw;d!4FHxUY4-U34 z^Nr9pqYy2^tF@+5DG2)oB5+pQpe*uizcl>_&>%ad*Fi!Za$RC_nb?j+3v`2^VD_7G zajCqPb8=No6UA#$hR^g+<@0_4mDv!ISKj#%cs3!@W|kA22uoZ`E^xlrX6P?QSbhni*0}vo;}h5cbBoGRCMBEU{^1hyqwx^?T8 zV-mJfgtTtN(_%r#ekMh^^8~0&)vZ=}>$IS9;o(X-GCg?5HwQkJp{J!bLr*luS20+Q zu~r$FDX)CbAbYDt@Uj@KI668)BwkNJY3sD0dd!`kol5tXD(>$aW22+kb_e&?wjGh3 zz{7+Agw+B>psI2YC>R&9XGp7R8iOA05tRd!-u}xi1Od} z?_HmnH=vBAm4X4-U`{uv9#oCV^knFrxhvJGk(u;;-L>ND*RQXsJL01TFui^&#l3bm z7h?n@3;Is13~y$c&i{#o=QTREic5$F?=mNxO^TyCO6hbu*?7527#bQvD{Z?UMxVOQ z!&eD0g072D(huLjlYxJ7BXfKbIs^M6$_6Qf_bY^*o)&}mItI}bxtD?tO5N@X?U{lE7brWcSFQu7-{)WnX*M<7u{nP0S0?0v_F37zFP3cjWn zgzZxwVeh+yjsrpeqE;H{NB*#);z_{`5;_2{?ZL*8{5XcPEn-OuH{#xR5 z+V`DagV&?3sD6$4`FU%H@OQ1mO#GW`1{zm!U;JMn7ko)VFG0F_4o=`-y!aV~NKo0y zcUis6Qt+A#zN}nS7F0SSlAxEv!$WKkc2CDJp=)3Fgw8;MVsK(B8T-9HGzKRUQF|QT yWYh6oR)?s`07VC|1}4(!G?tb8dG&qPF#ZR2(&|QknY{`C0000