fix(simulation): Clippy cleanup and CI enforcement (#635)
Fix all Clippy warnings across the server codebase (2411 insertions, 1341 deletions). Raise type-complexity-threshold to 750 and too-many-arguments to 12 in .clippy.toml for idiomatic Bevy ECS system signatures. The server now passes `cargo clippy -- --deny warnings` cleanly. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
+127
-99
@@ -4,9 +4,9 @@
|
||||
|
||||
use crate::bridge::debug::DebugCommandBuffer;
|
||||
use crate::bridge::types::{FacingDirection, ObjectType, PlayerAction, PlayerInput};
|
||||
use crate::settings::{SettingsCommand, SettingsCommandBuffer};
|
||||
use crate::knowledge::{EntityRegistry, StableId};
|
||||
use crate::perception::vision_cone::{facing_from_delta, Facing};
|
||||
use crate::settings::{SettingsCommand, SettingsCommandBuffer};
|
||||
use crate::simulation::interaction::{DoorInteractRequest, DoorState, TerminalInteractRequest};
|
||||
use crate::simulation::inventory::{
|
||||
find_next_slot, occupied_slots_for, CarriedBy, InventorySlot, ItemName, MAX_INVENTORY_SLOTS,
|
||||
@@ -207,93 +207,97 @@ pub fn process_player_input(
|
||||
}
|
||||
}
|
||||
match verb.as_deref() {
|
||||
Some("Take") => {
|
||||
handle_take(
|
||||
&mut commands,
|
||||
®istry,
|
||||
&player_query,
|
||||
&inventory_items,
|
||||
target_entity_id,
|
||||
);
|
||||
Some("Take") => {
|
||||
handle_take(
|
||||
&mut commands,
|
||||
®istry,
|
||||
&player_query,
|
||||
&inventory_items,
|
||||
target_entity_id,
|
||||
);
|
||||
}
|
||||
Some("Place") => {
|
||||
handle_place(&mut commands, ®istry, &player_query, target_entity_id);
|
||||
}
|
||||
Some("Talk") => {
|
||||
handle_talk(
|
||||
&mut commands,
|
||||
®istry,
|
||||
&player_query,
|
||||
&all_positions,
|
||||
target_entity_id,
|
||||
);
|
||||
}
|
||||
Some("Follow") => {
|
||||
handle_follow(
|
||||
&mut commands,
|
||||
®istry,
|
||||
&player_query,
|
||||
&all_positions,
|
||||
target_entity_id,
|
||||
current_tick,
|
||||
);
|
||||
}
|
||||
Some("Examine NPC")
|
||||
| Some("ExamineNpc")
|
||||
| Some("Examine Object")
|
||||
| Some("ExamineObject")
|
||||
| Some("Observe") => {
|
||||
handle_examine(
|
||||
&mut commands,
|
||||
®istry,
|
||||
&player_query,
|
||||
&all_positions,
|
||||
target_entity_id,
|
||||
);
|
||||
}
|
||||
Some("Confront") => {
|
||||
handle_confront(
|
||||
&mut commands,
|
||||
®istry,
|
||||
&player_query,
|
||||
&all_positions,
|
||||
target_entity_id,
|
||||
);
|
||||
}
|
||||
Some("Reset") => {
|
||||
handle_reset(
|
||||
&mut commands,
|
||||
®istry,
|
||||
&reset_triggers,
|
||||
&mut room_snapshots,
|
||||
target_entity_id,
|
||||
current_tick,
|
||||
);
|
||||
}
|
||||
// #246: Door and Terminal behavior
|
||||
Some("Open") | Some("Close") => {
|
||||
handle_door_interact(
|
||||
&mut commands,
|
||||
®istry,
|
||||
&player_query,
|
||||
&door_states,
|
||||
target_entity_id,
|
||||
);
|
||||
}
|
||||
Some("Use") => {
|
||||
handle_terminal_interact(
|
||||
&mut commands,
|
||||
®istry,
|
||||
&player_query,
|
||||
&object_types,
|
||||
target_entity_id,
|
||||
);
|
||||
}
|
||||
_ => {
|
||||
tracing::info!(
|
||||
"Interact: target={:?}, verb={:?} — logged only",
|
||||
target_entity_id,
|
||||
verb,
|
||||
);
|
||||
}
|
||||
}
|
||||
Some("Place") => {
|
||||
handle_place(&mut commands, ®istry, &player_query, target_entity_id);
|
||||
}
|
||||
Some("Talk") => {
|
||||
handle_talk(
|
||||
&mut commands,
|
||||
®istry,
|
||||
&player_query,
|
||||
&all_positions,
|
||||
target_entity_id,
|
||||
);
|
||||
}
|
||||
Some("Follow") => {
|
||||
handle_follow(
|
||||
&mut commands,
|
||||
®istry,
|
||||
&player_query,
|
||||
&all_positions,
|
||||
target_entity_id,
|
||||
current_tick,
|
||||
);
|
||||
}
|
||||
Some("Examine NPC") | Some("ExamineNpc") | Some("Examine Object")
|
||||
| Some("ExamineObject") | Some("Observe") => {
|
||||
handle_examine(
|
||||
&mut commands,
|
||||
®istry,
|
||||
&player_query,
|
||||
&all_positions,
|
||||
target_entity_id,
|
||||
);
|
||||
}
|
||||
Some("Confront") => {
|
||||
handle_confront(
|
||||
&mut commands,
|
||||
®istry,
|
||||
&player_query,
|
||||
&all_positions,
|
||||
target_entity_id,
|
||||
);
|
||||
}
|
||||
Some("Reset") => {
|
||||
handle_reset(
|
||||
&mut commands,
|
||||
®istry,
|
||||
&reset_triggers,
|
||||
&mut room_snapshots,
|
||||
target_entity_id,
|
||||
current_tick,
|
||||
);
|
||||
}
|
||||
// #246: Door and Terminal behavior
|
||||
Some("Open") | Some("Close") => {
|
||||
handle_door_interact(
|
||||
&mut commands,
|
||||
®istry,
|
||||
&player_query,
|
||||
&door_states,
|
||||
target_entity_id,
|
||||
);
|
||||
}
|
||||
Some("Use") => {
|
||||
handle_terminal_interact(
|
||||
&mut commands,
|
||||
®istry,
|
||||
&player_query,
|
||||
&object_types,
|
||||
target_entity_id,
|
||||
);
|
||||
}
|
||||
_ => {
|
||||
tracing::info!(
|
||||
"Interact: target={:?}, verb={:?} — logged only",
|
||||
target_entity_id,
|
||||
verb,
|
||||
);
|
||||
}
|
||||
}}
|
||||
}
|
||||
PlayerAction::WalkAway => {
|
||||
if let Ok((player_entity, _, _, _)) = player_query.single() {
|
||||
commands
|
||||
@@ -383,21 +387,27 @@ pub fn process_player_input(
|
||||
if let Some(ref mut buf) = settings_cmd_buffer {
|
||||
buf.push(SettingsCommand::Change { key, value });
|
||||
} else {
|
||||
tracing::warn!("ChangeSetting received but SettingsCommandBuffer not registered");
|
||||
tracing::warn!(
|
||||
"ChangeSetting received but SettingsCommandBuffer not registered"
|
||||
);
|
||||
}
|
||||
}
|
||||
PlayerAction::RequestAllSettings => {
|
||||
if let Some(ref mut buf) = settings_cmd_buffer {
|
||||
buf.push(SettingsCommand::RequestAll);
|
||||
} else {
|
||||
tracing::warn!("RequestAllSettings received but SettingsCommandBuffer not registered");
|
||||
tracing::warn!(
|
||||
"RequestAllSettings received but SettingsCommandBuffer not registered"
|
||||
);
|
||||
}
|
||||
}
|
||||
PlayerAction::DeleteSetting { key } => {
|
||||
if let Some(ref mut buf) = settings_cmd_buffer {
|
||||
buf.push(SettingsCommand::Delete { key });
|
||||
} else {
|
||||
tracing::warn!("DeleteSetting received but SettingsCommandBuffer not registered");
|
||||
tracing::warn!(
|
||||
"DeleteSetting received but SettingsCommandBuffer not registered"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -663,7 +673,10 @@ fn handle_dialogue_response(
|
||||
|
||||
let target_stable = StableId(target_entity_id);
|
||||
let Some(target_entity) = registry.to_entity(&target_stable) else {
|
||||
tracing::warn!(target_entity_id, "DialogueResponse: target entity not in registry");
|
||||
tracing::warn!(
|
||||
target_entity_id,
|
||||
"DialogueResponse: target entity not in registry"
|
||||
);
|
||||
return;
|
||||
};
|
||||
|
||||
@@ -690,7 +703,11 @@ fn handle_dialogue_response(
|
||||
response_id: response_id.to_string(),
|
||||
});
|
||||
|
||||
tracing::debug!(target_entity_id, response_id, "DialogueResponse: marker set on player");
|
||||
tracing::debug!(
|
||||
target_entity_id,
|
||||
response_id,
|
||||
"DialogueResponse: marker set on player"
|
||||
);
|
||||
}
|
||||
|
||||
/// Handle Confront verb: set ConfrontationDelivered marker on the player entity (#520, D-063).
|
||||
@@ -971,11 +988,14 @@ fn handle_door_interact(
|
||||
return;
|
||||
};
|
||||
|
||||
commands
|
||||
.entity(player_entity)
|
||||
.insert(DoorInteractRequest { door_entity: target_entity });
|
||||
commands.entity(player_entity).insert(DoorInteractRequest {
|
||||
door_entity: target_entity,
|
||||
});
|
||||
|
||||
tracing::debug!(target_id, "Door interact: DoorInteractRequest inserted on player");
|
||||
tracing::debug!(
|
||||
target_id,
|
||||
"Door interact: DoorInteractRequest inserted on player"
|
||||
);
|
||||
}
|
||||
|
||||
/// Handle Terminal Use: insert `TerminalInteractRequest` on the player entity (#246).
|
||||
@@ -1001,7 +1021,10 @@ fn handle_terminal_interact(
|
||||
|
||||
let target_stable = StableId(target_id);
|
||||
let Some(target_entity) = registry.to_entity(&target_stable) else {
|
||||
tracing::warn!(target_id, "Terminal interact: target entity not in registry");
|
||||
tracing::warn!(
|
||||
target_id,
|
||||
"Terminal interact: target entity not in registry"
|
||||
);
|
||||
return;
|
||||
};
|
||||
|
||||
@@ -1020,9 +1043,14 @@ fn handle_terminal_interact(
|
||||
|
||||
commands
|
||||
.entity(player_entity)
|
||||
.insert(TerminalInteractRequest { terminal_entity: target_entity });
|
||||
.insert(TerminalInteractRequest {
|
||||
terminal_entity: target_entity,
|
||||
});
|
||||
|
||||
tracing::debug!(target_id, "Terminal interact: TerminalInteractRequest inserted on player");
|
||||
tracing::debug!(
|
||||
target_id,
|
||||
"Terminal interact: TerminalInteractRequest inserted on player"
|
||||
);
|
||||
}
|
||||
|
||||
/// Handle TeleportToHub: move player to hub spawn, clear interaction state (#491).
|
||||
|
||||
Reference in New Issue
Block a user