From bb4f8691e22bc2193e746f013eedd75d9a8dfa6b Mon Sep 17 00:00:00 2001 From: VladimirPirozhenko Date: Thu, 11 Aug 2022 03:37:40 +0300 Subject: [PATCH] Updated Input system, got rid of old code, updated HUD --- .../States.meta => Prefabs/Cards.meta} | 2 +- .../Prefabs/Cards/PlayerScoreboardCard.prefab | 325 + .../Cards/PlayerScoreboardCard.prefab.meta | 7 + Assets/Prefabs/Chunks/Corridor_I 5.prefab | 52 +- .../Prefabs/Obstacles/Sci fi Barrel 1.prefab | 5 +- Assets/Prefabs/Views/ScoreboardView.prefab | 119 + .../Prefabs/Views/ScoreboardView.prefab.meta | 7 + Assets/Scenes/GameScene.unity | 304 +- Assets/Scripts/Collectables/PowerUp.cs | 12 - Assets/Scripts/GameSession/GameSession.cs | 177 +- .../GameSession/States/GameOverState.cs | 24 - .../GameSession/States/GameSessionState.cs | 16 - .../States/GameSessionStateMachine.cs | 44 - .../GameSession/States/MainMenuState.cs | 26 - .../Scripts/GameSession/States/PausedState.cs | 26 - .../GameSession/States/PausedState.cs.meta | 11 - .../GameSession/States/PlayingState.cs | 24 - .../GameSession/States/PlayingState.cs.meta | 11 - .../GameSession/States/ScoreboardState.cs | 28 - .../States/ScoreboardState.cs.meta | 11 - Assets/Scripts/Input/AiInput.cs | 27 - Assets/Scripts/Input/AiInput.cs.meta | 11 - Assets/Scripts/Input/ArrowKeysInput.cs | 30 - Assets/Scripts/Input/ArrowKeysInput.cs.meta | 11 - Assets/Scripts/Input/BindableHolders.meta | 8 + .../Input/BindableHolders/IBindingHolder.cs | 13 + .../BindableHolders/IBindingHolder.cs.meta} | 2 +- .../Input/BindableHolders/KeyBindingHolder.cs | 23 + .../BindableHolders/KeyBindingHolder.cs.meta} | 2 +- Assets/Scripts/Input/Bindings.meta | 8 + Assets/Scripts/Input/Bindings/IBinding.cs | 7 + .../Bindings/IBinding.cs.meta} | 2 +- Assets/Scripts/Input/Bindings/KeyBinding.cs | 25 + .../Scripts/Input/Bindings/KeyBinding.cs.meta | 3 + Assets/Scripts/Input/IPlayerInput.cs | 11 - Assets/Scripts/Input/IPlayerInput.cs.meta | 11 - Assets/Scripts/Input/Translating.meta | 8 + Assets/Scripts/Input/Translating/ECommand.cs | 11 + .../Translating/ECommand.cs.meta} | 2 +- .../Input/Translating/ICommandTranslator.cs | 6 + .../Translating/ICommandTranslator.cs.meta | 11 + .../Input/Translating/InputTranslator.cs | 54 + .../Input/Translating/InputTranslator.cs.meta | 11 + Assets/Scripts/Player/Player.cs | 31 +- Assets/Scripts/Player/States/MovingState.cs | 49 +- .../Player/States/PlayerStateMachine.cs | 1 - Assets/Scripts/Player/States/SlideState.cs | 2 +- .../Player/States/StartingIdleState.cs | 2 +- Assets/Scripts/Player/Statistics.cs | 5 +- Assets/Scripts/Road/ChunkGenerator.cs | 3 - Assets/Scripts/Road/Chunks/Chunk.cs | 6 +- Assets/Scripts/Road/Chunks/Grid.cs | 21 + Assets/Scripts/Road/Chunks/Grid.cs.meta | 11 + Assets/Scripts/UI/Canvases.meta | 8 + Assets/Scripts/UI/Canvases/PlayerHUDCanvas.cs | 16 + .../UI/Canvases/PlayerHUDCanvas.cs.meta | 11 + Assets/Scripts/{ => UI}/Views.meta | 0 Assets/Scripts/{ => UI}/Views/BaseView.cs | 0 .../Scripts/{ => UI}/Views/BaseView.cs.meta | 0 .../Scripts/{ => UI}/Views/PlayerHUDView.cs | 0 .../{ => UI}/Views/PlayerHUDView.cs.meta | 0 .../{ => UI}/Views/PlayerScoreboardCard.cs | 0 .../Views/PlayerScoreboardCard.cs.meta | 0 .../Scripts/{ => UI}/Views/ScoreboardView.cs | 0 .../{ => UI}/Views/ScoreboardView.cs.meta | 0 Assets/Scripts/{ => UI}/Views/ViewManager.cs | 0 .../{ => UI}/Views/ViewManager.cs.meta | 0 Assets/TextMesh Pro/Examples & Extras.meta | 8 + .../TextMesh Pro/Examples & Extras/Fonts.meta | 8 + .../Examples & Extras/Fonts/Anton OFL.txt | 93 + .../Fonts/Anton OFL.txt.meta | 8 + .../Examples & Extras/Fonts/Anton.ttf | Bin 0 -> 42376 bytes .../Examples & Extras/Fonts/Anton.ttf.meta | 19 + .../Examples & Extras/Fonts/Bangers - OFL.txt | 93 + .../Fonts/Bangers - OFL.txt.meta | 8 + .../Examples & Extras/Fonts/Bangers.ttf | Bin 0 -> 39676 bytes .../Examples & Extras/Fonts/Bangers.ttf.meta | 19 + .../Fonts/Electronic Highway Sign.TTF | Bin 0 -> 73060 bytes .../Fonts/Electronic Highway Sign.TTF.meta | 22 + .../Fonts/Oswald-Bold - OFL.txt | 92 + .../Fonts/Oswald-Bold - OFL.txt.meta | 8 + .../Examples & Extras/Fonts/Oswald-Bold.ttf | Bin 0 -> 53056 bytes .../Fonts/Oswald-Bold.ttf.meta | 19 + .../Examples & Extras/Fonts/Roboto-Bold.ttf | Bin 0 -> 170760 bytes .../Fonts/Roboto-Bold.ttf.meta | 22 + .../Examples & Extras/Materials.meta | 9 + .../Crate - Surface Shader Scene.mat | 84 + .../Crate - Surface Shader Scene.mat.meta | 6 + .../Materials/Ground - Logo Scene.mat | 207 + .../Materials/Ground - Logo Scene.mat.meta | 6 + .../Ground - Surface Shader Scene.mat | 112 + .../Ground - Surface Shader Scene.mat.meta | 6 + .../Materials/Small Crate_diffuse.mat | 127 + .../Materials/Small Crate_diffuse.mat.meta | 8 + .../Examples & Extras/Prefabs.meta | 9 + .../Prefabs/Text Popup.prefab | 280 + .../Prefabs/Text Popup.prefab.meta | 8 + .../Prefabs/TextMeshPro - Prefab 1.prefab | 219 + .../TextMeshPro - Prefab 1.prefab.meta | 6 + .../Prefabs/TextMeshPro - Prefab 2.prefab | 219 + .../TextMeshPro - Prefab 2.prefab.meta | 6 + .../Examples & Extras/Resources.meta | 9 + .../Resources/Color Gradient Presets.meta | 8 + .../Blue to Purple - Vertical.asset | 17 + .../Blue to Purple - Vertical.asset.meta | 8 + .../Dark to Light Green - Vertical.asset | 17 + .../Dark to Light Green - Vertical.asset.meta | 8 + .../Light to Dark Green - Vertical.asset | 17 + .../Light to Dark Green - Vertical.asset.meta | 8 + .../Yellow to Orange - Vertical.asset | 17 + .../Yellow to Orange - Vertical.asset.meta | 8 + .../Resources/Fonts & Materials.meta | 9 + .../Anton SDF - Drop Shadow.mat | 104 + .../Anton SDF - Drop Shadow.mat.meta | 8 + .../Fonts & Materials/Anton SDF - Outline.mat | 104 + .../Anton SDF - Outline.mat.meta | 8 + .../Anton SDF - Sunny Days.mat | 104 + .../Anton SDF - Sunny Days.mat.meta | 8 + .../Fonts & Materials/Anton SDF.asset | 457 + .../Fonts & Materials/Anton SDF.asset.meta | 8 + .../Bangers SDF - Drop Shadow.mat | 110 + .../Bangers SDF - Drop Shadow.mat.meta | 8 + .../Bangers SDF - Outline.mat | 110 + .../Bangers SDF - Outline.mat.meta | 8 + .../Fonts & Materials/Bangers SDF Glow.mat | 113 + .../Bangers SDF Glow.mat.meta | 8 + .../Fonts & Materials/Bangers SDF Logo.mat | 101 + .../Bangers SDF Logo.mat.meta | 6 + .../Fonts & Materials/Bangers SDF.asset | 974 ++ .../Fonts & Materials/Bangers SDF.asset.meta | 6 + .../Electronic Highway Sign SDF.asset | 537 + .../Electronic Highway Sign SDF.asset.meta | 8 + .../LiberationSans SDF - Metalic Green.mat | 104 + ...iberationSans SDF - Metalic Green.mat.meta | 8 + .../LiberationSans SDF - Overlay.mat | 62 + .../LiberationSans SDF - Overlay.mat.meta | 8 + .../LiberationSans SDF - Soft Mask.mat | 112 + .../LiberationSans SDF - Soft Mask.mat.meta | 8 + .../Fonts & Materials/Oswald Bold SDF.asset | 297 + .../Oswald Bold SDF.asset.meta | 8 + .../Roboto-Bold SDF - Drop Shadow.mat | 104 + .../Roboto-Bold SDF - Drop Shadow.mat.meta | 8 + .../Roboto-Bold SDF - Surface.mat | 107 + .../Roboto-Bold SDF - Surface.mat.meta | 8 + .../Fonts & Materials/Roboto-Bold SDF.asset | 297 + .../Roboto-Bold SDF.asset.meta | 8 + .../Resources/Sprite Assets.meta | 9 + .../Sprite Assets/Default Sprite Asset.asset | 351 + .../Default Sprite Asset.asset.meta | 8 + .../Sprite Assets/DropCap Numbers.asset | 406 + .../Sprite Assets/DropCap Numbers.asset.meta | 8 + .../Examples & Extras/Scenes.meta | 9 + .../01- Single Line TextMesh Pro.unity | 380 + .../01- Single Line TextMesh Pro.unity.meta | 24 + .../Scenes/02 - Multi-line TextMesh Pro.unity | 384 + .../02 - Multi-line TextMesh Pro.unity.meta | 24 + .../Scenes/03 - Line Justification.unity | 896 ++ .../Scenes/03 - Line Justification.unity.meta | 24 + .../Scenes/04 - Word Wrapping.unity | 379 + .../Scenes/04 - Word Wrapping.unity.meta | 24 + .../Scenes/05 - Style Tags.unity | 1017 ++ .../Scenes/05 - Style Tags.unity.meta | 24 + .../06 - Extra Rich Text Examples.unity | 677 ++ .../06 - Extra Rich Text Examples.unity.meta | 6 + ...07 - Superscript & Subscript Example.unity | 383 + ...Superscript & Subscript Example.unity.meta | 24 + .../Scenes/08 - Improved Text Alignment.unity | 544 + .../08 - Improved Text Alignment.unity.meta | 6 + .../Scenes/09 - Margin Tag Example.unity | 945 ++ .../Scenes/09 - Margin Tag Example.unity.meta | 8 + ...10 - Bullets & Numbered List Example.unity | 665 ++ ...Bullets & Numbered List Example.unity.meta | 8 + .../Scenes/11 - The Style Tag.unity | 554 + .../Scenes/11 - The Style Tag.unity.meta | 8 + .../Scenes/12 - Link Example.unity | 779 ++ .../Scenes/12 - Link Example.unity.meta | 8 + .../Scenes/12a - Text Interactions.unity | 887 ++ .../Scenes/12a - Text Interactions.unity.meta | 8 + .../Scenes/13 - Soft Hyphenation.unity | 507 + .../Scenes/13 - Soft Hyphenation.unity.meta | 8 + .../Scenes/14 - Multi Font & Sprites.unity | 544 + .../14 - Multi Font & Sprites.unity.meta | 8 + .../15 - Inline Graphics & Sprites.unity | 595 ++ .../15 - Inline Graphics & Sprites.unity.meta | 6 + ... - Linked text overflow mode example.unity | 1063 ++ ...nked text overflow mode example.unity.meta | 8 + .../Scenes/17 - Old Computer Terminal.unity | 691 ++ .../17 - Old Computer Terminal.unity.meta | 8 + .../18 - ScrollRect & Masking & Layout.unity | 9490 +++++++++++++++++ ...- ScrollRect & Masking & Layout.unity.meta | 8 + .../19 - Masking Texture & Soft Mask.unity | 604 ++ ...9 - Masking Texture & Soft Mask.unity.meta | 8 + .../20 - Input Field with Scrollbar.unity | 2242 ++++ ...20 - Input Field with Scrollbar.unity.meta | 8 + .../Scenes/21 - Script Example.unity | 239 + .../Scenes/21 - Script Example.unity.meta | 24 + .../Scenes/22 - Basic Scripting Example.unity | 447 + .../22 - Basic Scripting Example.unity.meta | 8 + .../23 - Animating Vertex Attributes.unity | 520 + ...3 - Animating Vertex Attributes.unity.meta | 8 + .../Scenes/24 - Surface Shader Example.unity | 2687 +++++ .../24 - Surface Shader Example.unity.meta | 24 + .../Scenes/25 - Sunny Days Example.unity | 615 ++ .../Scenes/25 - Sunny Days Example.unity.meta | 8 + .../26 - Dropdown Placeholder Example.unity | 3418 ++++++ ... - Dropdown Placeholder Example.unity.meta | 7 + .../Scenes/Benchmark (Floating Text).unity | 429 + .../Benchmark (Floating Text).unity.meta | 24 + .../Examples & Extras/Scripts.meta | 9 + .../Examples & Extras/Scripts/Benchmark01.cs | 128 + .../Scripts/Benchmark01.cs.meta | 10 + .../Scripts/Benchmark01_UGUI.cs | 135 + .../Scripts/Benchmark01_UGUI.cs.meta | 10 + .../Examples & Extras/Scripts/Benchmark02.cs | 97 + .../Scripts/Benchmark02.cs.meta | 11 + .../Examples & Extras/Scripts/Benchmark03.cs | 92 + .../Scripts/Benchmark03.cs.meta | 11 + .../Examples & Extras/Scripts/Benchmark04.cs | 85 + .../Scripts/Benchmark04.cs.meta | 11 + .../Scripts/CameraController.cs | 292 + .../Scripts/CameraController.cs.meta | 10 + .../Scripts/ChatController.cs | 51 + .../Scripts/ChatController.cs.meta | 12 + .../Scripts/DropdownSample.cs | 19 + .../Scripts/DropdownSample.cs.meta | 11 + .../Scripts/EnvMapAnimator.cs | 35 + .../Scripts/EnvMapAnimator.cs.meta | 12 + .../Examples & Extras/Scripts/ObjectSpin.cs | 69 + .../Scripts/ObjectSpin.cs.meta | 10 + .../Scripts/ShaderPropAnimator.cs | 51 + .../Scripts/ShaderPropAnimator.cs.meta | 10 + .../Examples & Extras/Scripts/SimpleScript.cs | 58 + .../Scripts/SimpleScript.cs.meta | 10 + .../Scripts/SkewTextExample.cs | 158 + .../Scripts/SkewTextExample.cs.meta | 12 + .../Scripts/TMP_DigitValidator.cs | 27 + .../Scripts/TMP_DigitValidator.cs.meta | 12 + .../Scripts/TMP_ExampleScript_01.cs | 64 + .../Scripts/TMP_ExampleScript_01.cs.meta | 12 + .../Scripts/TMP_FrameRateCounter.cs | 134 + .../Scripts/TMP_FrameRateCounter.cs.meta | 10 + .../Scripts/TMP_PhoneNumberValidator.cs | 105 + .../Scripts/TMP_PhoneNumberValidator.cs.meta | 12 + .../Scripts/TMP_TextEventCheck.cs | 73 + .../Scripts/TMP_TextEventCheck.cs.meta | 12 + .../Scripts/TMP_TextEventHandler.cs | 254 + .../Scripts/TMP_TextEventHandler.cs.meta | 12 + .../Scripts/TMP_TextInfoDebugTool.cs | 652 ++ .../Scripts/TMP_TextInfoDebugTool.cs.meta | 12 + .../Scripts/TMP_TextSelector_A.cs | 157 + .../Scripts/TMP_TextSelector_A.cs.meta | 12 + .../Scripts/TMP_TextSelector_B.cs | 547 + .../Scripts/TMP_TextSelector_B.cs.meta | 14 + .../Scripts/TMP_UiFrameRateCounter.cs | 125 + .../Scripts/TMP_UiFrameRateCounter.cs.meta | 12 + .../Scripts/TMPro_InstructionOverlay.cs | 84 + .../Scripts/TMPro_InstructionOverlay.cs.meta | 10 + .../Examples & Extras/Scripts/TeleType.cs | 83 + .../Scripts/TeleType.cs.meta | 10 + .../Scripts/TextConsoleSimulator.cs | 121 + .../Scripts/TextConsoleSimulator.cs.meta | 12 + .../Scripts/TextMeshProFloatingText.cs | 223 + .../Scripts/TextMeshProFloatingText.cs.meta | 11 + .../Scripts/TextMeshSpawner.cs | 79 + .../Scripts/TextMeshSpawner.cs.meta | 11 + .../Scripts/VertexColorCycler.cs | 84 + .../Scripts/VertexColorCycler.cs.meta | 12 + .../Examples & Extras/Scripts/VertexJitter.cs | 175 + .../Scripts/VertexJitter.cs.meta | 12 + .../Examples & Extras/Scripts/VertexShakeA.cs | 161 + .../Scripts/VertexShakeA.cs.meta | 12 + .../Examples & Extras/Scripts/VertexShakeB.cs | 185 + .../Scripts/VertexShakeB.cs.meta | 12 + .../Examples & Extras/Scripts/VertexZoom.cs | 192 + .../Scripts/VertexZoom.cs.meta | 12 + .../Scripts/WarpTextExample.cs | 144 + .../Scripts/WarpTextExample.cs.meta | 12 + .../Examples & Extras/Sprites.meta | 9 + .../Sprites/Default Sprites.png | Bin 0 -> 178491 bytes .../Sprites/Default Sprites.png.meta | 437 + .../Sprites/DropCap Numbers.psd | Bin 0 -> 482546 bytes .../Sprites/DropCap Numbers.psd.meta | 166 + .../Examples & Extras/Textures.meta | 9 + .../Textures/Brushed Metal 3.jpg | Bin 0 -> 28175 bytes .../Textures/Brushed Metal 3.jpg.meta | 53 + .../Textures/Floor Cement.jpg | Bin 0 -> 71537 bytes .../Textures/Floor Cement.jpg.meta | 53 + .../Textures/Floor Tiles 1 - diffuse.jpg | Bin 0 -> 155648 bytes .../Textures/Floor Tiles 1 - diffuse.jpg.meta | 53 + .../Textures/Fruit Jelly (B&W).jpg | Bin 0 -> 150089 bytes .../Textures/Fruit Jelly (B&W).jpg.meta | 53 + .../Textures/Gradient Diagonal (Color).jpg | Bin 0 -> 11688 bytes .../Gradient Diagonal (Color).jpg.meta | 57 + .../Textures/Gradient Horizontal (Color).jpg | Bin 0 -> 11341 bytes .../Gradient Horizontal (Color).jpg.meta | 53 + .../Textures/Gradient Vertical (Color).jpg | Bin 0 -> 11336 bytes .../Gradient Vertical (Color).jpg.meta | 53 + .../Textures/Mask Zig-n-Zag.psd | Bin 0 -> 38488 bytes .../Textures/Mask Zig-n-Zag.psd.meta | 56 + .../Textures/Small Crate_diffuse.jpg | Bin 0 -> 95326 bytes .../Textures/Small Crate_diffuse.jpg.meta | 132 + .../Textures/Small Crate_normal.jpg | Bin 0 -> 126976 bytes .../Textures/Small Crate_normal.jpg.meta | 132 + .../Textures/Sunny Days - Seamless.jpg | Bin 0 -> 273488 bytes .../Textures/Sunny Days - Seamless.jpg.meta | 132 + .../Text Overflow - Linked Text Image 1.png | Bin 0 -> 26169 bytes ...xt Overflow - Linked Text Image 1.png.meta | 59 + ...t Overflow - Linked Text UI Screenshot.png | Bin 0 -> 49290 bytes ...rflow - Linked Text UI Screenshot.png.meta | 59 + .../Textures/Wipe Pattern - Circle.psd | Bin 0 -> 32696 bytes .../Textures/Wipe Pattern - Circle.psd.meta | 59 + .../Textures/Wipe Pattern - Diagonal.psd | Bin 0 -> 33064 bytes .../Textures/Wipe Pattern - Diagonal.psd.meta | 58 + .../Textures/Wipe Pattern - Radial Double.psd | Bin 0 -> 33155 bytes .../Wipe Pattern - Radial Double.psd.meta | 58 + .../Textures/Wipe Pattern - Radial Quad.psd | Bin 0 -> 34433 bytes .../Wipe Pattern - Radial Quad.psd.meta | 59 + 317 files changed, 47747 insertions(+), 600 deletions(-) rename Assets/{Scripts/GameSession/States.meta => Prefabs/Cards.meta} (77%) create mode 100644 Assets/Prefabs/Cards/PlayerScoreboardCard.prefab create mode 100644 Assets/Prefabs/Cards/PlayerScoreboardCard.prefab.meta create mode 100644 Assets/Prefabs/Views/ScoreboardView.prefab create mode 100644 Assets/Prefabs/Views/ScoreboardView.prefab.meta delete mode 100644 Assets/Scripts/GameSession/States/GameOverState.cs delete mode 100644 Assets/Scripts/GameSession/States/GameSessionState.cs delete mode 100644 Assets/Scripts/GameSession/States/GameSessionStateMachine.cs delete mode 100644 Assets/Scripts/GameSession/States/MainMenuState.cs delete mode 100644 Assets/Scripts/GameSession/States/PausedState.cs delete mode 100644 Assets/Scripts/GameSession/States/PausedState.cs.meta delete mode 100644 Assets/Scripts/GameSession/States/PlayingState.cs delete mode 100644 Assets/Scripts/GameSession/States/PlayingState.cs.meta delete mode 100644 Assets/Scripts/GameSession/States/ScoreboardState.cs delete mode 100644 Assets/Scripts/GameSession/States/ScoreboardState.cs.meta delete mode 100644 Assets/Scripts/Input/AiInput.cs delete mode 100644 Assets/Scripts/Input/AiInput.cs.meta delete mode 100644 Assets/Scripts/Input/ArrowKeysInput.cs delete mode 100644 Assets/Scripts/Input/ArrowKeysInput.cs.meta create mode 100644 Assets/Scripts/Input/BindableHolders.meta create mode 100644 Assets/Scripts/Input/BindableHolders/IBindingHolder.cs rename Assets/Scripts/{GameSession/States/MainMenuState.cs.meta => Input/BindableHolders/IBindingHolder.cs.meta} (83%) create mode 100644 Assets/Scripts/Input/BindableHolders/KeyBindingHolder.cs rename Assets/Scripts/{GameSession/States/GameSessionState.cs.meta => Input/BindableHolders/KeyBindingHolder.cs.meta} (83%) create mode 100644 Assets/Scripts/Input/Bindings.meta create mode 100644 Assets/Scripts/Input/Bindings/IBinding.cs rename Assets/Scripts/{GameSession/States/GameOverState.cs.meta => Input/Bindings/IBinding.cs.meta} (83%) create mode 100644 Assets/Scripts/Input/Bindings/KeyBinding.cs create mode 100644 Assets/Scripts/Input/Bindings/KeyBinding.cs.meta delete mode 100644 Assets/Scripts/Input/IPlayerInput.cs delete mode 100644 Assets/Scripts/Input/IPlayerInput.cs.meta create mode 100644 Assets/Scripts/Input/Translating.meta create mode 100644 Assets/Scripts/Input/Translating/ECommand.cs rename Assets/Scripts/{GameSession/States/GameSessionStateMachine.cs.meta => Input/Translating/ECommand.cs.meta} (83%) create mode 100644 Assets/Scripts/Input/Translating/ICommandTranslator.cs create mode 100644 Assets/Scripts/Input/Translating/ICommandTranslator.cs.meta create mode 100644 Assets/Scripts/Input/Translating/InputTranslator.cs create mode 100644 Assets/Scripts/Input/Translating/InputTranslator.cs.meta create mode 100644 Assets/Scripts/Road/Chunks/Grid.cs create mode 100644 Assets/Scripts/Road/Chunks/Grid.cs.meta create mode 100644 Assets/Scripts/UI/Canvases.meta create mode 100644 Assets/Scripts/UI/Canvases/PlayerHUDCanvas.cs create mode 100644 Assets/Scripts/UI/Canvases/PlayerHUDCanvas.cs.meta rename Assets/Scripts/{ => UI}/Views.meta (100%) rename Assets/Scripts/{ => UI}/Views/BaseView.cs (100%) rename Assets/Scripts/{ => UI}/Views/BaseView.cs.meta (100%) rename Assets/Scripts/{ => UI}/Views/PlayerHUDView.cs (100%) rename Assets/Scripts/{ => UI}/Views/PlayerHUDView.cs.meta (100%) rename Assets/Scripts/{ => UI}/Views/PlayerScoreboardCard.cs (100%) rename Assets/Scripts/{ => UI}/Views/PlayerScoreboardCard.cs.meta (100%) rename Assets/Scripts/{ => UI}/Views/ScoreboardView.cs (100%) rename Assets/Scripts/{ => UI}/Views/ScoreboardView.cs.meta (100%) rename Assets/Scripts/{ => UI}/Views/ViewManager.cs (100%) rename Assets/Scripts/{ => UI}/Views/ViewManager.cs.meta (100%) create mode 100644 Assets/TextMesh Pro/Examples & Extras.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts/Anton OFL.txt create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts/Anton OFL.txt.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts/Anton.ttf create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts/Anton.ttf.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts/Bangers - OFL.txt create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts/Bangers - OFL.txt.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts/Bangers.ttf create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts/Bangers.ttf.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts/Electronic Highway Sign.TTF create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts/Electronic Highway Sign.TTF.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts/Oswald-Bold - OFL.txt create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts/Oswald-Bold - OFL.txt.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts/Oswald-Bold.ttf create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts/Oswald-Bold.ttf.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts/Roboto-Bold.ttf create mode 100644 Assets/TextMesh Pro/Examples & Extras/Fonts/Roboto-Bold.ttf.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Materials.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Materials/Crate - Surface Shader Scene.mat create mode 100644 Assets/TextMesh Pro/Examples & Extras/Materials/Crate - Surface Shader Scene.mat.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Materials/Ground - Logo Scene.mat create mode 100644 Assets/TextMesh Pro/Examples & Extras/Materials/Ground - Logo Scene.mat.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Materials/Ground - Surface Shader Scene.mat create mode 100644 Assets/TextMesh Pro/Examples & Extras/Materials/Ground - Surface Shader Scene.mat.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Materials/Small Crate_diffuse.mat create mode 100644 Assets/TextMesh Pro/Examples & Extras/Materials/Small Crate_diffuse.mat.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Prefabs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Prefabs/Text Popup.prefab create mode 100644 Assets/TextMesh Pro/Examples & Extras/Prefabs/Text Popup.prefab.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Prefabs/TextMeshPro - Prefab 1.prefab create mode 100644 Assets/TextMesh Pro/Examples & Extras/Prefabs/TextMeshPro - Prefab 1.prefab.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Prefabs/TextMeshPro - Prefab 2.prefab create mode 100644 Assets/TextMesh Pro/Examples & Extras/Prefabs/TextMeshPro - Prefab 2.prefab.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Color Gradient Presets.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Color Gradient Presets/Blue to Purple - Vertical.asset create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Color Gradient Presets/Blue to Purple - Vertical.asset.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Color Gradient Presets/Dark to Light Green - Vertical.asset create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Color Gradient Presets/Dark to Light Green - Vertical.asset.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Color Gradient Presets/Light to Dark Green - Vertical.asset create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Color Gradient Presets/Light to Dark Green - Vertical.asset.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Color Gradient Presets/Yellow to Orange - Vertical.asset create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Color Gradient Presets/Yellow to Orange - Vertical.asset.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Anton SDF - Drop Shadow.mat create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Anton SDF - Drop Shadow.mat.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Anton SDF - Outline.mat create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Anton SDF - Outline.mat.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Anton SDF - Sunny Days.mat create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Anton SDF - Sunny Days.mat.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Anton SDF.asset create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Anton SDF.asset.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Bangers SDF - Drop Shadow.mat create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Bangers SDF - Drop Shadow.mat.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Bangers SDF - Outline.mat create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Bangers SDF - Outline.mat.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Bangers SDF Glow.mat create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Bangers SDF Glow.mat.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Bangers SDF Logo.mat create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Bangers SDF Logo.mat.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Bangers SDF.asset create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Bangers SDF.asset.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Electronic Highway Sign SDF.asset create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Electronic Highway Sign SDF.asset.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/LiberationSans SDF - Metalic Green.mat create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/LiberationSans SDF - Metalic Green.mat.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/LiberationSans SDF - Overlay.mat create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/LiberationSans SDF - Overlay.mat.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/LiberationSans SDF - Soft Mask.mat create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/LiberationSans SDF - Soft Mask.mat.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Oswald Bold SDF.asset create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Oswald Bold SDF.asset.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Roboto-Bold SDF - Drop Shadow.mat create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Roboto-Bold SDF - Drop Shadow.mat.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Roboto-Bold SDF - Surface.mat create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Roboto-Bold SDF - Surface.mat.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Roboto-Bold SDF.asset create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Fonts & Materials/Roboto-Bold SDF.asset.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Sprite Assets.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Sprite Assets/Default Sprite Asset.asset create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Sprite Assets/Default Sprite Asset.asset.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Sprite Assets/DropCap Numbers.asset create mode 100644 Assets/TextMesh Pro/Examples & Extras/Resources/Sprite Assets/DropCap Numbers.asset.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/01- Single Line TextMesh Pro.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/01- Single Line TextMesh Pro.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/02 - Multi-line TextMesh Pro.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/02 - Multi-line TextMesh Pro.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/03 - Line Justification.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/03 - Line Justification.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/04 - Word Wrapping.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/04 - Word Wrapping.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/05 - Style Tags.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/05 - Style Tags.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/06 - Extra Rich Text Examples.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/06 - Extra Rich Text Examples.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/07 - Superscript & Subscript Example.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/07 - Superscript & Subscript Example.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/08 - Improved Text Alignment.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/08 - Improved Text Alignment.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/09 - Margin Tag Example.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/09 - Margin Tag Example.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/10 - Bullets & Numbered List Example.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/10 - Bullets & Numbered List Example.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/11 - The Style Tag.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/11 - The Style Tag.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/12 - Link Example.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/12 - Link Example.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/12a - Text Interactions.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/12a - Text Interactions.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/13 - Soft Hyphenation.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/13 - Soft Hyphenation.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/14 - Multi Font & Sprites.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/14 - Multi Font & Sprites.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/15 - Inline Graphics & Sprites.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/15 - Inline Graphics & Sprites.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/16 - Linked text overflow mode example.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/16 - Linked text overflow mode example.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/17 - Old Computer Terminal.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/17 - Old Computer Terminal.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/18 - ScrollRect & Masking & Layout.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/18 - ScrollRect & Masking & Layout.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/19 - Masking Texture & Soft Mask.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/19 - Masking Texture & Soft Mask.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/20 - Input Field with Scrollbar.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/20 - Input Field with Scrollbar.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/21 - Script Example.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/21 - Script Example.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/22 - Basic Scripting Example.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/22 - Basic Scripting Example.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/23 - Animating Vertex Attributes.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/23 - Animating Vertex Attributes.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/24 - Surface Shader Example.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/24 - Surface Shader Example.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/25 - Sunny Days Example.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/25 - Sunny Days Example.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/26 - Dropdown Placeholder Example.unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/26 - Dropdown Placeholder Example.unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/Benchmark (Floating Text).unity create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scenes/Benchmark (Floating Text).unity.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/Benchmark01.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/Benchmark01.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/Benchmark01_UGUI.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/Benchmark01_UGUI.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/Benchmark02.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/Benchmark02.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/Benchmark03.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/Benchmark03.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/Benchmark04.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/Benchmark04.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/CameraController.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/CameraController.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/ChatController.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/ChatController.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/DropdownSample.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/DropdownSample.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/EnvMapAnimator.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/EnvMapAnimator.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/ObjectSpin.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/ObjectSpin.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/ShaderPropAnimator.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/ShaderPropAnimator.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/SimpleScript.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/SimpleScript.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/SkewTextExample.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/SkewTextExample.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_DigitValidator.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_DigitValidator.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_ExampleScript_01.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_ExampleScript_01.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_FrameRateCounter.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_FrameRateCounter.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_PhoneNumberValidator.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_PhoneNumberValidator.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_TextEventCheck.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_TextEventCheck.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_TextEventHandler.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_TextEventHandler.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_TextInfoDebugTool.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_TextInfoDebugTool.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_TextSelector_A.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_TextSelector_A.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_TextSelector_B.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_TextSelector_B.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_UiFrameRateCounter.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMP_UiFrameRateCounter.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMPro_InstructionOverlay.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TMPro_InstructionOverlay.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TeleType.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TeleType.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TextConsoleSimulator.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TextConsoleSimulator.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TextMeshProFloatingText.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TextMeshProFloatingText.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TextMeshSpawner.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/TextMeshSpawner.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/VertexColorCycler.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/VertexColorCycler.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/VertexJitter.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/VertexJitter.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/VertexShakeA.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/VertexShakeA.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/VertexShakeB.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/VertexShakeB.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/VertexZoom.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/VertexZoom.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/WarpTextExample.cs create mode 100644 Assets/TextMesh Pro/Examples & Extras/Scripts/WarpTextExample.cs.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Sprites.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Sprites/Default Sprites.png create mode 100644 Assets/TextMesh Pro/Examples & Extras/Sprites/Default Sprites.png.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Sprites/DropCap Numbers.psd create mode 100644 Assets/TextMesh Pro/Examples & Extras/Sprites/DropCap Numbers.psd.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Brushed Metal 3.jpg create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Brushed Metal 3.jpg.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Floor Cement.jpg create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Floor Cement.jpg.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Floor Tiles 1 - diffuse.jpg create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Floor Tiles 1 - diffuse.jpg.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Fruit Jelly (B&W).jpg create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Fruit Jelly (B&W).jpg.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Gradient Diagonal (Color).jpg create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Gradient Diagonal (Color).jpg.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Gradient Horizontal (Color).jpg create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Gradient Horizontal (Color).jpg.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Gradient Vertical (Color).jpg create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Gradient Vertical (Color).jpg.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Mask Zig-n-Zag.psd create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Mask Zig-n-Zag.psd.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Small Crate_diffuse.jpg create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Small Crate_diffuse.jpg.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Small Crate_normal.jpg create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Small Crate_normal.jpg.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Sunny Days - Seamless.jpg create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Sunny Days - Seamless.jpg.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Text Overflow - Linked Text Image 1.png create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Text Overflow - Linked Text Image 1.png.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Text Overflow - Linked Text UI Screenshot.png create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Text Overflow - Linked Text UI Screenshot.png.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Wipe Pattern - Circle.psd create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Wipe Pattern - Circle.psd.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Wipe Pattern - Diagonal.psd create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Wipe Pattern - Diagonal.psd.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Wipe Pattern - Radial Double.psd create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Wipe Pattern - Radial Double.psd.meta create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Wipe Pattern - Radial Quad.psd create mode 100644 Assets/TextMesh Pro/Examples & Extras/Textures/Wipe Pattern - Radial Quad.psd.meta diff --git a/Assets/Scripts/GameSession/States.meta b/Assets/Prefabs/Cards.meta similarity index 77% rename from Assets/Scripts/GameSession/States.meta rename to Assets/Prefabs/Cards.meta index 0e7de09..3191a63 100644 --- a/Assets/Scripts/GameSession/States.meta +++ b/Assets/Prefabs/Cards.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: b3234b26a6320a348a0d95e228e6ab54 +guid: 08e6fb588a682734c9b617677d8ffe7c folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/Prefabs/Cards/PlayerScoreboardCard.prefab b/Assets/Prefabs/Cards/PlayerScoreboardCard.prefab new file mode 100644 index 0000000..e8a2909 --- /dev/null +++ b/Assets/Prefabs/Cards/PlayerScoreboardCard.prefab @@ -0,0 +1,325 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &2943209019892963465 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 2544838583660291676} + - component: {fileID: 5244609329667918473} + - component: {fileID: 1578938152929599337} + m_Layer: 5 + m_Name: Score + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &2544838583660291676 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2943209019892963465} + 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: 60557087543267435} + m_RootOrder: 1 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 203.92004, y: -25} + m_SizeDelta: {x: 131.0399, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &5244609329667918473 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2943209019892963465} + m_CullTransparentMesh: 1 +--- !u!114 &1578938152929599337 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 2943209019892963465} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: 0 + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 24 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 14.517914, y: 0, z: 9.07373, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &3269255348711780303 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 6579109938301339766} + - component: {fileID: 923350465398546869} + - component: {fileID: 6126953744245568053} + m_Layer: 5 + m_Name: PlayerName + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &6579109938301339766 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3269255348711780303} + 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: 60557087543267435} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 1} + m_AnchorMax: {x: 0, y: 1} + m_AnchoredPosition: {x: 71.87158, y: -25} + m_SizeDelta: {x: 143.7432, y: 50} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &923350465398546869 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3269255348711780303} + m_CullTransparentMesh: 1 +--- !u!114 &6126953744245568053 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 3269255348711780303} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: f4688fdb7df04437aeb418b961361dc5, 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_text: New Text + m_isRightToLeft: 0 + m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontSharedMaterials: [] + m_fontMaterial: {fileID: 0} + m_fontMaterials: [] + m_fontColor32: + serializedVersion: 2 + rgba: 4294967295 + m_fontColor: {r: 1, g: 1, b: 1, a: 1} + m_enableVertexGradient: 0 + m_colorMode: 3 + m_fontColorGradient: + topLeft: {r: 1, g: 1, b: 1, a: 1} + topRight: {r: 1, g: 1, b: 1, a: 1} + bottomLeft: {r: 1, g: 1, b: 1, a: 1} + bottomRight: {r: 1, g: 1, b: 1, a: 1} + m_fontColorGradientPreset: {fileID: 0} + m_spriteAsset: {fileID: 0} + m_tintAllSprites: 0 + m_StyleSheet: {fileID: 0} + m_TextStyleHashCode: -1183493901 + m_overrideHtmlColors: 0 + m_faceColor: + serializedVersion: 2 + rgba: 4294967295 + m_fontSize: 24 + m_fontSizeBase: 24 + m_fontWeight: 400 + m_enableAutoSizing: 0 + m_fontSizeMin: 18 + m_fontSizeMax: 72 + m_fontStyle: 0 + m_HorizontalAlignment: 2 + m_VerticalAlignment: 512 + m_textAlignment: 65535 + m_characterSpacing: 0 + m_wordSpacing: 0 + m_lineSpacing: 0 + m_lineSpacingMax: 0 + m_paragraphSpacing: 0 + m_charWidthMaxAdj: 0 + m_enableWordWrapping: 1 + m_wordWrappingRatios: 0.4 + m_overflowMode: 0 + m_linkedTextComponent: {fileID: 0} + parentLinkedComponent: {fileID: 0} + m_enableKerning: 1 + m_enableExtraPadding: 0 + checkPaddingRequired: 0 + m_isRichText: 1 + m_parseCtrlCharacters: 1 + m_isOrthographic: 1 + m_isCullingEnabled: 0 + m_horizontalMapping: 0 + m_verticalMapping: 0 + m_uvLineOffset: 0 + m_geometrySortingOrder: 0 + m_IsTextObjectScaleStatic: 0 + m_VertexBufferAutoSizeReduction: 0 + m_useMaxVisibleDescender: 1 + m_pageToDisplay: 1 + m_margin: {x: 0, y: 0, z: 0, w: 0} + m_isUsingLegacyAnimationComponent: 0 + m_isVolumetricText: 0 + m_hasFontAssetChanged: 0 + m_baseMaterial: {fileID: 0} + m_maskOffset: {x: 0, y: 0, z: 0, w: 0} +--- !u!1 &6532874447580416973 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 60557087543267435} + - component: {fileID: 1010394502502236129} + m_Layer: 5 + m_Name: PlayerScoreboardCard + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &60557087543267435 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6532874447580416973} + 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: 6579109938301339766} + - {fileID: 2544838583660291676} + m_Father: {fileID: 0} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 10.480988} + m_SizeDelta: {x: 269.44, y: 59.075} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1010394502502236129 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 6532874447580416973} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: c771658832c7219498c3d4a71ad79290, type: 3} + m_Name: + m_EditorClassIdentifier: + playerName: {fileID: 6126953744245568053} + playerScore: {fileID: 1578938152929599337} diff --git a/Assets/Prefabs/Cards/PlayerScoreboardCard.prefab.meta b/Assets/Prefabs/Cards/PlayerScoreboardCard.prefab.meta new file mode 100644 index 0000000..6fcb21f --- /dev/null +++ b/Assets/Prefabs/Cards/PlayerScoreboardCard.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 4c5b587097a24ae4798ac097b4ec950d +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Prefabs/Chunks/Corridor_I 5.prefab b/Assets/Prefabs/Chunks/Corridor_I 5.prefab index 84ffcf2..f4cb0a8 100644 --- a/Assets/Prefabs/Chunks/Corridor_I 5.prefab +++ b/Assets/Prefabs/Chunks/Corridor_I 5.prefab @@ -27,7 +27,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 96461661196881973} m_LocalRotation: {x: 0, y: -1, z: 0, w: 0} - m_LocalPosition: {x: -6.2953286, y: 0.162, z: -4.2997} + m_LocalPosition: {x: -6.2953286, y: 0.162, z: 0.7003002} m_LocalScale: {x: 1, y: 1.4, z: 4.0053} m_ConstrainProportionsScale: 0 m_Children: @@ -219,7 +219,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 562623238776548450} m_LocalRotation: {x: 0.00000023040471, y: -0.70710707, z: 4.618527e-14, w: 0.70710653} - m_LocalPosition: {x: 4.0000043, y: 0.0000013908, z: 2.8377} + m_LocalPosition: {x: 4.0000043, y: 0.0000013908, z: 7.8377} m_LocalScale: {x: 4.0053, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -384,7 +384,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 831280777384614076} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: -3.954, y: 4.01, z: 2.9138} + m_LocalPosition: {x: -3.954, y: 4.01, z: 7.9138002} m_LocalScale: {x: 1, y: 1, z: 4.0053} m_ConstrainProportionsScale: 0 m_Children: @@ -649,8 +649,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1711497923749520810} m_LocalRotation: {x: 0.00000023040471, y: -0.70710707, z: 4.618527e-14, w: 0.70710653} - m_LocalPosition: {x: -0.00000023841858, y: 0, z: 10.848} - m_LocalScale: {x: 4.0053, y: 1, z: 1} + m_LocalPosition: {x: 0, y: 0, z: 15.848} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5613211205117028343} @@ -767,7 +767,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1904789675920767352} m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068} - m_LocalPosition: {x: -0.00000047683716, y: 0, z: 2.8299994} + m_LocalPosition: {x: -0.00000047683716, y: 0, z: 7.8299994} m_LocalScale: {x: 4.0053, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -866,7 +866,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1930304146026479431} m_LocalRotation: {x: -0.5, y: 0.5, z: 0.5, w: 0.5} - m_LocalPosition: {x: 12.8, y: 2.41, z: 5.17} + m_LocalPosition: {x: 12.8, y: 2.41, z: 10.17} m_LocalScale: {x: 1, y: 1, z: 0.6666667} m_ConstrainProportionsScale: 0 m_Children: [] @@ -964,7 +964,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 2225319013170844455} m_LocalRotation: {x: 0.70710653, y: 0.00000011520227, z: 0.70710707, w: -0.0000001152023} - m_LocalPosition: {x: 4.000003, y: 4.000005, z: 2.8378} + m_LocalPosition: {x: 4.000003, y: 4.000005, z: 7.8378} m_LocalScale: {x: 4.0053, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -1120,7 +1120,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3231417360219244859} m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068} - m_LocalPosition: {x: -4.0000005, y: 0, z: 2.829999} + m_LocalPosition: {x: -4.0000005, y: 0, z: 7.829999} m_LocalScale: {x: 4.0053, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] @@ -1218,7 +1218,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 3950509452734738241} m_LocalRotation: {x: 0.00000023040471, y: -0.70710707, z: 4.618527e-14, w: 0.70710653} - m_LocalPosition: {x: 0.0000052452087, y: 0, z: 2.8377} + m_LocalPosition: {x: 0.0000052452087, y: 0, z: 7.8377} m_LocalScale: {x: 4.0053, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -1374,7 +1374,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 4965981231653170154} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 4.074, y: 4.01, z: 2.9138} + m_LocalPosition: {x: 4.074, y: 4.01, z: 7.9138002} m_LocalScale: {x: 1, y: 1, z: 4.0053} m_ConstrainProportionsScale: 0 m_Children: @@ -1652,7 +1652,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5613211205116673037} m_LocalRotation: {x: 0.00000023040471, y: -0.70710707, z: 4.618527e-14, w: 0.70710653} - m_LocalPosition: {x: -3.9999971, y: -0.0000013908, z: 2.8377} + m_LocalPosition: {x: -3.9999971, y: -0.0000013908, z: 7.8377} m_LocalScale: {x: 4.0053, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -1722,7 +1722,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5613211205116686397} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: -0.74} + m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1.5, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -1760,8 +1760,8 @@ BoxCollider: m_IsTrigger: 1 m_Enabled: 1 serializedVersion: 2 - m_Size: {x: 16.30884, y: 4.5368195, z: 15.129173} - m_Center: {x: 1.700427, y: 1.7684097, z: 2.8689785} + m_Size: {x: 15.986171, y: 4.5368195, z: 13.826083} + m_Center: {x: -0.15965128, y: 1.7684097, z: 7.261084} --- !u!114 &7423857566743054097 MonoBehaviour: m_ObjectHideFlags: 0 @@ -1776,7 +1776,7 @@ MonoBehaviour: m_EditorClassIdentifier: k__BackingField: {fileID: 8331850446012945034} k__BackingField: {fileID: 8960787494111689333} - gridRowCount: 10 + gridRowCount: 2 --- !u!1 &5613211205116689287 GameObject: m_ObjectHideFlags: 0 @@ -1803,7 +1803,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5613211205116689287} m_LocalRotation: {x: 0.00000023040471, y: -0.70710707, z: 4.618527e-14, w: 0.70710653} - m_LocalPosition: {x: 6.000002, y: 0.0000021855, z: 2.8378} + m_LocalPosition: {x: 6.000002, y: 0.0000021855, z: 7.8378} m_LocalScale: {x: 4.0053, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -1962,7 +1962,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5613211205116841543} m_LocalRotation: {x: 0.70710653, y: 0.00000011520227, z: 0.70710707, w: -0.0000001152023} - m_LocalPosition: {x: -3.9999986, y: 4.0000024, z: 2.8377} + m_LocalPosition: {x: -3.9999986, y: 4.0000024, z: 7.8377} m_LocalScale: {x: 4.0053, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -2540,7 +2540,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5613211205116871863} m_LocalRotation: {x: -5.6843412e-14, y: 0.70710653, z: 0.00000023040471, w: 0.70710707} - m_LocalPosition: {x: -5.9999986, y: -0.0000019868, z: 2.8377} + m_LocalPosition: {x: -5.9999986, y: -0.0000019868, z: 7.8377} m_LocalScale: {x: 4.0053, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -2784,7 +2784,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 5757616955125662940} m_LocalRotation: {x: -0.5, y: -0.5, z: -0.5, w: 0.5} - m_LocalPosition: {x: -11.66, y: 3.04, z: 7.5} + m_LocalPosition: {x: -11.66, y: 3.04, z: 12.5} m_LocalScale: {x: 1, y: 1, z: 0.6666667} m_ConstrainProportionsScale: 0 m_Children: [] @@ -2882,7 +2882,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6334208404480944107} m_LocalRotation: {x: 0.70710653, y: 0.00000011520227, z: 0.70710707, w: -0.0000001152023} - m_LocalPosition: {x: 0.000002861023, y: 4, z: 2.8377} + m_LocalPosition: {x: 0.000002861023, y: 4, z: 7.8377} m_LocalScale: {x: 4.0053, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: @@ -2954,7 +2954,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6796968398226518802} m_LocalRotation: {x: 0, y: -1, z: 0, w: 0} - m_LocalPosition: {x: 6.2799997, y: 0.162, z: -4.2997} + m_LocalPosition: {x: 6.2799997, y: 0.162, z: 0.7003002} m_LocalScale: {x: 1, y: 1.4, z: 4.0053} m_ConstrainProportionsScale: 0 m_Children: @@ -3241,7 +3241,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 6906897417619726006} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.07999992, y: 4.01, z: 2.9138} + m_LocalPosition: {x: 0.07999992, y: 4.01, z: 7.9138002} m_LocalScale: {x: 1, y: 1, z: 4.0053} m_ConstrainProportionsScale: 0 m_Children: @@ -3338,8 +3338,8 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 7319247709792706288} m_LocalRotation: {x: 0.00000023040471, y: -0.70710707, z: 4.618527e-14, w: 0.70710653} - m_LocalPosition: {x: 0, y: 0, z: -5.1729} - m_LocalScale: {x: 4.0053, y: 1, z: 1} + m_LocalPosition: {x: 0, y: 0, z: -0.1729002} + m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 5613211205117028343} @@ -3372,7 +3372,7 @@ Transform: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 8368511245192407899} m_LocalRotation: {x: 0, y: -0.7071068, z: 0, w: 0.7071068} - m_LocalPosition: {x: 3.9999995, y: 0, z: 2.83} + m_LocalPosition: {x: 3.9999995, y: 0, z: 7.83} m_LocalScale: {x: 4.0053, y: 1, z: 1} m_ConstrainProportionsScale: 0 m_Children: [] diff --git a/Assets/Prefabs/Obstacles/Sci fi Barrel 1.prefab b/Assets/Prefabs/Obstacles/Sci fi Barrel 1.prefab index b80d1a3..08b4197 100644 --- a/Assets/Prefabs/Obstacles/Sci fi Barrel 1.prefab +++ b/Assets/Prefabs/Obstacles/Sci fi Barrel 1.prefab @@ -145,8 +145,8 @@ BoxCollider: m_IsTrigger: 1 m_Enabled: 1 serializedVersion: 2 - m_Size: {x: 0.613554, y: 0.9738289, z: 0.613554} - m_Center: {x: 0, y: 0.47924155, z: 0} + m_Size: {x: 2.0795135, y: 2.0550103, z: 3.1098955} + m_Center: {x: -0.6450498, y: 1.0198321, z: 0.24219263} --- !u!114 &5386355404380617402 MonoBehaviour: m_ObjectHideFlags: 0 @@ -159,6 +159,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 5d469cadca5aa6f47a7b876de3909108, type: 3} m_Name: m_EditorClassIdentifier: + k__BackingField: 0 --- !u!1 &5981214763097122984 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Prefabs/Views/ScoreboardView.prefab b/Assets/Prefabs/Views/ScoreboardView.prefab new file mode 100644 index 0000000..b8631a1 --- /dev/null +++ b/Assets/Prefabs/Views/ScoreboardView.prefab @@ -0,0 +1,119 @@ +%YAML 1.1 +%TAG !u! tag:unity3d.com,2011: +--- !u!1 &1856934114215259439 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1856934114215259436} + - component: {fileID: 1856934114215259432} + - component: {fileID: 1856934114215259435} + - component: {fileID: 1856934114215259434} + - component: {fileID: 1856934114215259437} + m_Layer: 5 + m_Name: ScoreboardView + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1856934114215259436 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856934114215259439} + 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: 0} + 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: 0.000015259, y: 0} + m_SizeDelta: {x: 269.4406, y: 425.4521} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!222 &1856934114215259432 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856934114215259439} + m_CullTransparentMesh: 1 +--- !u!114 &1856934114215259435 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856934114215259439} + 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: 0.392} + 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!114 &1856934114215259434 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856934114215259439} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 59f8146938fff824cb5fd77236b75775, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Padding: + m_Left: 0 + m_Right: 0 + m_Top: 0 + m_Bottom: 0 + m_ChildAlignment: 0 + m_Spacing: 0 + m_ChildForceExpandWidth: 0 + m_ChildForceExpandHeight: 0 + m_ChildControlWidth: 0 + m_ChildControlHeight: 0 + m_ChildScaleWidth: 1 + m_ChildScaleHeight: 1 + m_ReverseArrangement: 0 +--- !u!114 &1856934114215259437 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1856934114215259439} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 322f7e5970eca2243ade8350cdb958da, type: 3} + m_Name: + m_EditorClassIdentifier: + cardPrefab: {fileID: 8421649534968801912, guid: 4c5b587097a24ae4798ac097b4ec950d, type: 3} diff --git a/Assets/Prefabs/Views/ScoreboardView.prefab.meta b/Assets/Prefabs/Views/ScoreboardView.prefab.meta new file mode 100644 index 0000000..7a6ac66 --- /dev/null +++ b/Assets/Prefabs/Views/ScoreboardView.prefab.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 836394c666aa32441be58f91041a5194 +PrefabImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scenes/GameScene.unity b/Assets/Scenes/GameScene.unity index b28fd3f..4f484e2 100644 --- a/Assets/Scenes/GameScene.unity +++ b/Assets/Scenes/GameScene.unity @@ -123,6 +123,50 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} +--- !u!1 &93601727 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 93601729} + - component: {fileID: 93601728} + m_Layer: 0 + m_Name: GameSession + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!114 &93601728 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 93601727} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 412e4ad20c347ce47b62391fe298974c, type: 3} + m_Name: + m_EditorClassIdentifier: +--- !u!4 &93601729 +Transform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 93601727} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 488.70804, y: 298.57025, z: -2.6493983} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 0} + m_RootOrder: 2 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &105900371 GameObject: m_ObjectHideFlags: 0 @@ -213,7 +257,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &214096428 GameObject: @@ -246,6 +290,7 @@ MonoBehaviour: m_EditorClassIdentifier: views: - {fileID: 678372253} + - {fileID: 1374720364} defaultView: {fileID: 678372253} autoInitialize: 1 --- !u!4 &214096430 @@ -412,10 +457,10 @@ RectTransform: m_Father: {fileID: 1858832248} m_RootOrder: 0 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 399.99994, y: -259} - m_SizeDelta: {x: 800, y: 518} + m_AnchorMin: {x: 1, y: 1} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: -400.00006, y: -280} + m_SizeDelta: {x: 800, y: 560} m_Pivot: {x: 0.5, y: 0.5} --- !u!222 &678372252 CanvasRenderer: @@ -473,8 +518,8 @@ RectTransform: m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 1} m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 707.52, y: -25.6} - m_SizeDelta: {x: 184.96, y: 51.2006} + m_AnchoredPosition: {x: 673.0115, y: -25.600006} + m_SizeDelta: {x: 253.97705, y: 51.2006} m_Pivot: {x: 0.5, y: 0.5} --- !u!114 &883304828 MonoBehaviour: @@ -498,15 +543,15 @@ MonoBehaviour: m_Calls: [] m_text: New Text m_isRightToLeft: 0 - m_fontAsset: {fileID: 11400000, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} - m_sharedMaterial: {fileID: 2180264, guid: 8f586378b4e144a9851e7b34d9b748ee, type: 2} + m_fontAsset: {fileID: 11400000, guid: 125cb55b44b24c4393181402bc6200e6, type: 2} + m_sharedMaterial: {fileID: 2100000, guid: 125cb55b44b24c4393181402bc6200e6, type: 2} m_fontSharedMaterials: [] m_fontMaterial: {fileID: 0} m_fontMaterials: [] m_fontColor32: serializedVersion: 2 - rgba: 4294967295 - m_fontColor: {r: 1, g: 1, b: 1, a: 1} + rgba: 4294967040 + m_fontColor: {r: 0, g: 1, b: 1, a: 1} m_enableVertexGradient: 0 m_colorMode: 3 m_fontColorGradient: @@ -523,14 +568,14 @@ MonoBehaviour: m_faceColor: serializedVersion: 2 rgba: 4294967295 - m_fontSize: 24 - m_fontSizeBase: 24 + m_fontSize: 48.1 + m_fontSizeBase: 48 m_fontWeight: 400 - m_enableAutoSizing: 0 + m_enableAutoSizing: 1 m_fontSizeMin: 18 m_fontSizeMax: 72 m_fontStyle: 0 - m_HorizontalAlignment: 2 + m_HorizontalAlignment: 1 m_VerticalAlignment: 512 m_textAlignment: 65535 m_characterSpacing: 0 @@ -559,7 +604,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.37397003, y: 0, z: 0, w: 0} m_isUsingLegacyAnimationComponent: 0 m_isVolumetricText: 0 m_hasFontAssetChanged: 0 @@ -771,7 +816,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1125063958 MonoBehaviour: @@ -785,9 +830,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 3eafc00aae1f6b74891927f3360acd11, type: 3} m_Name: m_EditorClassIdentifier: - obstaclePrefab: {fileID: -2344530007010565835, guid: dd64cf90044eea341a44470119043683, type: 3} LaneSystem: {fileID: 106057762} - gridColumns: 5 k__BackingField: - {fileID: 1910831858} - {fileID: 1324477194} @@ -803,7 +846,7 @@ GameObject: - component: {fileID: 1324477195} - component: {fileID: 1324477194} m_Layer: 0 - m_Name: BarrelObstaclePool + m_Name: BarrelsObstaclePool m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 @@ -838,7 +881,128 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1541274382 +--- !u!1 &1374720362 stripped +GameObject: + m_CorrespondingSourceObject: {fileID: 1856934114215259439, guid: 836394c666aa32441be58f91041a5194, type: 3} + m_PrefabInstance: {fileID: 1688218349} + m_PrefabAsset: {fileID: 0} +--- !u!224 &1374720363 stripped +RectTransform: + m_CorrespondingSourceObject: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + m_PrefabInstance: {fileID: 1688218349} + m_PrefabAsset: {fileID: 0} +--- !u!114 &1374720364 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1374720362} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: ca5aee78eb03ef54eb6010fd1883d0b8, type: 3} + m_Name: + m_EditorClassIdentifier: + cardPrefab: {fileID: 1010394502502236129, guid: 4c5b587097a24ae4798ac097b4ec950d, type: 3} +--- !u!1001 &1688218349 +PrefabInstance: + m_ObjectHideFlags: 0 + serializedVersion: 2 + m_Modification: + m_TransformParent: {fileID: 1791311983} + m_Modifications: + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_Pivot.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_Pivot.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_RootOrder + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_AnchorMax.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_AnchorMax.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_AnchorMin.x + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_AnchorMin.y + value: 0.5 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_SizeDelta.x + value: 269.4406 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_SizeDelta.y + value: 425.4521 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_LocalPosition.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_LocalPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_LocalPosition.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_LocalRotation.w + value: 1 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_LocalRotation.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_LocalRotation.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_LocalRotation.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_AnchoredPosition.x + value: 0.000015259 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_AnchoredPosition.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_LocalEulerAnglesHint.x + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_LocalEulerAnglesHint.y + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259436, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_LocalEulerAnglesHint.z + value: 0 + objectReference: {fileID: 0} + - target: {fileID: 1856934114215259439, guid: 836394c666aa32441be58f91041a5194, type: 3} + propertyPath: m_Name + value: ScoreboardView + objectReference: {fileID: 0} + m_RemovedComponents: + - {fileID: 1856934114215259437, guid: 836394c666aa32441be58f91041a5194, type: 3} + m_SourcePrefab: {fileID: 100100000, guid: 836394c666aa32441be58f91041a5194, type: 3} +--- !u!1 &1791311979 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -846,29 +1010,99 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1541274383} - m_Layer: 0 - m_Name: WeaponPoint + - component: {fileID: 1791311983} + - component: {fileID: 1791311982} + - component: {fileID: 1791311981} + - component: {fileID: 1791311980} + m_Layer: 5 + m_Name: ScoreboardCanvas m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!4 &1541274383 -Transform: +--- !u!114 &1791311980 +MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1541274382} - m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} - m_LocalPosition: {x: 0.57, y: 0.825, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} + m_GameObject: {fileID: 1791311979} + 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!114 &1791311981 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1791311979} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} + m_Name: + m_EditorClassIdentifier: + m_UiScaleMode: 1 + 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: 0 +--- !u!223 &1791311982 +Canvas: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1791311979} + m_Enabled: 1 + serializedVersion: 3 + m_RenderMode: 0 + m_Camera: {fileID: 0} + m_PlaneDistance: 100 + m_PixelPerfect: 0 + m_ReceivesEvents: 1 + m_OverrideSorting: 0 + m_OverridePixelPerfect: 0 + m_SortingBucketNormalizedSize: 0 + m_AdditionalShaderChannelsFlag: 25 + m_SortingLayerID: 0 + m_SortingOrder: 0 + m_TargetDisplay: 0 +--- !u!224 &1791311983 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1791311979} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 0, y: 0, z: 0} m_ConstrainProportionsScale: 0 - m_Children: [] + m_Children: + - {fileID: 1374720363} m_Father: {fileID: 0} - m_RootOrder: 5 + m_RootOrder: 14 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0, y: 0} --- !u!1 &1858832244 GameObject: m_ObjectHideFlags: 0 @@ -1000,7 +1234,7 @@ Transform: m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 2 + m_RootOrder: 3 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1872880027 MonoBehaviour: @@ -1138,6 +1372,10 @@ PrefabInstance: propertyPath: m_Name value: Player objectReference: {fileID: 0} + - target: {fileID: 7896966939631641298, guid: 01fa89ab9028c864b8560621b7d51f50, type: 3} + propertyPath: PlayerHUD + value: + objectReference: {fileID: 678372253} m_RemovedComponents: [] m_SourcePrefab: {fileID: 100100000, guid: 01fa89ab9028c864b8560621b7d51f50, type: 3} --- !u!1001 &6347578781539172145 diff --git a/Assets/Scripts/Collectables/PowerUp.cs b/Assets/Scripts/Collectables/PowerUp.cs index a65cee6..6ae4b34 100644 --- a/Assets/Scripts/Collectables/PowerUp.cs +++ b/Assets/Scripts/Collectables/PowerUp.cs @@ -8,16 +8,4 @@ abstract public class PowerUp : MonoBehaviour, ICollectable { //throw new System.NotImplementedException(); } - - // Start is called before the first frame update - void Start() - { - - } - - // Update is called once per frame - void Update() - { - - } } diff --git a/Assets/Scripts/GameSession/GameSession.cs b/Assets/Scripts/GameSession/GameSession.cs index 6f4eb94..1fe9426 100644 --- a/Assets/Scripts/GameSession/GameSession.cs +++ b/Assets/Scripts/GameSession/GameSession.cs @@ -1,175 +1,28 @@ -using System; -using System.Collections; -using System.Collections.Generic; +using System.Collections; using UnityEngine; -using UnityEngine.SceneManagement; + + public class GameSession : MonoBehaviour { - //[Serializable] public enum ESessionState { PLAYING, PAUSED_POP_UP, GAMEOVER_POP_UP, SCOREBOARD_UI, MAIN_MENU }; - [SerializeField] private Player player; - //[SerializeField] private SceneLoader sceneLoader; - [SerializeField] private Scoreboard scoreboard; - [SerializeField] private ScoreboardUI scoreboardUI; - [SerializeField] private GameOverPopUp gameOverPopUp; - [SerializeField] private PauseMenuPopUp pauseMenuPopUp; + public InputTranslator InputTranslator; - private GameSessionStateMachine gameSessionStateMachine; - [SerializeField] public GameSessionState SessionState { get; private set; } + public static GameSession Instance { get; private set; } private void Awake() { - gameSessionStateMachine = new GameSessionStateMachine(this); - // SetSessionState(gameSessionStateMachine.SessionScoreboardState); - SetSessionState(gameSessionStateMachine.SessionPlayingState); - // player = GetComponent(); - //SessionStateMachine = new StateMachine(); + Instance = this; + Init(); } - private void OnEnable() + + private void Init() { - //player.PlayerStatictics.OnScoreCalculated += UpdateScoreboard; - //player.PlayerHealth.OnOutOfHealth += GameOver; - } - private void OnDisable() - { - //player.PlayerStatictics.OnScoreCalculated -= UpdateScoreboard; - //player.PlayerHealth.OnOutOfHealth -= GameOver; + InputTranslator = new InputTranslator(); + IBindingHolder holder = new KeyBindingHolder(); + InputTranslator.Init(holder); } + private void Update() { - //SessionState.Tick(); - // switch (sessionState) - // { - // case ESessionState.PLAYING: - // break; - // case ESessionState.PAUSED: - // ShowPauseMenuPopUp(true); - // break; - // case ESessionState.GAMEOVER: - // break; - // case ESessionState.SCOREBOARD: - // break; - // } + InputTranslator.Tick(); } - //private void InitStates() - //{ - // SessionPausedState = new PausedState(this); - // SessionGameOverState = new GameOverState(this); - // SessionScoreboardState = new ScoreboardState(this); - // SessionPlayingState = new PlayingState(this); - //} - public bool IsSessionPaused() - { - if (SessionState == gameSessionStateMachine.SessionPausedState) - { - return true; - } - return false; - } - public void GameOver() - { - ShowGameOverPopUp(true); - // SetSessionState(stateComponent.state.GAMEOVER_POP_UP); - } - - private void SetSessionState(GameSessionState state)//ESessionState state) - { - gameSessionStateMachine.SetState(state); - // sessionState = stateComponent.state; - } - public void SetPausedState() - { - SetSessionState(gameSessionStateMachine.SessionPausedState); - } - public void SetPlayingState() - { - SetSessionState(gameSessionStateMachine.SessionPlayingState); - } - public void SetGameOverState() - { - SetSessionState(gameSessionStateMachine.SessionGameOverState); - } - public void SetScoreboardState() - { - SetSessionState(gameSessionStateMachine.SessionScoreboardState); - } - public void PauseSession(bool isPaused) - { - - if (isPaused) - { - Time.timeScale = 0; - ShowPauseMenuPopUp(true); - // SetSessionState(ESessionState.PAUSED_POP_UP); - } - else - { - Time.timeScale = 1; - ShowPauseMenuPopUp(false); - // SetSessionState(ESessionState.PLAYING); - } - - } - public void ClosePopUp() - { - //switch (sessionState) - //{ - // case ESessionState.PLAYING: - // break; - // case ESessionState.PAUSED_POP_UP: - // ShowPauseMenuPopUp(false); - // // SetSessionState(ESessionState.PLAYING); - // break; - // case ESessionState.GAMEOVER_POP_UP: - // ShowGameOverPopUp(false); - // // SetSessionState(ESessionState.PLAYING); - // break; - // case ESessionState.SCOREBOARD_UI: - // ShowScoreboardUI(false); - // // SetSessionState(ESessionState.PAUSED_POP_UP); - // break; - //} - } - public void HideAllPopUps() - { - ShowGameOverPopUp(false); - ShowPauseMenuPopUp(false); - ShowScoreboardUI(false); - } - public void ShowGameOverPopUp(bool isVisible) - { - gameOverPopUp.Show(isVisible); - } - public void ShowPauseMenuPopUp(bool isVisible) - { - pauseMenuPopUp.Show(isVisible); - } - public void ShowScoreboardUI(bool isVisible) - { - scoreboardUI.Show(isVisible); - } - - public void RestartSession() - { - //sceneLoader.Load("MainScene"); - player.ResetToDefault(); - } - public void GoToMainMenu() - { - //sceneLoader.Load("MainMenu"); - player.ResetToDefault(); - } - public void AddEntryToScoreboard(ScoreboardEntry entry) - { - scoreboard.AddScoreboardEntry(entry); - //scoreboard.gameObject.SetActive(true); - } - public void SaveSessionResult() - { - scoreboard.SaveScoreboardEntriesTable(); - } - public void UpdateScoreboard(int score) - { - AddEntryToScoreboard(new ScoreboardEntry("PlayerOne", score)); - SaveSessionResult(); - } -} +} \ No newline at end of file diff --git a/Assets/Scripts/GameSession/States/GameOverState.cs b/Assets/Scripts/GameSession/States/GameOverState.cs deleted file mode 100644 index 94a3f3e..0000000 --- a/Assets/Scripts/GameSession/States/GameOverState.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class GameOverState : GameSessionState -{ - public GameOverState(GameSessionStateMachine gameSessionStateMachine) : base(gameSessionStateMachine) - { - - } - public override void OnStateEnter() - { - gameSessionSM.ShowGameOverPopUp(true); - } - - public override void OnStateExit() - { - gameSessionSM.ShowGameOverPopUp(false); - } - public override void Tick() - { - - } -} diff --git a/Assets/Scripts/GameSession/States/GameSessionState.cs b/Assets/Scripts/GameSession/States/GameSessionState.cs deleted file mode 100644 index 77a9b3e..0000000 --- a/Assets/Scripts/GameSession/States/GameSessionState.cs +++ /dev/null @@ -1,16 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -[Serializable] -public class GameSessionState : State -{ - protected GameSessionStateMachine gameSessionSM; - public GameSessionState(GameSessionStateMachine gameSessionStateMachine) - { - gameSessionSM = gameSessionStateMachine; - //StateMachine = session.SessionStateMachine; - } - public override void Tick() { } -} diff --git a/Assets/Scripts/GameSession/States/GameSessionStateMachine.cs b/Assets/Scripts/GameSession/States/GameSessionStateMachine.cs deleted file mode 100644 index 811e3d4..0000000 --- a/Assets/Scripts/GameSession/States/GameSessionStateMachine.cs +++ /dev/null @@ -1,44 +0,0 @@ -using System.Collections; -using UnityEngine; - -public class GameSessionStateMachine : StateMachine -{ - private GameSession session; - public GameSessionStateMachine(GameSession session) - { - this.session = session; - InitStates(); - } - #region States - public PausedState SessionPausedState { get; private set; } - public GameOverState SessionGameOverState { get; private set; } - public ScoreboardState SessionScoreboardState { get; private set; } - public PlayingState SessionPlayingState { get; private set; } - private void InitStates() - { - SessionPausedState = new PausedState(this); - SessionGameOverState = new GameOverState(this); - SessionScoreboardState = new ScoreboardState(this); - SessionPlayingState = new PlayingState(this); - } - #endregion - - public void ShowGameOverPopUp(bool isVisible) - { - session.ShowGameOverPopUp(isVisible); - } - public void ShowPauseMenuPopUp(bool isVisible) - { - session.ShowPauseMenuPopUp(isVisible); - } - public void PauseSession(bool isVisible) - { - session.PauseSession(isVisible); - } - public void ShowScoreboardUI(bool isVisible) - { - session.ShowScoreboardUI(isVisible); - } - - -} diff --git a/Assets/Scripts/GameSession/States/MainMenuState.cs b/Assets/Scripts/GameSession/States/MainMenuState.cs deleted file mode 100644 index b8f4442..0000000 --- a/Assets/Scripts/GameSession/States/MainMenuState.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class MainMenuState : GameSessionState -{ - public MainMenuState(GameSessionStateMachine gameSessionStateMachine) : base(gameSessionStateMachine) - { - - } - public override void OnStateEnter() - { - gameSessionSM.ShowPauseMenuPopUp(true); - gameSessionSM.PauseSession(true); - } - - public override void OnStateExit() - { - gameSessionSM.ShowPauseMenuPopUp(false); - gameSessionSM.PauseSession(false); - } - public override void Tick() - { - - } -} diff --git a/Assets/Scripts/GameSession/States/PausedState.cs b/Assets/Scripts/GameSession/States/PausedState.cs deleted file mode 100644 index a8ac27f..0000000 --- a/Assets/Scripts/GameSession/States/PausedState.cs +++ /dev/null @@ -1,26 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class PausedState : GameSessionState -{ - public PausedState(GameSessionStateMachine gameSessionStateMachine) : base(gameSessionStateMachine) - { - - } - public override void OnStateEnter() - { - //gameSessionSM.ShowPauseMenuPopUp(true); - gameSessionSM.PauseSession(true); - } - - public override void OnStateExit() - { - // gameSessionSM.ShowPauseMenuPopUp(false); - gameSessionSM.PauseSession(false); - } - public override void Tick() - { - - } -} diff --git a/Assets/Scripts/GameSession/States/PausedState.cs.meta b/Assets/Scripts/GameSession/States/PausedState.cs.meta deleted file mode 100644 index aa24be9..0000000 --- a/Assets/Scripts/GameSession/States/PausedState.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: d5275d94256270c4f9897cce8d30f2a7 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/GameSession/States/PlayingState.cs b/Assets/Scripts/GameSession/States/PlayingState.cs deleted file mode 100644 index 36f0361..0000000 --- a/Assets/Scripts/GameSession/States/PlayingState.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class PlayingState : GameSessionState -{ - public PlayingState(GameSessionStateMachine gameSessionStateMachine) : base(gameSessionStateMachine) - { - - } - public override void OnStateEnter() - { - gameSessionSM.ShowPauseMenuPopUp(false); - gameSessionSM.PauseSession(false); - } - public override void OnStateExit() - { - - } - public override void Tick() - { - - } -} diff --git a/Assets/Scripts/GameSession/States/PlayingState.cs.meta b/Assets/Scripts/GameSession/States/PlayingState.cs.meta deleted file mode 100644 index 52bdb75..0000000 --- a/Assets/Scripts/GameSession/States/PlayingState.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1e3af5d032a678c4f8d4460be58f2312 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/GameSession/States/ScoreboardState.cs b/Assets/Scripts/GameSession/States/ScoreboardState.cs deleted file mode 100644 index f5220b2..0000000 --- a/Assets/Scripts/GameSession/States/ScoreboardState.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class ScoreboardState : PausedState -{ - public ScoreboardState(GameSessionStateMachine gameSessionStateMachine) : base(gameSessionStateMachine) - { - - } - public override void OnStateEnter() - { - base.OnStateEnter(); - gameSessionSM.ShowPauseMenuPopUp(false); - // session.scoreboardUI.Show(true); - gameSessionSM.ShowScoreboardUI(true); - } - public override void OnStateExit() - { - gameSessionSM.ShowScoreboardUI(false); - gameSessionSM.ShowPauseMenuPopUp(true); - // base.OnStateExit(); - } - public override void Tick() - { - - } -} diff --git a/Assets/Scripts/GameSession/States/ScoreboardState.cs.meta b/Assets/Scripts/GameSession/States/ScoreboardState.cs.meta deleted file mode 100644 index 763f1df..0000000 --- a/Assets/Scripts/GameSession/States/ScoreboardState.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 1c9aa9860950c0f4fad343d2138fa834 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Input/AiInput.cs b/Assets/Scripts/Input/AiInput.cs deleted file mode 100644 index 1d1fe9d..0000000 --- a/Assets/Scripts/Input/AiInput.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - -public class AiInput : IPlayerInput -{ - public bool IsShooting() - { - throw new NotImplementedException(); - } - - public EInputDirection? ScanDirection() - { - throw new NotImplementedException(); - } - - //public bool ActivateAbility() - //{ - // throw new System.NotImplementedException(); - //} - - //public EInputDirection? ScanDirection() - //{ - // throw new System.NotImplementedException(); - //} -} diff --git a/Assets/Scripts/Input/AiInput.cs.meta b/Assets/Scripts/Input/AiInput.cs.meta deleted file mode 100644 index a7f31db..0000000 --- a/Assets/Scripts/Input/AiInput.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 4d090d5d1f498694295ca089f41ac4bd -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Input/ArrowKeysInput.cs b/Assets/Scripts/Input/ArrowKeysInput.cs deleted file mode 100644 index 48a4fb6..0000000 --- a/Assets/Scripts/Input/ArrowKeysInput.cs +++ /dev/null @@ -1,30 +0,0 @@ -using System; -using System.Collections; -using System.Collections.Generic; -using UnityEngine; - - -public class ArrowKeysInput : IPlayerInput //ÑÄÅËÀÒÜ ÌÎÍÎÁÅÕ È Ñ×ÈÒÛÂÀÒÜ ÈÍÏÓÒ ÏÎÑÒÎßÍÍÎ Â ÀÏÄÅÉÒ, ÑÄÅËÀÒÜ ÃÅÒÈÍÏÓÒ? -{ - public bool IsShooting() - { - if (Input.GetKeyDown(KeyCode.F)) - return true; - return false; - } - EInputDirection? IPlayerInput.ScanDirection() - { - if (Input.GetKeyDown(KeyCode.UpArrow)) - return EInputDirection.UP; - else if (Input.GetKeyDown(KeyCode.DownArrow)) - return EInputDirection.DOWN; - else if (Input.GetKeyDown(KeyCode.RightArrow)) - return EInputDirection.RIGHT; - else if (Input.GetKeyDown(KeyCode.LeftArrow)) - return EInputDirection.LEFT; - else - return null; - } - - -} diff --git a/Assets/Scripts/Input/ArrowKeysInput.cs.meta b/Assets/Scripts/Input/ArrowKeysInput.cs.meta deleted file mode 100644 index b092ef3..0000000 --- a/Assets/Scripts/Input/ArrowKeysInput.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: 047d01680e1795b449b9df2738021331 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Input/BindableHolders.meta b/Assets/Scripts/Input/BindableHolders.meta new file mode 100644 index 0000000..f1f2b10 --- /dev/null +++ b/Assets/Scripts/Input/BindableHolders.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 578519186be4e0b4691dde7ab27f380c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Input/BindableHolders/IBindingHolder.cs b/Assets/Scripts/Input/BindableHolders/IBindingHolder.cs new file mode 100644 index 0000000..605db4a --- /dev/null +++ b/Assets/Scripts/Input/BindableHolders/IBindingHolder.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + + +public interface IBindingHolder where T : IBinding +{ + public Dictionary InputBindings { get; } + public void Init(); +} + diff --git a/Assets/Scripts/GameSession/States/MainMenuState.cs.meta b/Assets/Scripts/Input/BindableHolders/IBindingHolder.cs.meta similarity index 83% rename from Assets/Scripts/GameSession/States/MainMenuState.cs.meta rename to Assets/Scripts/Input/BindableHolders/IBindingHolder.cs.meta index 25e3868..6d4bd7b 100644 --- a/Assets/Scripts/GameSession/States/MainMenuState.cs.meta +++ b/Assets/Scripts/Input/BindableHolders/IBindingHolder.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: f753cbde97f0f894ea82898f151d82de +guid: 3cf89b6e77b65764494d33d1f9301d62 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/Input/BindableHolders/KeyBindingHolder.cs b/Assets/Scripts/Input/BindableHolders/KeyBindingHolder.cs new file mode 100644 index 0000000..bcd8217 --- /dev/null +++ b/Assets/Scripts/Input/BindableHolders/KeyBindingHolder.cs @@ -0,0 +1,23 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + + +public class KeyBindingHolder : IBindingHolder +{ + public Dictionary InputBindings { get; private set; } + + private readonly Dictionary DefaultKeyBindings = new Dictionary + { + {ECommand.DOWN, new KeyBinding(KeyCode.DownArrow)}, + {ECommand.UP, new KeyBinding(KeyCode.UpArrow)}, + {ECommand.LEFT, new KeyBinding(KeyCode.LeftArrow)}, + {ECommand.RIGHT, new KeyBinding(KeyCode.RightArrow)}, + }; + + public void Init() + { + if (InputBindings == null) + InputBindings = DefaultKeyBindings; + } +} diff --git a/Assets/Scripts/GameSession/States/GameSessionState.cs.meta b/Assets/Scripts/Input/BindableHolders/KeyBindingHolder.cs.meta similarity index 83% rename from Assets/Scripts/GameSession/States/GameSessionState.cs.meta rename to Assets/Scripts/Input/BindableHolders/KeyBindingHolder.cs.meta index 6cde151..5b3e24f 100644 --- a/Assets/Scripts/GameSession/States/GameSessionState.cs.meta +++ b/Assets/Scripts/Input/BindableHolders/KeyBindingHolder.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 2f282c2255093ac46b5471697892cebf +guid: 2022de8eb7613a54191bd8026d91f42b MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/Input/Bindings.meta b/Assets/Scripts/Input/Bindings.meta new file mode 100644 index 0000000..4a7acad --- /dev/null +++ b/Assets/Scripts/Input/Bindings.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 6f8a324c8d404d44aa93328a466b7dcc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Input/Bindings/IBinding.cs b/Assets/Scripts/Input/Bindings/IBinding.cs new file mode 100644 index 0000000..66d823e --- /dev/null +++ b/Assets/Scripts/Input/Bindings/IBinding.cs @@ -0,0 +1,7 @@ +using System.Collections; +using UnityEngine; + +public interface IBinding +{ + public bool IsPressed { get; } +} diff --git a/Assets/Scripts/GameSession/States/GameOverState.cs.meta b/Assets/Scripts/Input/Bindings/IBinding.cs.meta similarity index 83% rename from Assets/Scripts/GameSession/States/GameOverState.cs.meta rename to Assets/Scripts/Input/Bindings/IBinding.cs.meta index 8ca4ea3..185b7c5 100644 --- a/Assets/Scripts/GameSession/States/GameOverState.cs.meta +++ b/Assets/Scripts/Input/Bindings/IBinding.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 9387386e152d00b40b8954b03fd7b2b8 +guid: daab747a6f59d3040812eba8edccad91 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/Input/Bindings/KeyBinding.cs b/Assets/Scripts/Input/Bindings/KeyBinding.cs new file mode 100644 index 0000000..bf623e7 --- /dev/null +++ b/Assets/Scripts/Input/Bindings/KeyBinding.cs @@ -0,0 +1,25 @@ +using UnityEngine; + + +public class KeyBinding : IBinding +{ + private KeyCode keyBinding; + private KeyCode alternativeKeyBinding; + public bool IsPressed => Input.GetKeyDown(keyBinding) || Input.GetKeyDown(alternativeKeyBinding); + + public KeyBinding(KeyCode key,KeyCode alternative = KeyCode.None) + { + keyBinding = key; + alternativeKeyBinding = alternative; + } + + public void UpdateBinding(KeyCode key) + { + keyBinding = key; + } + public void UpdateAlternativeBinding(KeyCode key) + { + keyBinding = key; + } + +} diff --git a/Assets/Scripts/Input/Bindings/KeyBinding.cs.meta b/Assets/Scripts/Input/Bindings/KeyBinding.cs.meta new file mode 100644 index 0000000..f321c6c --- /dev/null +++ b/Assets/Scripts/Input/Bindings/KeyBinding.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7afd33932b69487193b1fab31861dd10 +timeCreated: 1659607609 \ No newline at end of file diff --git a/Assets/Scripts/Input/IPlayerInput.cs b/Assets/Scripts/Input/IPlayerInput.cs deleted file mode 100644 index 89fc65f..0000000 --- a/Assets/Scripts/Input/IPlayerInput.cs +++ /dev/null @@ -1,11 +0,0 @@ - -using System; - -public enum EInputDirection { LEFT, RIGHT , UP ,DOWN }; - -public interface IPlayerInput -{ - public EInputDirection? ScanDirection(); - public bool IsShooting(); - // void ActivateAbility(); -} diff --git a/Assets/Scripts/Input/IPlayerInput.cs.meta b/Assets/Scripts/Input/IPlayerInput.cs.meta deleted file mode 100644 index 7414bf7..0000000 --- a/Assets/Scripts/Input/IPlayerInput.cs.meta +++ /dev/null @@ -1,11 +0,0 @@ -fileFormatVersion: 2 -guid: f074f90b920b2b443b4ea90f974fab5b -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Input/Translating.meta b/Assets/Scripts/Input/Translating.meta new file mode 100644 index 0000000..ec19dc1 --- /dev/null +++ b/Assets/Scripts/Input/Translating.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 8653ffb3c3b29224c9d1500cf6241403 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Input/Translating/ECommand.cs b/Assets/Scripts/Input/Translating/ECommand.cs new file mode 100644 index 0000000..51c7604 --- /dev/null +++ b/Assets/Scripts/Input/Translating/ECommand.cs @@ -0,0 +1,11 @@ + +public enum ECommand +{ + NONE = 0, + LEFT = 1, + RIGHT = 2, + UP = 3, + DOWN = 4, + OPEN_SCOREBOARD = 5, + SHOOT = 6 +} diff --git a/Assets/Scripts/GameSession/States/GameSessionStateMachine.cs.meta b/Assets/Scripts/Input/Translating/ECommand.cs.meta similarity index 83% rename from Assets/Scripts/GameSession/States/GameSessionStateMachine.cs.meta rename to Assets/Scripts/Input/Translating/ECommand.cs.meta index 7a1ad83..976a16b 100644 --- a/Assets/Scripts/GameSession/States/GameSessionStateMachine.cs.meta +++ b/Assets/Scripts/Input/Translating/ECommand.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7ebb13eb65ce218409f20b558895e326 +guid: 4e8ad21640370fe4d912969b1b6c35e7 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/Scripts/Input/Translating/ICommandTranslator.cs b/Assets/Scripts/Input/Translating/ICommandTranslator.cs new file mode 100644 index 0000000..029ed1b --- /dev/null +++ b/Assets/Scripts/Input/Translating/ICommandTranslator.cs @@ -0,0 +1,6 @@ + +public interface ICommandTranslator +{ + public void TranslateCommand(ECommand command); +} + diff --git a/Assets/Scripts/Input/Translating/ICommandTranslator.cs.meta b/Assets/Scripts/Input/Translating/ICommandTranslator.cs.meta new file mode 100644 index 0000000..c942dae --- /dev/null +++ b/Assets/Scripts/Input/Translating/ICommandTranslator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 6f6f2342ea03c8145ada8bc167817032 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Input/Translating/InputTranslator.cs b/Assets/Scripts/Input/Translating/InputTranslator.cs new file mode 100644 index 0000000..d287c11 --- /dev/null +++ b/Assets/Scripts/Input/Translating/InputTranslator.cs @@ -0,0 +1,54 @@ + +using System.Collections.Generic; + + +public class InputTranslator where T : IBinding +{ + private List inputTranslators; + private IBindingHolder bindingHolder; + + public void Init(IBindingHolder holder) + { + inputTranslators = new List(); + bindingHolder = holder; + bindingHolder.Init(); + } + + public void AddNode(ICommandTranslator translator) + { + if (inputTranslators.Contains(translator)) + return; + + inputTranslators.Add(translator); + } + + public void RemoveNode(ICommandTranslator translator) + { + if (inputTranslators.Contains(translator)) + inputTranslators.Remove(translator); + } + + public void Tick() + { + if (inputTranslators.Count == 0) + return; + + var commands = new List(); + foreach (var keyBinding in bindingHolder.InputBindings) + { + if (!keyBinding.Value.IsPressed) + commands.Remove(keyBinding.Key); + if (commands.Contains(keyBinding.Key)) + continue; + if (keyBinding.Value.IsPressed) + commands.Add(keyBinding.Key); + } + + if (commands.Count == 0) + return; + + foreach (var inputTranslator in inputTranslators) + foreach (var command in commands) + inputTranslator.TranslateCommand(command); + } +} diff --git a/Assets/Scripts/Input/Translating/InputTranslator.cs.meta b/Assets/Scripts/Input/Translating/InputTranslator.cs.meta new file mode 100644 index 0000000..9250583 --- /dev/null +++ b/Assets/Scripts/Input/Translating/InputTranslator.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 8ba46ea1364ff1e44be4c15ddc91d704 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Player/Player.cs b/Assets/Scripts/Player/Player.cs index 3bcb49b..7f5cd64 100644 --- a/Assets/Scripts/Player/Player.cs +++ b/Assets/Scripts/Player/Player.cs @@ -7,7 +7,7 @@ using UnityEngine.SceneManagement; [RequireComponent(typeof(Health))] [RequireComponent(typeof(Statistics))] -public class Player : MonoBehaviour, IResettable +public class Player : MonoBehaviour,IResettable, ICommandTranslator { #region StateMachine @@ -35,9 +35,6 @@ public class Player : MonoBehaviour, IResettable #region MovementControl - private IPlayerInput input; - public EInputDirection? InputDirection { get; private set; } - [SerializeField] private LaneSystem laneSystem; public LaneSystem LaneSystem { get { return laneSystem; } private set { laneSystem = value; } } public CharacterController CharacterController { get; private set; } @@ -50,7 +47,7 @@ public class Player : MonoBehaviour, IResettable private void Awake() { - input = new ArrowKeysInput(); + GameSession.Instance.InputTranslator.AddNode(this); animator = GetComponent(); if (animator) PlayerAnimator = new PlayerAnimator(animator); @@ -73,9 +70,10 @@ public class Player : MonoBehaviour, IResettable { PlayerStateMachine.SetState(PlayerStateMachine.PlayerStartingIdleState); } + + private void Update() { - InputDirection = input.ScanDirection(); PlayerStateMachine.Tick(); } private void FixedUpdate() @@ -141,4 +139,25 @@ public class Player : MonoBehaviour, IResettable SceneManager.LoadScene("MainMenu", LoadSceneMode.Single); ResetToDefault(); } + + public void TranslateCommand(ECommand command) + { + switch (command) + { + case ECommand.RIGHT: + PlayerStateMachine.IncreaseTargetLane(); + break; + case ECommand.LEFT: + PlayerStateMachine.DecreaseTargetLane(); + break; + case ECommand.UP: + PlayerStateMachine.SetState(PlayerStateMachine.PlayerJumpState); + break; + case ECommand.DOWN: + PlayerStateMachine.SetState(PlayerStateMachine.PlayerSlideState); + break; + default: + break; + } + } } diff --git a/Assets/Scripts/Player/States/MovingState.cs b/Assets/Scripts/Player/States/MovingState.cs index f3e26d8..6f38663 100644 --- a/Assets/Scripts/Player/States/MovingState.cs +++ b/Assets/Scripts/Player/States/MovingState.cs @@ -9,7 +9,7 @@ public abstract class MovingState : PlayerState private float laneSwitchSpeed; //SO protected const float gravity = -9.8f; private float invincibilityTime => playerSM.PlayerData.InvincibilityTime; - public MovingState(PlayerStateMachine playerStateMachine) : base(playerStateMachine)//, PlayerController controller + public MovingState(PlayerStateMachine playerStateMachine) : base(playerStateMachine) { this.playerSM = playerStateMachine; speed = playerData.Speed; @@ -21,7 +21,7 @@ public abstract class MovingState : PlayerState public override void Tick() { - HandleDirection(); + //HandleDirection(); playerSM.HorizontalDeltaPosition = speed * playerSM.PlayerTransform.forward * Time.deltaTime ; playerSM.HorizontalDeltaPosition += playerSM.PlayerTransform.forward * speed * Time.deltaTime; playerSM.UpdateDistance(playerSM.HorizontalDeltaPosition.z); //вынеÑти в контроллер @@ -36,26 +36,28 @@ public abstract class MovingState : PlayerState { playerSM.VerticalDeltaPosition += gravity * Time.deltaTime; } - private void HandleDirection() - { - switch (playerSM.InputDirection) - { - case EInputDirection.RIGHT: - playerSM.IncreaseTargetLane(); - break; - case EInputDirection.LEFT: - playerSM.DecreaseTargetLane(); - break; - case EInputDirection.UP: - playerSM.SetState(playerSM.PlayerJumpState); - break; - case EInputDirection.DOWN: - playerSM.SetState(playerSM.PlayerSlideState); - break; - default: - break; - } - } + + + //private void HandleDirection() + //{ + // switch (playerSM.InputDirection) + // { + // case EInputDirection.RIGHT: + // playerSM.IncreaseTargetLane(); + // break; + // case EInputDirection.LEFT: + // playerSM.DecreaseTargetLane(); + // break; + // case EInputDirection.UP: + // playerSM.SetState(playerSM.PlayerJumpState); + // break; + // case EInputDirection.DOWN: + // playerSM.SetState(playerSM.PlayerSlideState); + // break; + // default: + // break; + // } + //} public void SwitchLane() { @@ -80,6 +82,9 @@ public abstract class MovingState : PlayerState playerSM.HorizontalDeltaPosition += playerSM.PlayerTransform.right * diffX.x; } } + + + } diff --git a/Assets/Scripts/Player/States/PlayerStateMachine.cs b/Assets/Scripts/Player/States/PlayerStateMachine.cs index dcfd493..871dad4 100644 --- a/Assets/Scripts/Player/States/PlayerStateMachine.cs +++ b/Assets/Scripts/Player/States/PlayerStateMachine.cs @@ -34,7 +34,6 @@ public class PlayerStateMachine : StateMachine public Vector3 HorizontalDeltaPosition; public float VerticalDeltaPosition; - public EInputDirection? InputDirection { get { return player.InputDirection; } } public bool IsOnTargetLane(float position) { return player.LaneSystem.IsOnTargetLane(position); diff --git a/Assets/Scripts/Player/States/SlideState.cs b/Assets/Scripts/Player/States/SlideState.cs index 98a1842..981f114 100644 --- a/Assets/Scripts/Player/States/SlideState.cs +++ b/Assets/Scripts/Player/States/SlideState.cs @@ -5,7 +5,7 @@ using UnityEngine; public class SlideState : MovingState { private float expiredTime = 0; - private float slideDuration = 1; + private float slideDuration = 0.9f; public SlideState(PlayerStateMachine playerStateMachine) : base(playerStateMachine) {} public override void OnStateEnter() diff --git a/Assets/Scripts/Player/States/StartingIdleState.cs b/Assets/Scripts/Player/States/StartingIdleState.cs index e1ed2b1..6925966 100644 --- a/Assets/Scripts/Player/States/StartingIdleState.cs +++ b/Assets/Scripts/Player/States/StartingIdleState.cs @@ -13,7 +13,7 @@ public class StartingIdleState : PlayerState playerSM.PlayIdleAnimation(true); //Session.SetPlayingState(); //Session.ShowGameOverPopUp(false); - playerTransform.position = new Vector3(0, 0, 15); + playerTransform.position = new Vector3(0, 1, 15); countdownTime = 3; CountdownBeforeTheStart(); } diff --git a/Assets/Scripts/Player/Statistics.cs b/Assets/Scripts/Player/Statistics.cs index dc81336..3eed60c 100644 --- a/Assets/Scripts/Player/Statistics.cs +++ b/Assets/Scripts/Player/Statistics.cs @@ -12,7 +12,7 @@ public class Statistics : MonoBehaviour,IResettable // public event Action OnCoinCountChanged = delegate { }; public event Action OnDistanceChanged = delegate { }; public event Action OnScoreCalculated = delegate { }; - + [SerializeField] PlayerHUDView PlayerHUD; private void Awake() { ResetToDefault(); @@ -27,7 +27,7 @@ public class Statistics : MonoBehaviour,IResettable // } private void Update() { - //CalculateScore(); + CalculateScore(); } public void UpdateCoinCount(int amount) { @@ -43,6 +43,7 @@ public class Statistics : MonoBehaviour,IResettable // { score = Mathf.FloorToInt(coinCount * coinMultiplier + distance); OnScoreCalculated?.Invoke(score); + PlayerHUD.UpdateScore(score.ToString()); } public void ResetToDefault() diff --git a/Assets/Scripts/Road/ChunkGenerator.cs b/Assets/Scripts/Road/ChunkGenerator.cs index 7d5255f..2d74c29 100644 --- a/Assets/Scripts/Road/ChunkGenerator.cs +++ b/Assets/Scripts/Road/ChunkGenerator.cs @@ -4,9 +4,7 @@ using UnityEngine; public class ChunkGenerator : MonoBehaviour { - [SerializeField] private Obstacle obstaclePrefab; [SerializeField] private LaneSystem LaneSystem; - [SerializeField] private int gridColumns; public CoinPool CoinPool { get; private set; } [field: SerializeField] public List ObstaclePools { get; private set; } @@ -14,7 +12,6 @@ public class ChunkGenerator : MonoBehaviour { var obstaclePool = ObstaclePools.GetRandomElement(); var obstacle = obstaclePool.GetFromPool(); - chunkToFill.Obstacles.Add(obstacle); obstacle.transform.SetParent(chunkToFill.transform, true); obstacle.transform.localPosition = chunkToFill.GridPositions.GetRandomElement(); diff --git a/Assets/Scripts/Road/Chunks/Chunk.cs b/Assets/Scripts/Road/Chunks/Chunk.cs index 84aef8e..916eb61 100644 --- a/Assets/Scripts/Road/Chunks/Chunk.cs +++ b/Assets/Scripts/Road/Chunks/Chunk.cs @@ -35,15 +35,17 @@ public abstract class Chunk : MonoBehaviour, IResettable,IPoolable private void InitializeGrid() { - float chunkLength = (End.position - Begin.position).magnitude; + Vector3 chunkLengthVector = (End.position - Begin.position); + float chunkLength = chunkLengthVector.magnitude; float rowLength = chunkLength / gridRowCount; - + Debug.DrawLine(Vector3.zero, new Vector3(0, 5, 0), Color.red); foreach (var lane in LaneSystem.Instance.Lanes) { float lanePosition = lane * LaneSystem.Instance.LaneWidth; for (int i = 0; i < gridRowCount; i++) { Vector3 gridPosition = new Vector3(lanePosition, 0, i * rowLength); + Debug.DrawLine(gridPosition, Vector3.up* 100,Color.red,500); GridPositions.Add(gridPosition); } } diff --git a/Assets/Scripts/Road/Chunks/Grid.cs b/Assets/Scripts/Road/Chunks/Grid.cs new file mode 100644 index 0000000..7bacb93 --- /dev/null +++ b/Assets/Scripts/Road/Chunks/Grid.cs @@ -0,0 +1,21 @@ +using System.Collections; +using UnityEngine; + +namespace Assets.Scripts.Road.Chunks +{ + public class Grid : MonoBehaviour + { + + // Use this for initialization + void Start() + { + + } + + // Update is called once per frame + void Update() + { + + } + } +} \ No newline at end of file diff --git a/Assets/Scripts/Road/Chunks/Grid.cs.meta b/Assets/Scripts/Road/Chunks/Grid.cs.meta new file mode 100644 index 0000000..904f19a --- /dev/null +++ b/Assets/Scripts/Road/Chunks/Grid.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 35f1bf07476c18f45837c70890f81b2f +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/Canvases.meta b/Assets/Scripts/UI/Canvases.meta new file mode 100644 index 0000000..9066c67 --- /dev/null +++ b/Assets/Scripts/UI/Canvases.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: e4d8b2a96b7c5ea48b8aa7a588572e05 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI/Canvases/PlayerHUDCanvas.cs b/Assets/Scripts/UI/Canvases/PlayerHUDCanvas.cs new file mode 100644 index 0000000..7ac4c2c --- /dev/null +++ b/Assets/Scripts/UI/Canvases/PlayerHUDCanvas.cs @@ -0,0 +1,16 @@ +using System.Collections; +using System.Collections.Generic; +using UnityEngine; + +[RequireComponent(typeof(Canvas))] +public class PlayerHUDCanvas : MonoBehaviour +{ + public static PlayerHUDCanvas Instance { get; private set; } + public Canvas Canvas { get; private set; } + void Awake() + { + Instance = this; + Canvas = GetComponent(); + } +} + diff --git a/Assets/Scripts/UI/Canvases/PlayerHUDCanvas.cs.meta b/Assets/Scripts/UI/Canvases/PlayerHUDCanvas.cs.meta new file mode 100644 index 0000000..1c6257b --- /dev/null +++ b/Assets/Scripts/UI/Canvases/PlayerHUDCanvas.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 049a56a946ffc8c4e9e87d811e72d09a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Views.meta b/Assets/Scripts/UI/Views.meta similarity index 100% rename from Assets/Scripts/Views.meta rename to Assets/Scripts/UI/Views.meta diff --git a/Assets/Scripts/Views/BaseView.cs b/Assets/Scripts/UI/Views/BaseView.cs similarity index 100% rename from Assets/Scripts/Views/BaseView.cs rename to Assets/Scripts/UI/Views/BaseView.cs diff --git a/Assets/Scripts/Views/BaseView.cs.meta b/Assets/Scripts/UI/Views/BaseView.cs.meta similarity index 100% rename from Assets/Scripts/Views/BaseView.cs.meta rename to Assets/Scripts/UI/Views/BaseView.cs.meta diff --git a/Assets/Scripts/Views/PlayerHUDView.cs b/Assets/Scripts/UI/Views/PlayerHUDView.cs similarity index 100% rename from Assets/Scripts/Views/PlayerHUDView.cs rename to Assets/Scripts/UI/Views/PlayerHUDView.cs diff --git a/Assets/Scripts/Views/PlayerHUDView.cs.meta b/Assets/Scripts/UI/Views/PlayerHUDView.cs.meta similarity index 100% rename from Assets/Scripts/Views/PlayerHUDView.cs.meta rename to Assets/Scripts/UI/Views/PlayerHUDView.cs.meta diff --git a/Assets/Scripts/Views/PlayerScoreboardCard.cs b/Assets/Scripts/UI/Views/PlayerScoreboardCard.cs similarity index 100% rename from Assets/Scripts/Views/PlayerScoreboardCard.cs rename to Assets/Scripts/UI/Views/PlayerScoreboardCard.cs diff --git a/Assets/Scripts/Views/PlayerScoreboardCard.cs.meta b/Assets/Scripts/UI/Views/PlayerScoreboardCard.cs.meta similarity index 100% rename from Assets/Scripts/Views/PlayerScoreboardCard.cs.meta rename to Assets/Scripts/UI/Views/PlayerScoreboardCard.cs.meta diff --git a/Assets/Scripts/Views/ScoreboardView.cs b/Assets/Scripts/UI/Views/ScoreboardView.cs similarity index 100% rename from Assets/Scripts/Views/ScoreboardView.cs rename to Assets/Scripts/UI/Views/ScoreboardView.cs diff --git a/Assets/Scripts/Views/ScoreboardView.cs.meta b/Assets/Scripts/UI/Views/ScoreboardView.cs.meta similarity index 100% rename from Assets/Scripts/Views/ScoreboardView.cs.meta rename to Assets/Scripts/UI/Views/ScoreboardView.cs.meta diff --git a/Assets/Scripts/Views/ViewManager.cs b/Assets/Scripts/UI/Views/ViewManager.cs similarity index 100% rename from Assets/Scripts/Views/ViewManager.cs rename to Assets/Scripts/UI/Views/ViewManager.cs diff --git a/Assets/Scripts/Views/ViewManager.cs.meta b/Assets/Scripts/UI/Views/ViewManager.cs.meta similarity index 100% rename from Assets/Scripts/Views/ViewManager.cs.meta rename to Assets/Scripts/UI/Views/ViewManager.cs.meta diff --git a/Assets/TextMesh Pro/Examples & Extras.meta b/Assets/TextMesh Pro/Examples & Extras.meta new file mode 100644 index 0000000..07a5d20 --- /dev/null +++ b/Assets/TextMesh Pro/Examples & Extras.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3ad31a9a5343f194d87f0f4172c99c29 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Examples & Extras/Fonts.meta b/Assets/TextMesh Pro/Examples & Extras/Fonts.meta new file mode 100644 index 0000000..37020f0 --- /dev/null +++ b/Assets/TextMesh Pro/Examples & Extras/Fonts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: b63e0053080646b9819789bf3bf9fa17 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Examples & Extras/Fonts/Anton OFL.txt b/Assets/TextMesh Pro/Examples & Extras/Fonts/Anton OFL.txt new file mode 100644 index 0000000..0ad6de5 --- /dev/null +++ b/Assets/TextMesh Pro/Examples & Extras/Fonts/Anton OFL.txt @@ -0,0 +1,93 @@ +Copyright (c) 2011, Vernon Adams (vern@newtypography.co.uk), +with Reserved Font Name Anton. +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/Assets/TextMesh Pro/Examples & Extras/Fonts/Anton OFL.txt.meta b/Assets/TextMesh Pro/Examples & Extras/Fonts/Anton OFL.txt.meta new file mode 100644 index 0000000..7963e08 --- /dev/null +++ b/Assets/TextMesh Pro/Examples & Extras/Fonts/Anton OFL.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 73a79399807f4e8388c2cbb5494681ca +timeCreated: 1484172033 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Examples & Extras/Fonts/Anton.ttf b/Assets/TextMesh Pro/Examples & Extras/Fonts/Anton.ttf new file mode 100644 index 0000000000000000000000000000000000000000..4ef73dcea3ce9738ec97b2d6bb9d91b27bc1e151 GIT binary patch literal 42376 zcmd4433wF6)&^YFJxel4CbMKFdooLACi|XD5<>Qb0AWplge4@9ghiIfCLkgTvcwHV zP!Lf;Q4z0$px}-xiq{2Ku8M#wR|OT9%aZB&->RN0aP@xo|DNxEo`0aLyQ`~DRh>HL z)H$b4bqFPd=#VG~si|ogHmP#Bmyic%Avb13eMa_+N0#162wjW&mZ`H_J0tg%y9fzb zMu@m`>Y@b}YrAqgAz{zqxzy1)ZT8CW?UM-!P9Q|RXo>sRq{ zghU1qGO=oUduv0bC2fN(Pxq zaG~CWgc4DFl&&XALX=ySIVc-1pT#4jgHcukC2~663bBej*vO+S1llA#Bx!P z+YmTi*p6qcFGTsdst_j&p+Ypf2b^7abOJ{=87fXD@rvanPyCqV26W+kmc-GAiAA`A zlnJv)n)n1s7k(zW^fW0FR+Do285tnflT1Z686><;%nBvRR%l3;BALV}LP>!lh1807 zkuZgYR49`0j**NNEMy$Y<_S-bM&S@?ROm^mIvaKEB}VacGEO{6%EfM+n{gE2_<@uw zba+R=^=l*oZ5t;hk#Q;w8K=)`m{9%#8K?*$qtV}TaS!g_AxT0ZNmrQ3NO3I@lxPFmtQXf2g*XSe ze1@2*mrO?e8RCm1nB)Ee86y5cip4X)=f8l9H;GfAq*Z)|xW)HKrSf|8shFfFUMA^c z8_8w&^atNjQA-@cc~XqA7$7VJPP+(Iq?1XC0+LF9AeG|3Xf}PCM2U64|3Ol(yqhGe z%1IJ%mkYdSahx-}Uv?<9zCXk-floFD{P11C*&qnM_c0EmaIV5J5jZBjW5CAY6v^e| zfotJCz-M`E9OQ$I>u5d>f5+H~zz=Z#XNU50l7ReTHU|9p$p6Ewp5&uE3= zh_$sDOevpx?)_)rkLCXWo&Y`hY5L#Jcs7*LnnLIE;Y@(zndoOH&R^sFJ9*gsO zoHt=ChBLZkd?7e}<2i4DJ{f;78ugz?u(SA!e2;!Nh-t(m*olsf9m8M0^AOyRz%isJ z5ACktcs)f*{bzo!tRb6 zcJK2s8sX#Acb3Pk@BWhKjK4XLG5%&e=I3+9YmDFh=TMx3gt;Uc@XG zPOORslCNGwDiy=gM$89_1js40O}K?rE60H!?!h~gh#hTDzB`ex$fl5lhaOioNPZi?m}4*e;UWRYx=Lvl$T$tP}7Knh6_89<83KvF_VK|AH70(4eIs!0tQL~6-k zGK35zbz~SBPDYTCWE2@q>PZ6`L&lPEq>(g{@niz1ZW3uGlSvC{MR#r>tI1l@MQ$f| zl6%N@azEKY9wZNto#bJ%i#$ReCA-Pr$YbPj;vr9vePl0rlI$l>k!Q&>&@y@6aw z+DJQ@LD!J0KxuQy74%lJkj$i;$r`emZX)yO7J4_CMi$ZabOUH`4!x7iB3IMd#%kz2^EWIef=+(9zk|WO%~5-em#s| zE1di$1UFVI-mp|hOs}$dXp5!VQ?qD#S9MEOS}NTWq^Y!5wrkQ-$sSD*E`xC8NwjzF zp@}7wUkHiSMSBDi5W=eUh>q&kHqXdWjn!4rR%;W_Bb6MMM^))jb6A!c9<-U)37 z4+F^GLf=L;qNB1FFXN0?D{G^zAa4Hq4^4`eJAh_*0(#q|KqHiWZIbKx%cjYtS%Z=+)$LXN z8h8m%-0%kaq5XL~1%?YhGSGwoHk`Gr4{50at}S>R;1SSIp2bEn!r~z#Esgeedy^eB zR5r4a4GzOKAK#(%_MxN3H}cW;Q%S=mck=Us-e>+Rk5CB$tV!X6%Epx6590T|x3!l& z9^CWT(iLDITHnQLw)+7ROV?lz0m+tuT?-7ka)q=8lG0w&YPaYtHC?R-d@H7O?I|nk z>a1>=UIaeqvJYClFXv{VS6iamC^cGR9Sy0(6N}ODO+B;Y{W95 zY?(Q#X3?Ca_yzOY;^$Q+#dpqWi=R^w9Y3QrDSldeTYNk6rna`lw<51;R8su7F>Uc< zkXJvdEq)a8>Z+3Bht#&k*HpE|SK+?0TpwS7!qn@Q@qsDtwYdvJl_z5z3 z+;H>Fq#|~xCl+14FSco@X9X@u>>e|zXiD+_XbMT8DMD?ud{!eZuQmt}}FqpK_hCYjmLym&}y8zl> zI^9GcpzqLgf=$R5YK5^vo3L1TO88g|6X%JW#LpGQicZCc%3S3TWt(!b@+ReW<+rM4 z)%B{wYC)Z;90pfg~7z}JCcfo*|11Ao&5Ysxg^HLEncG;e6W z4I)8dL8(C%LBoTZgZ2e=2Nwt55qu%U8FGEd?vU3*e$;BU7VRSKcI|tixuIJ^U)7m) zb-L?y_vsGne%4#`W%`@+TlC)=P>~_QFvZ|8oH0fiQ;jQ(cNl*RD+!wtwjk`ourEz2 zlg%{Tw8`{<>3!2Vv&x)kE;G+E-)?>{LWDLVKjQj`TOzhZ z?2LFK;)RIA5g$i<8EJ@&i%gEpkF1Cs9yva8LFCJk??iqY`EBIcNGU2gYEIPBsMS%o zM{SGR74=kfLG;?_JEHH4-W`1)`qk+7qCby56_X!R5i>kyd`w5oyqM)NTVpMJiTgC}+qkoFQoJVK9B+$Hk1vX^i60%`96vLDQT+Asx5V#@|04eT_&+RyMGGs| zY00*fScX^{Ep3*YEO%KRuy`!bS>CXGXgOi|(Q?kJu*O)kttHkW*0I(p);ZRt*4@^l zHjT|}v)R&ZMYbB-Xxl2=3EPjhb9RMYXOFQb+H>t?_Bwl`z0KZfUuIux-)aBU{;mCN zf;OQfVMxN*geeJg5|$>cPPjc`Tf(k{rxIRHcqif0gl`khCP)sA!|bp*(j7&P8pmkI z3dc>3yBrTVJdWoaZ#X`5oN)Z;IOkM3!<-gpsuhkgIOjN*IoCSxaBg>coX>vq=@u7j=(^G3w$EPkzU6r~m_3Jc4T5eixT3g!nY4_pZJ86Hgf9XPcRJsi| z?NCDL9>^0Bma1m2LPrgxv@|ozXcg_E-l`u;J8C|yp&hEii_4`UG+Fu>@5GDGi|*cc z)CN(0huTFeKXN>6(6DE*RD51o=3ON$1HTHeSBYXU-iwBntJ`nV>2(1H1$&p*n3sb} z`C+oFb4&nc+r_ar|m`(aHtzgvWri*r)R>Yk-JD*zd??0AMy*+fzyvjG| z@;58zte2%J>4GE76c#7sWS59;QLUxMuyA(?N@HZ=gg}Emt1c_0@Qpjl z7q=DvP&(ks8yAk;EA4iqtsPv_InhnCgSbBYW!NiKj z+7St3o*uMir(^KaVedb;@vi!RO!`b3*;-JN(R}|cqS~5Nm0*gphbXAsXlNG=`Lhki z(W#{l&@Y9b@p-y}(>>vIp4&s=cvj~7Nhnpl1Wyj3nfi1^o?b`XdaXK)jh#?BsB3LU z8C9JRcSW1DfeK*+4VJzVlP6sF>LOtnjiwg0^t&Qd7iUZ|WQIg`|1xv}V5R|PDqu!p ztq%Ry7t?f=OK&ETG)yb1(~3t3ia@O?+7*7Ds>(Xnb`7Gzx(P$Y(8!QXLy|F07pkB^ zYUzaZjd$;&SFf9p%)E^0!Z+e7^g&P5dl=t>)x*Uc(H$N_)h?smsCK2%?PpR>*}q*N zouO;NN1F9?4=3Pmyf+Md*K^TN&lef&%d#7HpfdYO%t9IpM;N#81r(# zN#I_SJummYQ}4ZZ3M`29z4uUekExqgM{I*@j*DXpL|%Dn27REG#-B zKFV8GFmNE+h&5TE9k>r+ZB$T!^E|bpD_X&>&n^+@5E?Dr7@RaeJ7&tvI#uEMLyEO3 zLmbt|5`Z1nL1wB5yIh9UwD$MEIk<+{Nqj6a-qTP(G@N<^8fRBBL(RiCdlOvj!tnAL9kVN?7f^SW@3i<9>MldwX(C*jtZpW+xFqGwD&*y+3*b?;p2=0nErGSh zSpr68Os*BwaUwg>GjkuBTR>;1Oo_Hgn^_ZTD@qB{tD2^ab-46`bcaBT7w(>W#l!Q9 zLlVkzD{BCJ-c!b`8QZVia<@4t-VoxfDN3s^aZpNg>YC@9ZONwG;`!S<(sO3qH{0Fb zP;Rh{>6kZg-o9lOjBW%HgVl{+R0Z(DGRy}ESk7Xtr+Pb3Z`HFA$kB_x)JV5_zoe}~ zy7$f3g;MEV=@%MGgB0=IYT-jpe+9l%;%6AYG(d?K{tO5C11WIevY8lMYd8~c3UpZ^ zM9lD9TTAB{W31YIm(rLJ-zGgT4wBR~Z^^KQV+yTWt)sl{rihFwn>r4REgNK0*OVTO zE6j)&SBmSUy&qUpCxc%Nz^TYtuQxZ&s3>^1fq5hZ4jJP25ZbqoN6 zhJOxm=eyZhn9(3n%w*G_o3+<&6YNd5OdXUQ5g-^6YTEBh`a6qhw>>{WAX=>#gyn7Mz-wWS%!BUg=jT3zTWutymq z63qtbc#tMEG}iR>#mO7iHx~(`w=B=LO&M_$$7L9y;!VJ%1+9+?2$gw(6SC3`)R{oK z_@AtttVu7g&#-0NBXohH6e=!Ox$-M*w(0??f#a8t&5aGBi@*8elbN+MhvzvXgXlnC z=Cp;YhmYEKzc105N3}K4T(vLJ?TtLC~KU#xU}x3tJ?=9j^6n0HIk=c z_x-ob7^p~el%+?AcXrf`iB56nLu#S@W65dyoZK*l-t2(7>c7&5WJEgu$hKld*TF}PZ|O5b{SqE)u&;_ zLAc%fIvp$R5{d+?^bqZM@gSWhJ<9r43R*s?+5)+pg0V@_VRGT}B|A>Z2392r=&_^ox)-umTJtFmHrN>{!%EY=Vr-F|UD^zJQ|{QB_= zXH_hDee2j=^u7Rdbaqa|$bog^M3ZB1?(Nd+ht5xvu>k$rcTi1L&6xZc2E)uyprB6L zv`U(3RM{;=&!vI_!dM46?R2SRLWh(J2hXwcklS2ZsAc_2tVnj6EjpDo%VrK%QaU*G z*)FM3x*}uD%585QUHJeFd~9L%KMvjXSVHluIZeY-@9&y1E0HR*y#_xYj?)2_(SATo|pcN}77Adq*ndMWiesJoRx37d254;<};M*WW)X+Ra zo>U8}03iUFXQCadq+M+_LQTsN&UmEVkx!VVUHhoTlChjkt3Us&DwIC*DgXwQ0Bni- z0VfJNK_*5JGc$vOxm9mv;?fjDwF)(tt!d$I)ZY?o)?E!31;< zPYhSs$8NszhKQhbIR)jlQC6*D=nz%mgNIZ>c3W*yu`?ksq-@ainylsfZmt&oDP;?b z4%H1hXHK$)Z$pR|bRh8hBj9xlG!#XkHOQ}_P<m=#Br*ADS@P=m9=2gMg<9KBK ze-{1MU@cO!7XcUjdLN!?M6IG8RkD8TnG_jEzj^IRs(ALjtHeN+RnzXS3Q`rm`M5XY zr|*^V-B4`Ch=y_H3^wJsO$Y3t%OJD)k^dVf9F%s_I%yxh5@Yg~^rrNYv{8Dq=iP9; zi}lk>T7~I>z02O*&fdg(Z+1&>d(-;iE|Y{lB?e{%i@Y;T!Lx$iEs->rt4AsmkjJzY zZd@_-1ydnY2gI1-=2xYa#p9MwD;~0VTt!N>Rw;ROu@Rwh4wFVu8j>t|_GY?k&1QO9 zc;d>3C*+5kQr)9Q%xx)O?#wo+brGcn#ooK@nFX=+lMYa0cS|20p5}Pa?GFqH5JW+y zRj!Ay-hkHdk3NYmHSeU&(stnkZB?!g_M%AoL1ZZag z%9ubqBrx0n>BKrOTb44DgLLyyRhWvt-mrN|EuH9097*Zavxdy^>l^8MX-A6t#vr>& zG5F%xgC~2&;Y+~Oz-kW^)By?>1SnhW)GESi=S>&J(J8N;kv6bFnTUqFy6+Pe-QBoa z>8ArLU??wdI}__Ibf&8Cg2YDMU!QU>$_A6LGK~hvQVEIx%2}InWfJ8TMsv+sd`Nor zW$AB1#2p)iSZSBynu{w{h21ZSrO=(P@z=|EJ5X-Bp!CZK8SfmBQ7`V79`;BN)0x{D z8pYV|uh43hZ~@({@ckn0R1JZ>k)v|jNLgQmHBF#!sSfNTV*p0EFdbKt_GRqXHP>J3Z=BVs=o1V!+#>0=J zpIUfVE|Xxg@|{8>nMI8@I_=}=k%?V1-PVyCuDCTUCe~#PQ@g8Fg_*NnT)Xh0>&w0C zl;P5~Vo+pCRpyM*Y)lv)#zOb4fy~X}l$9Ikmr6Z83)yy3hpQbb5sD?ORUuu8xyO$M z`rEu+?O8`Z`^V8KcU~o(stQXr>IJ1bL>CbksSi;r1&#wl*;QLxMRMrau|r<+>Xl6| zY}e3%$q7@0tHq=cmp%@?SL=1LhJ;Xu=)Iw*_dWe*G!uuIiI68F0~CVTGZ$ns^33M8 zhsaD29gHIIzNlv^ozqUAm9`2o^^2-p!J^Stot0Gp!CV@t@)g8Gr@c7p_BVDWa`C`6DpeD-IPu< zxWg%@NWi%C`kUe@*A+zi$L~kz#0FQIebA_l`~LBQGGNM<#l`SA(bQ;ooIc7OmKGBv zmIT@X`@glp6)h^r@`sOO8|$# zM5jd$u7e;af&$b62vQa}P$uAs6j@^+>gcg~(%sK*qKy+q(WXt$fpX@0Zxe?LKX^|F z7O$!M3BdCG1X!~GD*%0h=<3%e*qVStg$8M#^c|fvWeS}rof3i-Y2L4en2R5v9X7l> z0`IapPti9Mb6JPPMt4fri7II{y@zIqAJIJNlWx28HoAa!TfhhmFMNz4GPw>zduEn{ zhrJ&Q$x6$`^U`-1Y32^WJF%$G?)RGrJ$@7BXru?Eb~=l0QGItl66LZ0dqNLv9VZ6R z51TPDbzM9xBzr$TthCU`^M@$hRg@%BkGNeql;IW17>2?q?D<97Ja(+K`4{ET?slQx z`CwNsdY{Xw`>VK6U7of|hxARr+Q+;Zu|rND}yM ztMUvYqu^6{(iLP6jiGE_Lc?-l?B=^+2d4*crwH@$_9#uWR4X+7;6KgSgBPRdVAj?%}ZloV7Xh22(> zmX;dlbh@(cyHE8`Y1c#=5E_$MGJJNKH*Lg<`cjKgsTkqC>B>=ci-gWeU9P#&7mTpVp+cgqFj(+nA*~n1KvOP(phPPHKQ>xJtQ(# zFVNXPz1VomQwZY@IdW#(*{nZ6VFH9+g@i( z${I3g>KNfp@7qdK3}e>kf+Hi6W3$3DltNB;s@oQmlg`>(g7$iVuS7(}6tOjEQm)2S ztB1*_hhtJt#7W37B6iP?BL@f12*Ygxj$9n#B(8@s|4e?4MGv<(L#W@=4Tl56uT~Jb zx4~?JUyq&{d3{s4GhBW8BkECj&ry}m5fhsb3W?I@Y~8mc#%WLq4;!p`qZ(#SED$EV z`pv15x zhNX0gVksgMOG{6eo@Q2$J=cxufqWAqyjY4H{T1bkfoJDen}cHX!v`tWWqjFjHujj( znQWAPxOlZZris1;@deGS>faz2m573{GheuBO@rIY+eqA}bG4<&YS5;Y)N6)B9D67Z`rn5`0d#o|q9wI8V z2{8>BpJxqyclh+?`Yk21R*w*J7VemssB;Z-KXTEw?wOfs%KZ@;aZ%pyV_fdIy99Ge z1Cv!qz?A)FN}Fj@6nxH7%ftJh zym*a5qq1wZwa;Kk``A&q{lO z@*V)fkM~Jo04%1n2WXWHL#4PFi_f_0R4zg3`O7+atW<9q5Na z4+1aTr>>$5Cv0NYTj@dR4(?Is^(g;-vI7vECY#dy8l6mK*HCKMON zT|Cx{6Y(|Brx`fWXjRY{`s2jJnkNr5sGiw{7$NgjV{YCm-Rn$_N`S9ld2Dy<#61Tt zUae@!sEu_LTcR$W#JCNFY+!UB49Kv$f+AE9W8CUu_NGieu(lx0+3@AsurgWp^Ls~r z{ziH)V@Srs2Ks?8{*&(RPrN&SIHlfcN znOtQPj!U1}JLRM+>^AxW8|P80Yv)#{=!M|$jLPYiYie8>$q7`{=wrhgo>6TYH8p+s zg5|@!p9x~^(A7g)vmL|4ZtvVtBSuXYt_cszh>VB2CcvjrBR+?IMD_276-|L+fq-R# zpk%@WkFUh}Ivn641RWEy2gge|j^H?n;};yf9~2k7ADF<|ti+8kX52FY!raYBkdFwN_REnhG^ zed?(5GZnvVg}s##7Vcd+8GT}Pa(S@3k)b5mDT%`nJ13v(b@J ziOSC(nl}3Cg_4F&i+0%36EEHXkbuc_nTG*04-{kya%cG|h`RV3hgkv^0+tfs!qB^| z;j&nSuPy`LeK>m=<;GGWLs01~W{0cnSVc=#tm@bIq$+`S2>Q54U9Auj>rQ^LWSCvE z>b3bFoK(aXh9#y%B|ArEY|on2)KQlB$uausRi1>5FxA4i=)A-t%ZAJe?W4-(KRo>7 z<1xIA>DXOCRVP7eHjuZnx^B^pf;b_dcUJGDz`TRD9Z?l0Ct&%@p@Pz5RnP@&8$tU zo;$r(G3nwD^M-|5;<933CNkVZ4v4E!R{-RK8qyAuu1EgE*I+esR2O0@WawBj1X>#L{o8f!$jJCRGK-dNt$_- zwl|Gae%^hBxbZ@QxVd|pe9hVe6o}6t&Wqb3ngIAruq{CrrkB_vr~SL!cx2RB`T=%_jmu4IWR({Gv_*!lM-{xI_#B;E=c;RTM*S6 z9hTQj(aw0IR;5t9`QjT`Qy2BoVfsm3V}>O<5)$hg)=mu7#%M!D>38+Z&#HnF?E}J- zb7#MV zaJ@Ew>84>={A7fP1zCgufOX-sphA>Fr8UMoqfOQrqfVn1h3=n{3Zk`CXU<7XN_OU& zb*hMgnLl+a-c$u;q?ARuLd`)+!~+ECHPO1{@B#M3Al0)kt7(wPTR(AaLtSEmBXQW6 zu1Wf^XuXJ4{x?{=g2e#w3B~Ks9tgFmT~OlVAQ;@?aC4>$v@X?lcFB>nX|2vw``N3H zB-IxU5*LkFKvVMbM=X#&uqE4=oE}0bWp=O}52O_QE9q`yj**S#5JUs9B^x#!Uw?7A zssI5&oDPZ+U-LA4A1T0BUb+h54+eis4LJ4R%?QNRJTYkAu)=tw^07A`yXW~!t%>LF zxw0)FrD*hsj?p6g%EAx1-+!K!Z$titkID&{dyjG?sMiUD7fkNb8EV1}M|NIJGKgd~QmRC>^7b zrAs?1T)+#~WT+Q%tc$NLU{qXcmm9XI+vR49!{P35wHeVbYL`l6QAbQafU0|O*~F%e z6Y_G$ZyeXUWbu@7o5ttokKfcZ>FOzS=Da$0j$qAe+B9Lxf`zT)H#NHR$88+n`s0-G z8yjsF1Quxj;$N!Q9_;sjoHU@XnRiykhL9=yoT3>Kup4r`trK^sp_{6Y3deBZcw z^=fHfR~P;4gt(mfCAzOaQF+SaIaSH}(+a-0kMo6E<_t`>R(c=f4$dLMxqk`gP|l5b zfu*2_EbL7pSQHoeV6eV(eaMQ@V5W~4&f=`pSY*Lm;mor_kmnnL1Q)}GP#9g9KQX3r zSy$H=2M)b2y{l+S&5bV1n-J4^P1lWI960hh9ieDSOjjfw&YnrDLgTH`DWQei8&^$l zzxBqKo__P1^n}njmRGc+an-bGH_Lf+U4B}1)qpeybXQ+wgSUHsa@RhV< zIo96XY+;Qru8CL|dRsXfdTuZzDZG6!#p0-?gzD0%MI}0Qh6Ibkpc5391ayb>gfG%y zPDU6E>nWe222yIMT>TBzezSV@H`3W}-fr|DcC~}1dpy$n(iZ7`;hkSQR$RGc+N$T% zqxF%-bVbJ!>C0blx#d?Hht!*UXaB+;4}E0EXA5T0+pfE|ed^}+VYWDFT9m7tc~S&~ z5#J!30{$}?cl?Dr1Ox~lWbaJs;C3~4h@@mBwdHtVH!H+|fS}O80n(53{^vzSVSeG% z0n)eHX~ik!<;l_1R;G^%Ru0Y)PHh`ml@U=)X;ge-L`_2G6 z{=>=RLS%oj0Lp~=!o0;M?k!$>`H*GzA5dEN0<|Jq%%oE2k}M+*1cZl$Wjd@v*kuDJ z{ImbKN~5J^Vnc+hygWV5mG97mULn0m>%t;50?od6cplfid`DFUfDo^~PlhR|!M0 zHh`8IA=}`2V?+k&0_e;*QRgvf$&5#}-NiIu<~>of z#SRrsUv|ymAd@yICY*{vhB#A*IwwCfB0{9}@06}y+O0M?W1V*Ma^dO~H@CH0619rV zAx1+=M68xRmYg@rY)v%SZte70vvV98y>rsI+qbaxP*oxQTz!^}ficgar*K9V9{*H& zkUg6OJ?mZQL2Lz8424m^<{-bCs^*@(J|*=ErleX%2>T#<%O~n)a?bOYWo_ADBk3`l(rr4XT=Z!}zf)$GIcU zA5y9>oM-K<6h5Gjh+f_YunHs{GFVtI=KXB%IieqkLW-q%jL2yGnOvN0aEbtK~^G<1NOY;sY z?0n(LvyK6d8?g0r9{plh`_w~^O15VXh}U?Z%}k{!nL;)DN{K+~AzNBzIRQhH@he@vYJUiICD36I`&*GAzw z??x(n!;^eIRiM9K7IUWm%UWRr{uSGO(%Xc?auaU*6F$7WDd!{pnlBZMAC><=yK>>X zt;8N<&EA2!JQ*MVFZmP*GhTu)n)Y9EF4PT<(BJy-`QJ0M_Xc2lQa@}9h;RG}KESnv z#qg;2K#+pJu(S!U0=$yYaco+qk-*Fp`C6WesS1L+UjPpsc3A)qopW)&v_;=Pen)Eg zllUFgW~O8i?8)cxECJW(T)^rAve%$uj-E^M7t$zl<7N5dbS^s8_XoN8viut4&+vUu zuD>*2eFpGn`p#ZnKClkur;%EfTP{xoz$A(@IPlAHVPR<@?@8Zy%H4`|joNA<%x`dh;wTbtvlPd=M6+|usY zj$n>?JZ@vVwnPr+xYcAZE{Rz^n})L(j_~<0E2o{4qd1h--f#`cCJY+f9n}-jK^J;` zGJo^6c0V5P;CL+Hc>$R4zTK+q;mW?P#gG)MHbR4NQV5xU;at; zMV*sQHD+C2Uj04tXQ;8{b_tw&)VBlvOx?eg4-Dq=v_pB$|At5sd}ovoz{gvMFK)Cl z8iZA>MwCAD&-iEXe_OJKo1kZ@Q1)^1RYH;WTfL@yi7qc!p&2-%I0H_gfN*o!?DFg> z3&#!k(}nE^Mvr`!EhzqLoH5Q2q@-9*40BJo&70s~;T9(6I3F=2q!yahdVNGhw#_)8 z`JvfwO#Sm!@1;xSRmbm*PFGQ4ELI$+ZoHvBQ>g1(02ii?T(|^FkD$3?%mGgW2M*>J zF#Zn<&3VQ@Q$vgY!}9ZE{U-wPng6^J?Y{WhrLzHOfUom{X4oA3Dq&Pp%W0-Be<2;l zX{Im#d6{OS84Vz}ue?kf5&iSw!=|6hH2DsLe%4w*TfepR9PjDAMRfYEe-RzHg>50eCi4+ny5>thY`);@XMUVN z$#FiKmM+phTLb4SMgh5-$?n+#!($2>cmCbM-w<6|*T7aqBVEe29E76Jpj zFAo$ySSgJYf~;~s`PzsdUxzuq8hQWw@)y#P9A9#N9cbcp8D9yk|H$ntFVm>Ce?DI` z;P4mHG7blt2WYF_H%NTnAHzZ%Jgn|N#jCvXKgO#_52?5RHvuc45#A=bttVMqS&JC$ zaGhEG9QdG0n3(Ckgq8JwiUH}!0&&jdtP^4pYD11oN!gI?z!Wf)YKC~ z{{L@z#_aiM@`xltc^3EcnoO&9MyrfPSiZ~)GOtOz{e9(Mkoz0P`g=)vKW+Q| zt-MUz(Y(KSgTePUvwafa@lf);G#HTj!4Fu5{-PZEdo3L;RH6J(HvjnBZ|Ch#;c(cz z^g+OHY>tIbIvH?K680~?lBdu^k2S(-fPWfZHuyv_jk1GHrI9qxZekJpSb$|Q`;Cp# z_MI$jU$NuU=kWXV;v_iN(st~CPK+OqF^ch9Xnq)cF@()G+?B~fJ`4P!%G7 zy3|ZefF#4;hGVU@553buaF z+r;)aC|3B#@C!bMd@qo1JiZ$Gq53Em?oF79;#Pj{-0e^?;4&VyqnEa*Z$wV1G^bjVO zQI6#c@YVR+vxUn7ULIe=`=zHn;*EXfk^dzSD=@5y4$!)i#RxF0Ll4Sxm?p5j8Qnh% z*jm8$XRsY|r+9fCUJ8Sr$@lZ|m@t&4hgiIjG+0pJD*&9oYBeeapY6 zj3}Ak(3OW8^j20Ij9|7PkJZ5aZ0F5`eB%jiD4&1Nq=vf}4_c4yH=BhYdiJ24&uQ5* zyC`!~*MuC-8(3#xF>DsuV)r-M4DY-v57i)o!oSen8@(pclv_a zIR3f+#xEzjIp1gVe6ElC=d}RN_oI1!Dcd9CmlGHMtvuJMR7|d*bT9lz0**l*%=GQ0 zKjTS1_yO1P{1@pR{x`6c0{uFI`ynAcllUS*0wX#3pM#;-t#`6zR%L{@-uoeqpuxg6 z>2Y}3pQqEiSC(hT#Ye~FR+@%nuK=&funNjhpFeW1 zpZU#}t6@wb5IR?m)CJ1<3I)^gb8U`(al1UeZ*ynILw^>wyXMZxGtRTPKcT}Pz$?f9 zwY2l~G_sG1ZWxR#b96sLz<8MzbZx2eMULN1(Z;x!t zjqT0f;g{!>!|zvK)+tmBK1$2*q03;84dfuo=~QHiKcDI2h@V3~O0xVv+OCS;om0nI+qGPn`O?Am4yM`P4_nY{`^3%vH zRl}v_{r zax8z2oDT|AcKLbZJ3h|vnW0}i<`A^Y^wrbc_cNa5`~AG~y2Km2d@(OC+s@pt`8DGu zre*b(m;J@Q*ZY;XfnG-Vd06(}BUA?UT97~3&%;(OQzr3zUf!>_f6VdRue@xhkoWnx z$mKzY;yOS5%Kehd!v`bYAoJu`teq&0ANDKwjtG@lEykx15JcTG(+#8|DDTp33iQ<3 zYlp>z+Dz&(WBgZB#812b$+jxEk`2NhYU0}#a4r47+ur9(Z^H^SlMnJ3_W4ZO`uj}e zH8Gh61z9Iv!{Kn>u77TncwZl4`Eq#~m%_(f9`-9Q<5D=xammZ`b&7`qK874#NZ%q~ zqdl8BeC}@wc$VjXNZv&L(>z~ZGh}n=6}|#agHV()RQ~;Oo5uVf z+DT>PAOWntcbE?Z&xoLf>xVz%?*SrPBa`bf@p}4fMGvQSeCM0jgZUJtdu&}+&%xe$ z`rcvoE~`h=TMvKFHyCD!Cr)OJlmhSyqpaGhJ^z{5?|0br!ilBX~WR>mXP7Ch&Sj^ZxYcI1JW>-g^4I0loF~d&l1&LvKCudzrAgG5>P?fpVMMKc6BW^DoyQ ze&+d@hf$AzKIQrMaec!-SIKiF&mYFiW6r`H+J6ts<#ybE-1)Nd@L?t^5)se0U40n3 zJ^8nNhw8&U2A(We`jhtc=sf3zwyb99V@bm^21rX#;YpCwdz-y50%9WGg~5# zB3_v9rx55oOVk&6YbH7y8!Dnsxo??lugw~$@-)r7{yIbq7i_wdM+{@k5GDAb_=oDW zYztDCG2DoQKD6_|xA{AdeXsbih#sFM)w7i0Lmp!;R0*_SpzR)c#{^%pR)~gVHqF*2Y;RC5uDv>^* z3>{38i_c)*aN$O;!#4%3dF&HN(ALwb4M@_5g`4pY**Q+O5^OPx_qQ&US_DOSXn-cM zCQ(BLy(&s-S=#zO-Tl7eLCGq;ddDCCqC#-O@_U3u30W>zR)V*yG3T}@jrL!E+(C=! z@k5_|#_DcH@@k(Cqq)BiW1KXR*@lqK9aMiV0kTZCR~wMe?OWuVc|I&w@KB~SMCLi< zlXC`?_wyX`InTit{1eZYc}~_Ft^sdVk{9@TazDL+&pAD7TU>8|&xGk2to%aZEj~wG zUVb6|(hOUb>Q`RY8?d#A&6)kmv-zIPB;WVxC0uV9?)Ou@&h@;$dB7v z;QJW2S-d@!zWaFlxgO&?!}cX{vtS%nw%4=gpj7r5-yi#e`C3X8-z}`h0#FhQu zMGfp-oP-cwllS3E8r54d)?0mH;*Gp*sMr5e&%37n@5=A^-^3mVjDZSuLMMZ%4Mhv} z!2%FQOLy$wPiO7hCw@&6X{z+0bd=)~6d>wRp2-rv1Be+vEH06qbM(TbefY6=_wUE1 zfvwU}=~Eo|)(N0EaWLyFiEhApoEy42i_VpUSC`d4L=zrYWD5TAhzeY@7tRb@pmcMIy{pJ|Ld=A{^xIU zYBK-wgPZ5a{Ey${RP6i9xBpK+*V+BRfAvjId_R&Zgj5BK*~VPPzq6J8?-AMl0hdU5CEMgZ(EI!8}|6>#GK5ba9U#5N4)&?XNwjYHrh5Jn$hJ1|ZzsynpFew+M)!T}@ro07p6bN+9t+H> z6|Y`dz&-{!W7w%X86Q{D>(v49W2u=%Zp1DW#vllz!-**$I8_R@_e#HSQx^QZ0e_fp z)0Lfcv*cA3p6bpL-^DSld$VG{w@X-baj-az2}|e?z8~O^z72C6bVQoz%FoF*=)*)U zbO9b5jL*P@LuFy!F=|8_O654leCo>o?%vN1W(OFZIU}dv)--wjghI16zGUnTqnqak zO{grphU(+9Tq8pDs`%tYx3cBCA<`c{GFb{8e$|SJWAiMjL$ADMSoOMXtLK)vsx#Nk zi|o#$4fc(@^5fETVb7s$>5vI4m4p3yfzkgtuJ`tKKf0d^mdc&V!58)`2TN~tL*TP9 zYeo52IDWW1X6O-L!IBCK{y_wD@P*&-5as^2`am_l{nj%VVEv`K|F=ca0Oerl7_hAw zafn$Qf?CsgFn5NLfKaz<31%v|k*i4J~ zDd=JHmuwN$!}cH1Y{WLI%`V`d?XeJQmv4wK9bS}}STwveeq2{(=K5jr1M3Q$u7aTh z<8Ps3CQq)b8}v$TZBtW?xNvKbYhdS)y7{H9;4uU9M+7;F=MElp#ejq$Y4a_E1`VpI z8N_g6hmBk;+sF>?VCL>%C_9<*zIu5pzlnZo$e2>gY-B@NAT?#R@oSsumF!_dl3*lj zqQfE-C3z!io!nw({e(`9eP!<`{%T*@^#5vK*?;%lJk!Zm$g^pigKuSbl;dtE*6$r2}!y(e__e6>%0weQP)7r&ABF9__L(Bk#Vt*}`! zlThq*6Ya1apk&gr)t1$(Ez-38^oPBBC6n-`_j|!Cn2}@sh?Jw~ z{_NWcY-VDOx#SxP@5%fBFaMMRTk2B9!boj%-rCYKou(463pd5Axfb~ z%6_0s_?e(N>C}jrcpKv@V1+A4ybt~7YdP4j%6m`CXezos_#^tm5&EWR?oL(Qb`i5B z;Q03tKm%LM>4Q;;fWHP>!!GDLObr2IKCpQ!{sxp1e{rc1>Eqatt|T6^4IDNAV;e}; zU{y5`e}6QX1X2R)N5ji&czF#kui@o`P?G)qtXuKdrGoHu8`8(IEj$QMw_sLC^F57p zjqgjOkHbdOk}%&fwhriHUs8zjeFfNIND;-%Q3Ebk5QFqC(s1A3k*4|HLb}HH2GUyq#eh~lfpk6o5|#nA--*!;!AjYvI+ zc25T#1R=#YuaOS%oj^JlE7s{K^8!*2{wi1o+6-SA`h~v<$RTHP$XWb4i(luEK)jU$ z3`QUg^{q#0@V$dH9DUCL{7;Y$z~9Ws;l0j5dw#+78uZbPGH)TZ`#wkdH|Vl%Kz;+M z2lQ5e>vc#yWIjeB6wt6E$M-4HaEvnhdZYnq8d_e6_Wuhh!%rc`NQ-n0+E56X@kk%X zM;QtM=Xs1}D8{7-aE>F50tSiz;S|y#SZyf+gkO+0@%%Ly(;`4%6!18C7pVt-3}paH zo#5&XY(Px0ZmyXCPgV)zcE>??&nYZIogxjvy@r21>y@$B{Ong{9z{W2BU>@O^~H zs3=fN6=?4(r0}>QE%N<}wAl9)i!c*X{zNJyBoQzsZXkpJ3PUm`BgqU-CLpw0imm^3Myu9V*Pyj-tDYvc+iKg@ zJ*VBZe-`(&TD8{tXSG_O)M^!1Jw1K(xHzToEfg9*G&B*N~)k2H9mfgu|=(Ls6HC#Yht#Eq)i0u|| zAt_twK?m6DDy2uap}SjwmDtX-A?gOIxhk%X_+0+c@;Pf{yU)d9B>}vOb6{{GOz{>b|3)`!-DcVszcJ$cMTL?1y&;Y zHBk6HkTC{$rU_rjdUK6Qzm|~qIO}gd(p!rh{s2rMnRVoP38>E@Tt}Lp1L+OG1>{{v zxfQ^Le8lGhVh`|kBdx9mW_W(OkXA7S99Fk;dSIIK_SO@=2{@!K0}gY>Unk+`0W+*p zI|;uDIIOml`z%^!0{QF#UWHUIfs+^24$^M`X3+f((ys*$^ETr;w0tUX5qw?`Jb`o` zw323S(RuugS83Ax0JwP0 zk?IS;#q_d4^!_K{TE>|{EJoe}USPcj+(2&~MCRm`H0@*;DGvZU3|vDC*=73IE^_Td z2OhLGL>(Um`Z?oqh&m1f%V}vtw2axnMT|T{)b~N)dbB?T|KC(Y@>#3~ho}WDMRpqe z3WKNlw97D*w*yNU;fJAoA22{$8iwXcz(vfb!_d4HxE={}jGelTlm0%-954*cuK;%% z{0f7o)%~&o>OUbxT748aq|IU$ch45I@eB*`FI8B|+*^}2>UzarU+zU*rGk_UY2^``a%QWfRIA(mI)`QkF^znku`V#L;_ZEyA zN1zq9o@IV7;H)#Oj}-|15J4l`pgzy+*f?g!i96nsAAM&%Z9T!>`>}GB$A&Omzdjme zTI6p=iyLpaHG}6&e!xFiY38z{=ByK~3^uWv@?NlKth}*=S#bi+3XRrNC?nUqt^Z~W z{G;_E^Xw70(falgkQgN?WAP{&WTf6RQWC6W$LWyjQ`S?366cRb$YPK6HnY!fkq&W zetp}e9W6Mr-R0A@-l7HVXFMn{J6I1}cUza~)VvvR9XkfZm=J3G7}pb=O#dD0F~Yw^ zn|sH?wkF?Mk5~`n-)r1@m-X`q=eDSka&*&LZ@Q`M?1#3oELkh9F`j`m%oz9<&xaqv zO{`rak#Ur2JhLvc9RmQD8gfD0?K?$1^s&xsE%9e_rgfUZ)Q- zn(~~koLW}$tah-bm8M$AS%2bL6X*7kLsRMg$ zKH~s=!_ly5L1UMLq)dMvD-|@Iao?2*QgYf{Hs{3payGZ?)B8ruGDnT_5%YXV9Y1jS zoG?azJ=C$%7`3M$>)&cE@gA&zW5hbFp6wNY{wLkhbNO0g-g-YvnYrr?x1HFbyj?8l zsMoDJLibdl!SP4vU&kG5hlED9=OdI>RstV}d;1xJJtCa@JTcbTn=AD&+}bO8XHLnj z?z6cIN%zCGmXWIp>hpn15uDY^Arg1n(C--g_cMS0l2m5Roi}$oYgw0?;hv`@)&<#d zDo3ec%?iFTApiT$+U78_96_^0uHqXE73R8F{k!l!OfKd3WYNr`D~n!sV(j>eV*QSK z#N~a=H`SLcz0tRO(&>|S*s+s-U0SWN(i=oypmLGTTaet{?UHOn_ zX*PEu-^=&dJ@*uf(P7@MY>f9Y_ww!bCHa{v8?Sw8;9MH_ziVHrqMTzq;5>K1eUP8I z-2A!**^3&z;>MIeUb))6`|D%2e#R=-w|nyT(c=Ae6}S2C)H)g870~D9nJe%}v3LV>!^zDr_=ov#v6W9O55O zNWBwk`}FU;dmYxu8+paO?-^;g%D_V4bOM_SMVPSjb1}!W6P3ND=IW4(Hb_0;_T|>nPB9>HQKe&(pZTn>Y z`!mgfcC3CId%FJ8lyNnVU)YY&Tye9bDLXdf35>u+4kI!HY@nb8rtm zZ>EEnsB&p`a4+FK4(?N@$@d+6k_yNN4(?a;i?%s9Rvbn8WFze=RY~y_Y;MGZ%^9{h z+M-P3LT`S+!HekCk2<*i2JzDl?ooaTI(P||9#syG)s*P7O*I{#S}t)1pF~|=c5pxc zI51ziC(UG4UG$I>&Y2^{#q6;r;AI=qiLuw#gJnjLk)RXXjv%8!2ut-a*hW$W**lGr zE>4a(cM*=Eh^RiSBW7_|t9rSDd35^CU6gp8OXuw(rCO5Mye%2)?nwpzp>syCDijU} zH*O1Vi6-NTcrelx>Fb{rtnKX$nl$~vWVAn;+!E~~XD!91OyR0Fo=U{^U>Jqz0Sb;# zgldg;5A;Sr@)>p6tTAk6Y3RFb1(jXADZM6Wh}Rg_3KhD_)TbYL*>VV*kuQX-)T(H* zKSnjevqB+m4`tX536ft+D8erV^P0^l($p2%L|B4d<*_7giy#>54@QEiWTY$F7fEgk zCN4Tyk_U?-UuRC0ZHc253jBZ440Ib!!E6mX(6f!lZsBna&$zJ=M1 z*`_Cz+FUbxc7JCwwmH>5t3TE|E0OG;-O@;$tCVcJGBYh5)KX}nfRnEgsLzqmr>m4O zXZo0(Il&FPodEmelX*i@fjwCz?^BM)X5mCEE2bKot-oPR`xs-}sp$4^8Ef@nQKvDk zeVjfwgZcLp%&}*}{cO|os<2b4#)4ulwi)xW%&5WEXCZbvXR}AX7`E$BTRnCLjqI>5 z#WG+yb_Pw@T{Khc^ReG)RV$ds+n9^nnb|t930aF(#|7AKtY=R>B1P(}>hsuZJ<9(2 z9(5%aZr7=QQs2O)>ss||>^iYq#8A20pVomT2c2G|<#{3@pqie8vh|$vf z&{kaSLSL7l!z4N!K$Bb4R{l|PDRu(e)Tgm4_zbokcVp{ux!S>DG5ggU>igp3*r8JK zOPK^X*6%M;&RN(~q(WJOHL+C6NBEri@p1yE34D|f1e_$(IGf{Sz9oK&oT}ba?@JKN z^S_h7m+5jE|48^a|4Eo3XUHdHrku%F+Gnc|)U$j}E-Y0tN2=wMGFRqtLcjv4k+ak* z>Q(;x^C>x77GXD8D|NC&>ZL&%(@e;q+(z zL-U%nae89Atd5?daXXut5iOI$42eOHi`T7{$Usu0V z_enxF%O!jcxnEK;AX{XsT*^Tk+vU^p8M#a@=leH1>TL3s5g3PS*MHpmvkjkkvnPfIXMFU?i?C8r!&#l7qOWQbm!faEp_vj^|-ia>BdOX(*y7>OT~J-qTZPC ze9N4g#GINevuhHwMYqi1Ip&CNxl6I^Viymbo5w<6Q{IiYDbhKRih6sE7ih|h3iRgP zc$;i#^cv68L{&Y#0B^IMKW^u5&dU;r=iPXl?fh|Dn(@fyM1Lxo*xVB>ZisgmN8{bT z7N@2Or=~4-O%ui|Z|NC`cSn)~eZ7%^RCyx*&f9A9khFPd%_}yL%)9Zn+B_s}Z-t$! z-*{y!Txpf{yLez_9)UnA@5Z~*CX+IrXQkF(O6#x9*581wzc!~<15T~l>{<;NucR#* zi+7g{XjtBsU#Iec{5xNpqvruf&+RUUWn1&`jy!yui+k7Db=__}|C(Gw^>5Firn83Y z?amvnueR?S>`onSnB%K$Fu8q^s4cOU{@zG`kBui>+~lhY*@FUWMCab7Qx&r5SA}f) zRUvzjs0z(>(#>=H`HsK9@oOEw&heKxe!b&2IDVt;hn@1nPWfS{{IFAg*eO5klpl7= z56=s%$WwBlKkvq&>~IoxIGJN}JSWsxvLe>q7tyK04b_GozKIPt%r)iX&+)c*CnF4g zTWzo12++ILc%|)Ku_(*tSbyo(EN0WIGxZHO)YW@C?2Oxtr(>%^^Qt`!1IdKBaYWfT zztM=IvCdWjewC-Wt*Ob^;k3wYwy)PnOuPJ7K<^ESzWwPniLmi6A6lUOpPd!D`F{b} C#7GkW literal 0 HcmV?d00001 diff --git a/Assets/TextMesh Pro/Examples & Extras/Fonts/Anton.ttf.meta b/Assets/TextMesh Pro/Examples & Extras/Fonts/Anton.ttf.meta new file mode 100644 index 0000000..1375b4a --- /dev/null +++ b/Assets/TextMesh Pro/Examples & Extras/Fonts/Anton.ttf.meta @@ -0,0 +1,19 @@ +fileFormatVersion: 2 +guid: 997a43b767814dd0a7642ec9b78cba41 +timeCreated: 1484172033 +licenseType: Pro +TrueTypeFontImporter: + serializedVersion: 2 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 1 + characterPadding: 0 + includeFontData: 1 + use2xBehaviour: 0 + fontNames: [] + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Examples & Extras/Fonts/Bangers - OFL.txt b/Assets/TextMesh Pro/Examples & Extras/Fonts/Bangers - OFL.txt new file mode 100644 index 0000000..13e7fbe --- /dev/null +++ b/Assets/TextMesh Pro/Examples & Extras/Fonts/Bangers - OFL.txt @@ -0,0 +1,93 @@ +Copyright (c) 2010 by vernon adams (vern@newtypography.co.uk), +with Reserved Font Name Bangers. +This Font Software is licensed under the SIL Open Font License, Version 1.1. +This license is copied below, and is also available with a FAQ at: +http://scripts.sil.org/OFL + + +----------------------------------------------------------- +SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007 +----------------------------------------------------------- + +PREAMBLE +The goals of the Open Font License (OFL) are to stimulate worldwide +development of collaborative font projects, to support the font creation +efforts of academic and linguistic communities, and to provide a free and +open framework in which fonts may be shared and improved in partnership +with others. + +The OFL allows the licensed fonts to be used, studied, modified and +redistributed freely as long as they are not sold by themselves. The +fonts, including any derivative works, can be bundled, embedded, +redistributed and/or sold with any software provided that any reserved +names are not used by derivative works. The fonts and derivatives, +however, cannot be released under any other type of license. The +requirement for fonts to remain under this license does not apply +to any document created using the fonts or their derivatives. + +DEFINITIONS +"Font Software" refers to the set of files released by the Copyright +Holder(s) under this license and clearly marked as such. This may +include source files, build scripts and documentation. + +"Reserved Font Name" refers to any names specified as such after the +copyright statement(s). + +"Original Version" refers to the collection of Font Software components as +distributed by the Copyright Holder(s). + +"Modified Version" refers to any derivative made by adding to, deleting, +or substituting -- in part or in whole -- any of the components of the +Original Version, by changing formats or by porting the Font Software to a +new environment. + +"Author" refers to any designer, engineer, programmer, technical +writer or other person who contributed to the Font Software. + +PERMISSION & CONDITIONS +Permission is hereby granted, free of charge, to any person obtaining +a copy of the Font Software, to use, study, copy, merge, embed, modify, +redistribute, and sell modified and unmodified copies of the Font +Software, subject to the following conditions: + +1) Neither the Font Software nor any of its individual components, +in Original or Modified Versions, may be sold by itself. + +2) Original or Modified Versions of the Font Software may be bundled, +redistributed and/or sold with any software, provided that each copy +contains the above copyright notice and this license. These can be +included either as stand-alone text files, human-readable headers or +in the appropriate machine-readable metadata fields within text or +binary files as long as those fields can be easily viewed by the user. + +3) No Modified Version of the Font Software may use the Reserved Font +Name(s) unless explicit written permission is granted by the corresponding +Copyright Holder. This restriction only applies to the primary font name as +presented to the users. + +4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font +Software shall not be used to promote, endorse or advertise any +Modified Version, except to acknowledge the contribution(s) of the +Copyright Holder(s) and the Author(s) or with their explicit written +permission. + +5) The Font Software, modified or unmodified, in part or in whole, +must be distributed entirely under this license, and must not be +distributed under any other license. The requirement for fonts to +remain under this license does not apply to any document created +using the Font Software. + +TERMINATION +This license becomes null and void if any of the above conditions are +not met. + +DISCLAIMER +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE +COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL +DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM +OTHER DEALINGS IN THE FONT SOFTWARE. diff --git a/Assets/TextMesh Pro/Examples & Extras/Fonts/Bangers - OFL.txt.meta b/Assets/TextMesh Pro/Examples & Extras/Fonts/Bangers - OFL.txt.meta new file mode 100644 index 0000000..c1a298c --- /dev/null +++ b/Assets/TextMesh Pro/Examples & Extras/Fonts/Bangers - OFL.txt.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: efe0bf4ac872451e91612d1ae593f480 +timeCreated: 1484171296 +licenseType: Pro +TextScriptImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Examples & Extras/Fonts/Bangers.ttf b/Assets/TextMesh Pro/Examples & Extras/Fonts/Bangers.ttf new file mode 100644 index 0000000000000000000000000000000000000000..477dfc321ccf85014b492d6c4a57fc4d25729142 GIT binary patch literal 39676 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 HYW)8d?Q?7` literal 0 HcmV?d00001 diff --git a/Assets/TextMesh Pro/Examples & Extras/Fonts/Bangers.ttf.meta b/Assets/TextMesh Pro/Examples & Extras/Fonts/Bangers.ttf.meta new file mode 100644 index 0000000..cd243dc --- /dev/null +++ b/Assets/TextMesh Pro/Examples & Extras/Fonts/Bangers.ttf.meta @@ -0,0 +1,19 @@ +fileFormatVersion: 2 +guid: 5dd49b3eacc540408c98eee0de38e0f1 +timeCreated: 1484171297 +licenseType: Pro +TrueTypeFontImporter: + serializedVersion: 2 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 1 + characterPadding: 0 + includeFontData: 1 + use2xBehaviour: 0 + fontNames: [] + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Examples & Extras/Fonts/Electronic Highway Sign.TTF b/Assets/TextMesh Pro/Examples & Extras/Fonts/Electronic Highway Sign.TTF new file mode 100644 index 0000000000000000000000000000000000000000..16c1059dd4747afcf0f605cd0132f1b439c154ca GIT binary patch literal 73060 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 SgZ>r2GxfFnPU8)%ZvP*r?BG!V literal 0 HcmV?d00001 diff --git a/Assets/TextMesh Pro/Examples & Extras/Fonts/Oswald-Bold.ttf.meta b/Assets/TextMesh Pro/Examples & Extras/Fonts/Oswald-Bold.ttf.meta new file mode 100644 index 0000000..f14340b --- /dev/null +++ b/Assets/TextMesh Pro/Examples & Extras/Fonts/Oswald-Bold.ttf.meta @@ -0,0 +1,19 @@ +fileFormatVersion: 2 +guid: c9f6d0e7bc8541498c9a4799ba184ede +timeCreated: 1484171297 +licenseType: Pro +TrueTypeFontImporter: + serializedVersion: 2 + fontSize: 16 + forceTextureCase: -2 + characterSpacing: 1 + characterPadding: 0 + includeFontData: 1 + use2xBehaviour: 0 + fontNames: [] + fallbackFontReferences: [] + customCharacters: + fontRenderingMode: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/TextMesh Pro/Examples & Extras/Fonts/Roboto-Bold.ttf b/Assets/TextMesh Pro/Examples & Extras/Fonts/Roboto-Bold.ttf new file mode 100644 index 0000000000000000000000000000000000000000..d3f01ad245b628f386ac95786f53167038720eb2 GIT binary patch literal 170760 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�!3r53e9=KAt@g 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