diff --git a/Cargo.lock b/Cargo.lock index 057db491..f775f249 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -624,6 +624,7 @@ dependencies = [ "num-bigint", "rand 0.8.6", "sha1", + "strum", ] [[package]] @@ -6138,6 +6139,28 @@ version = "0.11.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" +[[package]] +name = "strum" +version = "0.26.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8fec0f0aef304996cf250b31b5a10dee7980c85da9d759361292b8bca5a18f06" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.26.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c6bee85a5a24955dc440386795aa378cd9cf82acd5f764469152d2270e581be" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "rustversion", + "syn", +] + [[package]] name = "svg_fmt" version = "0.4.5" diff --git a/Cargo.toml b/Cargo.toml index 78a166f7..0552b3cc 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -12,6 +12,16 @@ authors = ["sam "] # since day one, enacted at the 0530 debt sweep). Per-crate feature additions stay in the crate. # `image` deliberately stays per-crate: its default-features/feature sets differ per consumer, # and a workspace default-features choice can't be subtracted from downstream. +# **Lint policy** (decision 2266 §C4). `too_many_arguments` is a readability lint for plain +# functions; on a Bevy system the parameter list IS the scheduler's dependency declaration, and +# a system that reads eight resources has eight parameters by construction. The lint had fired +# 364 times in this workspace and been allowed 364 times, 281 of them on systems — a lint whose +# every verdict is overridden is not a gate, it is a tax on adding a system. Allowed once here; +# the per-site attributes are gone. `type_complexity` stays on: it fires on shapes a type alias +# or a `SystemParam` bundle genuinely fixes. +[workspace.lints.clippy] +too_many_arguments = "allow" + [workspace.dependencies] anyhow = "1.0.102" # bevy's `default` is `["2d", "3d", "ui"]`, and every one of those three pulls `audio` diff --git a/README.md b/README.md index 6fd67597..aa6f4c9d 100644 --- a/README.md +++ b/README.md @@ -51,8 +51,8 @@ benilla is done when a 1.12.1 player can do everything here that they could in t client, it looks and feels the same, and it runs from a download on Windows, Linux and macOS. No dates; the order is what is likely, not a promise. -- Battlegrounds and meeting stones, then the long tail of small features that separates a - working client from a finished one. +- Battlegrounds, then the long tail of small features that separates a working client from a + finished one. - Addons, options and performance, ongoing. - The no-brainer fixes from VanillaFixes, SuperWoW and the like. - Playable downloads for Windows, Linux and macOS. Linux first. diff --git a/crates/benilla-adt/Cargo.toml b/crates/benilla-adt/Cargo.toml index 698998c3..10ad7516 100644 --- a/crates/benilla-adt/Cargo.toml +++ b/crates/benilla-adt/Cargo.toml @@ -5,5 +5,8 @@ edition.workspace = true license.workspace = true description = "ADT terrain-tile reader for WoW 1.12.1 (build 5875) — in-repo, decision 0021" +[lints] +workspace = true + [dependencies] benilla-bytes = { path = "../benilla-bytes" } diff --git a/crates/benilla-app/Cargo.toml b/crates/benilla-app/Cargo.toml index 26b841c3..18380dad 100644 --- a/crates/benilla-app/Cargo.toml +++ b/crates/benilla-app/Cargo.toml @@ -5,6 +5,9 @@ edition.workspace = true license.workspace = true description = "The Bevy app as a library: everything but the build-id stamp, which lives in the `benilla` launcher shim so a commit dirties ~30 lines instead of this crate (decision 0993)" +[lints] +workspace = true + [features] # **The dev/player seam** (decisions 0026 + 1173). Default-ON, so every ordinary `cargo run`, # capture, probe and gate builds exactly what it built before. `--no-default-features` compiles diff --git a/crates/benilla-app/src/area.rs b/crates/benilla-app/src/area.rs index ed799f45..756e323b 100644 --- a/crates/benilla-app/src/area.rs +++ b/crates/benilla-app/src/area.rs @@ -145,7 +145,6 @@ fn elect_event(cache: &ZoneCache, next: &ZoneSignal) -> Option<&'static str> { /// indoor override), the PvP tuple, write the host globals, then fire the elected zone event /// and — independently, like the client's second site — `MINIMAP_ZONE_CHANGED` when the /// subzone-else-zone line changed. -#[allow(clippy::too_many_arguments)] fn feed_zone_events( script: Option>, world: benilla_world::world_point::WorldPoint, diff --git a/crates/benilla-app/src/area_trigger.rs b/crates/benilla-app/src/area_trigger.rs index e9e09a39..4e3f74f7 100644 --- a/crates/benilla-app/src/area_trigger.rs +++ b/crates/benilla-app/src/area_trigger.rs @@ -112,7 +112,7 @@ impl Plugin for AreaTriggerPlugin { Update, check_area_triggers .in_set(WorldStage::Stream) - .run_if(in_state(crate::char_select::ClientState::InWorld)), + .in_set(crate::char_select::InWorldGated), ); } } diff --git a/crates/benilla-app/src/aura_visual.rs b/crates/benilla-app/src/aura_visual.rs index f67a42cf..693fe426 100644 --- a/crates/benilla-app/src/aura_visual.rs +++ b/crates/benilla-app/src/aura_visual.rs @@ -742,7 +742,6 @@ type AuraParts<'w, 's> = Query< /// Note the swap keys on the *instance* alpha only: a batch whose own animated colour alpha dips is /// a per-batch quantity the reference combines separately, and forcing those onto a blend pass would /// change every existing unit's look. -#[allow(clippy::too_many_arguments)] // one Bevy system's full input set pub(crate) fn apply_aura_alpha( time: Res