742c415885
Work-Package: M02-GMP-SANDBOX-CAPABILITIES-001 Agent: sindo-main-codex Tests: capability/input/movement/terrain/camera/presentation; coordinate/streaming/docs/coordination; renderer dry-run 7/7 Fidelity: proves debug sprint/free-flight exclusion in Blizzlike335; no positive movement parity claim
54 lines
1.8 KiB
GDScript
54 lines
1.8 KiB
GDScript
class_name PlayerMovementCapabilities
|
|
extends RefCounted
|
|
|
|
## Immutable local-player movement capability selection.
|
|
## Unknown or missing profile identifiers collapse to the safe Blizzlike335
|
|
## capability set; only RenderSandbox enables debug sprint and free flight.
|
|
|
|
const BLIZZLIKE_335_PROFILE_ID: StringName = &"Blizzlike335"
|
|
const RENDER_SANDBOX_PROFILE_ID: StringName = &"RenderSandbox"
|
|
|
|
var profile_id: StringName:
|
|
get:
|
|
return _profile_id
|
|
|
|
var allows_debug_sprint: bool:
|
|
get:
|
|
return _allows_debug_sprint
|
|
|
|
var allows_debug_free_flight: bool:
|
|
get:
|
|
return _allows_debug_free_flight
|
|
|
|
var _profile_id: StringName
|
|
var _allows_debug_sprint: bool
|
|
var _allows_debug_free_flight: bool
|
|
|
|
|
|
func _init(requested_profile_id: StringName = BLIZZLIKE_335_PROFILE_ID) -> void:
|
|
if requested_profile_id == RENDER_SANDBOX_PROFILE_ID:
|
|
_profile_id = RENDER_SANDBOX_PROFILE_ID
|
|
_allows_debug_sprint = true
|
|
_allows_debug_free_flight = true
|
|
return
|
|
_profile_id = BLIZZLIKE_335_PROFILE_ID
|
|
_allows_debug_sprint = false
|
|
_allows_debug_free_flight = false
|
|
|
|
|
|
## Returns the debug-enabled capability set used by current renderer scenes.
|
|
static func render_sandbox() -> PlayerMovementCapabilities:
|
|
return PlayerMovementCapabilities.new(RENDER_SANDBOX_PROFILE_ID)
|
|
|
|
|
|
## Returns the compatibility-safe capability set with debug movement disabled.
|
|
## This name identifies the intended compatibility profile, not proven 1:1 movement.
|
|
static func blizzlike_335() -> PlayerMovementCapabilities:
|
|
return PlayerMovementCapabilities.new(BLIZZLIKE_335_PROFILE_ID)
|
|
|
|
|
|
## Maps scene/application profile configuration to a known capability set.
|
|
## Unknown identifiers fail closed to Blizzlike335.
|
|
static func for_profile_id(requested_profile_id: StringName) -> PlayerMovementCapabilities:
|
|
return PlayerMovementCapabilities.new(requested_profile_id)
|