class_name WorldPlayer extends Resource ## Container for the state of the player within the world. 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" @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