gfolf2/src/player/world_player.gd

60 lines
1.3 KiB
GDScript3
Raw Normal View History

class_name WorldPlayer extends Resource
## Container for the state of the player within the world.
2024-11-18 01:58:09 -07:00
signal on_life_changed(new_value: float)
@export_range(0, 100) var life: float = 100.0:
set(value):
if value != life:
life = value
on_life_changed.emit(value)
@export_category("Profile")
# TODO character select
@export var name: String = "Gfolfer"
2024-11-18 01:58:09 -07:00
@export var color: Color = Color("ff7070")
@export_category("Equipment")
@export var driver: Club
@export var iron: Club
@export var wedge: Club
@export var putter: Club
@export var special: Club
# TODO balls, pickups, etc
var shot_setup: ShotSetup:
get:
if not shot_setup:
shot_setup = ShotSetup.create(self)
return shot_setup
## Get the club equipped in the given slot.
##
## Returns `null` if the player has no club equipped in the given slot
func get_club(type: Club.Type) -> Club:
match type:
Club.Type.DRIVER:
return driver
Club.Type.IRON:
return iron
Club.Type.WEDGE:
return wedge
Club.Type.PUTTER:
return putter
Club.Type.SPECIAL:
return special
return null
## Create a debug player instance
static func create_debug() -> WorldPlayer:
var instance := WorldPlayer.new()
instance.driver = Club.catalog.debug_driver
instance.iron = Club.catalog.debug_iron
instance.wedge = Club.catalog.debug_wedge
instance.putter = Club.catalog.debug_wedge
return instance