files arranged using assembly defn

This commit is contained in:
Mausham
2025-12-16 18:12:45 -08:00
parent 4f1a6365fe
commit 04b1e3127c
144 changed files with 1207 additions and 1425 deletions

5
.vscode/extensions.json vendored Normal file
View File

@@ -0,0 +1,5 @@
{
"recommendations": [
"visualstudiotoolsforunity.vstuc"
]
}

10
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,10 @@
{
"version": "0.2.0",
"configurations": [
{
"name": "Attach to Unity",
"type": "vstuc",
"request": "attach"
}
]
}

71
.vscode/settings.json vendored Normal file
View File

@@ -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"
}

View File

@@ -2,7 +2,7 @@
- Project name: Ultimate-HelixJump - Project name: Ultimate-HelixJump
- Unity version: Unity 6000.3.0f1 - Unity version: Unity 6000.3.0f1
- Active game object: - Active game object:
- Name: GameLifetimeScope - Name: Platform
- Tag: Untagged - Tag: Untagged
- Layer: Default - Layer: Default
<!-- UNITY CODE ASSIST INSTRUCTIONS END --> <!-- UNITY CODE ASSIST INSTRUCTIONS END -->

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: e038eb1e2eab0dd48b3db937423ef8df guid: 5fbb74ed5f48ea64abc7ff053d7b5b8c
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 303657b881c5c104fabb7c2d58e364ae guid: 33d67dc68c4487f40a585c596dc62588
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: a2a7540ec4650c74fbbf276d68fcb924 guid: ae96029c413659442bc9dfae591d7dd0
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}

View File

@@ -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
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: b6de5042500932e4fb9947238e0adf85
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 99443897285b5bb4eb395149cc29a38d guid: 2ee06f964ff582940853d02f865be2aa
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}

View File

@@ -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<IPool<Platform>>();
builder.RegisterComponent(manager).As<IPlatformManager>();
builder.RegisterInstance(inputReader).As<IInputReader>();
builder.Register<ScoreService>(Lifetime.Singleton).As<IScoreService>();
builder.RegisterInstance<GameSessionSO>(gameSession).As<IGameSession>();
builder.RegisterComponent(player).As<IPlayer>();
builder.RegisterComponent(audioController).As<IAudioController>().AsSelf();
builder.RegisterEntryPoint<StartScreenController>(Lifetime.Singleton).WithParameter(startScreenView);
builder.Register<GameScreenController>(Lifetime.Singleton).WithParameter(gameScreenView).As<IGameScreenController>();
builder.Register<PauseScreenController>(Lifetime.Singleton).WithParameter(pauseScreenView).As<IPauseScreenController>();
builder.Register<DeathScreenController>(Lifetime.Singleton).WithParameter(deathScreenView).As<IDeathScreenController>();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 383ae0131df62e7439a21c411e0abe2e

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d7f41092f556507488a9186282d29b28
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: f4dca5c9b94134b4b99d27d3e46f3b47
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -2,7 +2,7 @@
// <auto-generated> // <auto-generated>
// This code was auto-generated by com.unity.inputsystem:InputActionCodeGenerator // This code was auto-generated by com.unity.inputsystem:InputActionCodeGenerator
// version 1.16.0 // 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 // Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated. // the code is regenerated.
@@ -16,7 +16,7 @@ using UnityEngine.InputSystem;
using UnityEngine.InputSystem.Utilities; using UnityEngine.InputSystem.Utilities;
/// <summary> /// <summary>
/// Provides programmatic access to <see cref="InputActionAsset" />, <see cref="InputActionMap" />, <see cref="InputAction" /> and <see cref="InputControlScheme" /> instances defined in asset "Assets/Scripts/Input/GameInputAction.inputactions". /// Provides programmatic access to <see cref="InputActionAsset" />, <see cref="InputActionMap" />, <see cref="InputAction" /> and <see cref="InputControlScheme" /> instances defined in asset "Assets/DarkMatter/Code/Core/Attributes/GameInputAction.inputactions".
/// </summary> /// </summary>
/// <remarks> /// <remarks>
/// This class is source generated and any manual edits will be discarded if the associated asset is reimported or modified. /// This class is source generated and any manual edits will be discarded if the associated asset is reimported or modified.

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 3df043bef9f9e3b4d9fbe298cab649e1
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -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();
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: ba1cb4ebd3658324c948dc5c3f1d3a2c

