59 lines
977 B
C#
59 lines
977 B
C#
|
|
using Godot;
|
|
|
|
|
|
namespace Rokojori
|
|
{
|
|
[Tool][GlobalClass ]
|
|
public partial class SetPauseState : Action
|
|
{
|
|
public enum Mode
|
|
{
|
|
Pause,
|
|
Resume,
|
|
Toggle
|
|
}
|
|
|
|
[Export]
|
|
public Mode mode;
|
|
|
|
[Export]
|
|
public Action onPausing;
|
|
|
|
[Export]
|
|
public Action onResuming;
|
|
|
|
[Export]
|
|
public bool onlyTriggerOnChange = true;
|
|
|
|
protected override void _OnTrigger()
|
|
{
|
|
|
|
var currentState = GetTree().Paused;
|
|
|
|
var nextState = Mode.Toggle == mode ? ! currentState : Mode.Pause == mode ? false : true;
|
|
|
|
this.LogInfo( "SetPauseState", currentState, ">>", nextState );
|
|
|
|
if ( currentState == nextState && onlyTriggerOnChange )
|
|
{
|
|
return;
|
|
}
|
|
|
|
|
|
this.LogInfo( "Setting Pause State", nextState );
|
|
GetTree().Paused = nextState;
|
|
|
|
if ( nextState )
|
|
{
|
|
Action.Trigger( onPausing );
|
|
}
|
|
else
|
|
{
|
|
Action.Trigger( onResuming );
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
} |