Skip to content

Commit

Permalink
No.2 SOLID GameState Fix References Solution (Correct-way)
Browse files Browse the repository at this point in the history
- Level Manager Done ~SOLID
  • Loading branch information
michailmarkou1995 committed Aug 2, 2022
1 parent b573baf commit 5408f2a
Show file tree
Hide file tree
Showing 49 changed files with 588 additions and 519 deletions.
53 changes: 53 additions & 0 deletions Assets/Prefabs/_managers/Level Starter.prefab
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,9 @@ GameObject:
- component: {fileID: 2612591450176041130}
- component: {fileID: 4672400234462731894}
- component: {fileID: 6533670772227153969}
- component: {fileID: 3046974034367050405}
- component: {fileID: 6375254645066771992}
- component: {fileID: 5970190748483002724}
m_Layer: 0
m_Name: LevelManager
m_TagString: Untagged
Expand Down Expand Up @@ -149,6 +152,56 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: ec26d0a421514f7494efe4820aef7735, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &3046974034367050405
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1004064948157000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 72e89b8df56b4c02b59e00e1b023513f, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!114 &6375254645066771992
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1004064948157000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c20b7c34e38a4f8a80265819c3c771cb, type: 3}
m_Name:
m_EditorClassIdentifier:
hurryUp: 0
playerSize: 0
lives: 0
coins: 0
scores: 0
timeLeft: 0
coinBonus: 200
powerupBonus: 1000
starmanBonus: 1000
oneupBonus: 0
breakBlockBonus: 50
gamePaused: 0
timerPaused: 0
musicPaused: 0
--- !u!114 &5970190748483002724
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1004064948157000}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 95e054ffb3e0449f8cd96f28a89a06cd, type: 3}
m_Name:
m_EditorClassIdentifier:
--- !u!1 &1006136692691096
GameObject:
m_ObjectHideFlags: 0
Expand Down
2 changes: 1 addition & 1 deletion Assets/Scripts/Abilities/Pickups/CollectibleBlock.cs
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ void OnTriggerEnter2D(Collider2D other) {

if (timesToSpawn > 0) {
if (isPowerupBlock) { // spawn mushroom or fireflower depending on Mario's size
if (_levelManager.GetGameStateManager.PlayerSize == 0) {
if (_levelManager.GetGameStateData.PlayerSize == 0) {
objectToSpawn = bigMushroom;
} else {
objectToSpawn = fireFlower;
Expand Down
10 changes: 5 additions & 5 deletions Assets/Scripts/Abilities/Pickups/PlayerPickUpAbilities.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Interfaces.Abilities.Pickups;
using Interfaces.Abilities.PickUps;
using Interfaces.Core.Managers;
using UnityEngine;

Expand All @@ -15,13 +15,13 @@ private void Awake()

public void AddLife()
{
_levelManager.GetGameStateManager.Lives++;
_levelManager.GetGameStateData.Lives++;
_levelManager.GetSoundManager.SoundSource.PlayOneShot(_levelManager.GetSoundManager.OneUpSound);
}

public void AddLife(Vector3 spawnPos)
{
_levelManager.GetGameStateManager.Lives++;
_levelManager.GetGameStateData.Lives++;
_levelManager.GetSoundManager.SoundSource.PlayOneShot(_levelManager.GetSoundManager.OneUpSound);
_levelManager.GetHUD.CreateFloatingText("1UP", spawnPos);
}
Expand All @@ -36,7 +36,7 @@ public void AddCoin()
}

_levelManager.GetHUD.SetHudCoin();
AddScore(_levelManager.GetGameStateManager.CoinBonus);
AddScore(_levelManager.GetGameStateData.CoinBonus);
}

public void AddCoin(Vector3 spawnPos)
Expand All @@ -49,7 +49,7 @@ public void AddCoin(Vector3 spawnPos)
}

_levelManager.GetHUD.SetHudCoin();
AddScore(_levelManager.GetGameStateManager.CoinBonus, spawnPos);
AddScore(_levelManager.GetGameStateData.CoinBonus, spawnPos);
}

public void AddScore(int bonus)
Expand Down
30 changes: 15 additions & 15 deletions Assets/Scripts/Abilities/Player/PlayerAbilities.cs
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ public bool IsInvincible()
public void MarioInvincibleStarman()
{
StartCoroutine(MarioInvincibleStarmanCo());
_levelManager.GetPlayerPickUpAbilities.AddScore(_levelManager.GetGameStateManager.StarmanBonus,
_levelManager.GetPlayerPickUpAbilities.AddScore(_levelManager.GetGameStateData.StarmanBonus,
_levelManager.GetPlayerController.transform.position);
}

Expand All @@ -70,15 +70,15 @@ private IEnumerator MarioInvincibleStarmanCo()
IsInvincibleStarman = true;
PlayerAnimator.PlayerAnimatorComponent.SetBool(PlayerAnimator.IsInvincibleStarmanAnim, true);
_levelManager.GetPlayerController.gameObject.layer = LayerMask.NameToLayer("Mario After Starman");
_levelManager.GetSoundManager.GetSoundLevelHandle.ChangeMusic(_levelManager.GetGameStateManager.HurryUp
_levelManager.GetSoundManager.GetSoundLevelHandle.ChangeMusic(_levelManager.GetGameStateData.HurryUp
? _levelManager.GetSoundManager.StarmanMusicHurry
: _levelManager.GetSoundManager.StarmanMusic);

yield return new WaitForSeconds(MarioInvincibleStarmanDuration);
IsInvincibleStarman = false;
PlayerAnimator.PlayerAnimatorComponent.SetBool(PlayerAnimator.IsInvincibleStarmanAnim, false);
_levelManager.GetPlayerController.gameObject.layer = LayerMask.NameToLayer("Mario");
_levelManager.GetSoundManager.GetSoundLevelHandle.ChangeMusic(_levelManager.GetGameStateManager.HurryUp
_levelManager.GetSoundManager.GetSoundLevelHandle.ChangeMusic(_levelManager.GetGameStateData.HurryUp
? _levelManager.GetSoundManager.LevelMusicHurry
: _levelManager.GetSoundManager.LevelMusic);
}
Expand All @@ -103,11 +103,11 @@ public void MarioPowerUp()
{
_levelManager.GetSoundManager.SoundSource.PlayOneShot(_levelManager.GetSoundManager
.PowerupSound); // should play sound regardless of size
if (_levelManager.GetGameStateManager.PlayerSize < 2) {
if (_levelManager.GetGameStateData.PlayerSize < 2) {
StartCoroutine(MarioPowerUpCo());
}

_levelManager.GetPlayerPickUpAbilities.AddScore(_levelManager.GetGameStateManager.PowerupBonus,
_levelManager.GetPlayerPickUpAbilities.AddScore(_levelManager.GetGameStateData.PowerupBonus,
_levelManager.GetPlayerController.transform.position);
}

Expand All @@ -118,12 +118,12 @@ private IEnumerator MarioPowerUpCo()
PlayerAnimator.PlayerAnimatorComponent.updateMode = AnimatorUpdateMode.UnscaledTime;

yield return new WaitForSecondsRealtime(TransformDuration);
yield return new WaitWhile(() => _levelManager.GetGameStateManager.GamePaused);
yield return new WaitWhile(() => _levelManager.GetGameStateData.GamePaused);

Time.timeScale = 1;
PlayerAnimator.PlayerAnimatorComponent.updateMode = AnimatorUpdateMode.Normal;

_levelManager.GetGameStateManager.PlayerSize++;
_levelManager.GetGameStateData.PlayerSize++;
_levelManager.GetPlayerController.UpdateSize();
PlayerAnimator.PlayerAnimatorComponent.SetBool(PlayerAnimator.IsPoweringUpAnim, false);
}
Expand All @@ -134,7 +134,7 @@ public void MarioPowerDown()
Debug.Log(this.name + " MarioPowerDown: called and executed");
IsPoweringDown = true;

if (_levelManager.GetGameStateManager.PlayerSize > 0) {
if (_levelManager.GetGameStateData.PlayerSize > 0) {
StartCoroutine(MarioPowerDownCo());
_levelManager.GetSoundManager.SoundSource.PlayOneShot(_levelManager.GetSoundManager
.PipePowerdownSound);
Expand All @@ -155,13 +155,13 @@ private IEnumerator MarioPowerDownCo()
PlayerAnimator.PlayerAnimatorComponent.updateMode = AnimatorUpdateMode.UnscaledTime;

yield return new WaitForSecondsRealtime(TransformDuration);
yield return new WaitWhile(() => _levelManager.GetGameStateManager.GamePaused);
yield return new WaitWhile(() => _levelManager.GetGameStateData.GamePaused);

Time.timeScale = 1;
PlayerAnimator.PlayerAnimatorComponent.updateMode = AnimatorUpdateMode.Normal;
MarioInvinciblePowerdown();

_levelManager.GetGameStateManager.PlayerSize = 0;
_levelManager.GetGameStateData.PlayerSize = 0;
_levelManager.GetPlayerController.UpdateSize();
PlayerAnimator.PlayerAnimatorComponent.SetBool(PlayerAnimator.IsPoweringDownAnim, false);
IsPoweringDown = false;
Expand All @@ -172,12 +172,12 @@ public void MarioRespawn(bool timeUp = false)
if (_levelManager.GetPlayerAbilities.IsRespawning) return;
_levelManager.GetPlayerAbilities.IsRespawning = true;

_levelManager.GetGameStateManager.PlayerSize = 0;
_levelManager.GetGameStateManager.Lives--;
_levelManager.GetGameStateData.PlayerSize = 0;
_levelManager.GetGameStateData.Lives--;

_levelManager.GetSoundManager.SoundSource.Stop();
_levelManager.GetSoundManager.MusicSource.Stop();
_levelManager.GetGameStateManager.MusicPaused = true;
_levelManager.GetGameStateData.MusicPaused = true;
_levelManager.GetSoundManager.SoundSource.PlayOneShot(_levelManager.GetSoundManager.DeadSound);

Time.timeScale = 0f;
Expand All @@ -187,9 +187,9 @@ public void MarioRespawn(bool timeUp = false)
Debug.Log(this.name + " MarioRespawn: called due to timeup");
}

Debug.Log(this.name + " MarioRespawn: lives left=" + _levelManager.GetGameStateManager.Lives.ToString());
Debug.Log(this.name + " MarioRespawn: lives left=" + _levelManager.GetGameStateData.Lives.ToString());

if (_levelManager.GetGameStateManager.Lives > 0) {
if (_levelManager.GetGameStateData.Lives > 0) {
_levelManager.GetLoadLevelSceneHandler.ReloadCurrentLevel(
_levelManager.GetSoundManager.DeadSound.length, timeUp);
} else {
Expand Down
127 changes: 127 additions & 0 deletions Assets/Scripts/Core/Managers/GameStateData.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,127 @@
using System.Collections.Generic;
using Interfaces.Core.Managers;
using UnityEngine;

namespace Core.Managers
{
public class GameStateData : GameStateDataBase, IGameStateData
{

#region GettersAndSetters

public int PlayerSize
{
get => playerSize;
set => playerSize = value;
}

public int Lives
{
get => lives;
set => lives = value;
}

public int Coins
{
get => coins;
set => coins = value;
}

public int Scores
{
get => scores;
set => scores = value;
}

public float TimeLeft
{
get => timeLeft;
set => timeLeft = value;
}

public bool HurryUp
{
get => hurryUp;
set => hurryUp = value;
}

public int CoinBonus
{
get => coinBonus;
set => coinBonus = value;
}

public int PowerupBonus
{
get => powerupBonus;
set => powerupBonus = value;
}

public int StarmanBonus
{
get => starmanBonus;
set => starmanBonus = value;
}

public int OneupBonus
{
get => oneupBonus;
set => oneupBonus = value;
}

public int BreakBlockBonus
{
get => breakBlockBonus;
set => breakBlockBonus = value;
}

public bool GamePaused
{
get => gamePaused;
set => gamePaused = value;
}

public bool MusicPaused
{
get => musicPaused;

set => musicPaused = value;
}

public bool TimerPaused
{
get => timerPaused;

set => timerPaused = value;
}

public List<Animator> UnScaledAnimators
{
get => base.UnScaledAnimators;
set => base.UnScaledAnimators = value;
}

public float PauseGamePrevTimeScale
{
get => base.PauseGamePrevTimeScale;
set => base.PauseGamePrevTimeScale = value;
}

public bool PausePrevMusicPaused
{
get => base.PausePrevMusicPaused;
set => base.PausePrevMusicPaused = value;
}

public IPauseUnPauseGame GetPauseUnPauseGame => _pauseUnPauseGame;

#endregion

private IPauseUnPauseGame _pauseUnPauseGame;

private void Awake()
{
_pauseUnPauseGame = GetComponent<IPauseUnPauseGame>();
}
}
}
3 changes: 3 additions & 0 deletions Assets/Scripts/Core/Managers/GameStateData.cs.meta

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading

0 comments on commit 5408f2a

Please sign in to comment.