repair pause button + refactoring

problem :

- pause button needed 2 times to press

solution

- decouple pause from resume
- refactor
This commit is contained in:
Felix Boucher 2023-10-30 20:45:47 -04:00
parent 96d9b0fd7b
commit 104f812c41
4 changed files with 84 additions and 52 deletions

View File

@ -1745,6 +1745,11 @@ PrefabInstance:
objectReference: {fileID: 0} objectReference: {fileID: 0}
m_RemovedComponents: [] m_RemovedComponents: []
m_SourcePrefab: {fileID: 100100000, guid: 02daecb0115395844b4932445d039051, type: 3} m_SourcePrefab: {fileID: 100100000, guid: 02daecb0115395844b4932445d039051, type: 3}
--- !u!1 &829543639 stripped
GameObject:
m_CorrespondingSourceObject: {fileID: 3028288566889208744, guid: 02daecb0115395844b4932445d039051, type: 3}
m_PrefabInstance: {fileID: 829543638}
m_PrefabAsset: {fileID: 0}
--- !u!1 &884382837 --- !u!1 &884382837
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -1773,7 +1778,7 @@ RectTransform:
m_PrefabInstance: {fileID: 0} m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 884382837} m_GameObject: {fileID: 884382837}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalRotation: {x: -0, y: -0, z: -0, w: 1}
m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalPosition: {x: 0, y: 0, z: 0}
m_LocalScale: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0}
m_ConstrainProportionsScale: 0 m_ConstrainProportionsScale: 0
@ -1972,9 +1977,9 @@ MonoBehaviour:
m_OnClick: m_OnClick:
m_PersistentCalls: m_PersistentCalls:
m_Calls: m_Calls:
- m_Target: {fileID: 1760532842} - m_Target: {fileID: 1760532843}
m_TargetAssemblyTypeName: ClickBehavior, GameAssembly m_TargetAssemblyTypeName: PauseScript, GameAssembly
m_MethodName: stopGame m_MethodName: Resume
m_Mode: 1 m_Mode: 1
m_Arguments: m_Arguments:
m_ObjectArgument: {fileID: 0} m_ObjectArgument: {fileID: 0}
@ -3220,9 +3225,9 @@ MonoBehaviour:
m_OnClick: m_OnClick:
m_PersistentCalls: m_PersistentCalls:
m_Calls: m_Calls:
- m_Target: {fileID: 1760532842} - m_Target: {fileID: 1760532843}
m_TargetAssemblyTypeName: ClickBehavior, GameAssembly m_TargetAssemblyTypeName: PauseScript, GameAssembly
m_MethodName: ChangeGameSpeed m_MethodName: ToggleSpeed
m_Mode: 1 m_Mode: 1
m_Arguments: m_Arguments:
m_ObjectArgument: {fileID: 0} m_ObjectArgument: {fileID: 0}
@ -3270,17 +3275,20 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 1709530843} m_GameObject: {fileID: 1709530843}
m_CullTransparentMesh: 1 m_CullTransparentMesh: 1
--- !u!114 &1760532842 stripped --- !u!114 &1760532843
MonoBehaviour: MonoBehaviour:
m_CorrespondingSourceObject: {fileID: -245230096461627285, guid: 02daecb0115395844b4932445d039051, type: 3} m_ObjectHideFlags: 0
m_PrefabInstance: {fileID: 829543638} m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0} m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 0} m_GameObject: {fileID: 829543639}
m_Enabled: 1 m_Enabled: 1
m_EditorHideFlags: 0 m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: 37c0aa967043d974783120d6ea9b136c, type: 3} m_Script: {fileID: 11500000, guid: 6efea9f36ef864748a8a69a0b5ce4db0, type: 3}
m_Name: m_Name:
m_EditorClassIdentifier: m_EditorClassIdentifier:
_pauseButton: {fileID: 2019202048}
_speedButton: {fileID: 1709530845}
--- !u!1 &1761692192 --- !u!1 &1761692192
GameObject: GameObject:
m_ObjectHideFlags: 0 m_ObjectHideFlags: 0
@ -3499,9 +3507,9 @@ MonoBehaviour:
m_OnClick: m_OnClick:
m_PersistentCalls: m_PersistentCalls:
m_Calls: m_Calls:
- m_Target: {fileID: 1760532842} - m_Target: {fileID: 1760532843}
m_TargetAssemblyTypeName: ClickBehavior, GameAssembly m_TargetAssemblyTypeName: PauseScript, GameAssembly
m_MethodName: StopGame m_MethodName: Pause
m_Mode: 1 m_Mode: 1
m_Arguments: m_Arguments:
m_ObjectArgument: {fileID: 0} m_ObjectArgument: {fileID: 0}

