grunk/src/game/game_manager.gd

38 lines
900 B
GDScript3
Raw Normal View History

2025-03-07 19:26:12 -07:00
class_name GameManagerType extends Node
## Autoloaded singleton encapsulating game state.
2025-03-13 13:34:35 -06:00
## Emitted just after `delta` is added to the player's grunk tank.
2025-03-07 19:26:12 -07:00
signal grunk_collected(delta: float)
2025-03-13 13:34:35 -06:00
## Emitted just before the alert level is raised to `new_value`.
signal alert_raised(new_value: int)
## Emitted just before the alert level is reset to zero.
signal alert_cleared
const MAX_ALERT := 6
2025-03-07 19:26:12 -07:00
var grunk_tank := 0.0
var alert_level := 0
2025-03-13 13:34:35 -06:00
## Add to the player's grunk tank.
2025-03-07 19:26:12 -07:00
func collect_grunk(delta: float) -> void:
grunk_tank += delta
grunk_collected.emit(delta)
2025-03-13 13:34:35 -06:00
## Raise the alert level, if possible.
func raise_alert(delta: int) -> void:
var new_value := clampi(alert_level + delta, 0, MAX_ALERT)
if new_value != alert_level:
alert_raised.emit(new_value)
alert_level = new_value
## Reset the alert level to zero.
func clear_alert() -> void:
alert_cleared.emit()
alert_level = 0