View File

@@ -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();
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 7af2cae0d2a1c1f4bb8e5aa5ad630ea1

View File

@@ -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();
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: c61899447bb6d694a93759306dee0f6d

View File

@@ -0,0 +1,10 @@
using UnityEngine;
namespace Darkmatter.Core
{
public interface IGameSession
{
bool showStartScreen { get; set; }
bool hasGameStarted { get; set; }
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: cf4fa3bea06bcae478439f5e33b2e683

View File

@@ -0,0 +1,16 @@
using System;
using UnityEngine;
namespace Darkmatter.Core
{
public interface IInputReader
{
event Action<Vector2> OnDragValueChanged;
bool isMouseButtonPressed { get; }
Vector2 dragInput { get; }
void LockInput();
void UnlockInput();
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 3694572af73cf5344988658907712552

View File

@@ -0,0 +1,9 @@
using UnityEngine;
namespace Darkmatter.Core
{
public interface IPauseScreenController
{
void ShowPauseScreen();
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 531a3cefcdec354409ef858b5ea7fb55

View File

@@ -0,0 +1,12 @@
using System.Collections.Generic;
using UnityEngine;
namespace Darkmatter.Core
{
public interface IPlatform
{
List<GameObject> platformPiece { get; }
Material safeMaterial { get; }
Material deathMaterial { get; }
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: bfc0615b9e0d4094fa7f57342f9ba6fd

View File

@@ -0,0 +1,9 @@
using UnityEngine;
namespace Darkmatter.Core
{
public interface IPlatformManager
{
void BuildNewPlatform();
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 6f4ca9d11e511cc4897f702ce62c2663

View File

@@ -0,0 +1,9 @@
using UnityEngine;
namespace Darkmatter.Core
{
public interface IPlatformRule
{
public void Execute(IPlatform platform);
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: ea78e7f773196344bbc9745acf4b5687

View File

@@ -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; }
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 833de72b91bdfba49997116bd87a298e

View File

@@ -0,0 +1,15 @@
using Codice.Client.Common;
using System.Collections.Generic;
using UnityEngine;
namespace Darkmatter.Core
{
public interface IPool <T>
{
IReadOnlyCollection<T> All { get; }
void ReturnToPool(T obj);
T GetFromPool();
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e8dc86ecbdfd4124595da34516170d7b

View File

@@ -0,0 +1,13 @@
using System;
using UnityEngine;
namespace Darkmatter.Core
{
public interface IScoreService
{
int score { get; }
int highScore { get; }
event Action<int> OnScoreChange;
void AddScore();
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 726a4c255e8801a4aad700838e98c10e

View File

@@ -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
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 8bce7b1d1a7647841855dfbbfa883cd6
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: d0d0a4ccc5826854b9cb0cd5f75d356d
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -9,6 +9,6 @@ MonoBehaviour:
m_GameObject: {fileID: 0} m_GameObject: {fileID: 0}
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b87b1e9ef0f8a8f4d8c0488709157211, type: 3} m_Script: {fileID: 11500000, guid: 19b4667bfc2bc924a80a7fb0cd8c24f9, type: 3}
m_Name: GameSession m_Name: GameSession
m_EditorClassIdentifier: Assembly-CSharp::GameSession m_EditorClassIdentifier: Assembly-CSharp::GameSession

View File

@@ -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;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 19b4667bfc2bc924a80a7fb0cd8c24f9

View File

@@ -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<Vector2> 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<Vector2>();
}
public void OnMouseClicked(InputAction.CallbackContext context)
{
isMouseButtonPressed = context.ReadValue<float>() == 1 ? true : false;
}
public void LockInput()
{
action.Player.Disable();
}
public void UnlockInput()
{
action.Player.Enable();
}
}
}

View File

@@ -0,0 +1,33 @@
using Darkmatter.Core;
using System;
using UnityEngine;
namespace Darkmatter.Core
{
public class ScoreService : IScoreService
{
public event Action<int> 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();
}
}
}

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 5ccbadb324e8086498668e58e609c0e2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -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
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 219208e14f3a1e1439abafd1ff0ae402
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 019ca96010cba7f4faab0a2ac48c566b
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -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<Renderer>().material = platform.safeMaterial;
piece.gameObject.SetActive(true);
piece.tag = "Safe";
}
platform.platformPiece[Random.Range(1, platform.platformPiece.Count)].gameObject.SetActive(false);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 27cd8a8665a6d104f85ecb3c791c9757

View File

@@ -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<Renderer>().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<Renderer>().material = platform.deathMaterial;
deadPlatform.tag = "Death";
}
platform.platformPiece[Random.Range(0, platform.platformPiece.Count)].gameObject.SetActive(false);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 4136bc6323ff5ea40874d2b69bc2ca56

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 898d4b8bb3246724b9838847b6a0ba77
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -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<Renderer>().enabled = false;
IaudioController.PlayDeathSound();
Handheld.Vibrate(); //Vibration
cinemachineImpulseSource.GenerateImpulseWithForce(1);
StartCoroutine(DieRoutine());
}
IEnumerator DieRoutine()
{
yield return new WaitForSeconds(1f);
IdeathScreenController.ShowDeathScreen();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e7d04c655849ccf438cd955f139e9789

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 2f6d612fd23717a468beaf56944cda7c
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: bf7cffabcb2056547812696e0254bfb2
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -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);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 6359276e3f19a0e439ff6d871c3aee67

View File

@@ -0,0 +1,8 @@
fileFormatVersion: 2
guid: 35a5e635888ca7046b748dc77720ba6e
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,4 +1,5 @@
using NUnit.Framework; using Darkmatter.Core;
using Darkmatter.Domain;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using VContainer; using VContainer;
@@ -21,7 +22,7 @@ public class Platform : MonoBehaviour, IPlatform
private bool hasAchievedScore = false; private bool hasAchievedScore = false;
[Inject] Player player; [Inject] Player player;
[Inject] IPool pool; [Inject] IPool<Platform> pool;
[Inject] IPlatformManager platformManager; [Inject] IPlatformManager platformManager;
[Inject] IScoreService IscoreService; [Inject] IScoreService IscoreService;
[Inject] IAudioController IaudioController; [Inject] IAudioController IaudioController;
@@ -76,54 +77,12 @@ public class Platform : MonoBehaviour, IPlatform
} }
public interface IPlatform
{
List<GameObject> 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<Renderer>().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<Renderer>().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<Renderer>().material = platform.deathMaterial;
deadPlatform.tag = "Death";
}
platform.platformPiece[Random.Range(0, platform.platformPiece.Count)].gameObject.SetActive(false);
}
}

View File

@@ -1,9 +1,10 @@
using UnityEngine; using Darkmatter.Core;
using UnityEngine;
using VContainer; using VContainer;
public class PlatformManager : MonoBehaviour,IPlatformManager public class PlatformManager : MonoBehaviour,IPlatformManager
{ {
[Inject] private IPool pool; [Inject] private IPool<Platform> pool;
[Inject] private IInputReader inputReader; [Inject] private IInputReader inputReader;
private float yPos = 0f; private float yPos = 0f;
@@ -44,7 +45,7 @@ public class PlatformManager : MonoBehaviour,IPlatformManager
private void ShowPlatforms() private void ShowPlatforms()
{ {
foreach (var platform in pool.All) foreach (Platform platform in pool.All)
{ {
platform.gameObject.SetActive(true); platform.gameObject.SetActive(true);
platform.transform.position = new Vector3(0, yPos, 0); platform.transform.position = new Vector3(0, yPos, 0);
@@ -60,7 +61,4 @@ public class PlatformManager : MonoBehaviour,IPlatformManager
} }
} }
public interface IPlatformManager
{
void BuildNewPlatform();
}

View File

@@ -1,9 +1,10 @@
using Darkmatter.Core;
using Darkmatter.Domain;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using VContainer; using VContainer;
using VContainer.Unity;
public class PlatformPool : MonoBehaviour,IPool public class PlatformPool : MonoBehaviour, IPool<Platform>
{ {
[SerializeField] private Platform platformPrefab; [SerializeField] private Platform platformPrefab;
[SerializeField] private Transform platformParent; [SerializeField] private Transform platformParent;
@@ -57,10 +58,6 @@ public class PlatformPool : MonoBehaviour,IPool
} }
public interface IPool
{
IReadOnlyCollection<Platform> All { get; }
void ReturnToPool(Platform obj);
Platform GetFromPool();
}

View File

@@ -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
}

View File

@@ -0,0 +1,7 @@
fileFormatVersion: 2
guid: 09dab6049e43dd9449335e6d3f51f72e
AssemblyDefinitionImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@@ -1,5 +1,5 @@
fileFormatVersion: 2 fileFormatVersion: 2
guid: 7a1f2e0377d10e343b9657299e3aad8b guid: fbdfa4d2bcf3bcf4b90151362beecf8e
folderAsset: yes folderAsset: yes
DefaultImporter: DefaultImporter:
externalObjects: {} externalObjects: {}

View File

@@ -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);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 92c6fccb35ce2e64a820ecbc0fff7477

View File

@@ -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);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 4aab9e4cddc66e44e90193677b63e24e

View File

@@ -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();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 0ab301d9fb59e24459e315204ffcc8d6

View File

@@ -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);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 2efefd316bbb28246bcee036477a00a5

View File

@@ -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();
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 682db5ec0dd207b4fb4122bc7798ffc4

View File

@@ -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);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: e57e5514aa3e64c40a4d396db68170c4

