Basic play replay game loop

This commit is contained in:
Jason Durand 01 2022-04-02 13:46:27 -04:00
parent 172345c2ad
commit f9ae46b504
9 changed files with 120 additions and 20 deletions

View File

@ -1,5 +1,6 @@
using UnityEngine; using UnityEngine;
using UnityEngine.InputSystem; using UnityEngine.InputSystem;
using UnityEngine.SceneManagement;
//Could be a singleton //Could be a singleton
public class GameFlowManager : MonoBehaviour { public class GameFlowManager : MonoBehaviour {
@ -11,6 +12,7 @@ public class GameFlowManager : MonoBehaviour {
public bool Paused { get; private set; } = true; public bool Paused { get; private set; } = true;
public BaseState CurrentState { get; private set; } = null!; public BaseState CurrentState { get; private set; } = null!;
bool lastStartButton; bool lastStartButton;
bool lastAcceptButton;
#region Unity Messages #region Unity Messages
void Awake() => CurrentState = new StartFlowState(this); void Awake() => CurrentState = new StartFlowState(this);
@ -28,17 +30,20 @@ public class GameFlowManager : MonoBehaviour {
#region Inputs #region Inputs
public void OnStart(InputAction.CallbackContext ctx) { public void OnStart(InputAction.CallbackContext ctx) {
//feels pretty redundant ^^' if (!ctx.WasPressedThisFrame(ref lastStartButton))
bool newValue = ctx.ReadValueAsButton();
bool wasJustPressed = !lastStartButton && newValue;
lastStartButton = newValue;
if (!wasJustPressed)
return; return;
if (CurrentState is StartFlowState) if (CurrentState is StartFlowState)
SwitchState(new GameplayFlowState(this)); SwitchState(new GameplayFlowState(this));
} }
public void OnAccept(InputAction.CallbackContext ctx) {
if (!ctx.WasPressedThisFrame(ref lastAcceptButton))
return;
if (CurrentState is DeadFlowState deadState)
deadState.ReloadGame();
}
#endregion #endregion
#region States #region States
@ -92,9 +97,14 @@ public class GameFlowManager : MonoBehaviour {
public override void EnterState() { public override void EnterState() {
base.EnterState(); base.EnterState();
Debug.Log("You died!"); Debug.Log("You died!\nPress Accept to restart!");
gameFlowManager.SetPause(true); gameFlowManager.SetPause(true);
} }
public void ReloadGame() {
Debug.Log("Reloading scene...");
SceneManager.LoadScene(SceneManager.GetActiveScene().buildIndex);
}
} }
#endregion #endregion
} }

View File

@ -408,7 +408,7 @@ PrefabInstance:
m_Modifications: m_Modifications:
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3} - target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.size propertyPath: m_ActionEvents.Array.size
value: 15 value: 16
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3} - target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[13].m_ActionId propertyPath: m_ActionEvents.Array.data[13].m_ActionId
@ -418,6 +418,10 @@ PrefabInstance:
propertyPath: m_ActionEvents.Array.data[14].m_ActionId propertyPath: m_ActionEvents.Array.data[14].m_ActionId
value: 01a06960-a379-49e3-9d58-9b7c8effcb3d value: 01a06960-a379-49e3-9d58-9b7c8effcb3d
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[15].m_ActionId
value: 65aa4e67-f805-47b9-adc0-444ca0e0bec8
objectReference: {fileID: 0}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3} - target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[13].m_ActionName propertyPath: m_ActionEvents.Array.data[13].m_ActionName
value: Player/SwitchMinion[/Keyboard/q,/Keyboard/e,/XInputControllerWindows/leftShoulder,/XInputControllerWindows/rightShoulder] value: Player/SwitchMinion[/Keyboard/q,/Keyboard/e,/XInputControllerWindows/leftShoulder,/XInputControllerWindows/rightShoulder]
@ -426,6 +430,10 @@ PrefabInstance:
propertyPath: m_ActionEvents.Array.data[14].m_ActionName propertyPath: m_ActionEvents.Array.data[14].m_ActionName
value: Player/Start[/XInputControllerWindows/start,/Keyboard/enter] value: Player/Start[/XInputControllerWindows/start,/Keyboard/enter]
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[15].m_ActionName
value: Player/Accept[/XInputControllerWindows/buttonSouth,/XInputControllerWindows/start,/Keyboard/enter]
objectReference: {fileID: 0}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3} - target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[13].m_PersistentCalls.m_Calls.Array.size propertyPath: m_ActionEvents.Array.data[13].m_PersistentCalls.m_Calls.Array.size
value: 1 value: 1
@ -434,6 +442,10 @@ PrefabInstance:
propertyPath: m_ActionEvents.Array.data[14].m_PersistentCalls.m_Calls.Array.size propertyPath: m_ActionEvents.Array.data[14].m_PersistentCalls.m_Calls.Array.size
value: 1 value: 1
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[15].m_PersistentCalls.m_Calls.Array.size
value: 1
objectReference: {fileID: 0}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3} - target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[13].m_PersistentCalls.m_Calls.Array.data[0].m_Mode propertyPath: m_ActionEvents.Array.data[13].m_PersistentCalls.m_Calls.Array.data[0].m_Mode
value: 0 value: 0
@ -442,6 +454,10 @@ PrefabInstance:
propertyPath: m_ActionEvents.Array.data[14].m_PersistentCalls.m_Calls.Array.data[0].m_Mode propertyPath: m_ActionEvents.Array.data[14].m_PersistentCalls.m_Calls.Array.data[0].m_Mode
value: 0 value: 0
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[15].m_PersistentCalls.m_Calls.Array.data[0].m_Mode
value: 0
objectReference: {fileID: 0}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3} - target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[13].m_PersistentCalls.m_Calls.Array.data[0].m_Target propertyPath: m_ActionEvents.Array.data[13].m_PersistentCalls.m_Calls.Array.data[0].m_Target
value: value:
@ -450,6 +466,10 @@ PrefabInstance:
propertyPath: m_ActionEvents.Array.data[14].m_PersistentCalls.m_Calls.Array.data[0].m_Target propertyPath: m_ActionEvents.Array.data[14].m_PersistentCalls.m_Calls.Array.data[0].m_Target
value: value:
objectReference: {fileID: 1359990806} objectReference: {fileID: 1359990806}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[15].m_PersistentCalls.m_Calls.Array.data[0].m_Target
value:
objectReference: {fileID: 1359990806}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3} - target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[13].m_PersistentCalls.m_Calls.Array.data[0].m_CallState propertyPath: m_ActionEvents.Array.data[13].m_PersistentCalls.m_Calls.Array.data[0].m_CallState
value: 2 value: 2
@ -458,6 +478,10 @@ PrefabInstance:
propertyPath: m_ActionEvents.Array.data[14].m_PersistentCalls.m_Calls.Array.data[0].m_CallState propertyPath: m_ActionEvents.Array.data[14].m_PersistentCalls.m_Calls.Array.data[0].m_CallState
value: 2 value: 2
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[15].m_PersistentCalls.m_Calls.Array.data[0].m_CallState
value: 2
objectReference: {fileID: 0}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3} - target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[13].m_PersistentCalls.m_Calls.Array.data[0].m_MethodName propertyPath: m_ActionEvents.Array.data[13].m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
value: ChangeSelectedIcon value: ChangeSelectedIcon
@ -466,6 +490,10 @@ PrefabInstance:
propertyPath: m_ActionEvents.Array.data[14].m_PersistentCalls.m_Calls.Array.data[0].m_MethodName propertyPath: m_ActionEvents.Array.data[14].m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
value: OnStart value: OnStart
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[15].m_PersistentCalls.m_Calls.Array.data[0].m_MethodName
value: OnAccept
objectReference: {fileID: 0}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3} - target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[13].m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName propertyPath: m_ActionEvents.Array.data[13].m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
value: MinionBar, Assembly-CSharp value: MinionBar, Assembly-CSharp
@ -474,6 +502,10 @@ PrefabInstance:
propertyPath: m_ActionEvents.Array.data[14].m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName propertyPath: m_ActionEvents.Array.data[14].m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
value: GameFlowManager, Assembly-CSharp value: GameFlowManager, Assembly-CSharp
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[15].m_PersistentCalls.m_Calls.Array.data[0].m_TargetAssemblyTypeName
value: GameFlowManager, Assembly-CSharp
objectReference: {fileID: 0}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3} - target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[13].m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName propertyPath: m_ActionEvents.Array.data[13].m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
value: UnityEngine.Object, UnityEngine value: UnityEngine.Object, UnityEngine
@ -482,6 +514,10 @@ PrefabInstance:
propertyPath: m_ActionEvents.Array.data[14].m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName propertyPath: m_ActionEvents.Array.data[14].m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
value: UnityEngine.Object, UnityEngine value: UnityEngine.Object, UnityEngine
objectReference: {fileID: 0} objectReference: {fileID: 0}
- target: {fileID: 1214567908930553477, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: m_ActionEvents.Array.data[15].m_PersistentCalls.m_Calls.Array.data[0].m_Arguments.m_ObjectArgumentAssemblyTypeName
value: UnityEngine.Object, UnityEngine
objectReference: {fileID: 0}
- target: {fileID: 1214567908930553592, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3} - target: {fileID: 1214567908930553592, guid: 3e0aae8cda56aef44af9598dc5471020, type: 3}
propertyPath: gameFlowManager propertyPath: gameFlowManager
value: value:

View File

@ -2,11 +2,12 @@
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using UnityEngine; using UnityEngine;
using UnityEngine.Serialization;
public class AIEntity : Entity public class AIEntity : Entity
{ {
[SerializeField] AIStats stats = null!; [FormerlySerializedAs("stats")] [SerializeField] AIStats AIStats = null!;
public string ennemyName {get; protected set; } public string? ennemyName {get; protected set; }
abstract class BaseStateAI : BaseState{ abstract class BaseStateAI : BaseState{
protected AIEntity entity; protected AIEntity entity;
@ -59,7 +60,7 @@ public class AIEntity : Entity
if(distance < lastDist){ if(distance < lastDist){
lastDist = distance; lastDist = distance;
chosenEntity = other; chosenEntity = other;
if(lastDist <= entity.stats.closeEnough)break; if(lastDist <= entity.AIStats.closeEnough)break;
} }
} }
} }

View File

@ -13,8 +13,8 @@ public class Gladiator : AIEntity
} }
// Update is called once per frame // Update is called once per frame
void Update() protected override void Update()
{ {
base.Update();
} }
} }