View File

@ -6,9 +6,6 @@ using UnityEngine.UI;
/// </summary> /// </summary>
public class ClickBehavior : MonoBehaviour public class ClickBehavior : MonoBehaviour
{ {
private float unpausedTime = 1f;
private void Update() private void Update()
{ {
if (Input.GetMouseButton(0)) if (Input.GetMouseButton(0))
@ -27,46 +24,13 @@ public class ClickBehavior : MonoBehaviour
} }
} }
public void ChangeGameSpeed()
{
if (Time.timeScale != 0f)
{
if (Time.timeScale == 1f)
{
GameObject.Find("btn_speedup").GetComponent<Button>().image.color = Color.yellow;
Time.timeScale = 1.5f;
}
else
{
GameObject.Find("btn_speedup").GetComponent<Button>().image.color = Color.white;
Time.timeScale = 1f;
}
unpausedTime = Time.timeScale;
}
}
public void StopGame()
{
if (Time.timeScale != 0f)
{
unpausedTime = Time.timeScale;
GameObject.Find("btn_pause").GetComponent<Button>().image.color = Color.black;
Time.timeScale = 0f;
}
else
{
GameObject.Find("btn_pause").GetComponent<Button>().image.color = Color.white;
Time.timeScale = unpausedTime;
}
}
/// <summary> /// <summary>
/// Remet la vitesse de jeux a son etat normal lorsque le dernier ennemi est mort, si necessaire /// Remet la vitesse de jeux a son etat normal lorsque le dernier ennemi est mort, si necessaire
/// </summary> /// </summary>
public static void ResetGameSpeed() public static void ResetGameSpeed()
{ {
GameObject.Find("btn_speedup").GetComponent<Button>().image.color = Color.white; GameObject.Find("btn_speedup").GetComponent<Button>().image.color = Color.white;
Time.timeScale = 1f; Time.timeScale = PauseScript.regularSpeed;
} }
} }

View File

@ -0,0 +1,49 @@
using UnityEngine;
using UnityEngine.UI;
public class PauseScript : MonoBehaviour
{
private float _currentSpeed = regularSpeed;
public const float regularSpeed = 1;
public const float pauseSpeed = 0;
public const float fastSpeed = 1.5f;
[SerializeField]
private Button _pauseButton;
[SerializeField]
private Button _speedButton;
public void Pause()
{
_pauseButton.image.color = Color.black;
Time.timeScale = pauseSpeed;
}
public void Resume()
{
_pauseButton.image.color = Color.white;
Time.timeScale = _currentSpeed;
}
public void ToggleSpeed()
{
if (Time.timeScale == 1f)
{
_speedButton.image.color = Color.yellow;
Time.timeScale = _currentSpeed = fastSpeed;
}
else
{
_speedButton.image.color = Color.white;
Time.timeScale = _currentSpeed = regularSpeed;
}
}
/// <summary>
/// Remet la vitesse de jeux a son etat normal lorsque le dernier ennemi est mort, si necessaire
/// </summary>
public void ResetGameSpeed()
{
_speedButton.image.color = Color.white;
Time.timeScale = regularSpeed;
}
}

View File

@ -0,0 +1,11 @@
fileFormatVersion: 2
guid: 6efea9f36ef864748a8a69a0b5ce4db0
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant: