Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .vscode/settings.json
Original file line number Diff line number Diff line change
Expand Up @@ -56,5 +56,5 @@
"temp/": true,
"Temp/": true
},
"dotnet.defaultSolution": "obstacle_dodge_game_MY.slnx"
"dotnet.defaultSolution": "obstacle_dodge_game.slnx"
}
109 changes: 109 additions & 0 deletions Assets/GameOverSceneManager.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,109 @@
using UnityEngine;
using UnityEngine.UI;
using UnityEngine.SceneManagement;

/// <summary>
/// This script goes in your "GameOver" scene.
/// It checks the SessionManager to see if it should show the
/// "Restart from Checkpoint" button.
/// </summary>
public class GameOverSceneManager : MonoBehaviour
{
[Header("Scene Names")]
[Tooltip("The name of your MAIN GAME scene")]
public string gameSceneName = "MainGame"; // Make sure this matches your game scene's name

[Tooltip("The name of your MAIN MENU scene")]
public string mainMenuSceneName = "MainMenu"; // Make sure this matches your menu scene's name

[Header("UI Buttons")]
[Tooltip("Assign your 'Restart from Checkpoint' button here")]
public Button restartFromCheckpointButton;

[Tooltip("Assign your 'Restart from Beginning' button here")]
public Button restartFromBeginningButton;

[Tooltip("Assign your 'Main Menu' button here")]
public Button mainMenuButton;

void Start()
{
// Make sure the SessionManager exists
if (SessionManager.Instance == null)
{
Debug.LogError("SessionManager not found! Cannot check for checkpoints.");
if (restartFromCheckpointButton != null)
{
restartFromCheckpointButton.gameObject.SetActive(false);
}
}
else
{
// --- This is the main checkpoint logic ---
if (SessionManager.Instance.LastCheckpointDistance > 0)
{
// Player has checkpoint data, so show the button
if (restartFromCheckpointButton != null)
{
restartFromCheckpointButton.gameObject.SetActive(true);
}
}
else
{
// No checkpoint data, so hide the button
if (restartFromCheckpointButton != null)
{
restartFromCheckpointButton.gameObject.SetActive(false);
}
}
}

// --- Add Listeners ---
if (restartFromCheckpointButton != null)
{
restartFromCheckpointButton.onClick.AddListener(OnRestartFromCheckpoint);
}

if (restartFromBeginningButton != null)
{
restartFromBeginningButton.onClick.AddListener(OnRestartFromBeginning);
}

if (mainMenuButton != null)
{
mainMenuButton.onClick.AddListener(OnMainMenu);
}
}

public void OnRestartFromCheckpoint()
{
// We DON'T reset the session. Just load the game scene.
// The EndlessGameManager will read the checkpoint distance from SessionManager.
Time.timeScale = 1;
SceneManager.LoadScene(gameSceneName);
}

public void OnRestartFromBeginning()
{
// We MUST reset the session data before loading.
if (SessionManager.Instance != null)
{
SessionManager.Instance.ResetSession();
}

Time.timeScale = 1;
SceneManager.LoadScene(gameSceneName);
}

public void OnMainMenu()
{
// We MUST reset the session data before loading.
if (SessionManager.Instance != null)
{
SessionManager.Instance.ResetSession();
}

Time.timeScale = 1;
SceneManager.LoadScene(mainMenuSceneName);
}
}
2 changes: 2 additions & 0 deletions Assets/GameOverSceneManager.cs.meta

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

