style(client): gdformat all 52 GDScript files — zero format warnings
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -14,10 +14,21 @@ extends Node
|
||||
# Server cooldown is authoritative, but the client throttle prevents
|
||||
# flooding and gives correct movement feel in test mode.
|
||||
enum Action {
|
||||
MOVE_NORTH, MOVE_NORTHEAST, MOVE_EAST, MOVE_SOUTHEAST,
|
||||
MOVE_SOUTH, MOVE_SOUTHWEST, MOVE_WEST, MOVE_NORTHWEST,
|
||||
INTERACT, USE_PERCEPTION_MODE, OPEN_MENU, PAUSE, UNPAUSE,
|
||||
TOGGLE_STANCE_UP, TOGGLE_STANCE_DOWN,
|
||||
MOVE_NORTH,
|
||||
MOVE_NORTHEAST,
|
||||
MOVE_EAST,
|
||||
MOVE_SOUTHEAST,
|
||||
MOVE_SOUTH,
|
||||
MOVE_SOUTHWEST,
|
||||
MOVE_WEST,
|
||||
MOVE_NORTHWEST,
|
||||
INTERACT,
|
||||
USE_PERCEPTION_MODE,
|
||||
OPEN_MENU,
|
||||
PAUSE,
|
||||
UNPAUSE,
|
||||
TOGGLE_STANCE_UP,
|
||||
TOGGLE_STANCE_DOWN,
|
||||
BUG_REPORT, # #495: F12 WRONG button — client-only, not sent to server
|
||||
OPEN_JOURNAL, # #264: J key — toggle knowledge journal panel, client-only
|
||||
SET_FACING, # D-054: facing octant update (no movement)
|
||||
@@ -25,18 +36,18 @@ enum Action {
|
||||
SAVE_GAME, # #554: F5 quicksave — sends SaveGame to server with save path
|
||||
LOAD_GAME, # #554: F6 quickload — sends LoadGame to server with save path
|
||||
DEBUG_COMMAND, # #581: debug console command dispatch — sends DebugCommandKind to server
|
||||
CHANGE_SETTINGS, # #646: persist a setting to server SQLite — sends {key, value} to server
|
||||
REQUEST_ALL_SETTINGS, # #646: request full settings dump from server after handshake (unit variant)
|
||||
DELETE_SETTING, # #646: delete a setting by key from server SQLite (struct variant)
|
||||
CHANGE_SETTINGS, # #646: persist a setting to server SQLite — sends {key, value} to server
|
||||
REQUEST_ALL_SETTINGS, # #646: request full settings dump from server after handshake (unit variant)
|
||||
DELETE_SETTING, # #646: delete a setting by key from server SQLite (struct variant)
|
||||
}
|
||||
|
||||
# Minimum milliseconds between movement commands, per stance.
|
||||
# Tuned so Walk feels like walking, Sprint feels fast but readable.
|
||||
const MOVE_INTERVAL_MS := {
|
||||
"Sprint": 200, # 5/sec — fast but trackable
|
||||
"Walk": 400, # 2.5/sec — comfortable walking pace
|
||||
"Careful": 600, # ~1.7/sec — deliberate, scanning
|
||||
"Crouch": 800, # 1.25/sec — creeping
|
||||
"Sprint": 200, # 5/sec — fast but trackable
|
||||
"Walk": 400, # 2.5/sec — comfortable walking pace
|
||||
"Careful": 600, # ~1.7/sec — deliberate, scanning
|
||||
"Crouch": 800, # 1.25/sec — creeping
|
||||
}
|
||||
|
||||
var input_queue: Array[Dictionary] = []
|
||||
@@ -44,7 +55,7 @@ var input_queue: Array[Dictionary] = []
|
||||
# D-054: Client-side facing angle (radians). 0=East, -PI/2=North, PI/2=South.
|
||||
# Updated every frame from mouse position. EntityRenderer reads this for indicator.
|
||||
var facing_angle: float = -PI / 2.0 # Default: North
|
||||
var facing_octant: String = "North" # Derived from facing_angle
|
||||
var facing_octant: String = "North" # Derived from facing_angle
|
||||
var _last_sent_octant: String = "North" # Track to avoid redundant sends
|
||||
var _last_move_msec: int = 0
|
||||
|
||||
@@ -63,11 +74,16 @@ func _process(_delta: float) -> void:
|
||||
# D-054: Send facing octant to server when it changes (even without movement)
|
||||
if facing_octant != _last_sent_octant:
|
||||
_last_sent_octant = facing_octant
|
||||
input_queue.append({
|
||||
"action": Action.SET_FACING,
|
||||
"timestamp_msec": Time.get_ticks_msec(),
|
||||
"action_data": {"facing": facing_octant},
|
||||
})
|
||||
(
|
||||
input_queue
|
||||
. append(
|
||||
{
|
||||
"action": Action.SET_FACING,
|
||||
"timestamp_msec": Time.get_ticks_msec(),
|
||||
"action_data": {"facing": facing_octant},
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
# Poll held WASD keys
|
||||
var raw_dir := Vector2i.ZERO
|
||||
@@ -88,10 +104,15 @@ func _process(_delta: float) -> void:
|
||||
# D-054: Transform WASD input relative to mouse facing
|
||||
var world_dir := _wasd_to_world_dir(raw_dir)
|
||||
var action: Action = _dir_to_action(world_dir)
|
||||
input_queue.append({
|
||||
"action": action,
|
||||
"timestamp_msec": now,
|
||||
})
|
||||
(
|
||||
input_queue
|
||||
. append(
|
||||
{
|
||||
"action": action,
|
||||
"timestamp_msec": now,
|
||||
}
|
||||
)
|
||||
)
|
||||
|
||||
|
||||
# Discrete actions: fire once on key press (not held).
|
||||
@@ -197,15 +218,24 @@ static func _snap_to_octant_dir(dir: Vector2) -> Vector2i:
|
||||
# Quantize to nearest 45° (PI/4)
|
||||
var octant := roundi(angle / (PI / 4.0))
|
||||
match octant:
|
||||
0: return Vector2i(1, 0) # East
|
||||
1: return Vector2i(1, 1) # Southeast
|
||||
2, -6: return Vector2i(0, 1) # South
|
||||
3, -5: return Vector2i(-1, 1) # Southwest
|
||||
4, -4: return Vector2i(-1, 0) # West
|
||||
-3, 5: return Vector2i(-1, -1) # Northwest
|
||||
-2: return Vector2i(0, -1) # North
|
||||
-1: return Vector2i(1, -1) # Northeast
|
||||
_: return Vector2i.ZERO
|
||||
0:
|
||||
return Vector2i(1, 0) # East
|
||||
1:
|
||||
return Vector2i(1, 1) # Southeast
|
||||
2, -6:
|
||||
return Vector2i(0, 1) # South
|
||||
3, -5:
|
||||
return Vector2i(-1, 1) # Southwest
|
||||
4, -4:
|
||||
return Vector2i(-1, 0) # West
|
||||
-3, 5:
|
||||
return Vector2i(-1, -1) # Northwest
|
||||
-2:
|
||||
return Vector2i(0, -1) # North
|
||||
-1:
|
||||
return Vector2i(1, -1) # Northeast
|
||||
_:
|
||||
return Vector2i.ZERO
|
||||
|
||||
|
||||
# D-054: Convert a facing angle (radians) to the nearest octant name.
|
||||
@@ -213,27 +243,45 @@ static func _snap_to_octant_dir(dir: Vector2) -> Vector2i:
|
||||
static func _angle_to_octant(angle: float) -> String:
|
||||
var octant := roundi(angle / (PI / 4.0))
|
||||
match octant:
|
||||
0: return "East"
|
||||
1: return "Southeast"
|
||||
2, -6: return "South"
|
||||
3, -5: return "Southwest"
|
||||
4, -4: return "West"
|
||||
-3, 5: return "Northwest"
|
||||
-2: return "North"
|
||||
-1: return "Northeast"
|
||||
_: return "East"
|
||||
0:
|
||||
return "East"
|
||||
1:
|
||||
return "Southeast"
|
||||
2, -6:
|
||||
return "South"
|
||||
3, -5:
|
||||
return "Southwest"
|
||||
4, -4:
|
||||
return "West"
|
||||
-3, 5:
|
||||
return "Northwest"
|
||||
-2:
|
||||
return "North"
|
||||
-1:
|
||||
return "Northeast"
|
||||
_:
|
||||
return "East"
|
||||
|
||||
|
||||
# Map a direction vector to the corresponding movement Action.
|
||||
# Handles all 8 directions via composite W+D, W+A, etc.
|
||||
static func _dir_to_action(dir: Vector2i) -> Action:
|
||||
match dir:
|
||||
Vector2i(0, -1): return Action.MOVE_NORTH
|
||||
Vector2i(1, -1): return Action.MOVE_NORTHEAST
|
||||
Vector2i(1, 0): return Action.MOVE_EAST
|
||||
Vector2i(1, 1): return Action.MOVE_SOUTHEAST
|
||||
Vector2i(0, 1): return Action.MOVE_SOUTH
|
||||
Vector2i(-1, 1): return Action.MOVE_SOUTHWEST
|
||||
Vector2i(-1, 0): return Action.MOVE_WEST
|
||||
Vector2i(-1, -1): return Action.MOVE_NORTHWEST
|
||||
_: return Action.MOVE_NORTH
|
||||
Vector2i(0, -1):
|
||||
return Action.MOVE_NORTH
|
||||
Vector2i(1, -1):
|
||||
return Action.MOVE_NORTHEAST
|
||||
Vector2i(1, 0):
|
||||
return Action.MOVE_EAST
|
||||
Vector2i(1, 1):
|
||||
return Action.MOVE_SOUTHEAST
|
||||
Vector2i(0, 1):
|
||||
return Action.MOVE_SOUTH
|
||||
Vector2i(-1, 1):
|
||||
return Action.MOVE_SOUTHWEST
|
||||
Vector2i(-1, 0):
|
||||
return Action.MOVE_WEST
|
||||
Vector2i(-1, -1):
|
||||
return Action.MOVE_NORTHWEST
|
||||
_:
|
||||
return Action.MOVE_NORTH
|
||||
|
||||
Reference in New Issue
Block a user