diff --git a/.vscode/extensions.json b/.vscode/extensions.json new file mode 100644 index 0000000..ddb6ff8 --- /dev/null +++ b/.vscode/extensions.json @@ -0,0 +1,5 @@ +{ + "recommendations": [ + "visualstudiotoolsforunity.vstuc" + ] +} diff --git a/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..da60e25 --- /dev/null +++ b/.vscode/launch.json @@ -0,0 +1,10 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "name": "Attach to Unity", + "type": "vstuc", + "request": "attach" + } + ] +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..cedde0e --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,71 @@ +{ + "files.exclude": { + "**/.DS_Store": true, + "**/.git": true, + "**/.vs": true, + "**/.gitmodules": true, + "**/.vsconfig": true, + "**/*.booproj": true, + "**/*.pidb": true, + "**/*.suo": true, + "**/*.user": true, + "**/*.userprefs": true, + "**/*.unityproj": true, + "**/*.dll": true, + "**/*.exe": true, + "**/*.pdf": true, + "**/*.mid": true, + "**/*.midi": true, + "**/*.wav": true, + "**/*.gif": true, + "**/*.ico": true, + "**/*.jpg": true, + "**/*.jpeg": true, + "**/*.png": true, + "**/*.psd": true, + "**/*.tga": true, + "**/*.tif": true, + "**/*.tiff": true, + "**/*.3ds": true, + "**/*.3DS": true, + "**/*.fbx": true, + "**/*.FBX": true, + "**/*.lxo": true, + "**/*.LXO": true, + "**/*.ma": true, + "**/*.MA": true, + "**/*.obj": true, + "**/*.OBJ": true, + "**/*.asset": true, + "**/*.cubemap": true, + "**/*.flare": true, + "**/*.mat": true, + "**/*.meta": true, + "**/*.prefab": true, + "**/*.unity": true, + "build/": true, + "Build/": true, + "Library/": true, + "library/": true, + "obj/": true, + "Obj/": true, + "Logs/": true, + "logs/": true, + "ProjectSettings/": true, + "UserSettings/": true, + "temp/": true, + "Temp/": true + }, + "files.associations": { + "*.asset": "yaml", + "*.meta": "yaml", + "*.prefab": "yaml", + "*.unity": "yaml", + }, + "explorer.fileNesting.enabled": true, + "explorer.fileNesting.patterns": { + "*.sln": "*.csproj", + "*.slnx": "*.csproj" + }, + "dotnet.defaultSolution": "Ultimate-HelixJump.slnx" +} \ No newline at end of file diff --git a/AGENTS.md b/AGENTS.md index 08af888..b7467c6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -2,7 +2,7 @@ - Project name: Ultimate-HelixJump - Unity version: Unity 6000.3.0f1 - Active game object: - - Name: GameLifetimeScope + - Name: Platform - Tag: Untagged - Layer: Default \ No newline at end of file diff --git a/Assets/MeshCombiner.meta b/Assets/DarkMatter.meta similarity index 77% rename from Assets/MeshCombiner.meta rename to Assets/DarkMatter.meta index ff141fe..8ba3127 100644 --- a/Assets/MeshCombiner.meta +++ b/Assets/DarkMatter.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: e038eb1e2eab0dd48b3db937423ef8df +guid: 5fbb74ed5f48ea64abc7ff053d7b5b8c folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/MeshCombiner/Editor.meta b/Assets/DarkMatter/Code.meta similarity index 77% rename from Assets/MeshCombiner/Editor.meta rename to Assets/DarkMatter/Code.meta index 5195718..330d00a 100644 --- a/Assets/MeshCombiner/Editor.meta +++ b/Assets/DarkMatter/Code.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 303657b881c5c104fabb7c2d58e364ae +guid: 33d67dc68c4487f40a585c596dc62588 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/MeshCombiner/Scripts.meta b/Assets/DarkMatter/Code/App.meta similarity index 77% rename from Assets/MeshCombiner/Scripts.meta rename to Assets/DarkMatter/Code/App.meta index 9eefb28..55ac83b 100644 --- a/Assets/MeshCombiner/Scripts.meta +++ b/Assets/DarkMatter/Code/App.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: a2a7540ec4650c74fbbf276d68fcb924 +guid: ae96029c413659442bc9dfae591d7dd0 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/DarkMatter/Code/App/AppAssembly.asmdef b/Assets/DarkMatter/Code/App/AppAssembly.asmdef new file mode 100644 index 0000000..7275fd7 --- /dev/null +++ b/Assets/DarkMatter/Code/App/AppAssembly.asmdef @@ -0,0 +1,19 @@ +{ + "name": "AppAssembly", + "rootNamespace": "Darkmatter.App", + "references": [ + "GUID:b0214a6008ed146ff8f122a6a9c2f6cc", + "GUID:8bce7b1d1a7647841855dfbbfa883cd6", + "GUID:219208e14f3a1e1439abafd1ff0ae402", + "GUID:09dab6049e43dd9449335e6d3f51f72e" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/DarkMatter/Code/App/AppAssembly.asmdef.meta b/Assets/DarkMatter/Code/App/AppAssembly.asmdef.meta new file mode 100644 index 0000000..fc13ddd --- /dev/null +++ b/Assets/DarkMatter/Code/App/AppAssembly.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: b6de5042500932e4fb9947238e0adf85 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts.meta b/Assets/DarkMatter/Code/App/Installers.meta similarity index 77% rename from Assets/Scripts.meta rename to Assets/DarkMatter/Code/App/Installers.meta index 0f0f10e..1b88776 100644 --- a/Assets/Scripts.meta +++ b/Assets/DarkMatter/Code/App/Installers.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 99443897285b5bb4eb395149cc29a38d +guid: 2ee06f964ff582940853d02f865be2aa folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/DarkMatter/Code/App/Installers/GameLifetimeScope.cs b/Assets/DarkMatter/Code/App/Installers/GameLifetimeScope.cs new file mode 100644 index 0000000..80d0dd0 --- /dev/null +++ b/Assets/DarkMatter/Code/App/Installers/GameLifetimeScope.cs @@ -0,0 +1,43 @@ +using Darkmatter.Core; +using Darkmatter.Domain; +using Darkmatter.Presentation; +using UnityEngine; +using VContainer; +using VContainer.Unity; + +namespace Darkmatter.App +{ + public class GameLifetimeScope : LifetimeScope + { + [SerializeField] private PlatformPool pool; + [SerializeField] private PlatformManager manager; + [SerializeField] private InputReaderSO inputReader; + [SerializeField] private GameSessionSO gameSession; + [SerializeField] private Player player; + [SerializeField] private AudioController audioController; + + //UI References + [SerializeField] private GameScreenView gameScreenView; + [SerializeField] private StartScreenView startScreenView; + [SerializeField] private DeathScreenView deathScreenView; + [SerializeField] private PauseScreenView pauseScreenView; + protected override void Configure(IContainerBuilder builder) + { + builder.RegisterComponent(pool).As>(); + builder.RegisterComponent(manager).As(); + builder.RegisterInstance(inputReader).As(); + builder.Register(Lifetime.Singleton).As(); + builder.RegisterInstance(gameSession).As(); + builder.RegisterComponent(player).As(); + builder.RegisterComponent(audioController).As().AsSelf(); + + + builder.RegisterEntryPoint(Lifetime.Singleton).WithParameter(startScreenView); + builder.Register(Lifetime.Singleton).WithParameter(gameScreenView).As(); + builder.Register(Lifetime.Singleton).WithParameter(pauseScreenView).As(); + builder.Register(Lifetime.Singleton).WithParameter(deathScreenView).As(); + + + } + } +} diff --git a/Assets/DarkMatter/Code/App/Installers/GameLifetimeScope.cs.meta b/Assets/DarkMatter/Code/App/Installers/GameLifetimeScope.cs.meta new file mode 100644 index 0000000..d37324e --- /dev/null +++ b/Assets/DarkMatter/Code/App/Installers/GameLifetimeScope.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 383ae0131df62e7439a21c411e0abe2e \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Core.meta b/Assets/DarkMatter/Code/Core.meta new file mode 100644 index 0000000..0f049ef --- /dev/null +++ b/Assets/DarkMatter/Code/Core.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d7f41092f556507488a9186282d29b28 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DarkMatter/Code/Core/Attributes.meta b/Assets/DarkMatter/Code/Core/Attributes.meta new file mode 100644 index 0000000..312021a --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Attributes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f4dca5c9b94134b4b99d27d3e46f3b47 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Input/GameInputAction.cs b/Assets/DarkMatter/Code/Core/Attributes/GameInputAction.cs similarity index 99% rename from Assets/Scripts/Input/GameInputAction.cs rename to Assets/DarkMatter/Code/Core/Attributes/GameInputAction.cs index b1879a1..9faf084 100644 --- a/Assets/Scripts/Input/GameInputAction.cs +++ b/Assets/DarkMatter/Code/Core/Attributes/GameInputAction.cs @@ -2,7 +2,7 @@ // // This code was auto-generated by com.unity.inputsystem:InputActionCodeGenerator // version 1.16.0 -// from Assets/Scripts/Input/GameInputAction.inputactions +// from Assets/DarkMatter/Code/Core/Attributes/GameInputAction.inputactions // // Changes to this file may cause incorrect behavior and will be lost if // the code is regenerated. @@ -16,7 +16,7 @@ using UnityEngine.InputSystem; using UnityEngine.InputSystem.Utilities; /// -/// Provides programmatic access to , , and instances defined in asset "Assets/Scripts/Input/GameInputAction.inputactions". +/// Provides programmatic access to , , and instances defined in asset "Assets/DarkMatter/Code/Core/Attributes/GameInputAction.inputactions". /// /// /// This class is source generated and any manual edits will be discarded if the associated asset is reimported or modified. diff --git a/Assets/Scripts/Input/GameInputAction.cs.meta b/Assets/DarkMatter/Code/Core/Attributes/GameInputAction.cs.meta similarity index 100% rename from Assets/Scripts/Input/GameInputAction.cs.meta rename to Assets/DarkMatter/Code/Core/Attributes/GameInputAction.cs.meta diff --git a/Assets/Scripts/Input/GameInputAction.inputactions b/Assets/DarkMatter/Code/Core/Attributes/GameInputAction.inputactions similarity index 100% rename from Assets/Scripts/Input/GameInputAction.inputactions rename to Assets/DarkMatter/Code/Core/Attributes/GameInputAction.inputactions diff --git a/Assets/Scripts/Input/GameInputAction.inputactions.meta b/Assets/DarkMatter/Code/Core/Attributes/GameInputAction.inputactions.meta similarity index 100% rename from Assets/Scripts/Input/GameInputAction.inputactions.meta rename to Assets/DarkMatter/Code/Core/Attributes/GameInputAction.inputactions.meta diff --git a/Assets/DarkMatter/Code/Core/Contracts.meta b/Assets/DarkMatter/Code/Core/Contracts.meta new file mode 100644 index 0000000..d99ab64 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 3df043bef9f9e3b4d9fbe298cab649e1 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DarkMatter/Code/Core/Contracts/IAudioController.cs b/Assets/DarkMatter/Code/Core/Contracts/IAudioController.cs new file mode 100644 index 0000000..ee9b81f --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IAudioController.cs @@ -0,0 +1,17 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Darkmatter.Core +{ + public interface IAudioController + { + void PlayJumpSound(); + void PlayDeathSound(); + void PlayBtnPressedSound(); + void PlayScoredSound(); + + } +} diff --git a/Assets/DarkMatter/Code/Core/Contracts/IAudioController.cs.meta b/Assets/DarkMatter/Code/Core/Contracts/IAudioController.cs.meta new file mode 100644 index 0000000..d2bd247 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IAudioController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ba1cb4ebd3658324c948dc5c3f1d3a2c \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Core/Contracts/IDeathScreenController.cs b/Assets/DarkMatter/Code/Core/Contracts/IDeathScreenController.cs new file mode 100644 index 0000000..3775625 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IDeathScreenController.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Darkmatter.Core +{ + public interface IDeathScreenController + { + void ShowDeathScreen(); + } +} diff --git a/Assets/DarkMatter/Code/Core/Contracts/IDeathScreenController.cs.meta b/Assets/DarkMatter/Code/Core/Contracts/IDeathScreenController.cs.meta new file mode 100644 index 0000000..e172c87 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IDeathScreenController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 7af2cae0d2a1c1f4bb8e5aa5ad630ea1 \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Core/Contracts/IGameScreenController.cs b/Assets/DarkMatter/Code/Core/Contracts/IGameScreenController.cs new file mode 100644 index 0000000..392edce --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IGameScreenController.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Darkmatter.Core +{ + public interface IGameScreenController + { + void ShowGameScreen(); + void HideGameScreen(); + } +} diff --git a/Assets/DarkMatter/Code/Core/Contracts/IGameScreenController.cs.meta b/Assets/DarkMatter/Code/Core/Contracts/IGameScreenController.cs.meta new file mode 100644 index 0000000..b9ae4fc --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IGameScreenController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: c61899447bb6d694a93759306dee0f6d \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Core/Contracts/IGameSession.cs b/Assets/DarkMatter/Code/Core/Contracts/IGameSession.cs new file mode 100644 index 0000000..d790143 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IGameSession.cs @@ -0,0 +1,10 @@ +using UnityEngine; + +namespace Darkmatter.Core +{ + public interface IGameSession + { + bool showStartScreen { get; set; } + bool hasGameStarted { get; set; } + } +} diff --git a/Assets/DarkMatter/Code/Core/Contracts/IGameSession.cs.meta b/Assets/DarkMatter/Code/Core/Contracts/IGameSession.cs.meta new file mode 100644 index 0000000..5c25d1d --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IGameSession.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: cf4fa3bea06bcae478439f5e33b2e683 \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Core/Contracts/IInputReader.cs b/Assets/DarkMatter/Code/Core/Contracts/IInputReader.cs new file mode 100644 index 0000000..a714fec --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IInputReader.cs @@ -0,0 +1,16 @@ +using System; +using UnityEngine; + +namespace Darkmatter.Core +{ + public interface IInputReader + { + event Action OnDragValueChanged; + bool isMouseButtonPressed { get; } + Vector2 dragInput { get; } + + void LockInput(); + void UnlockInput(); + + } +} diff --git a/Assets/DarkMatter/Code/Core/Contracts/IInputReader.cs.meta b/Assets/DarkMatter/Code/Core/Contracts/IInputReader.cs.meta new file mode 100644 index 0000000..e8c929b --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IInputReader.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 3694572af73cf5344988658907712552 \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Core/Contracts/IPauseScreenController.cs b/Assets/DarkMatter/Code/Core/Contracts/IPauseScreenController.cs new file mode 100644 index 0000000..6bb4265 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IPauseScreenController.cs @@ -0,0 +1,9 @@ +using UnityEngine; + +namespace Darkmatter.Core +{ + public interface IPauseScreenController + { + void ShowPauseScreen(); + } +} diff --git a/Assets/DarkMatter/Code/Core/Contracts/IPauseScreenController.cs.meta b/Assets/DarkMatter/Code/Core/Contracts/IPauseScreenController.cs.meta new file mode 100644 index 0000000..01cd050 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IPauseScreenController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 531a3cefcdec354409ef858b5ea7fb55 \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Core/Contracts/IPlatform.cs b/Assets/DarkMatter/Code/Core/Contracts/IPlatform.cs new file mode 100644 index 0000000..36e2702 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IPlatform.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace Darkmatter.Core +{ + public interface IPlatform + { + List platformPiece { get; } + Material safeMaterial { get; } + Material deathMaterial { get; } + } +} diff --git a/Assets/DarkMatter/Code/Core/Contracts/IPlatform.cs.meta b/Assets/DarkMatter/Code/Core/Contracts/IPlatform.cs.meta new file mode 100644 index 0000000..4401275 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IPlatform.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: bfc0615b9e0d4094fa7f57342f9ba6fd \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Core/Contracts/IPlatformManager.cs b/Assets/DarkMatter/Code/Core/Contracts/IPlatformManager.cs new file mode 100644 index 0000000..5c5d0a3 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IPlatformManager.cs @@ -0,0 +1,9 @@ +using UnityEngine; + +namespace Darkmatter.Core +{ + public interface IPlatformManager + { + void BuildNewPlatform(); + } +} diff --git a/Assets/DarkMatter/Code/Core/Contracts/IPlatformManager.cs.meta b/Assets/DarkMatter/Code/Core/Contracts/IPlatformManager.cs.meta new file mode 100644 index 0000000..f229a31 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IPlatformManager.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6f4ca9d11e511cc4897f702ce62c2663 \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Core/Contracts/IPlatformRule.cs b/Assets/DarkMatter/Code/Core/Contracts/IPlatformRule.cs new file mode 100644 index 0000000..0dc0297 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IPlatformRule.cs @@ -0,0 +1,9 @@ +using UnityEngine; + +namespace Darkmatter.Core +{ + public interface IPlatformRule + { + public void Execute(IPlatform platform); + } +} diff --git a/Assets/DarkMatter/Code/Core/Contracts/IPlatformRule.cs.meta b/Assets/DarkMatter/Code/Core/Contracts/IPlatformRule.cs.meta new file mode 100644 index 0000000..11f3d2f --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IPlatformRule.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: ea78e7f773196344bbc9745acf4b5687 \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Core/Contracts/IPlayer.cs b/Assets/DarkMatter/Code/Core/Contracts/IPlayer.cs new file mode 100644 index 0000000..833f6f2 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IPlayer.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Darkmatter.Core +{ + public interface IPlayer + { + bool isDead { get; } + } +} diff --git a/Assets/DarkMatter/Code/Core/Contracts/IPlayer.cs.meta b/Assets/DarkMatter/Code/Core/Contracts/IPlayer.cs.meta new file mode 100644 index 0000000..a6d179b --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IPlayer.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 833de72b91bdfba49997116bd87a298e \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Core/Contracts/IPool.cs b/Assets/DarkMatter/Code/Core/Contracts/IPool.cs new file mode 100644 index 0000000..9b81a13 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IPool.cs @@ -0,0 +1,15 @@ + +using Codice.Client.Common; +using System.Collections.Generic; +using UnityEngine; + +namespace Darkmatter.Core +{ + public interface IPool + { + IReadOnlyCollection All { get; } + void ReturnToPool(T obj); + + T GetFromPool(); + } +} diff --git a/Assets/DarkMatter/Code/Core/Contracts/IPool.cs.meta b/Assets/DarkMatter/Code/Core/Contracts/IPool.cs.meta new file mode 100644 index 0000000..0903c54 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IPool.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e8dc86ecbdfd4124595da34516170d7b \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Core/Contracts/IScoreService.cs b/Assets/DarkMatter/Code/Core/Contracts/IScoreService.cs new file mode 100644 index 0000000..fe38831 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IScoreService.cs @@ -0,0 +1,13 @@ +using System; +using UnityEngine; + +namespace Darkmatter.Core +{ + public interface IScoreService + { + int score { get; } + int highScore { get; } + event Action OnScoreChange; + void AddScore(); + } +} diff --git a/Assets/DarkMatter/Code/Core/Contracts/IScoreService.cs.meta b/Assets/DarkMatter/Code/Core/Contracts/IScoreService.cs.meta new file mode 100644 index 0000000..30ad3a1 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Contracts/IScoreService.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 726a4c255e8801a4aad700838e98c10e \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Core/CoreAssembly.asmdef b/Assets/DarkMatter/Code/Core/CoreAssembly.asmdef new file mode 100644 index 0000000..0f01b10 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/CoreAssembly.asmdef @@ -0,0 +1,18 @@ +{ + "name": "CoreAssembly", + "rootNamespace": "Darkmatter.Core", + "references": [ + "GUID:4307f53044263cf4b835bd812fc161a4", + "GUID:b0214a6008ed146ff8f122a6a9c2f6cc", + "GUID:75469ad4d38634e559750d17036d5f7c" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Core/CoreAssembly.asmdef.meta b/Assets/DarkMatter/Code/Core/CoreAssembly.asmdef.meta new file mode 100644 index 0000000..e239e1a --- /dev/null +++ b/Assets/DarkMatter/Code/Core/CoreAssembly.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8bce7b1d1a7647841855dfbbfa883cd6 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DarkMatter/Code/Core/Data.meta b/Assets/DarkMatter/Code/Core/Data.meta new file mode 100644 index 0000000..5d8d6ed --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Data.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: d0d0a4ccc5826854b9cb0cd5f75d356d +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/LifeTimeScope/GameSession.asset b/Assets/DarkMatter/Code/Core/Data/GameSession.asset similarity index 81% rename from Assets/Scripts/LifeTimeScope/GameSession.asset rename to Assets/DarkMatter/Code/Core/Data/GameSession.asset index 85c4528..8b40ada 100644 --- a/Assets/Scripts/LifeTimeScope/GameSession.asset +++ b/Assets/DarkMatter/Code/Core/Data/GameSession.asset @@ -9,6 +9,6 @@ MonoBehaviour: m_GameObject: {fileID: 0} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: b87b1e9ef0f8a8f4d8c0488709157211, type: 3} + m_Script: {fileID: 11500000, guid: 19b4667bfc2bc924a80a7fb0cd8c24f9, type: 3} m_Name: GameSession m_EditorClassIdentifier: Assembly-CSharp::GameSession diff --git a/Assets/Scripts/LifeTimeScope/GameSession.asset.meta b/Assets/DarkMatter/Code/Core/Data/GameSession.asset.meta similarity index 100% rename from Assets/Scripts/LifeTimeScope/GameSession.asset.meta rename to Assets/DarkMatter/Code/Core/Data/GameSession.asset.meta diff --git a/Assets/DarkMatter/Code/Core/Data/GameSessionSO.cs b/Assets/DarkMatter/Code/Core/Data/GameSessionSO.cs new file mode 100644 index 0000000..736063f --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Data/GameSessionSO.cs @@ -0,0 +1,25 @@ +using Darkmatter.Core; +using UnityEngine; + +namespace Darkmatter.Core +{ + + [CreateAssetMenu(fileName = "GameSessionSO", menuName = "Scriptable Objects/GameSessionSO")] + public class GameSessionSO : ScriptableObject, IGameSession + { + public bool showStartScreen { get; set; } = false; + public bool hasGameStarted { get; set; } = false; + + private void OnEnable() + { + showStartScreen = true; + hasGameStarted = false; + } + + private void OnDisable() + { + showStartScreen = false; + hasGameStarted = false; + } + } +} diff --git a/Assets/DarkMatter/Code/Core/Data/GameSessionSO.cs.meta b/Assets/DarkMatter/Code/Core/Data/GameSessionSO.cs.meta new file mode 100644 index 0000000..99b4c32 --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Data/GameSessionSO.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 19b4667bfc2bc924a80a7fb0cd8c24f9 \ No newline at end of file diff --git a/Assets/Scripts/Input/InputReaderSO.asset b/Assets/DarkMatter/Code/Core/Data/InputReaderSO.asset similarity index 100% rename from Assets/Scripts/Input/InputReaderSO.asset rename to Assets/DarkMatter/Code/Core/Data/InputReaderSO.asset diff --git a/Assets/Scripts/Input/InputReaderSO.asset.meta b/Assets/DarkMatter/Code/Core/Data/InputReaderSO.asset.meta similarity index 100% rename from Assets/Scripts/Input/InputReaderSO.asset.meta rename to Assets/DarkMatter/Code/Core/Data/InputReaderSO.asset.meta diff --git a/Assets/DarkMatter/Code/Core/Data/InputReaderSO.cs b/Assets/DarkMatter/Code/Core/Data/InputReaderSO.cs new file mode 100644 index 0000000..c8a804c --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Data/InputReaderSO.cs @@ -0,0 +1,61 @@ +using Darkmatter.Core; +using System; +using UnityEngine; +using UnityEngine.InputSystem; + + +namespace Darkmatter.Core +{ + [CreateAssetMenu(fileName = "InputReaderSO", menuName = "Scriptable Objects/InputReaderSO")] + public class InputReaderSO : ScriptableObject, GameInputAction.IPlayerActions, IInputReader + { + public event Action OnDragValueChanged; + public Vector2 dragInput + { + get => _dragInput; + private set + { + _dragInput = value; + OnDragValueChanged?.Invoke(_dragInput); + } + } + + + public bool isMouseButtonPressed { get; private set; } + private Vector2 _dragInput; + private GameInputAction action; + + private void OnEnable() + { + if (action == null) action = new GameInputAction(); + action.Enable(); + action.Player.SetCallbacks(this); + isMouseButtonPressed = false; + } + + private void OnDisable() + { + action.Player.Disable(); + } + + public void OnDrag(InputAction.CallbackContext context) + { + dragInput = context.ReadValue(); + } + + public void OnMouseClicked(InputAction.CallbackContext context) + { + isMouseButtonPressed = context.ReadValue() == 1 ? true : false; + } + + public void LockInput() + { + action.Player.Disable(); + } + + public void UnlockInput() + { + action.Player.Enable(); + } + } +} diff --git a/Assets/Scripts/Input/InputReaderSO.cs.meta b/Assets/DarkMatter/Code/Core/Data/InputReaderSO.cs.meta similarity index 100% rename from Assets/Scripts/Input/InputReaderSO.cs.meta rename to Assets/DarkMatter/Code/Core/Data/InputReaderSO.cs.meta diff --git a/Assets/DarkMatter/Code/Core/Data/ScoreService.cs b/Assets/DarkMatter/Code/Core/Data/ScoreService.cs new file mode 100644 index 0000000..120af2d --- /dev/null +++ b/Assets/DarkMatter/Code/Core/Data/ScoreService.cs @@ -0,0 +1,33 @@ +using Darkmatter.Core; +using System; +using UnityEngine; + +namespace Darkmatter.Core +{ + public class ScoreService : IScoreService + { + public event Action OnScoreChange; + public int score { get; private set; } + + public int highScore { get; private set; } = PlayerPrefs.GetInt("HighScore"); + + public void AddScore() + { + score += 5; + if (score > highScore) + { + SetNewHighScore(); + } + OnScoreChange?.Invoke(score); + } + + private void SetNewHighScore() + { + highScore = score; + PlayerPrefs.SetInt("HighScore", highScore); + PlayerPrefs.Save(); + } + } +} + + diff --git a/Assets/Scripts/ScoreService/ScoreService.cs.meta b/Assets/DarkMatter/Code/Core/Data/ScoreService.cs.meta similarity index 100% rename from Assets/Scripts/ScoreService/ScoreService.cs.meta rename to Assets/DarkMatter/Code/Core/Data/ScoreService.cs.meta diff --git a/Assets/DarkMatter/Code/Domain.meta b/Assets/DarkMatter/Code/Domain.meta new file mode 100644 index 0000000..954cdec --- /dev/null +++ b/Assets/DarkMatter/Code/Domain.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 5ccbadb324e8086498668e58e609c0e2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DarkMatter/Code/Domain/DomainAssembly.asmdef b/Assets/DarkMatter/Code/Domain/DomainAssembly.asmdef new file mode 100644 index 0000000..b9a12db --- /dev/null +++ b/Assets/DarkMatter/Code/Domain/DomainAssembly.asmdef @@ -0,0 +1,18 @@ +{ + "name": "DomainAssembly", + "rootNamespace": "Darkmatter.Domain", + "references": [ + "GUID:8bce7b1d1a7647841855dfbbfa883cd6", + "GUID:4307f53044263cf4b835bd812fc161a4", + "GUID:b0214a6008ed146ff8f122a6a9c2f6cc" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Domain/DomainAssembly.asmdef.meta b/Assets/DarkMatter/Code/Domain/DomainAssembly.asmdef.meta new file mode 100644 index 0000000..3b605f0 --- /dev/null +++ b/Assets/DarkMatter/Code/Domain/DomainAssembly.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 219208e14f3a1e1439abafd1ff0ae402 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DarkMatter/Code/Domain/Platforms.meta b/Assets/DarkMatter/Code/Domain/Platforms.meta new file mode 100644 index 0000000..9b57b70 --- /dev/null +++ b/Assets/DarkMatter/Code/Domain/Platforms.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 019ca96010cba7f4faab0a2ac48c566b +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DarkMatter/Code/Domain/Platforms/FirstPlatform.cs b/Assets/DarkMatter/Code/Domain/Platforms/FirstPlatform.cs new file mode 100644 index 0000000..73c887d --- /dev/null +++ b/Assets/DarkMatter/Code/Domain/Platforms/FirstPlatform.cs @@ -0,0 +1,20 @@ +using Darkmatter.Core; +using UnityEngine; + +namespace Darkmatter.Domain +{ + public class FirstPlatform : IPlatformRule + { + public void Execute(IPlatform platform) + { + foreach (var piece in platform.platformPiece) + { + piece.SetActive(true); + piece.GetComponent().material = platform.safeMaterial; + piece.gameObject.SetActive(true); + piece.tag = "Safe"; + } + platform.platformPiece[Random.Range(1, platform.platformPiece.Count)].gameObject.SetActive(false); + } + } +} diff --git a/Assets/DarkMatter/Code/Domain/Platforms/FirstPlatform.cs.meta b/Assets/DarkMatter/Code/Domain/Platforms/FirstPlatform.cs.meta new file mode 100644 index 0000000..723f758 --- /dev/null +++ b/Assets/DarkMatter/Code/Domain/Platforms/FirstPlatform.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 27cd8a8665a6d104f85ecb3c791c9757 \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Domain/Platforms/OtherPlatform.cs b/Assets/DarkMatter/Code/Domain/Platforms/OtherPlatform.cs new file mode 100644 index 0000000..cec171d --- /dev/null +++ b/Assets/DarkMatter/Code/Domain/Platforms/OtherPlatform.cs @@ -0,0 +1,28 @@ +using Darkmatter.Core; +using UnityEngine; + +namespace Darkmatter.Domain +{ + public class OtherPlatform : IPlatformRule + { + int danger = 2; + public void Execute(IPlatform platform) + { + foreach (var piece in platform.platformPiece) + { + piece.SetActive(true); + piece.GetComponent().material = platform.safeMaterial; + piece.gameObject.SetActive(true); + piece.tag = "Safe"; + } + + for (int i = 0; i < danger; i++) + { + GameObject deadPlatform = platform.platformPiece[Random.Range(0, platform.platformPiece.Count)]; + deadPlatform.GetComponent().material = platform.deathMaterial; + deadPlatform.tag = "Death"; + } + platform.platformPiece[Random.Range(0, platform.platformPiece.Count)].gameObject.SetActive(false); + } + } +} diff --git a/Assets/DarkMatter/Code/Domain/Platforms/OtherPlatform.cs.meta b/Assets/DarkMatter/Code/Domain/Platforms/OtherPlatform.cs.meta new file mode 100644 index 0000000..f9ee993 --- /dev/null +++ b/Assets/DarkMatter/Code/Domain/Platforms/OtherPlatform.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 4136bc6323ff5ea40874d2b69bc2ca56 \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Domain/Player.meta b/Assets/DarkMatter/Code/Domain/Player.meta new file mode 100644 index 0000000..02d815a --- /dev/null +++ b/Assets/DarkMatter/Code/Domain/Player.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 898d4b8bb3246724b9838847b6a0ba77 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DarkMatter/Code/Domain/Player/Player.cs b/Assets/DarkMatter/Code/Domain/Player/Player.cs new file mode 100644 index 0000000..4bd9c15 --- /dev/null +++ b/Assets/DarkMatter/Code/Domain/Player/Player.cs @@ -0,0 +1,79 @@ +using Darkmatter.Core; +using System.Collections; +using Unity.Cinemachine; +using UnityEngine; +using VContainer; + +namespace Darkmatter.Domain +{ + public class Player : MonoBehaviour, IPlayer + { + [SerializeField] private float jumpForce = 3f; + [SerializeField] private Rigidbody rb; + [SerializeField] private GameObject splashObject; + [SerializeField] private Transform splashParent; + [SerializeField] private ParticleSystem deadParticle; + [SerializeField] private ParticleSystem jumpParticle; + [SerializeField] private CinemachineImpulseSource cinemachineImpulseSource; + + [SerializeField] private Material playerMaterial; + [SerializeField] Color[] playerMaterialColors; + + public bool isDead { get; private set; } + + [Inject] private IDeathScreenController IdeathScreenController; + [Inject] private IInputReader IinputReader; + [Inject] private IAudioController IaudioController; + + private void Start() + { + isDead = false; + playerMaterial.color = playerMaterialColors[Random.Range(0, playerMaterialColors.Length)]; + } + + private void OnCollisionEnter(Collision collision) + { + ShowAndHideSplash(collision); + if (isDead) return; + + if (collision.gameObject.CompareTag("Safe") && rb.linearVelocity.y <= 0.5f) + { + rb.linearVelocity = Vector3.up * jumpForce; + jumpParticle.Play(); + IaudioController.PlayJumpSound(); + } + else if (collision.gameObject.CompareTag("Death")) + { + Die(); + } + } + + private void ShowAndHideSplash(Collision collision) + { + float splashYPos = collision.transform.position.y + 0.155f; + ContactPoint contact = collision.contacts[0]; + Vector3 surfacePoint = new Vector3(contact.point.x, splashYPos, contact.point.z); + GameObject instancedSplash = Instantiate(splashObject, surfacePoint, splashObject.transform.rotation, collision.gameObject.transform); + instancedSplash.transform.localScale = new Vector3(Random.Range(0.05f, 0.09f), Random.Range(0.05f, 0.09f), 1); + Destroy(instancedSplash, 2f); + } + private void Die() + { + isDead = true; + IinputReader.LockInput(); + deadParticle.Play(); + this.GetComponent().enabled = false; + IaudioController.PlayDeathSound(); + Handheld.Vibrate(); //Vibration + cinemachineImpulseSource.GenerateImpulseWithForce(1); + StartCoroutine(DieRoutine()); + } + + IEnumerator DieRoutine() + { + yield return new WaitForSeconds(1f); + IdeathScreenController.ShowDeathScreen(); + } + } + +} diff --git a/Assets/DarkMatter/Code/Domain/Player/Player.cs.meta b/Assets/DarkMatter/Code/Domain/Player/Player.cs.meta new file mode 100644 index 0000000..23dee66 --- /dev/null +++ b/Assets/DarkMatter/Code/Domain/Player/Player.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e7d04c655849ccf438cd955f139e9789 \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Presentation.meta b/Assets/DarkMatter/Code/Presentation.meta new file mode 100644 index 0000000..25deb15 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2f6d612fd23717a468beaf56944cda7c +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DarkMatter/Code/Presentation/Audio.meta b/Assets/DarkMatter/Code/Presentation/Audio.meta new file mode 100644 index 0000000..7b70e69 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/Audio.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: bf7cffabcb2056547812696e0254bfb2 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/DarkMatter/Code/Presentation/Audio/AudioController.cs b/Assets/DarkMatter/Code/Presentation/Audio/AudioController.cs new file mode 100644 index 0000000..2f08fcc --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/Audio/AudioController.cs @@ -0,0 +1,58 @@ +using Darkmatter.Core; +using UnityEngine; +using VContainer; + +namespace Darkmatter.Presentation +{ + public class AudioController : MonoBehaviour, IAudioController + { + [SerializeField] private AudioSource MusicSource; + [SerializeField] private AudioSource SFXSource; + + public AudioClip backgroundMusicClip; + public AudioClip jumpClip; + public AudioClip deathClip; + public AudioClip btnPressedClip; + public AudioClip scoredClip; + + [Inject] private IGameSession IgameSession; + + private void Start() + { + MusicSource.clip = backgroundMusicClip; + MusicSource.loop = true; + MusicSource.Play(); + } + + + public void PlaySfx(AudioClip clip) + { + if (!IgameSession.hasGameStarted) return; + SFXSource.ignoreListenerPause = true; + SFXSource.PlayOneShot(clip); + } + + public void PlayJumpSound() + { + PlaySfx(jumpClip); + } + + public void PlayDeathSound() + { + PlaySfx(deathClip); + } + + public void PlayBtnPressedSound() + { + PlaySfx(btnPressedClip); + } + + public void PlayScoredSound() + { + PlaySfx(scoredClip); + } + } + + + +} diff --git a/Assets/DarkMatter/Code/Presentation/Audio/AudioController.cs.meta b/Assets/DarkMatter/Code/Presentation/Audio/AudioController.cs.meta new file mode 100644 index 0000000..ef7f363 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/Audio/AudioController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 6359276e3f19a0e439ff6d871c3aee67 \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Presentation/Platforms.meta b/Assets/DarkMatter/Code/Presentation/Platforms.meta new file mode 100644 index 0000000..ecccd56 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/Platforms.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 35a5e635888ca7046b748dc77720ba6e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/PlatformScripts/Platform.cs b/Assets/DarkMatter/Code/Presentation/Platforms/Platform.cs similarity index 59% rename from Assets/Scripts/PlatformScripts/Platform.cs rename to Assets/DarkMatter/Code/Presentation/Platforms/Platform.cs index e848b06..2aa8fc9 100644 --- a/Assets/Scripts/PlatformScripts/Platform.cs +++ b/Assets/DarkMatter/Code/Presentation/Platforms/Platform.cs @@ -1,4 +1,5 @@ -using NUnit.Framework; +using Darkmatter.Core; +using Darkmatter.Domain; using System.Collections.Generic; using UnityEngine; using VContainer; @@ -21,7 +22,7 @@ public class Platform : MonoBehaviour, IPlatform private bool hasAchievedScore = false; [Inject] Player player; - [Inject] IPool pool; + [Inject] IPool pool; [Inject] IPlatformManager platformManager; [Inject] IScoreService IscoreService; [Inject] IAudioController IaudioController; @@ -76,54 +77,12 @@ public class Platform : MonoBehaviour, IPlatform } -public interface IPlatform -{ - List platformPiece { get; } - Material safeMaterial { get; } - Material deathMaterial { get; } -} -public interface IPlatformRule -{ - public void Execute(IPlatform platform); -} -public class FirstPlatform : IPlatformRule -{ - public void Execute(IPlatform platform) - { - foreach(var piece in platform.platformPiece) - { - piece.SetActive(true); - piece.GetComponent().material = platform.safeMaterial; - piece.gameObject.SetActive(true); - piece.tag = "Safe"; - } - platform.platformPiece[Random.Range(1,platform.platformPiece.Count)].gameObject.SetActive(false); - } -} -public class OtherPlatform : IPlatformRule -{ - int danger = 2; - public void Execute(IPlatform platform) - { - foreach (var piece in platform.platformPiece) - { - piece.SetActive(true); - piece.GetComponent().material = platform.safeMaterial; - piece.gameObject.SetActive(true); - piece.tag = "Safe"; - } - for (int i=0;i().material = platform.deathMaterial; - deadPlatform.tag = "Death"; - } - platform.platformPiece[Random.Range(0, platform.platformPiece.Count)].gameObject.SetActive(false); - } -} + + + diff --git a/Assets/Scripts/PlatformScripts/Platform.cs.meta b/Assets/DarkMatter/Code/Presentation/Platforms/Platform.cs.meta similarity index 100% rename from Assets/Scripts/PlatformScripts/Platform.cs.meta rename to Assets/DarkMatter/Code/Presentation/Platforms/Platform.cs.meta diff --git a/Assets/Scripts/PlatformScripts/PlatformManager.cs b/Assets/DarkMatter/Code/Presentation/Platforms/PlatformManager.cs similarity index 88% rename from Assets/Scripts/PlatformScripts/PlatformManager.cs rename to Assets/DarkMatter/Code/Presentation/Platforms/PlatformManager.cs index 4777aa6..c679751 100644 --- a/Assets/Scripts/PlatformScripts/PlatformManager.cs +++ b/Assets/DarkMatter/Code/Presentation/Platforms/PlatformManager.cs @@ -1,9 +1,10 @@ -using UnityEngine; +using Darkmatter.Core; +using UnityEngine; using VContainer; public class PlatformManager : MonoBehaviour,IPlatformManager { - [Inject] private IPool pool; + [Inject] private IPool pool; [Inject] private IInputReader inputReader; private float yPos = 0f; @@ -44,7 +45,7 @@ public class PlatformManager : MonoBehaviour,IPlatformManager private void ShowPlatforms() { - foreach (var platform in pool.All) + foreach (Platform platform in pool.All) { platform.gameObject.SetActive(true); platform.transform.position = new Vector3(0, yPos, 0); @@ -60,7 +61,4 @@ public class PlatformManager : MonoBehaviour,IPlatformManager } } -public interface IPlatformManager -{ - void BuildNewPlatform(); -} + diff --git a/Assets/Scripts/PlatformScripts/PlatformManager.cs.meta b/Assets/DarkMatter/Code/Presentation/Platforms/PlatformManager.cs.meta similarity index 100% rename from Assets/Scripts/PlatformScripts/PlatformManager.cs.meta rename to Assets/DarkMatter/Code/Presentation/Platforms/PlatformManager.cs.meta diff --git a/Assets/Scripts/PlatformScripts/PlatformPool.cs b/Assets/DarkMatter/Code/Presentation/Platforms/PlatformPool.cs similarity index 87% rename from Assets/Scripts/PlatformScripts/PlatformPool.cs rename to Assets/DarkMatter/Code/Presentation/Platforms/PlatformPool.cs index 2abab83..ec196e3 100644 --- a/Assets/Scripts/PlatformScripts/PlatformPool.cs +++ b/Assets/DarkMatter/Code/Presentation/Platforms/PlatformPool.cs @@ -1,9 +1,10 @@ +using Darkmatter.Core; +using Darkmatter.Domain; using System.Collections.Generic; using UnityEngine; using VContainer; -using VContainer.Unity; -public class PlatformPool : MonoBehaviour,IPool +public class PlatformPool : MonoBehaviour, IPool { [SerializeField] private Platform platformPrefab; [SerializeField] private Transform platformParent; @@ -57,10 +58,6 @@ public class PlatformPool : MonoBehaviour,IPool } -public interface IPool -{ - IReadOnlyCollection All { get; } - void ReturnToPool(Platform obj); - Platform GetFromPool(); -} + + diff --git a/Assets/Scripts/PlatformScripts/PlatformPool.cs.meta b/Assets/DarkMatter/Code/Presentation/Platforms/PlatformPool.cs.meta similarity index 100% rename from Assets/Scripts/PlatformScripts/PlatformPool.cs.meta rename to Assets/DarkMatter/Code/Presentation/Platforms/PlatformPool.cs.meta diff --git a/Assets/DarkMatter/Code/Presentation/PresentationAssembly.asmdef b/Assets/DarkMatter/Code/Presentation/PresentationAssembly.asmdef new file mode 100644 index 0000000..f5709ce --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/PresentationAssembly.asmdef @@ -0,0 +1,19 @@ +{ + "name": "PresentationAssembly", + "rootNamespace": "Darkmatter.Presentation", + "references": [ + "GUID:8bce7b1d1a7647841855dfbbfa883cd6", + "GUID:b0214a6008ed146ff8f122a6a9c2f6cc", + "GUID:6055be8ebefd69e48b49212b09b47b2f", + "GUID:219208e14f3a1e1439abafd1ff0ae402" + ], + "includePlatforms": [], + "excludePlatforms": [], + "allowUnsafeCode": false, + "overrideReferences": false, + "precompiledReferences": [], + "autoReferenced": true, + "defineConstraints": [], + "versionDefines": [], + "noEngineReferences": false +} \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Presentation/PresentationAssembly.asmdef.meta b/Assets/DarkMatter/Code/Presentation/PresentationAssembly.asmdef.meta new file mode 100644 index 0000000..a921a95 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/PresentationAssembly.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 09dab6049e43dd9449335e6d3f51f72e +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/UI.meta b/Assets/DarkMatter/Code/Presentation/UI.meta similarity index 77% rename from Assets/Scripts/UI.meta rename to Assets/DarkMatter/Code/Presentation/UI.meta index 16de00c..4bf1083 100644 --- a/Assets/Scripts/UI.meta +++ b/Assets/DarkMatter/Code/Presentation/UI.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 7a1f2e0377d10e343b9657299e3aad8b +guid: fbdfa4d2bcf3bcf4b90151362beecf8e folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/DarkMatter/Code/Presentation/UI/DeathScreenController.cs b/Assets/DarkMatter/Code/Presentation/UI/DeathScreenController.cs new file mode 100644 index 0000000..a71767f --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/UI/DeathScreenController.cs @@ -0,0 +1,48 @@ +using Darkmatter.Core; +using UnityEngine; +using UnityEngine.SceneManagement; +using VContainer; + +namespace Darkmatter.Presentation +{ + public class DeathScreenController : IDeathScreenController + { + private DeathScreenView deathScreenView; + + [Inject] private IScoreService IscoreService; + [Inject] private IInputReader IinputReader; + [Inject] private IAudioController IaudioController; + [Inject] private IGameSession IgameSession; + [Inject] private IGameScreenController IgameScreenController; + public DeathScreenController(DeathScreenView _deathScreenView) + { + deathScreenView = _deathScreenView; + deathScreenView.restartBtn.onClick.AddListener(OnRestartButtonClicked); + deathScreenView.exitBtn.onClick.AddListener(OnExitButtonClicked); + } + + public void ShowDeathScreen() + { + IgameScreenController.HideGameScreen(); + deathScreenView.Show(IscoreService.score, IscoreService.highScore); + } + + private void OnExitButtonClicked() + { + Debug.Log("Exit Button Clicked"); + IinputReader.UnlockInput(); + IaudioController.PlayBtnPressedSound(); + IgameSession.showStartScreen = true; + SceneManager.LoadScene(0); + } + + private void OnRestartButtonClicked() + { + Debug.Log("Restart Button Clicked"); + IinputReader.UnlockInput(); + IaudioController.PlayBtnPressedSound(); + IgameSession.showStartScreen = false; + SceneManager.LoadScene(0); + } + } +} diff --git a/Assets/DarkMatter/Code/Presentation/UI/DeathScreenController.cs.meta b/Assets/DarkMatter/Code/Presentation/UI/DeathScreenController.cs.meta new file mode 100644 index 0000000..9548d34 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/UI/DeathScreenController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 92c6fccb35ce2e64a820ecbc0fff7477 \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Presentation/UI/DeathScreenView.cs b/Assets/DarkMatter/Code/Presentation/UI/DeathScreenView.cs new file mode 100644 index 0000000..d7eee56 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/UI/DeathScreenView.cs @@ -0,0 +1,27 @@ +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +namespace Darkmatter.Presentation +{ + public class DeathScreenView : MonoBehaviour + { + + [SerializeField] private GameObject deathScreen; + public Button restartBtn; + public Button exitBtn; + public TextMeshProUGUI score; + public TextMeshProUGUI highScore; + + public void Show(int _score, int _highScore) + { + this.score.text = _score.ToString(); + this.highScore.text = _highScore.ToString(); + deathScreen.SetActive(true); + } + public void Hide() + { + deathScreen.SetActive(false); + } + } +} diff --git a/Assets/DarkMatter/Code/Presentation/UI/DeathScreenView.cs.meta b/Assets/DarkMatter/Code/Presentation/UI/DeathScreenView.cs.meta new file mode 100644 index 0000000..97d5019 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/UI/DeathScreenView.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 4aab9e4cddc66e44e90193677b63e24e \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Presentation/UI/GameScreenController.cs b/Assets/DarkMatter/Code/Presentation/UI/GameScreenController.cs new file mode 100644 index 0000000..d42b8a8 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/UI/GameScreenController.cs @@ -0,0 +1,50 @@ +using Darkmatter.Core; +using UnityEngine; +using VContainer; + +namespace Darkmatter.Presentation +{ + public class GameScreenController : IGameScreenController + { + GameScreenView gameScreenView; + [Inject] private IScoreService IscoreService; + [Inject] private IPauseScreenController IpauseScreenController; + [Inject] private IInputReader IinputReader; + [Inject] private IAudioController IaudioController; + public GameScreenController(GameScreenView _gameScreenView, IScoreService _IscoreService, IPauseScreenController _IpauseScreenController) + { + this.gameScreenView = _gameScreenView; + IscoreService = _IscoreService; + IpauseScreenController = _IpauseScreenController; + IscoreService.OnScoreChange += UpdateScore; + gameScreenView.pauseBtn.onClick.AddListener(OnPauseButtonClicked); + } + + + + private void UpdateScore(int score) + { + Debug.Log("calling Score"); + gameScreenView.UpdateScore(score); + } + + public void ShowGameScreen() + { + gameScreenView.Show(); + } + + public void HideGameScreen() + { + gameScreenView.Hide(); + } + + public void OnPauseButtonClicked() + { + IaudioController.PlayBtnPressedSound(); + Time.timeScale = 0f; + IinputReader.LockInput(); + IpauseScreenController.ShowPauseScreen(); + } + + } +} diff --git a/Assets/DarkMatter/Code/Presentation/UI/GameScreenController.cs.meta b/Assets/DarkMatter/Code/Presentation/UI/GameScreenController.cs.meta new file mode 100644 index 0000000..b00aa3b --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/UI/GameScreenController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 0ab301d9fb59e24459e315204ffcc8d6 \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Presentation/UI/GameScreenView.cs b/Assets/DarkMatter/Code/Presentation/UI/GameScreenView.cs new file mode 100644 index 0000000..609833a --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/UI/GameScreenView.cs @@ -0,0 +1,28 @@ +using TMPro; +using UnityEngine; +using UnityEngine.UI; + +namespace Darkmatter.Presentation +{ + public class GameScreenView : MonoBehaviour + { + [SerializeField] private GameObject gameScreen; + public Button pauseBtn; + [SerializeField] private TextMeshProUGUI scoreText; + + public void UpdateScore(int score) + { + scoreText.text = score.ToString(); + } + + public void Show() + { + gameScreen.SetActive(true); + } + + public void Hide() + { + gameScreen.SetActive(false); + } + } +} diff --git a/Assets/DarkMatter/Code/Presentation/UI/GameScreenView.cs.meta b/Assets/DarkMatter/Code/Presentation/UI/GameScreenView.cs.meta new file mode 100644 index 0000000..cc26342 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/UI/GameScreenView.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 2efefd316bbb28246bcee036477a00a5 \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Presentation/UI/PauseScreenController.cs b/Assets/DarkMatter/Code/Presentation/UI/PauseScreenController.cs new file mode 100644 index 0000000..a82504d --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/UI/PauseScreenController.cs @@ -0,0 +1,46 @@ +using Darkmatter.Core; +using UnityEngine; +using UnityEngine.SceneManagement; +using VContainer; + +namespace Darkmatter.Presentation +{ + public class PauseScreenController : IPauseScreenController + { + private PauseScreenView pauseScreenView; + [Inject] private IInputReader IinputReader; + [Inject] private IAudioController IaudioController; + [Inject] private IGameSession IgameSession; + + public PauseScreenController(PauseScreenView _pauseScreenView) + { + pauseScreenView = _pauseScreenView; + pauseScreenView.resumeBtn.onClick.AddListener(OnResumeButtonClicked); + pauseScreenView.restartBtn.onClick.AddListener(OnRestartButtonClicked); + } + + public void ShowPauseScreen() + { + pauseScreenView.Show(); + } + + private void OnRestartButtonClicked() + { + Time.timeScale = 1.0f; + IinputReader.UnlockInput(); + IaudioController.PlayBtnPressedSound(); + IgameSession.showStartScreen = false; + SceneManager.LoadScene(0); //Restart This Scene + } + + private void OnResumeButtonClicked() + { + Time.timeScale = 1.0f; + pauseScreenView.Hide(); + IinputReader.UnlockInput(); + IaudioController.PlayBtnPressedSound(); + + } + } + +} diff --git a/Assets/DarkMatter/Code/Presentation/UI/PauseScreenController.cs.meta b/Assets/DarkMatter/Code/Presentation/UI/PauseScreenController.cs.meta new file mode 100644 index 0000000..49feb68 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/UI/PauseScreenController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 682db5ec0dd207b4fb4122bc7798ffc4 \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Presentation/UI/PauseScreenView.cs b/Assets/DarkMatter/Code/Presentation/UI/PauseScreenView.cs new file mode 100644 index 0000000..543cfe4 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/UI/PauseScreenView.cs @@ -0,0 +1,22 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace Darkmatter.Presentation +{ + public class PauseScreenView : MonoBehaviour + { + [SerializeField] public GameObject pauseScreen; + public Button resumeBtn; + public Button restartBtn; + + public void Show() + { + pauseScreen.SetActive(true); + } + + public void Hide() + { + pauseScreen.SetActive(false); + } + } +} diff --git a/Assets/DarkMatter/Code/Presentation/UI/PauseScreenView.cs.meta b/Assets/DarkMatter/Code/Presentation/UI/PauseScreenView.cs.meta new file mode 100644 index 0000000..f9e14d1 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/UI/PauseScreenView.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: e57e5514aa3e64c40a4d396db68170c4 \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Presentation/UI/StartScreenController.cs b/Assets/DarkMatter/Code/Presentation/UI/StartScreenController.cs new file mode 100644 index 0000000..35fd560 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/UI/StartScreenController.cs @@ -0,0 +1,49 @@ +using Darkmatter.Core; +using UnityEngine; +using VContainer; +using VContainer.Unity; + +namespace Darkmatter.Presentation +{ + public class StartScreenController : IStartable + { + private StartScreenView startScreenView; + [Inject] IGameScreenController gameScreenController; + [Inject] IInputReader IinputReader; + [Inject] private IAudioController IaudioController; + [Inject] private IGameSession IgameSession; + public StartScreenController(StartScreenView _startScreenView, IGameScreenController _gameScreenController) + { + Debug.Log("StartScreenController Constructor Called"); + startScreenView = _startScreenView; + gameScreenController = _gameScreenController; + startScreenView.tapToStartButton.onClick.AddListener(OnTapToStartButtonClicked); + } + public void Start() + { + if (IgameSession.showStartScreen) + { + startScreenView.Show(); + IinputReader.LockInput(); + IgameSession.showStartScreen = false; + IgameSession.hasGameStarted = false; + } + else + { + gameScreenController.ShowGameScreen(); + IgameSession.hasGameStarted = true; + } + + } + + private void OnTapToStartButtonClicked() + { + IaudioController.PlayBtnPressedSound(); + startScreenView.Hide(); + IinputReader.UnlockInput(); + gameScreenController.ShowGameScreen(); + IgameSession.hasGameStarted = true; + } + } + +} \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Presentation/UI/StartScreenController.cs.meta b/Assets/DarkMatter/Code/Presentation/UI/StartScreenController.cs.meta new file mode 100644 index 0000000..0596275 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/UI/StartScreenController.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 3f1b78c138759874ab695ee6697c16a4 \ No newline at end of file diff --git a/Assets/DarkMatter/Code/Presentation/UI/StartScreenView.cs b/Assets/DarkMatter/Code/Presentation/UI/StartScreenView.cs new file mode 100644 index 0000000..22c2286 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/UI/StartScreenView.cs @@ -0,0 +1,23 @@ +using UnityEngine; +using UnityEngine.UI; + +namespace Darkmatter.Presentation +{ + public class StartScreenView : MonoBehaviour + { + [SerializeField] private GameObject startScreen; + public Button tapToStartButton; + + public void Show() + { + startScreen.SetActive(true); + } + + public void Hide() + { + startScreen.SetActive(false); + } + + } + +} diff --git a/Assets/DarkMatter/Code/Presentation/UI/StartScreenView.cs.meta b/Assets/DarkMatter/Code/Presentation/UI/StartScreenView.cs.meta new file mode 100644 index 0000000..3ebe354 --- /dev/null +++ b/Assets/DarkMatter/Code/Presentation/UI/StartScreenView.cs.meta @@ -0,0 +1,2 @@ +fileFormatVersion: 2 +guid: 3fccddd791b55e446a7a091823024f34 \ No newline at end of file diff --git a/Assets/Materials/Player.mat b/Assets/Materials/Player.mat index 525678a..41edde0 100644 --- a/Assets/Materials/Player.mat +++ b/Assets/Materials/Player.mat @@ -129,8 +129,8 @@ Material: - _XRMotionVectorsPass: 1 - _ZWrite: 1 m_Colors: - - _BaseColor: {r: 0.8490566, g: 0.36445355, b: 0.75023574, a: 0} - - _Color: {r: 0.8490566, g: 0.36445352, b: 0.75023574, a: 0} + - _BaseColor: {r: 0.055980783, g: 0.6416706, b: 0.6981132, a: 0} + - _Color: {r: 0.05598075, g: 0.64167047, b: 0.6981132, a: 0} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} m_BuildTextureStacks: [] diff --git a/Assets/Materials/death.mat b/Assets/Materials/death.mat index 1bec135..4affc0c 100644 --- a/Assets/Materials/death.mat +++ b/Assets/Materials/death.mat @@ -116,8 +116,8 @@ Material: - _XRMotionVectorsPass: 1 - _ZWrite: 1 m_Colors: - - _BaseColor: {r: 0.8679245, g: 0.8474546, b: 0.8474546, a: 0} - - _Color: {r: 0.8113207, g: 0.049750805, b: 0.049750805, a: 0} + - _BaseColor: {r: 0.8113208, g: 0.049750824, b: 0.049750824, a: 0} + - _Color: {r: 0.17342025, g: 0.75471693, b: 0.07475967, a: 0} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} m_BuildTextureStacks: [] diff --git a/Assets/Materials/safe.mat b/Assets/Materials/safe.mat index 204c707..b825e64 100644 --- a/Assets/Materials/safe.mat +++ b/Assets/Materials/safe.mat @@ -116,8 +116,8 @@ Material: - _XRMotionVectorsPass: 1 - _ZWrite: 1 m_Colors: - - _BaseColor: {r: 0.7924528, g: 0.7552929, b: 0.063545756, a: 1} - - _Color: {r: 0.7924528, g: 0.7552929, b: 0.063545726, a: 1} + - _BaseColor: {r: 0.122641504, g: 0.12090601, b: 0.12090601, a: 0} + - _Color: {r: 0.8113207, g: 0.53379685, b: 0.042096816, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} m_BuildTextureStacks: [] diff --git a/Assets/MeshCombiner/Editor/MeshCombinerEditor.cs b/Assets/MeshCombiner/Editor/MeshCombinerEditor.cs deleted file mode 100644 index d80724d..0000000 --- a/Assets/MeshCombiner/Editor/MeshCombinerEditor.cs +++ /dev/null @@ -1,144 +0,0 @@ -using System.Linq; -using System.Text.RegularExpressions; -using UnityEditor; -using UnityEngine; - -[CustomEditor(typeof(MeshCombiner))] -public class MeshCombinerEditor : Editor -{ - public override void OnInspectorGUI() - { - MeshCombiner meshCombiner = (MeshCombiner)target; - Mesh mesh = meshCombiner.GetComponent().sharedMesh; - - #region Script: - GUI.enabled = false; - EditorGUILayout.ObjectField("Script", MonoScript.FromMonoBehaviour((MeshCombiner)target), typeof(MeshCombiner), false); - GUI.enabled = true; - #endregion Script. - - #region MeshFiltersToSkip array: - SerializedProperty meshFiltersToSkip = serializedObject.FindProperty("meshFiltersToSkip"); - EditorGUI.BeginChangeCheck(); - EditorGUILayout.PropertyField(meshFiltersToSkip, true); - if(EditorGUI.EndChangeCheck()) - { - serializedObject.ApplyModifiedProperties(); - } - #endregion MeshFiltersToSkip array. - - #region Button which combine Meshes into one Mesh & Toggles with combine options: - // Button: - if(GUILayout.Button("Combine Meshes")) - { - meshCombiner.CombineMeshes(true); - } - - // Toggles: - meshCombiner.CreateMultiMaterialMesh = GUILayout.Toggle(meshCombiner.CreateMultiMaterialMesh, "Create Multi-Material Mesh"); - meshCombiner.CombineInactiveChildren = GUILayout.Toggle(meshCombiner.CombineInactiveChildren, "Combine Inactive Children"); - - meshCombiner.DeactivateCombinedChildren = GUILayout.Toggle(meshCombiner.DeactivateCombinedChildren, "Deactivate Combined Children"); - meshCombiner.DeactivateCombinedChildrenMeshRenderers = GUILayout.Toggle(meshCombiner.DeactivateCombinedChildrenMeshRenderers, - "Deactivate Combined Children's MeshRenderers"); - - meshCombiner.GenerateUVMap = GUILayout.Toggle(meshCombiner.GenerateUVMap, new GUIContent("Generate UV Map", "It is a slow operation that "+ - "generates a UV map (required for the lightmap).\n\nCan be used only in the Editor.")); - - // The last (6) "Destroy Combined Children" Toggle: - GUIStyle style = new GUIStyle(EditorStyles.toggle); - if(meshCombiner.DestroyCombinedChildren) - { - style.onNormal.textColor = new Color(1, 0.15f, 0); - } - meshCombiner.DestroyCombinedChildren = GUILayout.Toggle(meshCombiner.DestroyCombinedChildren, - new GUIContent("Destroy Combined Children", "In the editor this operation can NOT be undone!\n\n"+ - "If you want to bring back destroyed GameObjects, you have to load again the scene without saving."), style); - #endregion Button which combine Meshes into one Mesh & Toggles with combine options. - - #region Path to the folder where combined Meshes will be saved: - // Create Labels: - GUILayout.Label(""); - GUILayout.Label(new GUIContent("Folder path:", "Folder path to save combined Mesh.")); - - // Create style wherein text color will be red if folder path is not valid: - style = new GUIStyle(EditorStyles.textField); - bool isValidPath = IsValidPath(meshCombiner.FolderPath); - if(!isValidPath) - { - style.normal.textColor = Color.red; - style.focused.textColor = Color.red; - } - - // Create TextField with custom style: - meshCombiner.FolderPath = EditorGUILayout.TextField(meshCombiner.FolderPath, style); - #endregion Path to the folder where combined Meshes will be saved. - - #region Button which save/show combined Mesh: - bool meshIsSaved = (mesh != null && AssetDatabase.Contains(mesh)); - GUI.enabled = (mesh != null && (isValidPath || meshIsSaved)); // Valid path is required for not saved Mesh. - string saveMeshButtonText = (meshIsSaved) ? "Show Saved Combined Mesh" : "Save Combined Mesh"; - - if(GUILayout.Button(saveMeshButtonText)) - { - meshCombiner.FolderPath = SaveCombinedMesh(mesh, meshCombiner.FolderPath); - } - GUI.enabled = true; - #endregion Button which save/show combined Mesh. - } - - private bool IsValidPath(string folderPath) - { - string pattern = "[:*?\"<>|]"; // Prohibited characters. - Regex regex = new Regex(pattern); - return (!regex.IsMatch(folderPath)); - } - - private string SaveCombinedMesh(Mesh mesh, string folderPath) - { - bool meshIsSaved = AssetDatabase.Contains(mesh); // If is saved then only show it in the project view. - - #region Create directories if Mesh and path doesn't exists: - folderPath = folderPath.Replace('\\', '/'); - if(!meshIsSaved && !AssetDatabase.IsValidFolder("Assets/"+folderPath)) - { - string[] folderNames = folderPath.Split('/'); - folderNames = folderNames.Where((folderName) => !folderName.Equals("")).ToArray(); - folderNames = folderNames.Where((folderName) => !folderName.Equals(" ")).ToArray(); - - folderPath = "/"; // Reset folder path. - for(int i = 0; i < folderNames.Length; i++) - { - folderNames[i] = folderNames[i].Trim(); - if(!AssetDatabase.IsValidFolder("Assets"+folderPath+folderNames[i])) - { - string folderPathWithoutSlash = folderPath.Substring(0, folderPath.Length-1); // Delete last "/" character. - AssetDatabase.CreateFolder("Assets"+folderPathWithoutSlash, folderNames[i]); - } - folderPath += folderNames[i]+"/"; - } - folderPath = folderPath.Substring(1, folderPath.Length-2); // Delete first and last "/" character. - } - #endregion Create directories if Mesh and path doesn't exists. - - #region Save Mesh: - if(!meshIsSaved) - { - string meshPath = "Assets/"+folderPath+"/"+mesh.name+".asset"; - int assetNumber = 1; - while(AssetDatabase.LoadAssetAtPath(meshPath, typeof(Mesh)) != null) // If Mesh with same name exists, change name. - { - meshPath = "Assets/"+folderPath+"/"+mesh.name+" ("+assetNumber+").asset"; - assetNumber++; - } - - AssetDatabase.CreateAsset(mesh, meshPath); - AssetDatabase.SaveAssets(); - Debug.Log("Mesh \""+mesh.name+"\" was saved in the \""+folderPath+"\" folder."); // Show info about saved mesh. - } - #endregion Save Mesh. - - EditorGUIUtility.PingObject(mesh); // Show Mesh in the project view. - return folderPath; - } -} diff --git a/Assets/MeshCombiner/Editor/MeshCombinerEditor.cs.meta b/Assets/MeshCombiner/Editor/MeshCombinerEditor.cs.meta deleted file mode 100644 index 7afc854..0000000 --- a/Assets/MeshCombiner/Editor/MeshCombinerEditor.cs.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: e2ae2996f91d32944a854e57dfc5a7ff -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 157192 - packageName: Mesh Combiner - packageVersion: 1.2 - assetPath: Assets/MeshCombiner/Editor/MeshCombinerEditor.cs - uploadId: 399985 diff --git a/Assets/MeshCombiner/Scripts/MeshCombiner.cs b/Assets/MeshCombiner/Scripts/MeshCombiner.cs deleted file mode 100644 index f80526b..0000000 --- a/Assets/MeshCombiner/Scripts/MeshCombiner.cs +++ /dev/null @@ -1,396 +0,0 @@ -using System.Collections.Generic; -using System.Linq; -using UnityEngine; - -[RequireComponent(typeof(MeshFilter))] -[RequireComponent(typeof(MeshRenderer))] -public class MeshCombiner : MonoBehaviour -{ - private const int Mesh16BitBufferVertexLimit = 65535; - - [SerializeField] - private bool createMultiMaterialMesh = false, combineInactiveChildren = false, deactivateCombinedChildren = true, - deactivateCombinedChildrenMeshRenderers = false, generateUVMap = false, destroyCombinedChildren = false; - [SerializeField] - private string folderPath = "Prefabs/CombinedMeshes"; - [SerializeField] - [Tooltip("MeshFilters with Meshes which we don't want to combine into one Mesh.")] - private MeshFilter[] meshFiltersToSkip = new MeshFilter[0]; - - public bool CreateMultiMaterialMesh { get { return createMultiMaterialMesh; } set { createMultiMaterialMesh = value; } } - public bool CombineInactiveChildren { get { return combineInactiveChildren; } set { combineInactiveChildren = value; } } - public bool DeactivateCombinedChildren - { - get { return deactivateCombinedChildren; } - set - { - deactivateCombinedChildren = value; - CheckDeactivateCombinedChildren(); - } - } - public bool DeactivateCombinedChildrenMeshRenderers - { - get { return deactivateCombinedChildrenMeshRenderers; } - set - { - deactivateCombinedChildrenMeshRenderers = value; - CheckDeactivateCombinedChildren(); - } - } - public bool GenerateUVMap { get { return generateUVMap; } set { generateUVMap = value; } } - public bool DestroyCombinedChildren - { - get { return destroyCombinedChildren; } - set - { - destroyCombinedChildren = value; - CheckDestroyCombinedChildren(); - } - } - public string FolderPath { get { return folderPath; } set { folderPath = value; } } - - - private void CheckDeactivateCombinedChildren() - { - if(deactivateCombinedChildren || deactivateCombinedChildrenMeshRenderers) - { - destroyCombinedChildren = false; - } - } - - private void CheckDestroyCombinedChildren() - { - if(destroyCombinedChildren) - { - deactivateCombinedChildren = false; - deactivateCombinedChildrenMeshRenderers = false; - } - } - - /// - /// Combine children's Meshes into one Mesh. Set 'showCreatedMeshInfo' to true if want to show info about created Mesh in the console. - /// - public void CombineMeshes(bool showCreatedMeshInfo) - { - #region Save our parent scale and our Transform and reset it temporarily: - // When we are unparenting and get parent again then sometimes scale is a little bit different so save scale before unparenting: - Vector3 oldScaleAsChild = transform.localScale; - - // If we have parent then his scale will affect to our new combined Mesh scale so unparent us: - int positionInParentHierarchy = transform.GetSiblingIndex(); - Transform parent = transform.parent; - transform.parent = null; - - // Thanks to this the new combined Mesh will have same position and scale in the world space like its children: - Quaternion oldRotation = transform.rotation; - Vector3 oldPosition = transform.position; - Vector3 oldScale = transform.localScale; - transform.rotation = Quaternion.identity; - transform.position = Vector3.zero; - transform.localScale = Vector3.one; - #endregion Save Transform and reset it temporarily. - - #region Combine Meshes into one Mesh: - if(!createMultiMaterialMesh) - { - CombineMeshesWithSingleMaterial(showCreatedMeshInfo); - } - else - { - CombineMeshesWithMutliMaterial(showCreatedMeshInfo); - } - #endregion Combine Meshes into one Mesh. - - #region Set old Transform values: - // Bring back the Transform values: - transform.rotation = oldRotation; - transform.position = oldPosition; - transform.localScale = oldScale; - - // Get back parent and same hierarchy position: - transform.parent = parent; - transform.SetSiblingIndex(positionInParentHierarchy); - - // Set back the scale value as child: - transform.localScale = oldScaleAsChild; - #endregion Set old Transform values. - } - - private MeshFilter[] GetMeshFiltersToCombine() - { - // Get all MeshFilters belongs to this GameObject and its children: - MeshFilter[] meshFilters = GetComponentsInChildren(combineInactiveChildren); - - // Delete first MeshFilter belongs to this GameObject in meshFiltersToSkip array: - meshFiltersToSkip = meshFiltersToSkip.Where((meshFilter) => meshFilter != meshFilters[0]).ToArray(); - - // Delete null values in meshFiltersToSkip array: - meshFiltersToSkip = meshFiltersToSkip.Where((meshFilter) => meshFilter != null).ToArray(); - - for(int i = 0; i < meshFiltersToSkip.Length; i++) - { - meshFilters = meshFilters.Where((meshFilter) => meshFilter != meshFiltersToSkip[i]).ToArray(); - } - - return meshFilters; - } - - private void CombineMeshesWithSingleMaterial(bool showCreatedMeshInfo) - { - // Get all MeshFilters belongs to this GameObject and its children: - MeshFilter[] meshFilters = GetMeshFiltersToCombine(); - - // First MeshFilter belongs to this GameObject so we don't need it: - CombineInstance[] combineInstances = new CombineInstance[meshFilters.Length-1]; - - // If it will be over 65535 then use the 32 bit index buffer: - long verticesLength = 0; - - for(int i = 0; i < meshFilters.Length-1; i++) // Skip first MeshFilter belongs to this GameObject in this loop. - { - combineInstances[i].subMeshIndex = 0; - combineInstances[i].mesh = meshFilters[i+1].sharedMesh; - combineInstances[i].transform = meshFilters[i+1].transform.localToWorldMatrix; - verticesLength += combineInstances[i].mesh.vertices.Length; - } - - // Set Material from child: - MeshRenderer[] meshRenderers = GetComponentsInChildren(combineInactiveChildren); - if(meshRenderers.Length >= 2) - { - meshRenderers[0].sharedMaterials = new Material[1]; - meshRenderers[0].sharedMaterial = meshRenderers[1].sharedMaterial; - } - else - { - meshRenderers[0].sharedMaterials = new Material[0]; // Reset the MeshRenderer's Materials array. - } - - // Create Mesh from combineInstances: - Mesh combinedMesh = new Mesh(); - combinedMesh.name = name; - - #if UNITY_2017_3_OR_NEWER - if(verticesLength > Mesh16BitBufferVertexLimit) - { - combinedMesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32; // Only works on Unity 2017.3 or higher. - } - - combinedMesh.CombineMeshes(combineInstances); - GenerateUV(combinedMesh); - meshFilters[0].sharedMesh = combinedMesh; - DeactivateCombinedGameObjects(meshFilters); - - if(showCreatedMeshInfo) - { - if(verticesLength <= Mesh16BitBufferVertexLimit) - { - Debug.Log("Mesh \""+name+"\" was created from "+combineInstances.Length+" children meshes and has "+verticesLength - +" vertices."); - } - else - { - Debug.Log("Mesh \""+name+"\" was created from "+combineInstances.Length+" children meshes and has "+verticesLength - +" vertices. Some old devices, like Android with Mali-400 GPU, do not support over 65535 vertices."); - } - } - #else - if(verticesLength <= Mesh16BitBufferVertexLimit) - { - combinedMesh.CombineMeshes(combineInstances); - GenerateUV(combinedMesh); - meshFilters[0].sharedMesh = combinedMesh; - DeactivateCombinedGameObjects(meshFilters); - - if(showCreatedMeshInfo) - { - Debug.Log("Mesh \""+name+"\" was created from "+combineInstances.Length+" children meshes and has "+verticesLength - +" vertices."); - } - } - else if(showCreatedMeshInfo) - { - Debug.Log("The mesh vertex limit is 65535! The created mesh had "+verticesLength+" vertices. Upgrade Unity version to" - +" 2017.3 or higher to avoid this limit (some old devices, like Android with Mali-400 GPU, do not support over 65535 vertices)."); - } - #endif - } - - private void CombineMeshesWithMutliMaterial(bool showCreatedMeshInfo) - { - #region Get MeshFilters, MeshRenderers and unique Materials from all children: - MeshFilter[] meshFilters = GetMeshFiltersToCombine(); - MeshRenderer[] meshRenderers = new MeshRenderer[meshFilters.Length]; - meshRenderers[0] = GetComponent(); // Our (parent) MeshRenderer. - - List uniqueMaterialsList = new List(); - for(int i = 0; i < meshFilters.Length-1; i++) - { - meshRenderers[i+1] = meshFilters[i+1].GetComponent(); - if(meshRenderers[i+1] != null) - { - Material[] materials = meshRenderers[i+1].sharedMaterials; // Get all Materials from child Mesh. - for(int j = 0; j < materials.Length; j++) - { - if(!uniqueMaterialsList.Contains(materials[j])) // If Material doesn't exists in the list then add it. - { - uniqueMaterialsList.Add(materials[j]); - } - } - } - } - #endregion Get MeshFilters, MeshRenderers and unique Materials from all children. - - #region Combine children Meshes with the same Material to create submeshes for final Mesh: - List finalMeshCombineInstancesList = new List(); - - // If it will be over 65535 then use the 32 bit index buffer: - long verticesLength = 0; - - for(int i = 0; i < uniqueMaterialsList.Count; i++) // Create each Mesh (submesh) from Meshes with the same Material. - { - List submeshCombineInstancesList = new List(); - - for(int j = 0; j < meshFilters.Length-1; j++) // Get only childeren Meshes (skip our Mesh). - { - if(meshRenderers[j+1] != null) - { - Material[] submeshMaterials = meshRenderers[j+1].sharedMaterials; // Get all Materials from child Mesh. - - for(int k = 0; k < submeshMaterials.Length; k++) - { - // If Materials are equal, combine Mesh from this child: - if(uniqueMaterialsList[i] == submeshMaterials[k]) - { - CombineInstance combineInstance = new CombineInstance(); - combineInstance.subMeshIndex = k; // Mesh may consist of smaller parts - submeshes. - // Every part have different index. If there are 3 submeshes - // in Mesh then MeshRender needs 3 Materials to render them. - combineInstance.mesh = meshFilters[j+1].sharedMesh; - combineInstance.transform = meshFilters[j+1].transform.localToWorldMatrix; - submeshCombineInstancesList.Add(combineInstance); - verticesLength += combineInstance.mesh.vertices.Length; - } - } - } - } - - // Create new Mesh (submesh) from Meshes with the same Material: - Mesh submesh = new Mesh(); - - #if UNITY_2017_3_OR_NEWER - if(verticesLength > Mesh16BitBufferVertexLimit) - { - submesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32; // Only works on Unity 2017.3 or higher. - } - - submesh.CombineMeshes(submeshCombineInstancesList.ToArray(), true); - #else - // Below Unity 2017.3 if vertices count is above the limit then an error appears in the console when we use the below method. - // Anyway we don't stop the algorithm here beacuse we want to count the entire number of vertices in the children meshes: - if(verticesLength <= Mesh16BitBufferVertexLimit) - { - submesh.CombineMeshes(submeshCombineInstancesList.ToArray(), true); - } - #endif - - CombineInstance finalCombineInstance = new CombineInstance(); - finalCombineInstance.subMeshIndex = 0; - finalCombineInstance.mesh = submesh; - finalCombineInstance.transform = Matrix4x4.identity; - finalMeshCombineInstancesList.Add(finalCombineInstance); - } - #endregion Combine submeshes (children Meshes) with the same Material. - - #region Set Materials array & combine submeshes into one multimaterial Mesh: - meshRenderers[0].sharedMaterials = uniqueMaterialsList.ToArray(); - - Mesh combinedMesh = new Mesh(); - combinedMesh.name = name; - - #if UNITY_2017_3_OR_NEWER - if(verticesLength > Mesh16BitBufferVertexLimit) - { - combinedMesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32; // Only works on Unity 2017.3 or higher. - } - - combinedMesh.CombineMeshes(finalMeshCombineInstancesList.ToArray(), false); - GenerateUV(combinedMesh); - meshFilters[0].sharedMesh = combinedMesh; - DeactivateCombinedGameObjects(meshFilters); - - if(showCreatedMeshInfo) - { - if(verticesLength <= Mesh16BitBufferVertexLimit) - { - Debug.Log("Mesh \""+name+"\" was created from "+(meshFilters.Length-1)+" children meshes and has " - +finalMeshCombineInstancesList.Count+" submeshes, and "+verticesLength+" vertices."); - } - else - { - Debug.Log("Mesh \""+name+"\" was created from "+(meshFilters.Length-1)+" children meshes and has " - +finalMeshCombineInstancesList.Count+" submeshes, and "+verticesLength - +" vertices. Some old devices, like Android with Mali-400 GPU, do not support over 65535 vertices."); - } - } - #else - if(verticesLength <= Mesh16BitBufferVertexLimit) - { - combinedMesh.CombineMeshes(finalMeshCombineInstancesList.ToArray(), false); - GenerateUV(combinedMesh); - meshFilters[0].sharedMesh = combinedMesh; - DeactivateCombinedGameObjects(meshFilters); - - if(showCreatedMeshInfo) - { - Debug.Log("Mesh \""+name+"\" was created from "+(meshFilters.Length-1)+" children meshes and has " - +finalMeshCombineInstancesList.Count+" submeshes, and "+verticesLength+" vertices."); - } - } - else if(showCreatedMeshInfo) - { - Debug.Log("The mesh vertex limit is 65535! The created mesh had "+verticesLength+" vertices. Upgrade Unity version to" - +" 2017.3 or higher to avoid this limit (some old devices, like Android with Mali-400 GPU, do not support over 65535 vertices)."); - } - #endif - #endregion Set Materials array & combine submeshes into one multimaterial Mesh. - } - - private void DeactivateCombinedGameObjects(MeshFilter[] meshFilters) - { - for(int i = 0; i < meshFilters.Length-1; i++) // Skip first MeshFilter belongs to this GameObject in this loop. - { - if(!destroyCombinedChildren) - { - if(deactivateCombinedChildren) - { - meshFilters[i+1].gameObject.SetActive(false); - } - if(deactivateCombinedChildrenMeshRenderers) - { - MeshRenderer meshRenderer = meshFilters[i+1].gameObject.GetComponent(); - if(meshRenderer != null) - { - meshRenderer.enabled = false; - } - } - } - else - { - DestroyImmediate(meshFilters[i+1].gameObject); - } - } - } - - private void GenerateUV(Mesh combinedMesh) - { - #if UNITY_EDITOR - if(generateUVMap) - { - UnityEditor.UnwrapParam unwrapParam = new UnityEditor.UnwrapParam(); - UnityEditor.UnwrapParam.SetDefaults(out unwrapParam); - UnityEditor.Unwrapping.GenerateSecondaryUVSet(combinedMesh, unwrapParam); - } - #endif - } -} diff --git a/Assets/MeshCombiner/Scripts/MeshCombiner.cs.meta b/Assets/MeshCombiner/Scripts/MeshCombiner.cs.meta deleted file mode 100644 index 72026a4..0000000 --- a/Assets/MeshCombiner/Scripts/MeshCombiner.cs.meta +++ /dev/null @@ -1,18 +0,0 @@ -fileFormatVersion: 2 -guid: 24fb3eb29eeebd04d87475bbfb984a31 -MonoImporter: - externalObjects: {} - serializedVersion: 2 - defaultReferences: [] - executionOrder: 0 - icon: {instanceID: 0} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 157192 - packageName: Mesh Combiner - packageVersion: 1.2 - assetPath: Assets/MeshCombiner/Scripts/MeshCombiner.cs - uploadId: 399985 diff --git a/Assets/MeshCombiner/readme.pdf b/Assets/MeshCombiner/readme.pdf deleted file mode 100644 index f641008..0000000 Binary files a/Assets/MeshCombiner/readme.pdf and /dev/null differ diff --git a/Assets/MeshCombiner/readme.pdf.meta b/Assets/MeshCombiner/readme.pdf.meta deleted file mode 100644 index 24b493d..0000000 --- a/Assets/MeshCombiner/readme.pdf.meta +++ /dev/null @@ -1,14 +0,0 @@ -fileFormatVersion: 2 -guid: 02ac7360968340d469ead7285ab6ea15 -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: -AssetOrigin: - serializedVersion: 1 - productId: 157192 - packageName: Mesh Combiner - packageVersion: 1.2 - assetPath: Assets/MeshCombiner/readme.pdf - uploadId: 399985 diff --git a/Assets/Resources/Sounds/MyAudiioMixture.mixer b/Assets/Resources/Sounds/MyAudiioMixture.mixer index 7d91a1e..35523c4 100644 --- a/Assets/Resources/Sounds/MyAudiioMixture.mixer +++ b/Assets/Resources/Sounds/MyAudiioMixture.mixer @@ -69,8 +69,8 @@ AudioMixerSnapshotController: m_AudioMixer: {fileID: 24100000} m_SnapshotID: b125f6022dd0a104b9b54efeb28d266e m_FloatValues: - caac7c9334139f54abe11e5b47768405: -19.928473 - 348b00e64187ec641af4c42690f376c9: -9.960263 + caac7c9334139f54abe11e5b47768405: -14.816613 + 348b00e64187ec641af4c42690f376c9: -10.4748535 m_TransitionOverrides: {} --- !u!244 &872118261864561489 AudioMixerEffectController: diff --git a/Assets/Scenes/GameScene.unity b/Assets/Scenes/GameScene.unity index e96c10c..fb9c863 100644 --- a/Assets/Scenes/GameScene.unity +++ b/Assets/Scenes/GameScene.unity @@ -927,7 +927,7 @@ ParticleSystem: serializedVersion: 2 minMaxState: 0 minColor: {r: 1, g: 1, b: 1, a: 1} - maxColor: {r: 0, g: 1, b: 0.9098039, a: 1} + maxColor: {r: 1, g: 1, b: 1, a: 1} maxGradient: serializedVersion: 2 key0: {r: 1, g: 1, b: 1, a: 1} @@ -10893,9 +10893,9 @@ MonoBehaviour: m_GameObject: {fileID: 343573092} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 336cf259e80318a4288740b3b0b06838, type: 3} + m_Script: {fileID: 11500000, guid: 383ae0131df62e7439a21c411e0abe2e, type: 3} m_Name: - m_EditorClassIdentifier: Assembly-CSharp::GameLifetimeScope + m_EditorClassIdentifier: AppAssembly::Darkmatter.App.GameLifetimeScope parentReference: TypeName: autoRun: 1 @@ -10904,12 +10904,12 @@ MonoBehaviour: manager: {fileID: 1850425826} inputReader: {fileID: 11400000, guid: dfe12148dc4d7ea46b49e490c1b1aad5, type: 2} gameSession: {fileID: 11400000, guid: 166236fc288d5a343ba6dd8ab704e653, type: 2} - player: {fileID: 581798942} + player: {fileID: 581798945} audioController: {fileID: 1783072555} - gameScreenView: {fileID: 861211733} + gameScreenView: {fileID: 861211735} startScreenView: {fileID: 861211736} - deathScreenView: {fileID: 861211734} - pauseScreenView: {fileID: 861211735} + deathScreenView: {fileID: 861211733} + pauseScreenView: {fileID: 861211734} --- !u!1 &345728572 GameObject: m_ObjectHideFlags: 0 @@ -11125,9 +11125,9 @@ GameObject: - component: {fileID: 581798938} - component: {fileID: 581798937} - component: {fileID: 581798941} - - component: {fileID: 581798942} - component: {fileID: 581798944} - component: {fileID: 581798943} + - component: {fileID: 581798945} m_Layer: 0 m_Name: Player m_TagString: Player @@ -11257,30 +11257,6 @@ Rigidbody: m_Interpolate: 1 m_Constraints: 122 m_CollisionDetection: 1 ---- !u!114 &581798942 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 581798936} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 614bffbd597c49349a47f76b0ba8b277, type: 3} - m_Name: - m_EditorClassIdentifier: Assembly-CSharp::Player - jumpForce: 2.5 - rb: {fileID: 581798941} - splashObject: {fileID: 9000420296853654146, guid: 28c1e4391077e5c4e98f5924dc346fd9, type: 3} - splashParent: {fileID: 1850425825} - deadParticle: {fileID: 239977915} - jumpParticle: {fileID: 185655302} - cinemachineImpulseSource: {fileID: 581798944} - playerMaterial: {fileID: 2100000, guid: 7e2e81cc0b156ce419830371ca3c39d5, type: 2} - playerMaterialColors: - - {r: 0, g: 1, b: 0.98041606, a: 0} - - {r: 0, g: 1, b: 0.59772396, a: 0} - - {r: 0.8490566, g: 0.36445355, b: 0.75023574, a: 0} --- !u!96 &581798943 TrailRenderer: serializedVersion: 4 @@ -11453,6 +11429,30 @@ MonoBehaviour: DissipationDistance: 100 PropagationSpeed: 343 DefaultVelocity: {x: 0, y: -1, z: 0} +--- !u!114 &581798945 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 581798936} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: e7d04c655849ccf438cd955f139e9789, type: 3} + m_Name: + m_EditorClassIdentifier: DomainAssembly::Darkmatter.Domain.Player + jumpForce: 3 + rb: {fileID: 581798941} + splashObject: {fileID: 9000420296853654146, guid: 28c1e4391077e5c4e98f5924dc346fd9, type: 3} + splashParent: {fileID: 1850425825} + deadParticle: {fileID: 239977915} + jumpParticle: {fileID: 185655302} + cinemachineImpulseSource: {fileID: 581798944} + playerMaterial: {fileID: 2100000, guid: 7e2e81cc0b156ce419830371ca3c39d5, type: 2} + playerMaterialColors: + - {r: 0.055980783, g: 0.6416706, b: 0.6981132, a: 0} + - {r: 0.735849, g: 0.09371662, b: 0.48520926, a: 0} + - {r: 0.22148229, g: 0.13866144, b: 0.7169812, a: 0} --- !u!1 &670778192 GameObject: m_ObjectHideFlags: 0 @@ -12115,9 +12115,9 @@ GameObject: m_Component: - component: {fileID: 861211732} - component: {fileID: 861211736} - - component: {fileID: 861211733} - component: {fileID: 861211735} - component: {fileID: 861211734} + - component: {fileID: 861211733} m_Layer: 5 m_Name: Screens m_TagString: Untagged @@ -12157,12 +12157,14 @@ MonoBehaviour: m_GameObject: {fileID: 861211731} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 808ee37de5cf8b546b46962c901f0332, type: 3} + m_Script: {fileID: 11500000, guid: 4aab9e4cddc66e44e90193677b63e24e, type: 3} m_Name: - m_EditorClassIdentifier: Assembly-CSharp::GameScreenView - gameScreen: {fileID: 1088536451} - pauseBtn: {fileID: 1416564336} - scoreText: {fileID: 1320482639} + m_EditorClassIdentifier: PresentationAssembly::Darkmatter.Presentation.DeathScreenView + deathScreen: {fileID: 1465549298} + restartBtn: {fileID: 1849045416} + exitBtn: {fileID: 1148039067} + score: {fileID: 717201482} + highScore: {fileID: 21876042} --- !u!114 &861211734 MonoBehaviour: m_ObjectHideFlags: 0 @@ -12172,14 +12174,12 @@ MonoBehaviour: m_GameObject: {fileID: 861211731} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 76c438a869d58da489fc53c68f98d32d, type: 3} + m_Script: {fileID: 11500000, guid: e57e5514aa3e64c40a4d396db68170c4, type: 3} m_Name: - m_EditorClassIdentifier: Assembly-CSharp::DeathScreenView - deathScreen: {fileID: 1465549298} - restartBtn: {fileID: 1849045416} - exitBtn: {fileID: 1148039067} - score: {fileID: 717201482} - highScore: {fileID: 21876042} + m_EditorClassIdentifier: PresentationAssembly::Darkmatter.Presentation.PauseScreenView + pauseScreen: {fileID: 1396549892} + resumeBtn: {fileID: 1829305577} + restartBtn: {fileID: 1942266450} --- !u!114 &861211735 MonoBehaviour: m_ObjectHideFlags: 0 @@ -12189,12 +12189,12 @@ MonoBehaviour: m_GameObject: {fileID: 861211731} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 9139af2b841ef584da86e7b387b494d5, type: 3} + m_Script: {fileID: 11500000, guid: 2efefd316bbb28246bcee036477a00a5, type: 3} m_Name: - m_EditorClassIdentifier: Assembly-CSharp::PauseScreenView - pauseScreen: {fileID: 1396549892} - resumeBtn: {fileID: 1829305577} - restartBtn: {fileID: 1942266450} + m_EditorClassIdentifier: PresentationAssembly::Darkmatter.Presentation.GameScreenView + gameScreen: {fileID: 1088536451} + pauseBtn: {fileID: 1416564336} + scoreText: {fileID: 1320482639} --- !u!114 &861211736 MonoBehaviour: m_ObjectHideFlags: 0 @@ -12204,9 +12204,9 @@ MonoBehaviour: m_GameObject: {fileID: 861211731} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: e48dcf0a824cead4d8c1339c10b81b3b, type: 3} + m_Script: {fileID: 11500000, guid: 3fccddd791b55e446a7a091823024f34, type: 3} m_Name: - m_EditorClassIdentifier: Assembly-CSharp::StartScreenView + m_EditorClassIdentifier: PresentationAssembly::Darkmatter.Presentation.StartScreenView startScreen: {fileID: 1613812279} tapToStartButton: {fileID: 341853334} --- !u!1 &926831878 @@ -12434,37 +12434,6 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 933431910} m_CullTransparentMesh: 1 ---- !u!1 &1002942599 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1002942600} - m_Layer: 0 - m_Name: GameObject - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!4 &1002942600 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1002942599} - serializedVersion: 2 - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} - m_LocalScale: {x: 1, y: 1, z: 1} - m_ConstrainProportionsScale: 0 - m_Children: [] - m_Father: {fileID: 1073116392} - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!1 &1050760847 GameObject: m_ObjectHideFlags: 0 @@ -12632,8 +12601,7 @@ Transform: m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} m_ConstrainProportionsScale: 0 - m_Children: - - {fileID: 1002942600} + m_Children: [] m_Father: {fileID: 268692280} m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} --- !u!114 &1073116393 @@ -13439,16 +13407,16 @@ MonoBehaviour: m_GameObject: {fileID: 1783072553} m_Enabled: 1 m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 7ef25ef6976b18845b4fa4ea67c8b39b, type: 3} + m_Script: {fileID: 11500000, guid: 6359276e3f19a0e439ff6d871c3aee67, type: 3} m_Name: - m_EditorClassIdentifier: Assembly-CSharp::AudioController + m_EditorClassIdentifier: PresentationAssembly::Darkmatter.Presentation.AudioController MusicSource: {fileID: 110731547} SFXSource: {fileID: 694958382} - backgroundMusicClip: {fileID: 8300000, guid: b7da48c15e710a741842583fac3307c7, type: 3} + backgroundMusicClip: {fileID: 8300000, guid: 390e7a99cb0560f49a1dd255b0e3b819, type: 3} jumpClip: {fileID: 8300000, guid: e1a8921df70cc324bad7155d94a07df6, type: 3} deathClip: {fileID: 8300000, guid: 7e26c9daf4c32483b9c2790e662d3f1b, type: 3} btnPressedClip: {fileID: 8300000, guid: ffb159a21c8a04135a5616979c828fab, type: 3} - scoredClip: {fileID: 8300000, guid: 0c008ee3ee72a4362a35be25fa5de043, type: 3} + scoredClip: {fileID: 8300000, guid: 37aed74757072c5459447a997d221fad, type: 3} --- !u!1 &1829305575 GameObject: m_ObjectHideFlags: 0 diff --git a/Assets/Scripts/AudioScripts.meta b/Assets/Scripts/AudioScripts.meta deleted file mode 100644 index a27cdc4..0000000 --- a/Assets/Scripts/AudioScripts.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 069731fdb7a6d4d4a84e277d895a4661 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/AudioScripts/AudioController.cs b/Assets/Scripts/AudioScripts/AudioController.cs deleted file mode 100644 index 60a1b66..0000000 --- a/Assets/Scripts/AudioScripts/AudioController.cs +++ /dev/null @@ -1,60 +0,0 @@ -using UnityEngine; -using VContainer; - -public class AudioController : MonoBehaviour, IAudioController -{ - [SerializeField] private AudioSource MusicSource; - [SerializeField] private AudioSource SFXSource; - - public AudioClip backgroundMusicClip; - public AudioClip jumpClip; - public AudioClip deathClip; - public AudioClip btnPressedClip; - public AudioClip scoredClip; - - [Inject] private IGameSession IgameSession; - - private void Start() - { - MusicSource.clip = backgroundMusicClip; - MusicSource.loop = true; - MusicSource.Play(); - } - - - public void PlaySfx(AudioClip clip) - { - if (!IgameSession.hasGameStarted) return; - SFXSource.ignoreListenerPause = true; - SFXSource.PlayOneShot(clip); - } - - public void PlayJumpSound() - { - PlaySfx(jumpClip); - } - - public void PlayDeathSound() - { - PlaySfx(deathClip); - } - - public void PlayBtnPressedSound() - { - PlaySfx(btnPressedClip); - } - - public void PlayScoredSound() - { - PlaySfx(scoredClip); - } -} - -public interface IAudioController -{ - void PlayJumpSound(); - void PlayDeathSound(); - void PlayBtnPressedSound(); - void PlayScoredSound(); - -} diff --git a/Assets/Scripts/AudioScripts/AudioController.cs.meta b/Assets/Scripts/AudioScripts/AudioController.cs.meta deleted file mode 100644 index 0cc1d38..0000000 --- a/Assets/Scripts/AudioScripts/AudioController.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 7ef25ef6976b18845b4fa4ea67c8b39b \ No newline at end of file diff --git a/Assets/Scripts/Input.meta b/Assets/Scripts/Input.meta deleted file mode 100644 index 34f5069..0000000 --- a/Assets/Scripts/Input.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: e3d2f36700d58cf4ba232adcc8c4ec43 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/Input/IInputReader.cs b/Assets/Scripts/Input/IInputReader.cs deleted file mode 100644 index ce959a0..0000000 --- a/Assets/Scripts/Input/IInputReader.cs +++ /dev/null @@ -1,14 +0,0 @@ -using System; -using UnityEngine; - -public interface IInputReader -{ - event Action OnDragValueChanged; - bool isMouseButtonPressed { get; } - bool isDragging { get; } - Vector2 dragInput { get; } - - void LockInput(); - void UnlockInput(); - -} diff --git a/Assets/Scripts/Input/IInputReader.cs.meta b/Assets/Scripts/Input/IInputReader.cs.meta deleted file mode 100644 index 2455dd2..0000000 --- a/Assets/Scripts/Input/IInputReader.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: a6a7dfea2b9284948b9f376a93c5a538 \ No newline at end of file diff --git a/Assets/Scripts/Input/InputReaderSO.cs b/Assets/Scripts/Input/InputReaderSO.cs deleted file mode 100644 index 99b5f56..0000000 --- a/Assets/Scripts/Input/InputReaderSO.cs +++ /dev/null @@ -1,56 +0,0 @@ -using System; -using Unity.Mathematics; -using UnityEngine; -using UnityEngine.InputSystem; - -[CreateAssetMenu(fileName = "InputReaderSO", menuName = "Scriptable Objects/InputReaderSO")] -public class InputReaderSO : ScriptableObject, GameInputAction.IPlayerActions , IInputReader -{ - public event Action OnDragValueChanged; - public Vector2 dragInput { - get => _dragInput; - private set { - _dragInput = value; - OnDragValueChanged?.Invoke(_dragInput); - } - } - public bool isDragging => isMouseButtonPressed && dragInput.sqrMagnitude > 0.001f; - - - public bool isMouseButtonPressed { get;private set; } - private Vector2 _dragInput; - private GameInputAction action; - - private void OnEnable() - { - if(action == null) action = new GameInputAction(); - action.Enable(); - action.Player.SetCallbacks(this); - isMouseButtonPressed= false; - } - - private void OnDisable() - { - action.Player.Disable(); - } - - public void OnDrag(InputAction.CallbackContext context) - { - dragInput = context.ReadValue(); - } - - public void OnMouseClicked(InputAction.CallbackContext context) - { - isMouseButtonPressed = context.ReadValue() == 1 ? true : false; - } - - public void LockInput() - { - action.Player.Disable(); - } - - public void UnlockInput() - { - action.Player.Enable(); - } -} diff --git a/Assets/Scripts/LifeTimeScope.meta b/Assets/Scripts/LifeTimeScope.meta deleted file mode 100644 index e5951b5..0000000 --- a/Assets/Scripts/LifeTimeScope.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 0c4faff2b53845e47bdc1621d36c920e -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/LifeTimeScope/GameLifetimeScope.cs b/Assets/Scripts/LifeTimeScope/GameLifetimeScope.cs deleted file mode 100644 index 75afca9..0000000 --- a/Assets/Scripts/LifeTimeScope/GameLifetimeScope.cs +++ /dev/null @@ -1,38 +0,0 @@ -using System; -using UnityEngine; -using VContainer; -using VContainer.Unity; - -public class GameLifetimeScope : LifetimeScope -{ - [SerializeField] private PlatformPool pool; - [SerializeField] private PlatformManager manager; - [SerializeField] private InputReaderSO inputReader; - [SerializeField] private GameSession gameSession; - [SerializeField] private Player player; - [SerializeField] private AudioController audioController; - - //UI References - [SerializeField] private GameScreenView gameScreenView; - [SerializeField] private StartScreenView startScreenView; - [SerializeField] private DeathScreenView deathScreenView; - [SerializeField] private PauseScreenView pauseScreenView; - protected override void Configure(IContainerBuilder builder) - { - builder.RegisterComponent(pool).As(); - builder.RegisterComponent(manager).As(); - builder.RegisterInstance(inputReader).As(); - builder.Register(Lifetime.Singleton).As(); - builder.RegisterInstance(gameSession).As(); - builder.RegisterComponent(player).As(); - builder.RegisterComponent(audioController).As().AsSelf(); - - - builder.RegisterEntryPoint(Lifetime.Singleton).WithParameter(startScreenView); - builder.Register(Lifetime.Singleton).WithParameter(gameScreenView).As(); - builder.Register(Lifetime.Singleton).WithParameter(pauseScreenView).As(); - builder.Register(Lifetime.Singleton).WithParameter(deathScreenView).As(); - - - } -} diff --git a/Assets/Scripts/LifeTimeScope/GameLifetimeScope.cs.meta b/Assets/Scripts/LifeTimeScope/GameLifetimeScope.cs.meta deleted file mode 100644 index 0307a34..0000000 --- a/Assets/Scripts/LifeTimeScope/GameLifetimeScope.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 336cf259e80318a4288740b3b0b06838 \ No newline at end of file diff --git a/Assets/Scripts/LifeTimeScope/GameSession.cs b/Assets/Scripts/LifeTimeScope/GameSession.cs deleted file mode 100644 index 3e36b49..0000000 --- a/Assets/Scripts/LifeTimeScope/GameSession.cs +++ /dev/null @@ -1,26 +0,0 @@ -using UnityEngine; - -[CreateAssetMenu(fileName ="GameSession", menuName ="Scriptable Objects/GameSession") ] -public class GameSession : ScriptableObject,IGameSession -{ - public bool showStartScreen { get; set; } = false; - public bool hasGameStarted { get; set; } = false; - - private void OnEnable() - { - showStartScreen = true; - hasGameStarted = false; - } - - private void OnDisable() - { - showStartScreen = false; - hasGameStarted = false; - } -} - -public interface IGameSession -{ - bool showStartScreen { get; set; } - bool hasGameStarted { get; set; } -} diff --git a/Assets/Scripts/LifeTimeScope/GameSession.cs.meta b/Assets/Scripts/LifeTimeScope/GameSession.cs.meta deleted file mode 100644 index 3838350..0000000 --- a/Assets/Scripts/LifeTimeScope/GameSession.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: b87b1e9ef0f8a8f4d8c0488709157211 \ No newline at end of file diff --git a/Assets/Scripts/PlatformScripts.meta b/Assets/Scripts/PlatformScripts.meta deleted file mode 100644 index f4cc893..0000000 --- a/Assets/Scripts/PlatformScripts.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: bcc5e5540dbad614aa5d39f1633294d8 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/PlayerScripts.meta b/Assets/Scripts/PlayerScripts.meta deleted file mode 100644 index 9e6b819..0000000 --- a/Assets/Scripts/PlayerScripts.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 524baa0f3b2a19444bc03e9aba958063 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/PlayerScripts/Player.cs b/Assets/Scripts/PlayerScripts/Player.cs deleted file mode 100644 index c49a4c6..0000000 --- a/Assets/Scripts/PlayerScripts/Player.cs +++ /dev/null @@ -1,79 +0,0 @@ -using System.Collections; -using Unity.Cinemachine; -using UnityEngine; -using VContainer; - -public class Player : MonoBehaviour, IPlayer -{ - [SerializeField] private float jumpForce = 3f; - [SerializeField] private Rigidbody rb; - [SerializeField] private GameObject splashObject; - [SerializeField] private Transform splashParent; - [SerializeField] private ParticleSystem deadParticle; - [SerializeField] private ParticleSystem jumpParticle; - [SerializeField] private CinemachineImpulseSource cinemachineImpulseSource; - - [SerializeField] private Material playerMaterial; - [SerializeField] Color[] playerMaterialColors; - - public bool isDead { get; private set; } - - [Inject] private IDeathScreenController IdeathScreenController; - [Inject] private IInputReader IinputReader; - [Inject] private IAudioController IaudioController; - - private void Start() - { - isDead = false; - playerMaterial.color = playerMaterialColors[Random.Range(0, playerMaterialColors.Length)]; - } - - private void OnCollisionEnter(Collision collision) - { - ShowAndHideSplash(collision); - if(isDead) return; - - if (collision.gameObject.CompareTag("Safe") && rb.linearVelocity.y <=0.5f) - { - rb.linearVelocity = Vector3.up * jumpForce; - jumpParticle.Play(); - IaudioController.PlayJumpSound(); - } - else if(collision.gameObject.CompareTag("Death")) - { - Die(); - } - } - - private void ShowAndHideSplash(Collision collision) - { - float splashYPos = collision.transform.position.y + 0.155f; - ContactPoint contact = collision.contacts[0]; - Vector3 surfacePoint = new Vector3(contact.point.x, splashYPos, contact.point.z); - GameObject instancedSplash = Instantiate(splashObject, surfacePoint, splashObject.transform.rotation, collision.gameObject.transform); - instancedSplash.transform.localScale = new Vector3(Random.Range(0.05f, 0.09f), Random.Range(0.05f, 0.09f),1); - Destroy(instancedSplash, 2f); - } - private void Die() - { - isDead = true; - IinputReader.LockInput(); - deadParticle.Play(); - this.GetComponent().enabled = false; - IaudioController.PlayDeathSound(); - Handheld.Vibrate(); //Vibration - cinemachineImpulseSource.GenerateImpulseWithForce(1); - StartCoroutine(DieRoutine()); - } - - IEnumerator DieRoutine() - { - yield return new WaitForSeconds(1f); - IdeathScreenController.ShowDeathScreen(); - } -} - -public interface IPlayer -{ - bool isDead { get; } -} diff --git a/Assets/Scripts/PlayerScripts/Player.cs.meta b/Assets/Scripts/PlayerScripts/Player.cs.meta deleted file mode 100644 index 03f5d49..0000000 --- a/Assets/Scripts/PlayerScripts/Player.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 614bffbd597c49349a47f76b0ba8b277 \ No newline at end of file diff --git a/Assets/Scripts/ScoreService.meta b/Assets/Scripts/ScoreService.meta deleted file mode 100644 index 590cadf..0000000 --- a/Assets/Scripts/ScoreService.meta +++ /dev/null @@ -1,8 +0,0 @@ -fileFormatVersion: 2 -guid: 5dc35ce5c98e8764d87e246e561805f6 -folderAsset: yes -DefaultImporter: - externalObjects: {} - userData: - assetBundleName: - assetBundleVariant: diff --git a/Assets/Scripts/ScoreService/ScoreService.cs b/Assets/Scripts/ScoreService/ScoreService.cs deleted file mode 100644 index 095f97d..0000000 --- a/Assets/Scripts/ScoreService/ScoreService.cs +++ /dev/null @@ -1,36 +0,0 @@ -using System; -using UnityEngine; - -public class ScoreService : IScoreService -{ - public event Action OnScoreChange; - public int score { get; private set; } - - public int highScore { get; private set; } = PlayerPrefs.GetInt("HighScore"); - - public void AddScore() - { - score += 5; - if (score>highScore) - { - SetNewHighScore(); - } - OnScoreChange?.Invoke(score); - } - - private void SetNewHighScore() - { - highScore = score; - PlayerPrefs.SetInt("HighScore", highScore); - PlayerPrefs.Save(); - } - -} - -public interface IScoreService -{ - int score { get; } - int highScore { get; } - event Action OnScoreChange; - void AddScore(); -} diff --git a/Assets/Scripts/UI/DeathScreenController.cs b/Assets/Scripts/UI/DeathScreenController.cs deleted file mode 100644 index 4a92e07..0000000 --- a/Assets/Scripts/UI/DeathScreenController.cs +++ /dev/null @@ -1,51 +0,0 @@ -using System; -using UnityEngine; -using UnityEngine.SceneManagement; -using VContainer; -using VContainer.Unity; - -public class DeathScreenController:IDeathScreenController -{ - private DeathScreenView deathScreenView; - - [Inject] private IScoreService IscoreService; - [Inject] private IInputReader IinputReader; - [Inject] private IAudioController IaudioController; - [Inject] private IGameSession IgameSession; - [Inject] private IGameScreenController IgameScreenController; - public DeathScreenController(DeathScreenView _deathScreenView) - { - deathScreenView = _deathScreenView; - deathScreenView.restartBtn.onClick.AddListener(OnRestartButtonClicked); - deathScreenView.exitBtn.onClick.AddListener(OnExitButtonClicked); - } - - public void ShowDeathScreen() - { - IgameScreenController.HideGameScreen(); - deathScreenView.Show(IscoreService.score,IscoreService.highScore); - } - - private void OnExitButtonClicked() - { - Debug.Log("Exit Button Clicked"); - IinputReader.UnlockInput(); - IaudioController.PlayBtnPressedSound(); - IgameSession.showStartScreen = true; - SceneManager.LoadScene(0); - } - - private void OnRestartButtonClicked() - { - Debug.Log("Restart Button Clicked"); - IinputReader.UnlockInput(); - IaudioController.PlayBtnPressedSound(); - IgameSession.showStartScreen = false; - SceneManager.LoadScene(0); - } -} - -public interface IDeathScreenController -{ - void ShowDeathScreen(); -} \ No newline at end of file diff --git a/Assets/Scripts/UI/DeathScreenController.cs.meta b/Assets/Scripts/UI/DeathScreenController.cs.meta deleted file mode 100644 index 18b2cf1..0000000 --- a/Assets/Scripts/UI/DeathScreenController.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 0a02f33f5247de546a0a273165e9cf96 \ No newline at end of file diff --git a/Assets/Scripts/UI/DeathScreenView.cs b/Assets/Scripts/UI/DeathScreenView.cs deleted file mode 100644 index aea014e..0000000 --- a/Assets/Scripts/UI/DeathScreenView.cs +++ /dev/null @@ -1,24 +0,0 @@ -using TMPro; -using UnityEngine; -using UnityEngine.UI; - -public class DeathScreenView : MonoBehaviour -{ - [SerializeField] private GameObject deathScreen; - public Button restartBtn; - public Button exitBtn; - public TextMeshProUGUI score; - public TextMeshProUGUI highScore; - - public void Show(int _score, int _highScore) - { - this.score.text = _score.ToString(); - this.highScore.text = _highScore.ToString(); - deathScreen.SetActive(true); - } - public void Hide() - { - deathScreen.SetActive(false); - } - -} diff --git a/Assets/Scripts/UI/DeathScreenView.cs.meta b/Assets/Scripts/UI/DeathScreenView.cs.meta deleted file mode 100644 index f3731ad..0000000 --- a/Assets/Scripts/UI/DeathScreenView.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 76c438a869d58da489fc53c68f98d32d \ No newline at end of file diff --git a/Assets/Scripts/UI/GameScreenController.cs b/Assets/Scripts/UI/GameScreenController.cs deleted file mode 100644 index eede3c3..0000000 --- a/Assets/Scripts/UI/GameScreenController.cs +++ /dev/null @@ -1,54 +0,0 @@ -using System; -using Unity.VisualScripting; -using UnityEngine; -using VContainer; -using VContainer.Unity; - -public class GameScreenController: IGameScreenController -{ - GameScreenView gameScreenView; - [Inject] private IScoreService IscoreService; - [Inject] private IPauseScreenController IpauseScreenController; - [Inject] private IInputReader IinputReader; - [Inject] private IAudioController IaudioController; - public GameScreenController(GameScreenView _gameScreenView,IScoreService _IscoreService,IPauseScreenController _IpauseScreenController) - { - this.gameScreenView = _gameScreenView; - IscoreService = _IscoreService; - IpauseScreenController=_IpauseScreenController; - IscoreService.OnScoreChange += UpdateScore; - gameScreenView.pauseBtn.onClick.AddListener(OnPauseButtonClicked); - } - - - - private void UpdateScore(int score) - { - Debug.Log("calling Score"); - gameScreenView.UpdateScore(score); - } - - public void ShowGameScreen() - { - gameScreenView.Show(); - } - - public void HideGameScreen() - { - gameScreenView.Hide(); - } - - public void OnPauseButtonClicked() - { - IaudioController.PlayBtnPressedSound(); - Time.timeScale = 0f; - IinputReader.LockInput(); - IpauseScreenController.ShowPauseScreen(); - } - -} - -public interface IGameScreenController { - void ShowGameScreen(); - void HideGameScreen(); -} diff --git a/Assets/Scripts/UI/GameScreenController.cs.meta b/Assets/Scripts/UI/GameScreenController.cs.meta deleted file mode 100644 index ceec30e..0000000 --- a/Assets/Scripts/UI/GameScreenController.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 114040c725db5444583af5f21fd0e0b8 \ No newline at end of file diff --git a/Assets/Scripts/UI/GameScreenView.cs b/Assets/Scripts/UI/GameScreenView.cs deleted file mode 100644 index a0e8899..0000000 --- a/Assets/Scripts/UI/GameScreenView.cs +++ /dev/null @@ -1,25 +0,0 @@ -using TMPro; -using UnityEngine; -using UnityEngine.UI; - -public class GameScreenView : MonoBehaviour -{ - [SerializeField] private GameObject gameScreen; - public Button pauseBtn; - [SerializeField] private TextMeshProUGUI scoreText; - - public void UpdateScore(int score) - { - scoreText.text = score.ToString(); - } - - public void Show() - { - gameScreen.SetActive(true); - } - - public void Hide() - { - gameScreen.SetActive(false); - } -} diff --git a/Assets/Scripts/UI/GameScreenView.cs.meta b/Assets/Scripts/UI/GameScreenView.cs.meta deleted file mode 100644 index be14538..0000000 --- a/Assets/Scripts/UI/GameScreenView.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 808ee37de5cf8b546b46962c901f0332 \ No newline at end of file diff --git a/Assets/Scripts/UI/PauseScreenController.cs b/Assets/Scripts/UI/PauseScreenController.cs deleted file mode 100644 index ead2dbd..0000000 --- a/Assets/Scripts/UI/PauseScreenController.cs +++ /dev/null @@ -1,47 +0,0 @@ -using System; -using UnityEngine; -using UnityEngine.SceneManagement; -using VContainer; - -public class PauseScreenController:IPauseScreenController -{ - private PauseScreenView pauseScreenView; - [Inject] private IInputReader IinputReader; - [Inject] private IAudioController IaudioController; - [Inject] private IGameSession IgameSession; - - public PauseScreenController(PauseScreenView _pauseScreenView) - { - pauseScreenView = _pauseScreenView; - pauseScreenView.resumeBtn.onClick.AddListener(OnResumeButtonClicked); - pauseScreenView.restartBtn.onClick.AddListener(OnRestartButtonClicked); - } - - public void ShowPauseScreen() - { - pauseScreenView.Show(); - } - - private void OnRestartButtonClicked() - { - Time.timeScale = 1.0f; - IinputReader.UnlockInput(); - IaudioController.PlayBtnPressedSound(); - IgameSession.showStartScreen = false; - SceneManager.LoadScene(0); //Restart This Scene - } - - private void OnResumeButtonClicked() - { - Time.timeScale = 1.0f; - pauseScreenView.Hide(); - IinputReader.UnlockInput(); - IaudioController.PlayBtnPressedSound(); - - } -} - -public interface IPauseScreenController -{ - void ShowPauseScreen(); -} diff --git a/Assets/Scripts/UI/PauseScreenController.cs.meta b/Assets/Scripts/UI/PauseScreenController.cs.meta deleted file mode 100644 index b7263c4..0000000 --- a/Assets/Scripts/UI/PauseScreenController.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: a02a1a48e230b5743b3aedb6b9dcf4e3 \ No newline at end of file diff --git a/Assets/Scripts/UI/PauseScreenView.cs b/Assets/Scripts/UI/PauseScreenView.cs deleted file mode 100644 index bbade17..0000000 --- a/Assets/Scripts/UI/PauseScreenView.cs +++ /dev/null @@ -1,19 +0,0 @@ -using UnityEngine; -using UnityEngine.UI; - -public class PauseScreenView : MonoBehaviour -{ - [SerializeField] public GameObject pauseScreen; - public Button resumeBtn; - public Button restartBtn; - - public void Show() - { - pauseScreen.SetActive(true); - } - - public void Hide() - { - pauseScreen.SetActive(false); - } -} diff --git a/Assets/Scripts/UI/PauseScreenView.cs.meta b/Assets/Scripts/UI/PauseScreenView.cs.meta deleted file mode 100644 index f1e0db6..0000000 --- a/Assets/Scripts/UI/PauseScreenView.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 9139af2b841ef584da86e7b387b494d5 \ No newline at end of file diff --git a/Assets/Scripts/UI/StartScreenController.cs b/Assets/Scripts/UI/StartScreenController.cs deleted file mode 100644 index 2f9d73a..0000000 --- a/Assets/Scripts/UI/StartScreenController.cs +++ /dev/null @@ -1,45 +0,0 @@ -using System; -using UnityEngine; -using VContainer; -using VContainer.Unity; - -public class StartScreenController:IStartable -{ - private StartScreenView startScreenView; - [Inject] IGameScreenController gameScreenController; - [Inject] IInputReader IinputReader; - [Inject] private IAudioController IaudioController; - [Inject] private IGameSession IgameSession; - public StartScreenController(StartScreenView _startScreenView, IGameScreenController _gameScreenController) - { - Debug.Log("StartScreenController Constructor Called"); - startScreenView = _startScreenView; - gameScreenController = _gameScreenController; - startScreenView.tapToStartButton.onClick.AddListener(OnTapToStartButtonClicked); - } - public void Start() - { - if(IgameSession.showStartScreen) - { - startScreenView.Show(); - IinputReader.LockInput(); - IgameSession.showStartScreen = false; - IgameSession.hasGameStarted = false; - } - else - { - gameScreenController.ShowGameScreen(); - IgameSession.hasGameStarted = true; - } - - } - - private void OnTapToStartButtonClicked() - { - IaudioController.PlayBtnPressedSound(); - startScreenView.Hide(); - IinputReader.UnlockInput(); - gameScreenController.ShowGameScreen(); - IgameSession.hasGameStarted = true; - } -} diff --git a/Assets/Scripts/UI/StartScreenController.cs.meta b/Assets/Scripts/UI/StartScreenController.cs.meta deleted file mode 100644 index f889dab..0000000 --- a/Assets/Scripts/UI/StartScreenController.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: 940b62ceff11bbd498aab6bfc2cdeebe \ No newline at end of file diff --git a/Assets/Scripts/UI/StartScreenView.cs b/Assets/Scripts/UI/StartScreenView.cs deleted file mode 100644 index 33eed8e..0000000 --- a/Assets/Scripts/UI/StartScreenView.cs +++ /dev/null @@ -1,19 +0,0 @@ -using UnityEngine; -using UnityEngine.UI; - -public class StartScreenView : MonoBehaviour -{ - [SerializeField] private GameObject startScreen; - public Button tapToStartButton; - - public void Show() - { - startScreen.SetActive(true); - } - - public void Hide() - { - startScreen.SetActive(false); - } - -} diff --git a/Assets/Scripts/UI/StartScreenView.cs.meta b/Assets/Scripts/UI/StartScreenView.cs.meta deleted file mode 100644 index 438629d..0000000 --- a/Assets/Scripts/UI/StartScreenView.cs.meta +++ /dev/null @@ -1,2 +0,0 @@ -fileFormatVersion: 2 -guid: e48dcf0a824cead4d8c1339c10b81b3b \ No newline at end of file diff --git a/Temp.txt b/Temp.txt new file mode 100644 index 0000000..5f28270 --- /dev/null +++ b/Temp.txt @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/Ultimate-HelixJump.slnx b/Ultimate-HelixJump.slnx new file mode 100644 index 0000000..4fcd8a5 --- /dev/null +++ b/Ultimate-HelixJump.slnx @@ -0,0 +1,6 @@ + + + + + +