Binary file added Assets/Scenes/.MainMenu.unity.swp
Binary file not shown.
Binary file added Assets/Scenes/.MainMenu_BASE_159.unity.swp
Binary file not shown.
Binary file added Assets/Scenes/.MainMenu_LOCAL_159.unity.swp
Binary file not shown.
Binary file added Assets/Scenes/.MainMenu_REMOTE_159.unity.swp
Binary file not shown.
63 changes: 57 additions & 6 deletions Assets/Scenes/GameOver.unity
Original file line number Diff line number Diff line change
Expand Up @@ -335,17 +335,23 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Version: 3
m_UsePipelineSettings: 1
m_AdditionalLightsShadowResolutionTier: 2
m_LightLayerMask: 1
m_RenderingLayers: 1
m_CustomShadowLayers: 0
m_ShadowLayerMask: 1
m_ShadowRenderingLayers: 1
m_LightCookieSize: {x: 1, y: 1}
m_LightCookieOffset: {x: 0, y: 0}
m_SoftShadowQuality: 0
m_RenderingLayersMask:
serializedVersion: 0
m_Bits: 1
m_ShadowRenderingLayersMask:
serializedVersion: 0
m_Bits: 1
m_Version: 4
m_LightLayerMask: 1
m_ShadowLayerMask: 1
m_RenderingLayers: 1
m_ShadowRenderingLayers: 1
--- !u!1 &263816787
GameObject:
m_ObjectHideFlags: 0
Expand Down Expand Up @@ -491,14 +497,14 @@ MonoBehaviour:
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
m_TaaSettings:
m_Quality: 3
m_FrameInfluence: 0.1
m_JitterScale: 1
m_MipBias: 0
m_VarianceClampScale: 0.9
m_ContrastAdaptiveSharpening: 0
m_Version: 2
--- !u!1 &442650871
GameObject:
m_ObjectHideFlags: 0
Expand Down Expand Up @@ -979,6 +985,50 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1223768745}
m_CullTransparentMesh: 1
--- !u!1 &1371696047
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 1371696049}
- component: {fileID: 1371696048}
m_Layer: 0
m_Name: GameOverManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &1371696048
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1371696047}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: c846ded251ff7e84086235844f839fe3, type: 3}
m_Name:
m_EditorClassIdentifier: '::'
--- !u!4 &1371696049
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1371696047}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.73243, y: 0, z: -7.58112}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &1394071635
GameObject:
m_ObjectHideFlags: 0
Expand Down Expand Up @@ -1503,3 +1553,4 @@ SceneRoots:
- {fileID: 17068334}
- {fileID: 1394071638}
- {fileID: 1787307106}
- {fileID: 1371696049}
8 changes: 4 additions & 4 deletions Assets/Scenes/Level5.unity
Original file line number Diff line number Diff line change
Expand Up @@ -478,10 +478,10 @@ MonoBehaviour:
isGameRunning: 0
isGamePaused: 0
pauseOnStart: 1
resetDistanceOnStart: 1
clearObstaclesOnStart: 1
player: {fileID: 1106560884}
groundSpawner: {fileID: 0}
playerMovement: {fileID: 1106560900}
groundSpawner: {fileID: 758042490}
obstacleSpawner: {fileID: 136327063}
distanceCounter: {fileID: 1497940460}
playerCollision: {fileID: 1106560901}
Expand Down Expand Up @@ -1034,8 +1034,8 @@ MonoBehaviour:
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::PlayerEndlessMovement
speed: 7
lateralSpeed: 10
maxLateralDistance: 10
lateralSpeed: 20
maxLateralDistance: 20
useLateralMovement: 1
inputSmoothing: 10
--- !u!114 &1106560901
Expand Down
66 changes: 59 additions & 7 deletions Assets/Scenes/MainMenu.unity
Original file line number Diff line number Diff line change
Expand Up @@ -941,17 +941,23 @@ MonoBehaviour:
m_Script: {fileID: 11500000, guid: 474bcb49853aa07438625e644c072ee6, type: 3}
m_Name:
m_EditorClassIdentifier:
m_Version: 4
m_UsePipelineSettings: 1
m_AdditionalLightsShadowResolutionTier: 2
m_LightLayerMask: 1
m_RenderingLayers: 1
m_CustomShadowLayers: 0
m_ShadowLayerMask: 1
m_ShadowRenderingLayers: 1
m_LightCookieSize: {x: 1, y: 1}
m_LightCookieOffset: {x: 0, y: 0}
m_SoftShadowQuality: 0
m_SoftShadowQuality: 1
m_RenderingLayersMask:
serializedVersion: 0
m_Bits: 1
m_ShadowRenderingLayersMask:
serializedVersion: 0
m_Bits: 1
m_Version: 4
m_LightLayerMask: 1
m_ShadowLayerMask: 1
m_RenderingLayers: 1
m_ShadowRenderingLayers: 1
--- !u!1 &493101116
GameObject:
m_ObjectHideFlags: 0
Expand Down Expand Up @@ -1088,6 +1094,51 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 493101116}
m_CullTransparentMesh: 1
--- !u!1 &849649351
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 849649352}
- component: {fileID: 849649353}
m_Layer: 0
m_Name: SessionManager
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!4 &849649352
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 849649351}
serializedVersion: 2
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 0.73243, y: 0, z: -7.58112}
m_LocalScale: {x: 1, y: 1, z: 1}
m_ConstrainProportionsScale: 0
m_Children: []
m_Father: {fileID: 0}
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!114 &849649353
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 849649351}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 71eec757b83a45a4d928ae4b653a808b, type: 3}
m_Name:
m_EditorClassIdentifier: Assembly-CSharp::SessionManager
checkpointDistanceInterval: 100
--- !u!1 &894188157
GameObject:
m_ObjectHideFlags: 0
Expand Down Expand Up @@ -1267,14 +1318,14 @@ MonoBehaviour:
m_ScreenCoordScaleBias: {x: 0, y: 0, z: 0, w: 0}
m_RequiresDepthTexture: 0
m_RequiresColorTexture: 0
m_Version: 2
m_TaaSettings:
m_Quality: 3
m_FrameInfluence: 0.1
m_JitterScale: 1
m_MipBias: 0
m_VarianceClampScale: 0.9
m_ContrastAdaptiveSharpening: 0
m_Version: 2
--- !u!114 &944479919
MonoBehaviour:
m_ObjectHideFlags: 0
Expand Down Expand Up @@ -2763,3 +2814,4 @@ SceneRoots:
- {fileID: 894188159}
- {fileID: 2076118859}
- {fileID: 1237130510}
- {fileID: 849649352}
Loading
Loading