View File

@ -19,8 +19,10 @@ public class Monster : AIEntity
} }
// Update is called once per frame // Update is called once per frame
void Update() protected override void Update()
{ {
base.Update();
if(IsInAttackRange()){ if(IsInAttackRange()){
if(attackTimer >= attackCooldown){ if(attackTimer >= attackCooldown){
Attack(); Attack();

View File

@ -58,12 +58,7 @@ public class PlayerMovement : MonoBehaviour {
} }
public void OnJump(InputAction.CallbackContext ctx) { public void OnJump(InputAction.CallbackContext ctx) {
//feels pretty redundant ^^' if (!ctx.WasPressedThisFrame(ref lastJumpButton))
bool newValue = ctx.ReadValueAsButton();
bool wasJustPressed = !lastJumpButton && newValue;
lastJumpButton = newValue;
if (!wasJustPressed)
return; return;
if (gameFlowManager.Paused || safeZone == null) if (gameFlowManager.Paused || safeZone == null)

11
Assets/Scripts/Utils.cs Normal file
View File

@ -0,0 +1,11 @@
using UnityEngine.InputSystem;
public static class Utils {
public static bool WasPressedThisFrame(this InputAction.CallbackContext ctx, ref bool lastValue) {
bool newValue = ctx.ReadValueAsButton();
bool wasJustPressed = !lastValue && newValue;
lastValue = newValue;
return wasJustPressed;
}
}

View File

@ -0,0 +1,3 @@
fileFormatVersion: 2
guid: 1e5065f064a94fed9f3cc40edc9c60af
timeCreated: 1648920968

View File

@ -49,6 +49,15 @@
"processors": "", "processors": "",
"interactions": "", "interactions": "",
"initialStateCheck": false "initialStateCheck": false
},
{
"name": "Accept",
"type": "Button",
"id": "65aa4e67-f805-47b9-adc0-444ca0e0bec8",
"expectedControlType": "Button",
"processors": "",
"interactions": "",
"initialStateCheck": false
} }
], ],
"bindings": [ "bindings": [
@ -315,6 +324,39 @@
"action": "Start", "action": "Start",
"isComposite": false, "isComposite": false,
"isPartOfComposite": false "isPartOfComposite": false
},
{
"name": "",
"id": "6264d8cf-a124-4ae2-a851-5ce21b5b0306",
"path": "<Gamepad>/buttonSouth",
"interactions": "",
"processors": "",
"groups": "Gamepad",
"action": "Accept",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "23fc3eaa-8abb-4c1a-b706-4dd2c2e2b760",
"path": "<Gamepad>/start",
"interactions": "",
"processors": "",
"groups": "Gamepad",
"action": "Accept",
"isComposite": false,
"isPartOfComposite": false
},
{
"name": "",
"id": "4ce4b7b9-060f-4582-ae33-ac536c61a411",
"path": "<Keyboard>/enter",
"interactions": "",
"processors": "",
"groups": "Keyboard&Mouse",
"action": "Accept",
"isComposite": false,
"isPartOfComposite": false
} }
] ]
}, },