Basic level bus
This commit is contained in:
parent
0cdddee7b1
commit
e1931f27e1
7 changed files with 169 additions and 3 deletions
|
|
@ -17,20 +17,27 @@ warnings/check_angle_interpolation_type_conflicting=false
|
||||||
|
|
||||||
config/name="Liberation of the Neighbourville"
|
config/name="Liberation of the Neighbourville"
|
||||||
config/version="0.3.0"
|
config/version="0.3.0"
|
||||||
run/main_scene="uid://bfstrli64u23y"
|
config/features=PackedStringArray("4.4", "Forward Plus")
|
||||||
config/features=PackedStringArray("4.4", "C#", "Forward Plus")
|
|
||||||
config/icon="res://icon.png"
|
config/icon="res://icon.png"
|
||||||
config/windows_native_icon="res://icon.ico"
|
config/windows_native_icon="res://icon.ico"
|
||||||
|
|
||||||
|
[autoload]
|
||||||
|
|
||||||
|
LevelEventBus="*res://scripts/level_event_bus.gd"
|
||||||
|
|
||||||
[display]
|
[display]
|
||||||
|
|
||||||
window/size/viewport_width=600
|
window/size/viewport_width=600
|
||||||
window/size/viewport_height=400
|
window/size/viewport_height=400
|
||||||
window/stretch/mode="canvas_items"
|
window/stretch/mode="canvas_items"
|
||||||
|
|
||||||
|
[dotnet]
|
||||||
|
|
||||||
|
project/assembly_name="Liberation of the Neighbourville"
|
||||||
|
|
||||||
[editor_plugins]
|
[editor_plugins]
|
||||||
|
|
||||||
enabled=PackedStringArray("res://addons/floatmodifiers/plugin.cfg", "res://addons/pvzadventure/plugin.cfg")
|
enabled=PackedStringArray()
|
||||||
|
|
||||||
[filesystem]
|
[filesystem]
|
||||||
|
|
||||||
|
|
|
||||||
89
scripts/entities/entity.gd
Normal file
89
scripts/entities/entity.gd
Normal file
|
|
@ -0,0 +1,89 @@
|
||||||
|
extends Node
|
||||||
|
|
||||||
|
## Base class for all hp-based objects
|
||||||
|
class_name Entity
|
||||||
|
|
||||||
|
## Maximum health points of an entity. Any heal cannot exceed this value
|
||||||
|
@export var max_hp : float
|
||||||
|
## Current amount of health points of an entity. Cannot be below 0 or [code]max_hp[/code]
|
||||||
|
var hp : float = max_hp
|
||||||
|
|
||||||
|
|
||||||
|
signal damaged
|
||||||
|
## Emitted when damage is taken
|
||||||
|
signal damage_taken(context : DamageTakenContext)
|
||||||
|
## Emitted when entity is healed
|
||||||
|
signal healed(context : HealedContext)
|
||||||
|
## Emitted on every health points change
|
||||||
|
signal hp_changed(context : HPChangedContext)
|
||||||
|
## Emitted when kill is requested
|
||||||
|
signal killed(context : KilledContext)
|
||||||
|
|
||||||
|
## Properly deal damage to entity
|
||||||
|
func deal_damage(amount : float, source : Entity):
|
||||||
|
var context = DamageTakenContext.new()
|
||||||
|
context.source = source
|
||||||
|
context.target = self
|
||||||
|
context.amount = amount
|
||||||
|
damage_taken.emit(context)
|
||||||
|
|
||||||
|
var delta_context = HPChangedContext.new()
|
||||||
|
delta_context.source = source
|
||||||
|
delta_context.target = self
|
||||||
|
delta_context.delta = -amount
|
||||||
|
hp_changed.emit(delta_context)
|
||||||
|
|
||||||
|
hp -= amount
|
||||||
|
if hp <= 0:
|
||||||
|
hp = 0
|
||||||
|
kill(source)
|
||||||
|
|
||||||
|
|
||||||
|
## Properly heal entity
|
||||||
|
func heal(amount : float, source : Entity):
|
||||||
|
var context = HealedContext.new()
|
||||||
|
context.source = source
|
||||||
|
context.target = self
|
||||||
|
context.amount = amount
|
||||||
|
healed.emit(context)
|
||||||
|
|
||||||
|
var delta_context = HPChangedContext.new()
|
||||||
|
delta_context.source = source
|
||||||
|
delta_context.target = self
|
||||||
|
delta_context.delta = amount
|
||||||
|
hp_changed.emit(delta_context)
|
||||||
|
|
||||||
|
hp += amount
|
||||||
|
if hp > max_hp:
|
||||||
|
hp = max_hp
|
||||||
|
|
||||||
|
|
||||||
|
## Invoked when an entity is killed by damage.
|
||||||
|
func kill(source : Entity):
|
||||||
|
var context = KilledContext.new()
|
||||||
|
context.source = source
|
||||||
|
context.target = self
|
||||||
|
killed.emit(context)
|
||||||
|
|
||||||
|
deconstruct()
|
||||||
|
|
||||||
|
|
||||||
|
## Method used to properly deconstruct entity
|
||||||
|
func deconstruct():
|
||||||
|
queue_free()
|
||||||
|
|
||||||
|
class DamageTakenContext:
|
||||||
|
var target : Entity
|
||||||
|
var source : Entity
|
||||||
|
var amount : float
|
||||||
|
class HealedContext:
|
||||||
|
var target : Entity
|
||||||
|
var source : Entity
|
||||||
|
var amount : float
|
||||||
|
class KilledContext:
|
||||||
|
var target : Entity
|
||||||
|
var source : Entity
|
||||||
|
class HPChangedContext:
|
||||||
|
var target : Entity
|
||||||
|
var source : Entity
|
||||||
|
var delta : float
|
||||||
1
scripts/entities/entity.gd.uid
Normal file
1
scripts/entities/entity.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://bwdvaov8sse4k
|
||||||
64
scripts/level_event_bus.gd
Normal file
64
scripts/level_event_bus.gd
Normal file
|
|
@ -0,0 +1,64 @@
|
||||||
|
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
|
||||||
|
}
|
||||||
1
scripts/level_event_bus.gd.uid
Normal file
1
scripts/level_event_bus.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://dmc03tudqcqj0
|
||||||
3
scripts/resources/entity_resource.gd
Normal file
3
scripts/resources/entity_resource.gd
Normal file
|
|
@ -0,0 +1,3 @@
|
||||||
|
extends Resource
|
||||||
|
|
||||||
|
class_name EntityResource
|
||||||
1
scripts/resources/entity_resource.gd.uid
Normal file
1
scripts/resources/entity_resource.gd.uid
Normal file
|
|
@ -0,0 +1 @@
|
||||||
|
uid://dtjdfji87kybn
|
||||||
Loading…
Add table
Add a link
Reference in a new issue