added sounds

This commit is contained in:
Mausham
2025-12-14 22:51:43 +05:45
parent 94e8eba3b1
commit 0ea929bd20
30 changed files with 6756 additions and 882 deletions

View File

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

View File

@@ -0,0 +1,24 @@
using UnityEngine;
public class AudioController : MonoBehaviour
{
[SerializeField] private AudioSource MusicSource;
[SerializeField] private AudioSource SFXSource;
public AudioClip backgroundMusicClip;
public AudioClip jumpClip;
public AudioClip deathClip;
public AudioClip BtnPressedClip;
private void Start()
{
MusicSource.clip = backgroundMusicClip;
MusicSource.loop = true;
MusicSource.Play();
}
public void PlaySfx(AudioClip clip)
{
SFXSource.PlayOneShot(clip);
}
}

View File

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

View File

@@ -27,6 +27,7 @@ public class InputReaderSO : ScriptableObject, GameInputAction.IPlayerActions ,
action.Enable();
action.Player.SetCallbacks(this);
blockedInput = false;
isMouseButtonPressed= false;
}
private void OnDisable()

View File

@@ -0,0 +1,74 @@
using System;
using UnityEngine;
using VContainer.Unity;
public class GameFlowController:IStartable
{
private readonly Player _player;
private readonly StartScreenController _startScreenController;
private readonly GameScreenController _gameScreenController;
private readonly ScoreService _scoreService;
private readonly PauseScreenController _pauseScreenController;
private readonly DeathScreenController _deathScreenController;
private readonly IInputReader InputReader;
public GameFlowController(
DeathScreenController deathScreenController,
Player player,
StartScreenController startScreenController,
GameScreenController gameScreenController,
ScoreService scoreService,
PauseScreenController pauseScreenController,
IInputReader inputReader)
{
_deathScreenController = deathScreenController;
_player = player;
_startScreenController = startScreenController;
_gameScreenController = gameScreenController;
_scoreService = scoreService;
_pauseScreenController = pauseScreenController;
InputReader = inputReader;
}
public void Start()
{
Debug.Log("GameFlowController Started");
HookEvents();
}
void HookEvents()
{
_startScreenController.OnStartPressed += HandleGameStart;
_gameScreenController.OnPausePressed += HandleGamePause;
_pauseScreenController.OnResumePressed += HandleGameResume;
_pauseScreenController.OnRestartPressed += HandleGameRestart;
_deathScreenController.OnRestartPressed += HandleGameRestart;
_deathScreenController.OnExitPressed += HandleGameExit;
}
private void HandleGameRestart()
{
throw new NotImplementedException();
}
private void HandleGameExit()
{
throw new NotImplementedException();
}
private void HandleGameResume()
{
throw new NotImplementedException();
}
private void HandleGamePause()
{
throw new NotImplementedException();
}
private void HandleGameStart()
{
throw new NotImplementedException();
}
}

View File

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

View File

@@ -9,6 +9,13 @@ public class GameLifetimeScope : LifetimeScope
[SerializeField] private PlatformManager manager;
[SerializeField] private InputReaderSO inputReader;
[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>();
@@ -16,6 +23,14 @@ public class GameLifetimeScope : LifetimeScope
builder.RegisterInstance(inputReader).As<IInputReader>();
builder.Register<ScoreService>(Lifetime.Singleton);
builder.RegisterComponent(player);
builder.RegisterComponent(audioController);
builder.Register<GameScreenController>(Lifetime.Singleton).WithParameter(gameScreenView);
builder.Register<StartScreenController>(Lifetime.Singleton).WithParameter(startScreenView);
builder.Register<DeathScreenController>(Lifetime.Singleton).WithParameter(deathScreenView);
builder.Register<PauseScreenController>(Lifetime.Singleton).WithParameter(pauseScreenView);
builder.RegisterEntryPoint<GameFlowController>(Lifetime.Singleton);
}
}

View File

@@ -1,31 +1,43 @@
using UnityEngine;
using VContainer;
public class Player : MonoBehaviour
public class Player : MonoBehaviour, IPlayer
{
[SerializeField] private float jumpForce = 1f;
[SerializeField] private float jumpForce = 3f;
[SerializeField] private Rigidbody rb;
[SerializeField] private GameObject splashObject;
[SerializeField] private Transform splashParent;
public bool isDead = false;
public ParticleSystem deadParticle;
[SerializeField] private ParticleSystem deadParticle;
[SerializeField] private ParticleSystem jumpParticle;
public bool isDead { get; private set; }
[Inject] private IInputReader inputReader;
[Inject] private DeathScreenController deathScreenController;
private void Start()
{
isDead = false;
}
private void OnCollisionEnter(Collision collision)
{
ShowAndHideSplash(collision);
if (collision.gameObject.CompareTag("Safe") && !isDead)
if(isDead) return;
if (collision.gameObject.CompareTag("Safe"))
{
rb.linearVelocity = Vector3.up * jumpForce;
jumpParticle.Play();
}
else if(collision.gameObject.CompareTag("Death"))
{
isDead = true;
deadParticle.Play();
this.GetComponent<Renderer>().enabled = false;
inputReader.blockedInput = true;
inputReader.blockedInput = true;
deathScreenController.ShowDeathScreen();
}
}
@@ -38,3 +50,8 @@ public class Player : MonoBehaviour
Destroy(instancedSplash, 2f);
}
}
public interface IPlayer
{
bool isDead { get; }
}