View File

@@ -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;
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 3f1b78c138759874ab695ee6697c16a4

View File

@@ -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);
}
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 3fccddd791b55e446a7a091823024f34

View File

@@ -129,8 +129,8 @@ Material:
- _XRMotionVectorsPass: 1 - _XRMotionVectorsPass: 1
- _ZWrite: 1 - _ZWrite: 1
m_Colors: m_Colors:
- _BaseColor: {r: 0.8490566, g: 0.36445355, b: 0.75023574, a: 0} - _BaseColor: {r: 0.055980783, g: 0.6416706, b: 0.6981132, a: 0}
- _Color: {r: 0.8490566, g: 0.36445352, b: 0.75023574, a: 0} - _Color: {r: 0.05598075, g: 0.64167047, b: 0.6981132, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: [] m_BuildTextureStacks: []

View File

@@ -116,8 +116,8 @@ Material:
- _XRMotionVectorsPass: 1 - _XRMotionVectorsPass: 1
- _ZWrite: 1 - _ZWrite: 1
m_Colors: m_Colors:
- _BaseColor: {r: 0.8679245, g: 0.8474546, b: 0.8474546, a: 0} - _BaseColor: {r: 0.8113208, g: 0.049750824, b: 0.049750824, a: 0}
- _Color: {r: 0.8113207, g: 0.049750805, b: 0.049750805, a: 0} - _Color: {r: 0.17342025, g: 0.75471693, b: 0.07475967, a: 0}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: [] m_BuildTextureStacks: []

View File

@@ -116,8 +116,8 @@ Material:
- _XRMotionVectorsPass: 1 - _XRMotionVectorsPass: 1
- _ZWrite: 1 - _ZWrite: 1
m_Colors: m_Colors:
- _BaseColor: {r: 0.7924528, g: 0.7552929, b: 0.063545756, a: 1} - _BaseColor: {r: 0.122641504, g: 0.12090601, b: 0.12090601, a: 0}
- _Color: {r: 0.7924528, g: 0.7552929, b: 0.063545726, a: 1} - _Color: {r: 0.8113207, g: 0.53379685, b: 0.042096816, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1} - _EmissionColor: {r: 0, g: 0, b: 0, a: 1}
- _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1} - _SpecColor: {r: 0.19999996, g: 0.19999996, b: 0.19999996, a: 1}
m_BuildTextureStacks: [] m_BuildTextureStacks: []

Some files were not shown because too many files have changed in this diff Show More