newlon/scripts/level_event_bus.gd
2025-08-01 03:38:38 +05:00

64 lines
1.6 KiB
GDScript

extends Node
## Event bus for levels in Liberation Of Neighborville
class_name LevelSignals
#region Entity
## Called for every entity that enters game
signal entity_created(entity : Entity)
## Called for every entity that exits game
signal entity_killed(context : Entity.KilledContext)
## Called for every entity that gets damage
signal entity_hp_changed(context : Entity.HPChangedContext)
#endregion
#region Seedpacket manipulation
## Called when player selects EntityResource
signal packet_selected(packet : EntityResource)
## Called when player selects EntityResource during game phase
signal packet_selected_during_game(packet : EntityResource)
## Called when something requests EntityResource to be added to hotbar collection
signal requested_packet_add
## Called when something requests EntityResource to be deleted from hotbar collection
signal requested_packet_remove
## Called when selected packets are updated
signal hotbar_packets_update(selected : Array[EntityResource])
#endregion
#region Level Running
## Called when huge wave is incoming, yet has not come
signal huge_wave_coming
## Called when huge wave has come
signal huge_wave
## Called when final wave has come
signal final_wave
## Called when game is progressing through level stages
signal state_changed(state : LevelStates)
## Called when something requests state to advance
signal state_advance_requested
#endregion
## Possible states of level
enum LevelStates {
## The game is during plant pick stage
PlantPick,
## The game is not yet started
Pregame,
## Game started
Game,
## Game ended
Postgame
}