View File

@@ -1,9 +1,10 @@
using System;
using UnityEngine;
public class ScoreService
{
public int score=0;
public int highScore=0;
public int highScore=PlayerPrefs.GetInt("HighScore",0);
public void AddScore()
{
@@ -18,6 +19,7 @@ public class ScoreService
{
highScore = score;
PlayerPrefs.SetInt("HighScore", highScore);
PlayerPrefs.Save();
}
}

8
Assets/Scripts/UI.meta Normal file
View File

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

View File

@@ -0,0 +1,34 @@
using System;
using UnityEngine;
using VContainer;
using VContainer.Unity;
public class DeathScreenController
{
private DeathScreenView deathScreenView;
public event Action OnRestartPressed;
public event Action OnExitPressed;
[Inject] private ScoreService scoreService;
public DeathScreenController(DeathScreenView _deathScreenView)
{
deathScreenView = _deathScreenView;
deathScreenView.restartBtn.onClick.AddListener(() => OnRestartPressed?.Invoke());
deathScreenView.exitBtn.onClick.AddListener(()=>OnExitPressed?.Invoke());
}
public void ShowDeathScreen()
{
deathScreenView.Show(scoreService.score,scoreService.highScore);
}
private void OnExitButtonClicked()
{
Debug.Log("Exit Button Clicked");
}
private void OnRestartButtonClicked()
{
Debug.Log("Restart Button Clicked");
}
}

View File

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

View File

@@ -0,0 +1,24 @@
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);
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 76c438a869d58da489fc53c68f98d32d

View File

@@ -0,0 +1,25 @@
using System;
using UnityEngine;
using VContainer;
using VContainer.Unity;
public class GameScreenController
{
GameScreenView gameScreenView;
public event Action OnPausePressed;
public GameScreenController(GameScreenView _gameScreenView)
{
this.gameScreenView = _gameScreenView;
gameScreenView.pauseBtn.onClick.AddListener(()=>OnPausePressed?.Invoke());
}
public void ShowGameScreen()
{
gameScreenView.Show();
}
public void OnPauseButtonClicked()
{
Debug.Log("Paused Btn Clicked");
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 114040c725db5444583af5f21fd0e0b8

View File

@@ -0,0 +1,25 @@
using TMPro;
using UnityEngine;
using UnityEngine.UI;
public class GameScreenView : MonoBehaviour
{
[SerializeField] private GameObject gameScreen;
public Button pauseBtn;
[SerializeField] private TextMeshProUGUI scoreText;
private void Start()
{
gameScreen.SetActive(false);
}
public void Show()
{
gameScreen.SetActive(true);
}
public void Hide()
{
gameScreen.SetActive(false);
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 808ee37de5cf8b546b46962c901f0332

View File

@@ -0,0 +1,31 @@
using System;
using UnityEngine;
public class PauseScreenController
{
private PauseScreenView pauseScreenView;
public event Action OnResumePressed;
public event Action OnRestartPressed;
public PauseScreenController(PauseScreenView _pauseScreenView)
{
pauseScreenView = _pauseScreenView;
pauseScreenView.resumeBtn.onClick.AddListener(()=>OnRestartPressed?.Invoke());
pauseScreenView.restartBtn.onClick.AddListener(()=>OnRestartPressed?.Invoke());
}
public void ShowPauseScreen()
{
pauseScreenView.Show();
}
private void OnRestartButtonClicked()
{
Debug.Log("Restart Button Clicked");
}
private void OnResumeButtonClicked()
{
Debug.Log("Resume Button Clicked");
}
}

View File

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

View File

@@ -0,0 +1,19 @@
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);
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 9139af2b841ef584da86e7b387b494d5

View File

@@ -0,0 +1,24 @@
using System;
using UnityEngine;
using VContainer;
public class StartScreenController
{
private StartScreenView startScreenView;
public event Action OnStartPressed;
public StartScreenController(StartScreenView _startScreenView)
{
Debug.Log("StartScreenController Constructor Called");
startScreenView = _startScreenView;
startScreenView.tapToStartButton.onClick.AddListener(() => OnStartPressed?.Invoke());
}
private void OnTapToStartButtonClicked()
{
startScreenView.Hide();
}
public void ShowStartScreen()
{
startScreenView.Show();
}
}

View File

@@ -0,0 +1,2 @@
fileFormatVersion: 2
guid: 940b62ceff11bbd498aab6bfc2cdeebe

View File

@@ -0,0 +1,24 @@
using UnityEngine;
using UnityEngine.UI;
public class StartScreenView : MonoBehaviour
{
[SerializeField] private GameObject startScreen;
public Button tapToStartButton;
private void Start()
{
//startScreen.SetActive(true);
}
public void Show()
{
startScreen.SetActive(true);
}
public void Hide()
{
startScreen.SetActive(false);
}
}

View File

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