[INFO] cloning repository https://github.com/notarikon-nz/viticulture
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/notarikon-nz/viticulture" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnotarikon-nz%2Fviticulture", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnotarikon-nz%2Fviticulture'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] fb87c42ae3d568e006de41bb6f97cdd823554769
[INFO] checking notarikon-nz/viticulture against try#84addd32a13fa2d3f62fe5d99031611147b7fb13 for pr-147565-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fnotarikon-nz%2Fviticulture" "/workspace/builds/worker-2-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-2-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/notarikon-nz/viticulture
[INFO] finished tweaking git repo https://github.com/notarikon-nz/viticulture
[INFO] tweaked toml for git repo https://github.com/notarikon-nz/viticulture written to /workspace/builds/worker-2-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/notarikon-nz/viticulture on toolchain 84addd32a13fa2d3f62fe5d99031611147b7fb13
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+84addd32a13fa2d3f62fe5d99031611147b7fb13" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/notarikon-nz/viticulture already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+84addd32a13fa2d3f62fe5d99031611147b7fb13" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+84addd32a13fa2d3f62fe5d99031611147b7fb13" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 56d11ccd82f9cb317a181734dc105e0ac09790da8f07f516a2c97a2e411adb22
[INFO] running `Command { std: "docker" "start" "-a" "56d11ccd82f9cb317a181734dc105e0ac09790da8f07f516a2c97a2e411adb22", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "56d11ccd82f9cb317a181734dc105e0ac09790da8f07f516a2c97a2e411adb22", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "56d11ccd82f9cb317a181734dc105e0ac09790da8f07f516a2c97a2e411adb22", kill_on_drop: false }`
[INFO] [stdout] 56d11ccd82f9cb317a181734dc105e0ac09790da8f07f516a2c97a2e411adb22
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-2-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:4848fb76d95f26979359cc7e45710b1dbc8f3acb7aeedee7c460d7702230f228" "/opt/rustwide/cargo-home/bin/cargo" "+84addd32a13fa2d3f62fe5d99031611147b7fb13" "check" "--frozen" "--all" "--all-targets" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] cf7f45849b309ed380919037ed3a12e248c3a0c208fd0521012e4937b5b0c1ef
[INFO] running `Command { std: "docker" "start" "-a" "cf7f45849b309ed380919037ed3a12e248c3a0c208fd0521012e4937b5b0c1ef", kill_on_drop: false }`
[INFO] [stderr]    Compiling proc-macro2 v1.0.101
[INFO] [stderr]    Compiling unicode-ident v1.0.18
[INFO] [stderr]    Compiling serde v1.0.219
[INFO] [stderr]     Checking cfg-if v1.0.1
[INFO] [stderr]    Compiling libc v0.2.175
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling winnow v0.7.12
[INFO] [stderr]    Compiling crossbeam-utils v0.8.21
[INFO] [stderr]    Compiling zerocopy v0.8.26
[INFO] [stderr]     Checking tracing-core v0.1.34
[INFO] [stderr]     Checking equivalent v1.0.2
[INFO] [stderr]     Checking rand_core v0.6.4
[INFO] [stderr]    Compiling ahash v0.8.12
[INFO] [stderr]     Checking indexmap v2.10.0
[INFO] [stderr]    Compiling typeid v1.0.3
[INFO] [stderr]     Checking rand v0.8.5
[INFO] [stderr]     Checking thread_local v1.1.9
[INFO] [stderr]     Checking fixedbitset v0.4.2
[INFO] [stderr]     Checking bevy_ptr v0.14.2
[INFO] [stderr]     Checking log v0.4.27
[INFO] [stderr]     Checking nonmax v0.5.5
[INFO] [stderr]     Checking fixedbitset v0.5.7
[INFO] [stderr]    Compiling num-traits v0.2.19
[INFO] [stderr]     Checking libloading v0.8.8
[INFO] [stderr]     Checking memchr v2.7.5
[INFO] [stderr]    Compiling cfg_aliases v0.1.1
[INFO] [stderr]    Compiling lock_api v0.4.13
[INFO] [stderr]    Compiling parking_lot_core v0.9.11
[INFO] [stderr]     Checking bitflags v1.3.2
[INFO] [stderr]     Checking termcolor v1.4.1
[INFO] [stderr]     Checking unicode-width v0.1.14
[INFO] [stderr]     Checking bit-vec v0.6.3
[INFO] [stderr]     Checking bit-set v0.5.3
[INFO] [stderr]    Compiling cc v1.2.33
[INFO] [stderr]    Compiling ash v0.37.3+1.3.251
[INFO] [stderr]     Checking rustc-hash v1.1.0
[INFO] [stderr]    Compiling quote v1.0.40
[INFO] [stderr]     Checking concurrent-queue v2.5.0
[INFO] [stderr]     Checking codespan-reporting v0.11.1
[INFO] [stderr]     Checking crossbeam-channel v0.5.15
[INFO] [stderr]     Checking aho-corasick v1.1.3
[INFO] [stderr]    Compiling khronos-egl v6.0.0
[INFO] [stderr]     Checking event-listener v5.4.1
[INFO] [stderr]     Checking async-executor v1.13.2
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]     Checking hexf-parse v0.2.1
[INFO] [stderr]     Checking unicode-xid v0.2.6
[INFO] [stderr]    Compiling wgpu-hal v0.21.1
[INFO] [stderr]     Checking libloading v0.7.4
[INFO] [stderr]     Checking accesskit v0.14.0
[INFO] [stderr]     Checking crc32fast v1.5.0
[INFO] [stderr]    Compiling wgpu-core v0.21.1
[INFO] [stderr]     Checking event-listener-strategy v0.5.4
[INFO] [stderr]     Checking renderdoc-sys v1.1.0
[INFO] [stderr]     Checking profiling v1.0.17
[INFO] [stderr]     Checking constant_time_eq v0.3.1
[INFO] [stderr]     Checking event-listener v2.5.3
[INFO] [stderr]     Checking base64 v0.21.7
[INFO] [stderr]     Checking async-channel v2.5.0
[INFO] [stderr]     Checking async-lock v3.4.1
[INFO] [stderr]     Checking glow v0.13.1
[INFO] [stderr]     Checking typewit v1.12.1
[INFO] [stderr]     Checking async-broadcast v0.5.1
[INFO] [stderr]    Compiling uuid v1.18.0
[INFO] [stderr]    Compiling document-features v0.2.11
[INFO] [stderr]     Checking flate2 v1.1.2
[INFO] [stderr]     Checking bevy_tasks v0.14.2
[INFO] [stderr]     Checking blocking v1.6.2
[INFO] [stderr]     Checking const_panic v0.2.14
[INFO] [stderr]    Compiling wgpu v0.20.1
[INFO] [stderr]     Checking const_soft_float v0.1.4
[INFO] [stderr]     Checking regex-automata v0.4.9
[INFO] [stderr]     Checking twox-hash v1.6.3
[INFO] [stderr]     Checking data-encoding v2.9.0
[INFO] [stderr]     Checking png v0.17.16
[INFO] [stderr]     Checking async-fs v2.1.3
[INFO] [stderr]     Checking const-fnv1a-hash v1.1.0
[INFO] [stderr]     Checking constgebra v0.1.4
[INFO] [stderr]     Checking ktx2 v0.3.0
[INFO] [stderr]     Checking ruzstd v0.7.3
[INFO] [stderr]     Checking lazy_static v1.5.0
[INFO] [stderr]     Checking regex-syntax v0.6.29
[INFO] [stderr]     Checking radsort v0.1.1
[INFO] [stderr]    Compiling rustix v0.38.44
[INFO] [stderr]    Compiling rustix v1.0.8
[INFO] [stderr]    Compiling alsa-sys v0.3.1
[INFO] [stderr]     Checking linux-raw-sys v0.4.15
[INFO] [stderr]     Checking overload v0.1.1
[INFO] [stderr]     Checking linux-raw-sys v0.9.4
[INFO] [stderr]     Checking sysinfo v0.30.13
[INFO] [stderr]     Checking byteorder v1.5.0
[INFO] [stderr]     Checking parking_lot v0.12.4
[INFO] [stderr]    Compiling blake3 v1.8.2
[INFO] [stderr]     Checking nu-ansi-term v0.46.0
[INFO] [stderr]     Checking sharded-slab v0.1.7
[INFO] [stderr]    Compiling toml_edit v0.22.27
[INFO] [stderr]    Compiling nix v0.29.0
[INFO] [stderr]     Checking euclid v0.22.11
[INFO] [stderr]     Checking tracing-log v0.2.0
[INFO] [stderr]    Compiling libudev-sys v0.1.4
[INFO] [stderr]     Checking svg_fmt v0.4.5
[INFO] [stderr]    Compiling serde_json v1.0.142
[INFO] [stderr]     Checking inotify-sys v0.1.5
[INFO] [stderr]    Compiling winit v0.30.12
[INFO] [stderr]     Checking approx v0.5.1
[INFO] [stderr]     Checking dlib v0.5.2
[INFO] [stderr]    Compiling slotmap v1.0.7
[INFO] [stderr]     Checking ryu v1.0.20
[INFO] [stderr]     Checking rectangle-pack v0.4.2
[INFO] [stderr]     Checking x11rb-protocol v0.13.1
[INFO] [stderr]     Checking itoa v1.0.15
[INFO] [stderr]    Compiling cpal v0.15.3
[INFO] [stderr]    Compiling inflections v1.1.1
[INFO] [stderr]     Checking ab_glyph v0.2.31
[INFO] [stderr]     Checking tinyvec v1.9.0
[INFO] [stderr]     Checking inotify v0.10.2
[INFO] [stderr]     Checking x11-dl v2.21.0
[INFO] [stderr]     Checking ogg v0.8.0
[INFO] [stderr]     Checking vec_map v0.8.2
[INFO] [stderr]     Checking dasp_sample v0.11.0
[INFO] [stderr]    Compiling gilrs v0.10.10
[INFO] [stderr]     Checking xi-unicode v0.3.0
[INFO] [stderr]     Checking grid v0.14.0
[INFO] [stderr]     Checking ppv-lite86 v0.2.21
[INFO] [stderr]     Checking rand_core v0.9.3
[INFO] [stderr]     Checking glyph_brush_layout v0.2.4
[INFO] [stderr]     Checking iana-time-zone v0.1.63
[INFO] [stderr]     Checking guillotiere v0.6.2
[INFO] [stderr]     Checking chrono v0.4.41
[INFO] [stderr]     Checking rand_chacha v0.9.0
[INFO] [stderr]     Checking rand v0.9.2
[INFO] [stderr]     Checking taffy v0.5.2
[INFO] [stderr]     Checking regex-automata v0.1.10
[INFO] [stderr]     Checking lewton v0.10.2
[INFO] [stderr]     Checking regex v1.11.1
[INFO] [stderr]     Checking matchers v0.1.0
[INFO] [stderr]    Compiling bevy_macro_utils v0.14.2
[INFO] [stderr]    Compiling encase_derive_impl v0.8.0
[INFO] [stderr]    Compiling serde_derive v1.0.219
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling bytemuck_derive v1.10.1
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling bevy_utils_proc_macros v0.14.2
[INFO] [stderr]    Compiling bevy_reflect_derive v0.14.2
[INFO] [stderr]    Compiling bevy_ecs_macros v0.14.2
[INFO] [stderr]    Compiling bevy_derive v0.14.2
[INFO] [stderr]    Compiling bevy_asset_macros v0.14.2
[INFO] [stderr]    Compiling bevy_render_macros v0.14.2
[INFO] [stderr]    Compiling gltf-derive v1.4.1
[INFO] [stderr]    Compiling bevy_state_macros v0.14.2
[INFO] [stderr]    Compiling bevy_gizmos_macros v0.14.2
[INFO] [stderr]    Compiling encase_derive v0.8.0
[INFO] [stderr]    Compiling bevy_encase_derive v0.14.2
[INFO] [stderr]     Checking tracing v0.1.41
[INFO] [stderr]     Checking tracing-subscriber v0.3.19
[INFO] [stderr]     Checking thiserror v1.0.69
[INFO] [stderr]     Checking bytemuck v1.23.2
[INFO] [stderr]     Checking image v0.25.6
[INFO] [stderr]     Checking bitflags v2.9.2
[INFO] [stderr]     Checking glam v0.27.0
[INFO] [stderr]     Checking hashbrown v0.14.5
[INFO] [stderr]     Checking erased-serde v0.4.6
[INFO] [stderr]     Checking petgraph v0.6.5
[INFO] [stderr]     Checking spirv v0.3.0+sdk-1.3.268.0
[INFO] [stderr]     Checking gpu-alloc-types v0.3.0
[INFO] [stderr]     Checking gpu-descriptor-types v0.2.0
[INFO] [stderr]     Checking wgpu-types v0.20.0
[INFO] [stderr]     Checking ron v0.8.1
[INFO] [stderr]     Checking xkbcommon-dl v0.4.2
[INFO] [stderr]     Checking gpu-descriptor v0.3.2
[INFO] [stderr]     Checking alsa v0.9.1
[INFO] [stderr]     Checking gpu-alloc v0.6.0
[INFO] [stderr]     Checking gilrs-core v0.5.15
[INFO] [stderr]     Checking bevy_utils v0.14.2
[INFO] [stderr]     Checking gltf-json v1.4.1
[INFO] [stderr]     Checking naga v0.20.0
[INFO] [stderr]     Checking rodio v0.18.1
[INFO] [stderr]     Checking polling v3.10.0
[INFO] [stderr]     Checking bevy_reflect v0.14.2
[INFO] [stderr]     Checking encase v0.8.0
[INFO] [stderr]     Checking hexasphere v12.0.0
[INFO] [stderr]     Checking bevy_mikktspace v0.14.2
[INFO] [stderr]     Checking x11rb v0.13.1
[INFO] [stderr]     Checking calloop v0.13.0
[INFO] [stderr]     Checking gltf v1.4.1
[INFO] [stderr]     Checking bevy_ecs v0.14.2
[INFO] [stderr]     Checking bevy_math v0.14.2
[INFO] [stderr]     Checking accesskit_winit v0.20.4
[INFO] [stderr]     Checking naga_oil v0.14.0
[INFO] [stderr]     Checking bevy_color v0.14.3
[INFO] [stderr]     Checking bevy_app v0.14.2
[INFO] [stderr]     Checking bevy_core v0.14.2
[INFO] [stderr]     Checking bevy_a11y v0.14.2
[INFO] [stderr]     Checking bevy_time v0.14.2
[INFO] [stderr]     Checking bevy_asset v0.14.2
[INFO] [stderr]     Checking bevy_log v0.14.2
[INFO] [stderr]     Checking bevy_input v0.14.2
[INFO] [stderr]     Checking bevy_hierarchy v0.14.2
[INFO] [stderr]     Checking bevy_window v0.14.2
[INFO] [stderr]     Checking bevy_transform v0.14.2
[INFO] [stderr]     Checking bevy_state v0.14.2
[INFO] [stderr]     Checking bevy_diagnostic v0.14.2
[INFO] [stderr]     Checking bevy_gilrs v0.14.2
[INFO] [stderr]     Checking bevy_winit v0.14.2
[INFO] [stderr]     Checking bevy_render v0.14.2
[INFO] [stderr]     Checking bevy_audio v0.14.2
[INFO] [stderr]     Checking bevy_core_pipeline v0.14.2
[INFO] [stderr]     Checking bevy_scene v0.14.2
[INFO] [stderr]     Checking bevy_animation v0.14.2
[INFO] [stderr]     Checking bevy_sprite v0.14.2
[INFO] [stderr]     Checking bevy_pbr v0.14.2
[INFO] [stderr]     Checking bevy_text v0.14.2
[INFO] [stderr]     Checking bevy_ui v0.14.2
[INFO] [stderr]     Checking bevy_gizmos v0.14.2
[INFO] [stderr]     Checking bevy_gltf v0.14.2
[INFO] [stderr]     Checking bevy_internal v0.14.2
[INFO] [stderr]     Checking bevy_dylib v0.14.2
[INFO] [stderr]     Checking bevy v0.14.2
[INFO] [stderr]     Checking viticulture v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/systems/animations.rs:236:5
[INFO] [stdout]     |
[INFO] [stdout] 234 |       return;
[INFO] [stdout]     |       ------ any code following this expression is unreachable
[INFO] [stdout] 235 |       
[INFO] [stdout] 236 | /     if !settings.enable_transitions {
[INFO] [stdout] 237 | |         return;
[INFO] [stdout] 238 | |     }
[INFO] [stdout]     | |_____^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/systems/animations.rs:236:5
[INFO] [stdout]     |
[INFO] [stdout] 234 |       return;
[INFO] [stdout]     |       ------ any code following this expression is unreachable
[INFO] [stdout] 235 |       
[INFO] [stdout] 236 | /     if !settings.enable_transitions {
[INFO] [stdout] 237 | |         return;
[INFO] [stdout] 238 | |     }
[INFO] [stdout]     | |_____^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `space_entity`
[INFO] [stdout]   --> src/systems/input.rs:41:18
[INFO] [stdout]    |
[INFO] [stdout] 41 |             for (space_entity, mut action_space, clickable) in action_spaces.iter_mut() {
[INFO] [stdout]    |                  ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_space_entity`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center`
[INFO] [stdout]    --> src/systems/game_logic.rs:172:29
[INFO] [stdout]     |
[INFO] [stdout] 172 | fn create_particles_by_type(center: Vec2, count: usize, color: Color) -> Vec<Particle> {
[INFO] [stdout]     |                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_center`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/systems/game_logic.rs:767:5
[INFO] [stdout]     |
[INFO] [stdout] 767 |     mut players: Query<&mut Player>,
[INFO] [stdout]     |     ----^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/systems/game_logic.rs:770:5
[INFO] [stdout]     |
[INFO] [stdout] 770 |     mut commands: Commands,
[INFO] [stdout]     |     ----^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `players`
[INFO] [stdout]    --> src/systems/game_logic.rs:767:5
[INFO] [stdout]     |
[INFO] [stdout] 767 |     mut players: Query<&mut Player>,
[INFO] [stdout]     |     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_players`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commands`
[INFO] [stdout]    --> src/systems/game_logic.rs:770:5
[INFO] [stdout]     |
[INFO] [stdout] 770 |     mut commands: Commands,
[INFO] [stdout]     |     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time`
[INFO] [stdout]    --> src/systems/game_logic.rs:912:29
[INFO] [stdout]     |
[INFO] [stdout] 912 |     if let Some((player_id, time)) = turn_order.wake_up_order.iter().find(|(_, t)| *t == 7) {
[INFO] [stdout]     |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/systems/game_logic.rs:956:5
[INFO] [stdout]     |
[INFO] [stdout] 956 |     mut visitor_deck: Option<ResMut<VisitorDeck>>,
[INFO] [stdout]     |     ----^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commands`
[INFO] [stdout]     --> src/systems/game_logic.rs:1040:5
[INFO] [stdout]      |
[INFO] [stdout] 1040 |     commands: &mut Commands,
[INFO] [stdout]      |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/systems/game_logic.rs:1087:5
[INFO] [stdout]      |
[INFO] [stdout] 1087 |     mut commands: Commands,
[INFO] [stdout]      |     ----^^^^^^^^
[INFO] [stdout]      |     |
[INFO] [stdout]      |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commands`
[INFO] [stdout]     --> src/systems/game_logic.rs:1087:5
[INFO] [stdout]      |
[INFO] [stdout] 1087 |     mut commands: Commands,
[INFO] [stdout]      |     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/systems/game_logic.rs:1126:21
[INFO] [stdout]      |
[INFO] [stdout] 1126 |         if let Some(mut grande_worker) = workers.iter_mut()
[INFO] [stdout]      |                     ----^^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `grande_worker`
[INFO] [stdout]     --> src/systems/game_logic.rs:1126:21
[INFO] [stdout]      |
[INFO] [stdout] 1126 |         if let Some(mut grande_worker) = workers.iter_mut()
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_grande_worker`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `players`
[INFO] [stdout]     --> src/systems/game_logic.rs:1225:5
[INFO] [stdout]      |
[INFO] [stdout] 1225 |     players: &Query<&Player>,
[INFO] [stdout]      |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_players`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commands`
[INFO] [stdout]    --> src/systems/animations.rs:229:5
[INFO] [stdout]     |
[INFO] [stdout] 229 |     commands: &mut Commands,
[INFO] [stdout]     |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_season`
[INFO] [stdout]    --> src/systems/animations.rs:230:5
[INFO] [stdout]     |
[INFO] [stdout] 230 |     from_season: GameState,
[INFO] [stdout]     |     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_season`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `to_season`
[INFO] [stdout]    --> src/systems/animations.rs:231:5
[INFO] [stdout]     |
[INFO] [stdout] 231 |     to_season: GameState,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_to_season`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `settings`
[INFO] [stdout]    --> src/systems/animations.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 |     settings: &AnimationSettings,
[INFO] [stdout]     |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_settings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `to_season_clone`
[INFO] [stdout]    --> src/systems/animations.rs:240:9
[INFO] [stdout]     |
[INFO] [stdout] 240 |     let to_season_clone = to_season.clone();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_to_season_clone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_season_clone`
[INFO] [stdout]    --> src/systems/animations.rs:241:9
[INFO] [stdout]     |
[INFO] [stdout] 241 |     let from_season_clone = from_season.clone();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_season_clone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center`
[INFO] [stdout]    --> src/systems/animations.rs:456:29
[INFO] [stdout]     |
[INFO] [stdout] 456 | fn create_harvest_particles(center: Vec2, count: usize) -> Vec<Particle> {
[INFO] [stdout]     |                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_center`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center`
[INFO] [stdout]    --> src/systems/animations.rs:481:29
[INFO] [stdout]     |
[INFO] [stdout] 481 | fn create_pouring_particles(center: Vec2, count: usize) -> Vec<Particle> {
[INFO] [stdout]     |                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_center`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center`
[INFO] [stdout]    --> src/systems/animations.rs:504:26
[INFO] [stdout]     |
[INFO] [stdout] 504 | fn create_lira_particles(center: Vec2, count: usize) -> Vec<Particle> {
[INFO] [stdout]     |                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_center`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ai_player`
[INFO] [stdout]   --> src/systems/ai.rs:68:13
[INFO] [stdout]    |
[INFO] [stdout] 68 |         let ai_player = ai_players.iter_mut().find(|ai| ai.player_id == *current_player_id);
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ai_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_state`
[INFO] [stdout]    --> src/systems/ai.rs:187:5
[INFO] [stdout]     |
[INFO] [stdout] 187 |     current_state: &GameState,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]   --> src/systems/validation.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let player = players.iter().find(|p| p.id == player_id).unwrap();
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `players`
[INFO] [stdout]   --> src/systems/endgame.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 80 |     players: &Query<&Player>,
[INFO] [stdout]    |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_players`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `turn_order`
[INFO] [stdout]   --> src/systems/performance.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     turn_order: Res<TurnOrder>,
[INFO] [stdout]    |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_turn_order`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `camera`
[INFO] [stdout]    --> src/systems/performance.rs:120:10
[INFO] [stdout]     |
[INFO] [stdout] 120 |     let (camera, camera_transform) = camera_q.single();
[INFO] [stdout]     |          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_camera`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `turn_order`
[INFO] [stdout]  --> src/systems/bugfixes.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     turn_order: Res<TurnOrder>,
[INFO] [stdout]   |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_turn_order`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vineyards`
[INFO] [stdout]    --> src/systems/bugfixes.rs:149:5
[INFO] [stdout]     |
[INFO] [stdout] 149 |     vineyards: Query<&Vineyard>,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vineyards`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hands`
[INFO] [stdout]    --> src/systems/bugfixes.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     hands: Query<&Hand>,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_hands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_state`
[INFO] [stdout]    --> src/systems/bugfixes.rs:192:5
[INFO] [stdout]     |
[INFO] [stdout] 192 |     current_state: Res<State<GameState>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]   --> src/systems/balance.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     config: Res<GameConfig>, // Add config to track game state
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commands`
[INFO] [stdout]    --> src/systems/balance.rs:128:5
[INFO] [stdout]     |
[INFO] [stdout] 128 |     commands: &mut Commands,
[INFO] [stdout]     |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `card_decks`
[INFO] [stdout]    --> src/systems/balance.rs:251:5
[INFO] [stdout]     |
[INFO] [stdout] 251 |     card_decks: &mut ResMut<CardDecks>,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_card_decks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/systems/balance.rs:385:5
[INFO] [stdout]     |
[INFO] [stdout] 385 |     mut turn_order: ResMut<TurnOrder>,
[INFO] [stdout]     |     ----^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `turn_order`
[INFO] [stdout]    --> src/systems/balance.rs:453:5
[INFO] [stdout]     |
[INFO] [stdout] 453 |     turn_order: &TurnOrder,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_turn_order`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/systems/balance.rs:509:5
[INFO] [stdout]     |
[INFO] [stdout] 509 |     mut test_config: ResMut<AutoTestConfig>,
[INFO] [stdout]     |     ----^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `turn_order`
[INFO] [stdout]    --> src/systems/balance.rs:503:5
[INFO] [stdout]     |
[INFO] [stdout] 503 |     turn_order: Res<TurnOrder>,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_turn_order`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ai_count`
[INFO] [stdout]    --> src/systems/balance.rs:522:9
[INFO] [stdout]     |
[INFO] [stdout] 522 |     let ai_count = ai_players.iter().count();
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ai_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `card_decks`
[INFO] [stdout]    --> src/systems/balance.rs:815:5
[INFO] [stdout]     |
[INFO] [stdout] 815 |     card_decks: ResMut<CardDecks>,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_card_decks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `space_entity`
[INFO] [stdout]   --> src/systems/input.rs:41:18
[INFO] [stdout]    |
[INFO] [stdout] 41 |             for (space_entity, mut action_space, clickable) in action_spaces.iter_mut() {
[INFO] [stdout]    |                  ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_space_entity`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center`
[INFO] [stdout]    --> src/systems/game_logic.rs:172:29
[INFO] [stdout]     |
[INFO] [stdout] 172 | fn create_particles_by_type(center: Vec2, count: usize, color: Color) -> Vec<Particle> {
[INFO] [stdout]     |                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_center`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/systems/game_logic.rs:767:5
[INFO] [stdout]     |
[INFO] [stdout] 767 |     mut players: Query<&mut Player>,
[INFO] [stdout]     |     ----^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/systems/game_logic.rs:770:5
[INFO] [stdout]     |
[INFO] [stdout] 770 |     mut commands: Commands,
[INFO] [stdout]     |     ----^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `players`
[INFO] [stdout]    --> src/systems/game_logic.rs:767:5
[INFO] [stdout]     |
[INFO] [stdout] 767 |     mut players: Query<&mut Player>,
[INFO] [stdout]     |     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_players`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commands`
[INFO] [stdout]    --> src/systems/game_logic.rs:770:5
[INFO] [stdout]     |
[INFO] [stdout] 770 |     mut commands: Commands,
[INFO] [stdout]     |     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `time`
[INFO] [stdout]    --> src/systems/game_logic.rs:912:29
[INFO] [stdout]     |
[INFO] [stdout] 912 |     if let Some((player_id, time)) = turn_order.wake_up_order.iter().find(|(_, t)| *t == 7) {
[INFO] [stdout]     |                             ^^^^ help: if this is intentional, prefix it with an underscore: `_time`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/systems/game_logic.rs:956:5
[INFO] [stdout]     |
[INFO] [stdout] 956 |     mut visitor_deck: Option<ResMut<VisitorDeck>>,
[INFO] [stdout]     |     ----^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commands`
[INFO] [stdout]     --> src/systems/game_logic.rs:1040:5
[INFO] [stdout]      |
[INFO] [stdout] 1040 |     commands: &mut Commands,
[INFO] [stdout]      |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/systems/game_logic.rs:1087:5
[INFO] [stdout]      |
[INFO] [stdout] 1087 |     mut commands: Commands,
[INFO] [stdout]      |     ----^^^^^^^^
[INFO] [stdout]      |     |
[INFO] [stdout]      |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commands`
[INFO] [stdout]     --> src/systems/game_logic.rs:1087:5
[INFO] [stdout]      |
[INFO] [stdout] 1087 |     mut commands: Commands,
[INFO] [stdout]      |     ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]     --> src/systems/game_logic.rs:1126:21
[INFO] [stdout]      |
[INFO] [stdout] 1126 |         if let Some(mut grande_worker) = workers.iter_mut()
[INFO] [stdout]      |                     ----^^^^^^^^^^^^^
[INFO] [stdout]      |                     |
[INFO] [stdout]      |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `grande_worker`
[INFO] [stdout]     --> src/systems/game_logic.rs:1126:21
[INFO] [stdout]      |
[INFO] [stdout] 1126 |         if let Some(mut grande_worker) = workers.iter_mut()
[INFO] [stdout]      |                     ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_grande_worker`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `players`
[INFO] [stdout]     --> src/systems/game_logic.rs:1225:5
[INFO] [stdout]      |
[INFO] [stdout] 1225 |     players: &Query<&Player>,
[INFO] [stdout]      |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_players`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `players`
[INFO] [stdout]    --> src/systems/save.rs:168:5
[INFO] [stdout]     |
[INFO] [stdout] 168 |     players: &Query<&Player>,
[INFO] [stdout]     |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_players`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vineyards`
[INFO] [stdout]    --> src/systems/save.rs:169:5
[INFO] [stdout]     |
[INFO] [stdout] 169 |     vineyards: &Query<&Vineyard>,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vineyards`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hands`
[INFO] [stdout]    --> src/systems/save.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 |     hands: &Query<&Hand>,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_hands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commands`
[INFO] [stdout]    --> src/systems/animations.rs:229:5
[INFO] [stdout]     |
[INFO] [stdout] 229 |     commands: &mut Commands,
[INFO] [stdout]     |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_season`
[INFO] [stdout]    --> src/systems/animations.rs:230:5
[INFO] [stdout]     |
[INFO] [stdout] 230 |     from_season: GameState,
[INFO] [stdout]     |     ^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_season`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `to_season`
[INFO] [stdout]    --> src/systems/animations.rs:231:5
[INFO] [stdout]     |
[INFO] [stdout] 231 |     to_season: GameState,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_to_season`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `settings`
[INFO] [stdout]    --> src/systems/animations.rs:232:5
[INFO] [stdout]     |
[INFO] [stdout] 232 |     settings: &AnimationSettings,
[INFO] [stdout]     |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_settings`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `to_season_clone`
[INFO] [stdout]    --> src/systems/animations.rs:240:9
[INFO] [stdout]     |
[INFO] [stdout] 240 |     let to_season_clone = to_season.clone();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_to_season_clone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `from_season_clone`
[INFO] [stdout]    --> src/systems/animations.rs:241:9
[INFO] [stdout]     |
[INFO] [stdout] 241 |     let from_season_clone = from_season.clone();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_from_season_clone`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center`
[INFO] [stdout]    --> src/systems/animations.rs:456:29
[INFO] [stdout]     |
[INFO] [stdout] 456 | fn create_harvest_particles(center: Vec2, count: usize) -> Vec<Particle> {
[INFO] [stdout]     |                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_center`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center`
[INFO] [stdout]    --> src/systems/animations.rs:481:29
[INFO] [stdout]     |
[INFO] [stdout] 481 | fn create_pouring_particles(center: Vec2, count: usize) -> Vec<Particle> {
[INFO] [stdout]     |                             ^^^^^^ help: if this is intentional, prefix it with an underscore: `_center`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `center`
[INFO] [stdout]    --> src/systems/animations.rs:504:26
[INFO] [stdout]     |
[INFO] [stdout] 504 | fn create_lira_particles(center: Vec2, count: usize) -> Vec<Particle> {
[INFO] [stdout]     |                          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_center`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ai_player`
[INFO] [stdout]   --> src/systems/ai.rs:68:13
[INFO] [stdout]    |
[INFO] [stdout] 68 |         let ai_player = ai_players.iter_mut().find(|ai| ai.player_id == *current_player_id);
[INFO] [stdout]    |             ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ai_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_state`
[INFO] [stdout]    --> src/systems/ai.rs:187:5
[INFO] [stdout]     |
[INFO] [stdout] 187 |     current_state: &GameState,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]   --> src/systems/validation.rs:82:9
[INFO] [stdout]    |
[INFO] [stdout] 82 |     let player = players.iter().find(|p| p.id == player_id).unwrap();
[INFO] [stdout]    |         ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `difficulty_text`
[INFO] [stdout]    --> src/systems/settings.rs:309:9
[INFO] [stdout]     |
[INFO] [stdout] 309 |     let difficulty_text = match difficulty {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_difficulty_text`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `players`
[INFO] [stdout]   --> src/systems/endgame.rs:80:5
[INFO] [stdout]    |
[INFO] [stdout] 80 |     players: &Query<&Player>,
[INFO] [stdout]    |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_players`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `turn_order`
[INFO] [stdout]   --> src/systems/performance.rs:42:5
[INFO] [stdout]    |
[INFO] [stdout] 42 |     turn_order: Res<TurnOrder>,
[INFO] [stdout]    |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_turn_order`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `camera`
[INFO] [stdout]    --> src/systems/performance.rs:120:10
[INFO] [stdout]     |
[INFO] [stdout] 120 |     let (camera, camera_transform) = camera_q.single();
[INFO] [stdout]     |          ^^^^^^ help: if this is intentional, prefix it with an underscore: `_camera`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `turn_order`
[INFO] [stdout]  --> src/systems/bugfixes.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 |     turn_order: Res<TurnOrder>,
[INFO] [stdout]   |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_turn_order`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h`
[INFO] [stdout]    --> src/systems/expansions.rs:290:25
[INFO] [stdout]     |
[INFO] [stdout] 290 |             if let Some(ref mut h) = hand {
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_h`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vineyards`
[INFO] [stdout]    --> src/systems/expansions.rs:414:5
[INFO] [stdout]     |
[INFO] [stdout] 414 |     vineyards: Query<&mut Vineyard>,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vineyards`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]    --> src/systems/expansions.rs:422:21
[INFO] [stdout]     |
[INFO] [stdout] 422 |         if let Some(player) = players.iter_mut().find(|p| p.id == advanced.owner) {
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vineyards`
[INFO] [stdout]    --> src/systems/bugfixes.rs:149:5
[INFO] [stdout]     |
[INFO] [stdout] 149 |     vineyards: Query<&Vineyard>,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vineyards`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hands`
[INFO] [stdout]    --> src/systems/bugfixes.rs:150:5
[INFO] [stdout]     |
[INFO] [stdout] 150 |     hands: Query<&Hand>,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_hands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `current_state`
[INFO] [stdout]    --> src/systems/bugfixes.rs:192:5
[INFO] [stdout]     |
[INFO] [stdout] 192 |     current_state: Res<State<GameState>>,
[INFO] [stdout]     |     ^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_current_state`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commands`
[INFO] [stdout]   --> src/systems/tooltips.rs:43:26
[INFO] [stdout]    |
[INFO] [stdout] 43 | fn setup_action_tooltips(commands: &mut Commands) {
[INFO] [stdout]    |                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]   --> src/systems/balance.rs:53:5
[INFO] [stdout]    |
[INFO] [stdout] 53 |     config: Res<GameConfig>, // Add config to track game state
[INFO] [stdout]    |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commands`
[INFO] [stdout]    --> src/systems/balance.rs:128:5
[INFO] [stdout]     |
[INFO] [stdout] 128 |     commands: &mut Commands,
[INFO] [stdout]     |     ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commands`
[INFO] [stdout]    --> src/systems/tooltips.rs:382:30
[INFO] [stdout]     |
[INFO] [stdout] 382 | pub fn setup_status_tooltips(commands: &mut Commands) {
[INFO] [stdout]     |                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/systems/advanced.rs:364:5
[INFO] [stdout]     |
[INFO] [stdout] 364 |     mut expansion_content: ResMut<ExpansionContent>,
[INFO] [stdout]     |     ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `card_decks`
[INFO] [stdout]    --> src/systems/balance.rs:251:5
[INFO] [stdout]     |
[INFO] [stdout] 251 |     card_decks: &mut ResMut<CardDecks>,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_card_decks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/systems/balance.rs:385:5
[INFO] [stdout]     |
[INFO] [stdout] 385 |     mut turn_order: ResMut<TurnOrder>,
[INFO] [stdout]     |     ----^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `turn_order`
[INFO] [stdout]    --> src/systems/balance.rs:453:5
[INFO] [stdout]     |
[INFO] [stdout] 453 |     turn_order: &TurnOrder,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_turn_order`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/systems/balance.rs:509:5
[INFO] [stdout]     |
[INFO] [stdout] 509 |     mut test_config: ResMut<AutoTestConfig>,
[INFO] [stdout]     |     ----^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `turn_order`
[INFO] [stdout]    --> src/systems/balance.rs:503:5
[INFO] [stdout]     |
[INFO] [stdout] 503 |     turn_order: Res<TurnOrder>,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_turn_order`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ai_count`
[INFO] [stdout]    --> src/systems/balance.rs:522:9
[INFO] [stdout]     |
[INFO] [stdout] 522 |     let ai_count = ai_players.iter().count();
[INFO] [stdout]     |         ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_ai_count`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `card_decks`
[INFO] [stdout]    --> src/systems/balance.rs:815:5
[INFO] [stdout]     |
[INFO] [stdout] 815 |     card_decks: ResMut<CardDecks>,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_card_decks`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vineyards`
[INFO] [stdout]    --> src/systems/achievements.rs:261:5
[INFO] [stdout]     |
[INFO] [stdout] 261 |     vineyards: Query<&Vineyard>,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vineyards`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `workers`
[INFO] [stdout]    --> src/systems/achievements.rs:262:5
[INFO] [stdout]     |
[INFO] [stdout] 262 |     workers: Query<&Worker>,
[INFO] [stdout]     |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_workers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/systems/achievements.rs:265:5
[INFO] [stdout]     |
[INFO] [stdout] 265 |     config: Res<GameConfig>,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `onboarding`
[INFO] [stdout]    --> src/systems/onboarding.rs:128:49
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn show_welcome_screen(commands: &mut Commands, onboarding: &OnboardingState) {
[INFO] [stdout]     |                                                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_onboarding`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `workers`
[INFO] [stdout]    --> src/systems/onboarding.rs:252:5
[INFO] [stdout]     |
[INFO] [stdout] 252 |     workers: Query<&Worker>,
[INFO] [stdout]     |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_workers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `players`
[INFO] [stdout]    --> src/systems/onboarding.rs:398:5
[INFO] [stdout]     |
[INFO] [stdout] 398 |     players: Query<&Player>,
[INFO] [stdout]     |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_players`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_stats`
[INFO] [stdout]    --> src/systems/onboarding.rs:399:5
[INFO] [stdout]     |
[INFO] [stdout] 399 |     game_stats: Res<crate::systems::statistics::GameStatistics>,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_stats`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `players`
[INFO] [stdout]    --> src/systems/save.rs:168:5
[INFO] [stdout]     |
[INFO] [stdout] 168 |     players: &Query<&Player>,
[INFO] [stdout]     |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_players`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vineyards`
[INFO] [stdout]    --> src/systems/save.rs:169:5
[INFO] [stdout]     |
[INFO] [stdout] 169 |     vineyards: &Query<&Vineyard>,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vineyards`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `hands`
[INFO] [stdout]    --> src/systems/save.rs:170:5
[INFO] [stdout]     |
[INFO] [stdout] 170 |     hands: &Query<&Hand>,
[INFO] [stdout]     |     ^^^^^ help: if this is intentional, prefix it with an underscore: `_hands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `difficulty_text`
[INFO] [stdout]    --> src/systems/settings.rs:309:9
[INFO] [stdout]     |
[INFO] [stdout] 309 |     let difficulty_text = match difficulty {
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_difficulty_text`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `h`
[INFO] [stdout]    --> src/systems/expansions.rs:290:25
[INFO] [stdout]     |
[INFO] [stdout] 290 |             if let Some(ref mut h) = hand {
[INFO] [stdout]     |                         ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_h`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vineyards`
[INFO] [stdout]    --> src/systems/expansions.rs:414:5
[INFO] [stdout]     |
[INFO] [stdout] 414 |     vineyards: Query<&mut Vineyard>,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vineyards`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `player`
[INFO] [stdout]    --> src/systems/expansions.rs:422:21
[INFO] [stdout]     |
[INFO] [stdout] 422 |         if let Some(player) = players.iter_mut().find(|p| p.id == advanced.owner) {
[INFO] [stdout]     |                     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_player`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commands`
[INFO] [stdout]   --> src/systems/tooltips.rs:43:26
[INFO] [stdout]    |
[INFO] [stdout] 43 | fn setup_action_tooltips(commands: &mut Commands) {
[INFO] [stdout]    |                          ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `not_testing_mode_enabled` is never used
[INFO] [stdout]    --> src/main.rs:181:4
[INFO] [stdout]     |
[INFO] [stdout] 181 | fn not_testing_mode_enabled(test_config: Res<AutoTestConfig>) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ButtonText` is never constructed
[INFO] [stdout]   --> src/components.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ButtonText;
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `wake_up_bonuses` is never read
[INFO] [stdout]   --> src/components.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct TurnOrder {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub wake_up_bonuses: Vec<WakeUpBonus>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `PlayExtraWorker` is never constructed
[INFO] [stdout]   --> src/components.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum WakeUpBonus {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 47 |     PlayExtraWorker,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WakeUpBonus` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_wake_up_bonus` is never used
[INFO] [stdout]   --> src/components.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl TurnOrder {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn get_wake_up_bonus(&self, player_id: PlayerId) -> Option<WakeUpBonus> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WineType` is never used
[INFO] [stdout]    --> src/components.rs:166:10
[INFO] [stdout]     |
[INFO] [stdout] 166 | pub enum WineType {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `can_sell`, `sell_value`, `is_empty`, `has_vine`, `plant_vine`, and `can_plant_vine` are never used
[INFO] [stdout]    --> src/components.rs:198:12
[INFO] [stdout]     |
[INFO] [stdout] 173 | impl VineyardField {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn can_sell(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn sell_value(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub fn has_vine(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn plant_vine(&mut self, vine_type: VineType) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn can_plant_vine(&self, vine_card: &VineCard, current_total: u8, max_value: u8) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/components.rs:254:8
[INFO] [stdout]     |
[INFO] [stdout] 236 | impl Vineyard {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 254 |     fn get_field_total_value(&self, field_index: usize) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn get_field_harvest_values(&self, field_index: usize) -> (u8, u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn can_plant_vine(&self, field_index: usize, vine_card: &VineCard, structures: &[Structure]) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     pub fn plant_vine(&mut self, field_index: usize, vine_card: VineCard, structures: &[Structure]) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     pub fn can_make_wine(&self, wine_type: WineType, value: u8, structures: &[Structure]) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 402 |     pub fn fulfill_order(&mut self, order: &WineOrderCard) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 456 |     pub fn sell_field(&mut self, field_index: usize) -> Option<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 472 |     pub fn buy_back_field(&mut self, field_index: usize) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 489 |     pub fn available_fields(&self) -> Vec<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `special_ability` are never read
[INFO] [stdout]    --> src/components.rs:507:9
[INFO] [stdout]     |
[INFO] [stdout] 506 | pub struct VineCard {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] 507 |     pub id: u32,
[INFO] [stdout]     |         ^^
[INFO] [stdout] ...
[INFO] [stdout] 511 |     pub special_ability: Option<VineAbility>, // New: special vine abilities
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `VineCard` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `order_type` are never read
[INFO] [stdout]    --> src/components.rs:584:9
[INFO] [stdout]     |
[INFO] [stdout] 583 | pub struct WineOrderCard {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 584 |     pub id: u32,
[INFO] [stdout]     |         ^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub order_type: OrderType, // New: different order types
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `WineOrderCard` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_with_residual` is never used
[INFO] [stdout]    --> src/components.rs:654:12
[INFO] [stdout]     |
[INFO] [stdout] 626 | impl WineOrderCard {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 654 |     pub fn new_with_residual(id: u32, red: u8, white: u8, vp: u8, payout: u8, residual: u8) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_available_for_player_count`, `place_grande_on_occupied`, and `has_grande_worker` are never used
[INFO] [stdout]    --> src/components.rs:766:12
[INFO] [stdout]     |
[INFO] [stdout] 732 | impl ActionSpaceSlot {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 766 |     pub fn is_available_for_player_count(&self, player_count: u8, position: usize) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 775 |     pub fn place_grande_on_occupied(&mut self, player_id: PlayerId) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 787 |     pub fn has_grande_worker(&self, player_id: PlayerId) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `WineExpertise` is never constructed
[INFO] [stdout]    --> src/components.rs:850:5
[INFO] [stdout]     |
[INFO] [stdout] 846 | pub enum PapaAbility {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 850 |     WineExpertise,       // Make blush wine more efficiently
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PapaAbility` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_visitor_card` and `total_cards` are never used
[INFO] [stdout]     --> src/components.rs:1044:12
[INFO] [stdout]      |
[INFO] [stdout] 1035 | impl Hand {
[INFO] [stdout]      | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1044 |     pub fn add_visitor_card(&mut self, visitor: VisitorCard) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1050 |     pub fn total_cards(&self) -> usize {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `player_id` is never read
[INFO] [stdout]     --> src/components.rs:1061:9
[INFO] [stdout]      |
[INFO] [stdout] 1060 | pub struct PlayerDashboard {
[INFO] [stdout]      |            --------------- field in this struct
[INFO] [stdout] 1061 |     pub player_id: PlayerId,
[INFO] [stdout]      |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `player_id` is never read
[INFO] [stdout]     --> src/components.rs:1074:9
[INFO] [stdout]      |
[INFO] [stdout] 1073 | pub struct WorkerSprite {
[INFO] [stdout]      |            ------------ field in this struct
[INFO] [stdout] 1074 |     pub player_id: PlayerId,
[INFO] [stdout]      |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `player_id` and `field_index` are never read
[INFO] [stdout]     --> src/components.rs:1079:9
[INFO] [stdout]      |
[INFO] [stdout] 1078 | pub struct VineyardSprite {
[INFO] [stdout]      |            -------------- fields in this struct
[INFO] [stdout] 1079 |     pub player_id: PlayerId,
[INFO] [stdout]      |         ^^^^^^^^^
[INFO] [stdout] 1080 |     pub field_index: usize,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `card_type` is never read
[INFO] [stdout]     --> src/components.rs:1085:9
[INFO] [stdout]      |
[INFO] [stdout] 1084 | pub struct CardSprite {
[INFO] [stdout]      |            ---------- field in this struct
[INFO] [stdout] 1085 |     pub card_type: CardType,
[INFO] [stdout]      |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `worker_texture`, `vine_card_texture`, `wine_order_card_texture`, and `field_texture` are never read
[INFO] [stdout]     --> src/components.rs:1099:9
[INFO] [stdout]      |
[INFO] [stdout] 1098 | pub struct GameAssets {
[INFO] [stdout]      |            ---------- fields in this struct
[INFO] [stdout] 1099 |     pub worker_texture: Handle<Image>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^
[INFO] [stdout] 1100 |     pub vine_card_texture: Handle<Image>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 1101 |     pub wine_order_card_texture: Handle<Image>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 1102 |     pub field_texture: Handle<Image>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `ai_enabled`, `ai_difficulty`, `audio_enabled`, `sfx_volume`, and `music_volume` are never read
[INFO] [stdout]     --> src/components.rs:1107:9
[INFO] [stdout]      |
[INFO] [stdout] 1106 | pub struct GameSettings {
[INFO] [stdout]      |            ------------ fields in this struct
[INFO] [stdout] 1107 |     pub ai_enabled: bool,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1108 |     pub ai_difficulty: u8,
[INFO] [stdout]      |         ^^^^^^^^^^^^^
[INFO] [stdout] 1109 |     pub audio_enabled: bool,
[INFO] [stdout]      |         ^^^^^^^^^^^^^
[INFO] [stdout] 1110 |     pub sfx_volume: f32,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1111 |     pub music_volume: f32,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `MediumCellar`, `LargeCellar`, and `Cottage` are never constructed
[INFO] [stdout]     --> src/components.rs:1144:5
[INFO] [stdout]      |
[INFO] [stdout] 1140 | pub enum StructureType {
[INFO] [stdout]      |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 1144 |     MediumCellar, // $4 - Store 4-6 value wines, make blush
[INFO] [stdout]      |     ^^^^^^^^^^^^
[INFO] [stdout] 1145 |     LargeCellar,  // $6 - Store 7-9 value wines, make sparkling  
[INFO] [stdout]      |     ^^^^^^^^^^^
[INFO] [stdout] 1146 |     Windmill,     // $5 - +1 VP at end for every 7 lira
[INFO] [stdout] 1147 |     Cottage,      // $4 - Draw extra visitor in fall
[INFO] [stdout]      |     ^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `StructureType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `annual_income` is never used
[INFO] [stdout]     --> src/components.rs:1169:12
[INFO] [stdout]      |
[INFO] [stdout] 1160 | impl ResidualPaymentTracker {
[INFO] [stdout]      | --------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1169 |     pub fn annual_income(&self) -> u8 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GREY` is never used
[INFO] [stdout]  --> src/systems/input.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const GREY: Srgba = Srgba::new(0.6, 0.6, 0.6, 1.0);
[INFO] [stdout]   |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_OVER_TEXT` is never used
[INFO] [stdout]   --> src/systems/game_logic.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const GAME_OVER_TEXT: &str = "GAME OVER!\n{} WINS with {} Victory Points!\n\nPress SPACE to play again";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_residual_payments_system` is never used
[INFO] [stdout]    --> src/systems/game_logic.rs:746:8
[INFO] [stdout]     |
[INFO] [stdout] 746 | pub fn apply_residual_payments_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `enhanced_make_wine_action` is never used
[INFO] [stdout]    --> src/systems/game_logic.rs:804:8
[INFO] [stdout]     |
[INFO] [stdout] 804 | pub fn enhanced_make_wine_action(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `owner` and `expires_end_of_year` are never read
[INFO] [stdout]    --> src/systems/game_logic.rs:897:9
[INFO] [stdout]     |
[INFO] [stdout] 896 | pub struct TemporaryWorker {
[INFO] [stdout]     |            --------------- fields in this struct
[INFO] [stdout] 897 |     pub owner: PlayerId,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 898 |     pub expires_end_of_year: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fall_draw_visitors_system` is never used
[INFO] [stdout]    --> src/systems/game_logic.rs:952:8
[INFO] [stdout]     |
[INFO] [stdout] 952 | pub fn fall_draw_visitors_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fulfill_order_with_residual` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1008:8
[INFO] [stdout]      |
[INFO] [stdout] 1008 | pub fn fulfill_order_with_residual(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `plant_vine_with_requirements_system` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1035:8
[INFO] [stdout]      |
[INFO] [stdout] 1035 | pub fn plant_vine_with_requirements_system(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `field_transaction_system` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1083:8
[INFO] [stdout]      |
[INFO] [stdout] 1083 | pub fn field_transaction_system(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `enhanced_worker_placement_system` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1118:8
[INFO] [stdout]      |
[INFO] [stdout] 1118 | pub fn enhanced_worker_placement_system(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_enhanced_vine_deck` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1151:8
[INFO] [stdout]      |
[INFO] [stdout] 1151 | pub fn create_enhanced_vine_deck() -> Vec<VineCard> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_wine_orders_with_residual` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1202:8
[INFO] [stdout]      |
[INFO] [stdout] 1202 | pub fn create_wine_orders_with_residual() -> Vec<WineOrderCard> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_actions_with_requirements` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1222:8
[INFO] [stdout]      |
[INFO] [stdout] 1222 | pub fn validate_actions_with_requirements(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ValidationResult` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1269:10
[INFO] [stdout]      |
[INFO] [stdout] 1269 | pub enum ValidationResult {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_valid` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1275:12
[INFO] [stdout]      |
[INFO] [stdout] 1274 | impl ValidationResult {
[INFO] [stdout]      | --------------------- method in this implementation
[INFO] [stdout] 1275 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GREY` is never used
[INFO] [stdout]  --> src/systems/sprites.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const GREY: Srgba = Srgba::new(0.6, 0.6, 0.6, 1.0);
[INFO] [stdout]   |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `start_pos`, `target_pos`, `timer`, and `animation_type` are never read
[INFO] [stdout]   --> src/systems/animations.rs:7:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct WorkerAnimation {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout]  7 |     pub start_pos: Vec2,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]  8 |     pub target_pos: Vec2,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]  9 |     pub timer: Timer,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 10 |     pub animation_type: WorkerAnimationType,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `commands`
[INFO] [stdout]    --> src/systems/tooltips.rs:382:30
[INFO] [stdout]     |
[INFO] [stdout] 382 | pub fn setup_status_tooltips(commands: &mut Commands) {
[INFO] [stdout]     |                              ^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_commands`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Return` and `Bounce` are never constructed
[INFO] [stdout]   --> src/systems/animations.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum WorkerAnimationType {
[INFO] [stdout]    |          ------------------- variants in this enum
[INFO] [stdout] 15 |     Placement,
[INFO] [stdout] 16 |     Return,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 17 |     Bounce,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WorkerAnimationType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `start_pos`, `target_pos`, `timer`, `animation_type`, and `card_id` are never read
[INFO] [stdout]   --> src/systems/animations.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct CardAnimation {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 22 |     pub start_pos: Vec2,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 23 |     pub target_pos: Vec2,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 24 |     pub timer: Timer,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 25 |     pub animation_type: CardAnimationType,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     pub card_id: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Play`, `Discard`, and `Shuffle` are never constructed
[INFO] [stdout]   --> src/systems/animations.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum CardAnimationType {
[INFO] [stdout]    |          ----------------- variants in this enum
[INFO] [stdout] 31 |     Draw,
[INFO] [stdout] 32 |     Play,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 33 |     Discard,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 34 |     Shuffle,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CardAnimationType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `timer`, `from_season`, `to_season`, and `overlay_alpha` are never read
[INFO] [stdout]   --> src/systems/animations.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct SeasonTransition {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 39 |     pub timer: Timer,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 40 |     pub from_season: GameState,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 41 |     pub to_season: GameState,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 42 |     pub overlay_alpha: f32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `particles`, `effect_type`, and `timer` are never read
[INFO] [stdout]   --> src/systems/animations.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct ParticleEffect {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] 47 |     pub particles: Vec<Particle>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 48 |     pub effect_type: ParticleType,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 49 |     pub timer: Timer,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParticleEffect` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `position`, `velocity`, `life`, `max_life`, `size`, and `color` are never read
[INFO] [stdout]   --> src/systems/animations.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct Particle {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 54 |     pub position: Vec2,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 55 |     pub velocity: Vec2,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 56 |     pub life: f32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 57 |     pub max_life: f32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 58 |     pub size: f32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 59 |     pub color: Color,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Particle` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `HarvestSparkles`, `WinePouring`, and `LiraGain` are never constructed
[INFO] [stdout]   --> src/systems/animations.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub enum ParticleType {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 64 |     HarvestSparkles,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 65 |     WinePouring,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 66 |     LiraGain,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParticleType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `worker_animation_system` is never used
[INFO] [stdout]    --> src/systems/animations.rs:113:8
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub fn worker_animation_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `animate_card_play` is never used
[INFO] [stdout]    --> src/systems/animations.rs:172:8
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub fn animate_card_play(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `card_animation_system` is never used
[INFO] [stdout]    --> src/systems/animations.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub fn card_animation_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `season_transition_system` is never used
[INFO] [stdout]    --> src/systems/animations.rs:287:8
[INFO] [stdout]     |
[INFO] [stdout] 287 | pub fn season_transition_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_harvest_particles` is never used
[INFO] [stdout]    --> src/systems/animations.rs:336:8
[INFO] [stdout]     |
[INFO] [stdout] 336 | pub fn spawn_harvest_particles(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_wine_pouring_effect` is never used
[INFO] [stdout]    --> src/systems/animations.rs:358:8
[INFO] [stdout]     |
[INFO] [stdout] 358 | pub fn spawn_wine_pouring_effect(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_lira_particles` is never used
[INFO] [stdout]    --> src/systems/animations.rs:379:8
[INFO] [stdout]     |
[INFO] [stdout] 379 | pub fn spawn_lira_particles(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `particle_system` is never used
[INFO] [stdout]    --> src/systems/animations.rs:401:8
[INFO] [stdout]     |
[INFO] [stdout] 401 | pub fn particle_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_harvest_particles` is never used
[INFO] [stdout]    --> src/systems/animations.rs:456:4
[INFO] [stdout]     |
[INFO] [stdout] 456 | fn create_harvest_particles(center: Vec2, count: usize) -> Vec<Particle> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_pouring_particles` is never used
[INFO] [stdout]    --> src/systems/animations.rs:481:4
[INFO] [stdout]     |
[INFO] [stdout] 481 | fn create_pouring_particles(center: Vec2, count: usize) -> Vec<Particle> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_lira_particles` is never used
[INFO] [stdout]    --> src/systems/animations.rs:504:4
[INFO] [stdout]     |
[INFO] [stdout] 504 | fn create_lira_particles(center: Vec2, count: usize) -> Vec<Particle> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ease_out_back` is never used
[INFO] [stdout]    --> src/systems/animations.rs:548:4
[INFO] [stdout]     |
[INFO] [stdout] 548 | fn ease_out_back(t: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ease_in_out_cubic` is never used
[INFO] [stdout]    --> src/systems/animations.rs:554:4
[INFO] [stdout]     |
[INFO] [stdout] 554 | fn ease_in_out_cubic(t: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ease_out_bounce` is never used
[INFO] [stdout]    --> src/systems/animations.rs:562:4
[INFO] [stdout]     |
[INFO] [stdout] 562 | fn ease_out_bounce(t: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ease_out_cubic` is never used
[INFO] [stdout]    --> src/systems/animations.rs:580:4
[INFO] [stdout]     |
[INFO] [stdout] 580 | fn ease_out_cubic(t: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ease_in_cubic` is never used
[INFO] [stdout]    --> src/systems/animations.rs:584:4
[INFO] [stdout]     |
[INFO] [stdout] 584 | fn ease_in_cubic(t: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ease_in_out_back` is never used
[INFO] [stdout]    --> src/systems/animations.rs:588:4
[INFO] [stdout]     |
[INFO] [stdout] 588 | fn ease_in_out_back(t: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ease_in_out_sine` is never used
[INFO] [stdout]    --> src/systems/animations.rs:599:4
[INFO] [stdout]     |
[INFO] [stdout] 599 | fn ease_in_out_sine(t: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Error` and `PhaseChange` are never constructed
[INFO] [stdout]   --> src/systems/audio.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub enum AudioType {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 91 |     Error,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 92 |     PhaseChange,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AudioType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `enforce_rules` and `prevent_illegal_moves` are never read
[INFO] [stdout]  --> src/systems/validation.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct GameValidation {
[INFO] [stdout]   |            -------------- fields in this struct
[INFO] [stdout] 6 |     pub enforce_rules: bool,
[INFO] [stdout]   |         ^^^^^^^^^^^^^
[INFO] [stdout] 7 |     pub prevent_illegal_moves: bool,
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_worker_placement` is never used
[INFO] [stdout]   --> src/systems/validation.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn validate_worker_placement(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_action_requirements` is never used
[INFO] [stdout]   --> src/systems/validation.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn validate_action_requirements(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ValidationResult` is never used
[INFO] [stdout]    --> src/systems/validation.rs:146:10
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub enum ValidationResult {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_valid` and `error_message` are never used
[INFO] [stdout]    --> src/systems/validation.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl ValidationResult {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] 152 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn error_message(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_end_game_scoring` is never used
[INFO] [stdout]    --> src/systems/validation.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn apply_end_game_scoring(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_tie_breaker` is never used
[INFO] [stdout]    --> src/systems/validation.rs:186:8
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub fn check_tie_breaker(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `balance_card_distribution` is never used
[INFO] [stdout]    --> src/systems/validation.rs:217:8
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub fn balance_card_distribution(card_decks: &mut ResMut<CardDecks>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `enhanced_tie_breaker` is never used
[INFO] [stdout]   --> src/systems/endgame.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn enhanced_tie_breaker(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `display_final_scores` is never used
[INFO] [stdout]    --> src/systems/endgame.rs:118:8
[INFO] [stdout]     |
[INFO] [stdout] 118 | pub fn display_final_scores(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GREY` is never used
[INFO] [stdout]  --> src/systems/performance.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const GREY: Srgba = Srgba::new(0.6, 0.6, 0.6, 1.0);
[INFO] [stdout]   |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `enable_sprite_culling`, `limit_animations`, and `cache_ui_updates` are never read
[INFO] [stdout]   --> src/systems/performance.rs:9:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct PerformanceSettings {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout]  9 |     pub enable_sprite_culling: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     pub limit_animations: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     pub cache_ui_updates: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `last_ui_update`, `last_sprite_update`, and `cached_player_data` are never read
[INFO] [stdout]   --> src/systems/performance.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct FrameCache {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 17 |     pub last_ui_update: f32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 18 |     pub last_sprite_update: f32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |     pub cached_player_data: Vec<(PlayerId, u8, u8, u8, u8)>, // (id, vp, lira, workers, cards)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cached_ui_update_system` is never used
[INFO] [stdout]   --> src/systems/performance.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn cached_ui_update_system(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `culled_sprite_system` is never used
[INFO] [stdout]   --> src/systems/performance.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn culled_sprite_system(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_position_visible` is never used
[INFO] [stdout]    --> src/systems/performance.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn is_position_visible(pos: Vec2, camera_pos: Vec2, viewport_size: Vec2) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_worker_sprite` is never used
[INFO] [stdout]    --> src/systems/performance.rs:165:4
[INFO] [stdout]     |
[INFO] [stdout] 165 | fn spawn_worker_sprite(commands: &mut Commands, worker: &Worker) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_vineyard_sprites` is never used
[INFO] [stdout]    --> src/systems/performance.rs:197:4
[INFO] [stdout]     |
[INFO] [stdout] 197 | fn spawn_vineyard_sprites(commands: &mut Commands, vineyard: &Vineyard) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_hand_sprites` is never used
[INFO] [stdout]    --> src/systems/performance.rs:235:4
[INFO] [stdout]     |
[INFO] [stdout] 235 | fn spawn_hand_sprites(commands: &mut Commands, hand: &Hand) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_normal_game` is never used
[INFO] [stdout]    --> src/systems/balance.rs:246:4
[INFO] [stdout]     |
[INFO] [stdout] 246 | fn setup_normal_game(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `auto_save_timer` and `last_save_time` are never read
[INFO] [stdout]    --> src/systems/save.rs:119:9
[INFO] [stdout]     |
[INFO] [stdout] 118 | pub struct SaveManager {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] 119 |     pub auto_save_timer: Timer,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 120 |     pub last_save_time: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_save_data` is never used
[INFO] [stdout]    --> src/systems/save.rs:198:4
[INFO] [stdout]     |
[INFO] [stdout] 198 | fn create_save_data(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_to_file` is never used
[INFO] [stdout]    --> src/systems/save.rs:302:4
[INFO] [stdout]     |
[INFO] [stdout] 302 | fn save_to_file(save_data: &SaveData) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `field_type_to_u8` is never used
[INFO] [stdout]    --> src/systems/save.rs:446:4
[INFO] [stdout]     |
[INFO] [stdout] 446 | fn field_type_to_u8(field_type: FieldType) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `card_art_to_u8` is never used
[INFO] [stdout]    --> src/systems/save.rs:462:4
[INFO] [stdout]     |
[INFO] [stdout] 462 | fn card_art_to_u8(art: CardArt) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vine_ability_to_u8` is never used
[INFO] [stdout]    --> src/systems/save.rs:484:4
[INFO] [stdout]     |
[INFO] [stdout] 484 | fn vine_ability_to_u8(ability: VineAbility) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `order_art_to_u8` is never used
[INFO] [stdout]    --> src/systems/save.rs:500:4
[INFO] [stdout]     |
[INFO] [stdout] 500 | fn order_art_to_u8(art: OrderArt) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `order_type_to_u8` is never used
[INFO] [stdout]    --> src/systems/save.rs:516:4
[INFO] [stdout]     |
[INFO] [stdout] 516 | fn order_type_to_u8(order_type: OrderType) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `action_to_u8` is never used
[INFO] [stdout]    --> src/systems/save.rs:532:4
[INFO] [stdout]     |
[INFO] [stdout] 532 | fn action_to_u8(action: ActionSpace) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `state_to_u8` is never used
[INFO] [stdout]    --> src/systems/save.rs:563:4
[INFO] [stdout]     |
[INFO] [stdout] 563 | fn state_to_u8(state: &GameState) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `average_vp_per_game` and `most_used_action` are never used
[INFO] [stdout]   --> src/systems/statistics.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl GameStatistics {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn average_vp_per_game(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn most_used_action(&self) -> Option<ActionSpace> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u8_to_action` is never used
[INFO] [stdout]    --> src/systems/statistics.rs:288:4
[INFO] [stdout]     |
[INFO] [stdout] 288 | fn u8_to_action(value: u8) -> Option<ActionSpace> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `vine_card_count` and `wine_order_count` are never read
[INFO] [stdout]   --> src/systems/undo.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct HandSnapshot {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 67 |     pub owner_id: u8,
[INFO] [stdout] 68 |     pub vine_card_count: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 69 |     pub wine_order_count: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HandSnapshot` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `action` is never read
[INFO] [stdout]   --> src/systems/undo.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct ActionSpaceSnapshot {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 88 |     pub action: u8,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ActionSpaceSnapshot` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `extended_board` is never read
[INFO] [stdout]  --> src/systems/expansions.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ExpansionSettings {
[INFO] [stdout]   |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 9 |     pub extended_board: bool,
[INFO] [stdout]   |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `season` are never read
[INFO] [stdout]   --> src/systems/expansions.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct VisitorCard {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 14 |     pub id: u32,
[INFO] [stdout]    |         ^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub season: VisitorSeason,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VisitorCard` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ExtraWorker` and `SwapFields` are never constructed
[INFO] [stdout]   --> src/systems/expansions.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum VisitorEffect {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 30 |     ExtraWorker,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 31 |     SwapFields,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VisitorEffect` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `VisitorTiming` is never used
[INFO] [stdout]   --> src/systems/expansions.rs:42:10
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum VisitorTiming {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `board_type` and `bonus_fields` are never read
[INFO] [stdout]   --> src/systems/expansions.rs:51:9
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct AdvancedVineyard {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 50 |     pub owner: PlayerId,
[INFO] [stdout] 51 |     pub board_type: VineyardBoardType,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 52 |     pub special_ability: SpecialAbility,
[INFO] [stdout] 53 |     pub bonus_fields: Vec<(usize, BonusFieldType)>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Standard` is never constructed
[INFO] [stdout]   --> src/systems/expansions.rs:58:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub enum VineyardBoardType {
[INFO] [stdout]    |          ----------------- variant in this enum
[INFO] [stdout] 58 |     Standard,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VineyardBoardType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ExtendedActionSpace` is never used
[INFO] [stdout]    --> src/systems/expansions.rs:191:10
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub enum ExtendedActionSpace {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_extended_wine_orders` is never used
[INFO] [stdout]    --> src/systems/expansions.rs:436:8
[INFO] [stdout]     |
[INFO] [stdout] 436 | pub fn create_extended_wine_orders() -> Vec<WineOrderCard> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_vineyard_capacity` is never used
[INFO] [stdout]    --> src/systems/expansions.rs:471:8
[INFO] [stdout]     |
[INFO] [stdout] 471 | pub fn check_vineyard_capacity(vineyard: &Vineyard) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_planted_vines` is never used
[INFO] [stdout]    --> src/systems/expansions.rs:475:8
[INFO] [stdout]     |
[INFO] [stdout] 475 | pub fn count_planted_vines(vineyard: &Vineyard) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_vine_types_planted` is never used
[INFO] [stdout]    --> src/systems/expansions.rs:479:8
[INFO] [stdout]     |
[INFO] [stdout] 479 | pub fn get_vine_types_planted(vineyard: &Vineyard) -> Vec<VineType> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_enhanced_visitor_cards` is never used
[INFO] [stdout]    --> src/systems/expansions.rs:486:8
[INFO] [stdout]     |
[INFO] [stdout] 486 | pub fn create_enhanced_visitor_cards() -> Vec<VisitorCard> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Tooltip` is never constructed
[INFO] [stdout]  --> src/systems/tooltips.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Tooltip {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_action_button_tooltips` is never used
[INFO] [stdout]    --> src/systems/tooltips.rs:261:8
[INFO] [stdout]     |
[INFO] [stdout] 261 | pub fn setup_action_button_tooltips(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_game_element_tooltips` is never used
[INFO] [stdout]    --> src/systems/tooltips.rs:359:8
[INFO] [stdout]     |
[INFO] [stdout] 359 | pub fn setup_game_element_tooltips(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_status_tooltips` is never used
[INFO] [stdout]    --> src/systems/tooltips.rs:382:8
[INFO] [stdout]     |
[INFO] [stdout] 382 | pub fn setup_status_tooltips(commands: &mut Commands) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_rule_explanation` is never used
[INFO] [stdout]    --> src/systems/tooltips.rs:399:8
[INFO] [stdout]     |
[INFO] [stdout] 399 | pub fn get_rule_explanation(concept: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AdvancedStructureType` is never used
[INFO] [stdout]   --> src/systems/advanced.rs:98:10
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub enum AdvancedStructureType {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `cost` and `description` are never used
[INFO] [stdout]    --> src/systems/advanced.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | impl AdvancedStructureType {
[INFO] [stdout]     | -------------------------- methods in this implementation
[INFO] [stdout] 110 |     pub fn cost(&self) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn description(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PlayerPower` is never used
[INFO] [stdout]    --> src/systems/advanced.rs:201:10
[INFO] [stdout]     |
[INFO] [stdout] 201 | pub enum PlayerPower {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `description` and `apply_effect` are never used
[INFO] [stdout]    --> src/systems/advanced.rs:212:12
[INFO] [stdout]     |
[INFO] [stdout] 211 | impl PlayerPower {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] 212 |     pub fn description(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub fn apply_effect(&self, action: ActionSpace, base_result: &mut ActionResult) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ActionResult` is never constructed
[INFO] [stdout]    --> src/systems/advanced.rs:244:12
[INFO] [stdout]     |
[INFO] [stdout] 244 | pub struct ActionResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `base_difficulty`, `performance_modifier`, and `game_length_modifier` are never read
[INFO] [stdout]    --> src/systems/advanced.rs:254:9
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub struct DifficultyScaling {
[INFO] [stdout]     |            ----------------- fields in this struct
[INFO] [stdout] 254 |     pub base_difficulty: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     pub performance_modifier: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 256 |     pub game_length_modifier: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `adjust_for_performance` and `get_effective_difficulty` are never used
[INFO] [stdout]    --> src/systems/advanced.rs:260:12
[INFO] [stdout]     |
[INFO] [stdout] 259 | impl DifficultyScaling {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] 260 |     pub fn adjust_for_performance(&mut self, games_won: u32, games_played: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn get_effective_difficulty(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AIPersonality` is never used
[INFO] [stdout]    --> src/systems/advanced.rs:283:10
[INFO] [stdout]     |
[INFO] [stdout] 283 | pub enum AIPersonality {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `modify_action_score` is never used
[INFO] [stdout]    --> src/systems/advanced.rs:291:12
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl AIPersonality {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 291 |     pub fn modify_action_score(&self, action: ActionSpace, base_score: f32, game_context: &GameContext) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GameContext` is never constructed
[INFO] [stdout]    --> src/systems/advanced.rs:332:12
[INFO] [stdout]     |
[INFO] [stdout] 332 | pub struct GameContext {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `premium_wine_orders` and `premium_vine_cards` are never read
[INFO] [stdout]    --> src/systems/advanced.rs:343:9
[INFO] [stdout]     |
[INFO] [stdout] 342 | pub struct ExpansionContent {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 343 |     pub premium_wine_orders: Vec<WineOrderCard>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 344 |     pub premium_vine_cards: Vec<VineCard>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ExpansionContent` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `active`, `current_step`, `completed_steps`, and `skip_tutorial` are never read
[INFO] [stdout]   --> src/systems/tutorial.rs:7:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct TutorialState {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout]  7 |     pub active: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]  8 |     pub current_step: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]  9 |     pub completed_steps: Vec<usize>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     pub skip_tutorial: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/systems/advanced.rs:364:5
[INFO] [stdout]     |
[INFO] [stdout] 364 |     mut expansion_content: ResMut<ExpansionContent>,
[INFO] [stdout]     |     ----^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |     |
[INFO] [stdout]     |     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save` is never used
[INFO] [stdout]   --> src/systems/tutorial.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl TutorialProgress {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn save(&self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TutorialStep` is never constructed
[INFO] [stdout]   --> src/systems/tutorial.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct TutorialStep {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TutorialAction` is never used
[INFO] [stdout]   --> src/systems/tutorial.rs:46:10
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub enum TutorialAction {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TutorialUI` is never constructed
[INFO] [stdout]   --> src/systems/tutorial.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct TutorialUI;
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TutorialHighlight` is never constructed
[INFO] [stdout]   --> src/systems/tutorial.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct TutorialHighlight;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tutorial_main_menu_system` is never used
[INFO] [stdout]   --> src/systems/tutorial.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn tutorial_main_menu_system(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_tutorial_intro` is never used
[INFO] [stdout]    --> src/systems/tutorial.rs:110:4
[INFO] [stdout]     |
[INFO] [stdout] 110 | fn show_tutorial_intro(commands: &mut Commands, progress: &TutorialProgress) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tutorial_guidance_system` is never used
[INFO] [stdout]    --> src/systems/tutorial.rs:169:8
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub fn tutorial_guidance_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_tutorial_step` is never used
[INFO] [stdout]    --> src/systems/tutorial.rs:206:4
[INFO] [stdout]     |
[INFO] [stdout] 206 | fn get_tutorial_step(step_num: usize, game_state: &GameState) -> Option<TutorialStep> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_tutorial_step` is never used
[INFO] [stdout]    --> src/systems/tutorial.rs:308:4
[INFO] [stdout]     |
[INFO] [stdout] 308 | fn show_tutorial_step(commands: &mut Commands, step: &TutorialStep) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_step_completion` is never used
[INFO] [stdout]    --> src/systems/tutorial.rs:337:4
[INFO] [stdout]     |
[INFO] [stdout] 337 | fn check_step_completion(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_step_completion` is never used
[INFO] [stdout]    --> src/systems/tutorial.rs:362:4
[INFO] [stdout]     |
[INFO] [stdout] 362 | fn show_step_completion(commands: &mut Commands, message: &str) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `complete_tutorial` is never used
[INFO] [stdout]    --> src/systems/tutorial.rs:390:4
[INFO] [stdout]     |
[INFO] [stdout] 390 | fn complete_tutorial(tutorial_state: &mut TutorialState, commands: &mut Commands) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tutorial_cleanup_system` is never used
[INFO] [stdout]    --> src/systems/tutorial.rs:432:8
[INFO] [stdout]     |
[INFO] [stdout] 432 | pub fn tutorial_cleanup_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `save_progress`, `check_achievement`, and `get_completion_percentage` are never used
[INFO] [stdout]    --> src/systems/achievements.rs:64:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl AchievementManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn save_progress(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn check_achievement(&mut self, condition: &AchievementCondition, current_value: u32) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn get_completion_percentage(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AchievementNotification` is never constructed
[INFO] [stdout]    --> src/systems/achievements.rs:244:12
[INFO] [stdout]     |
[INFO] [stdout] 244 | pub struct AchievementNotification {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AchievementUI` is never constructed
[INFO] [stdout]    --> src/systems/achievements.rs:250:12
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub struct AchievementUI;
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `achievement_tracking_system` is never used
[INFO] [stdout]    --> src/systems/achievements.rs:257:8
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub fn achievement_tracking_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_achievement_notification` is never used
[INFO] [stdout]    --> src/systems/achievements.rs:320:4
[INFO] [stdout]     |
[INFO] [stdout] 320 | fn show_achievement_notification(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `achievement_notification_system` is never used
[INFO] [stdout]    --> src/systems/achievements.rs:357:8
[INFO] [stdout]     |
[INFO] [stdout] 357 | pub fn achievement_notification_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `achievement_menu_system` is never used
[INFO] [stdout]    --> src/systems/achievements.rs:371:8
[INFO] [stdout]     |
[INFO] [stdout] 371 | pub fn achievement_menu_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_achievement_menu` is never used
[INFO] [stdout]    --> src/systems/achievements.rs:388:4
[INFO] [stdout]     |
[INFO] [stdout] 388 | fn show_achievement_menu(commands: &mut Commands, achievement_manager: &AchievementManager) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `save`, `is_new_player`, `should_show_tip`, and `mark_tip_seen` are never used
[INFO] [stdout]   --> src/systems/onboarding.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl OnboardingState {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn save(&self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn is_new_player(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn should_show_tip(&self, tip_id: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn mark_tip_seen(&mut self, tip_id: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OnboardingUI` is never constructed
[INFO] [stdout]   --> src/systems/onboarding.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct OnboardingUI;
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GameplayTip` is never constructed
[INFO] [stdout]   --> src/systems/onboarding.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct GameplayTip {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Tip` is never constructed
[INFO] [stdout]   --> src/systems/onboarding.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct Tip {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TipTrigger` is never used
[INFO] [stdout]   --> src/systems/onboarding.rs:69:10
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub enum TipTrigger {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `welcome_screen_system` is never used
[INFO] [stdout]   --> src/systems/onboarding.rs:84:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub fn welcome_screen_system(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_welcome_screen` is never used
[INFO] [stdout]    --> src/systems/onboarding.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn show_welcome_screen(commands: &mut Commands, onboarding: &OnboardingState) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gameplay_tips_system` is never used
[INFO] [stdout]    --> src/systems/onboarding.rs:245:8
[INFO] [stdout]     |
[INFO] [stdout] 245 | pub fn gameplay_tips_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_contextual_tips` is never used
[INFO] [stdout]    --> src/systems/onboarding.rs:295:4
[INFO] [stdout]     |
[INFO] [stdout] 295 | fn get_contextual_tips() -> Vec<Tip> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_gameplay_tip` is never used
[INFO] [stdout]    --> src/systems/onboarding.rs:349:4
[INFO] [stdout]     |
[INFO] [stdout] 349 | fn show_gameplay_tip(commands: &mut Commands, tip: &Tip) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tip_cleanup_system` is never used
[INFO] [stdout]    --> src/systems/onboarding.rs:380:8
[INFO] [stdout]     |
[INFO] [stdout] 380 | pub fn tip_cleanup_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_player_encouragement_system` is never used
[INFO] [stdout]    --> src/systems/onboarding.rs:394:8
[INFO] [stdout]     |
[INFO] [stdout] 394 | pub fn new_player_encouragement_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `onboarding_cleanup_system` is never used
[INFO] [stdout]    --> src/systems/onboarding.rs:472:8
[INFO] [stdout]     |
[INFO] [stdout] 472 | pub fn onboarding_cleanup_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `vineyards`
[INFO] [stdout]    --> src/systems/achievements.rs:261:5
[INFO] [stdout]     |
[INFO] [stdout] 261 |     vineyards: Query<&Vineyard>,
[INFO] [stdout]     |     ^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_vineyards`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `workers`
[INFO] [stdout]    --> src/systems/achievements.rs:262:5
[INFO] [stdout]     |
[INFO] [stdout] 262 |     workers: Query<&Worker>,
[INFO] [stdout]     |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_workers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `config`
[INFO] [stdout]    --> src/systems/achievements.rs:265:5
[INFO] [stdout]     |
[INFO] [stdout] 265 |     config: Res<GameConfig>,
[INFO] [stdout]     |     ^^^^^^ help: if this is intentional, prefix it with an underscore: `_config`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `onboarding`
[INFO] [stdout]    --> src/systems/onboarding.rs:128:49
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn show_welcome_screen(commands: &mut Commands, onboarding: &OnboardingState) {
[INFO] [stdout]     |                                                 ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_onboarding`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `workers`
[INFO] [stdout]    --> src/systems/onboarding.rs:252:5
[INFO] [stdout]     |
[INFO] [stdout] 252 |     workers: Query<&Worker>,
[INFO] [stdout]     |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_workers`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `players`
[INFO] [stdout]    --> src/systems/onboarding.rs:398:5
[INFO] [stdout]     |
[INFO] [stdout] 398 |     players: Query<&Player>,
[INFO] [stdout]     |     ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_players`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `game_stats`
[INFO] [stdout]    --> src/systems/onboarding.rs:399:5
[INFO] [stdout]     |
[INFO] [stdout] 399 |     game_stats: Res<crate::systems::statistics::GameStatistics>,
[INFO] [stdout]     |     ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_game_stats`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `not_testing_mode_enabled` is never used
[INFO] [stdout]    --> src/main.rs:181:4
[INFO] [stdout]     |
[INFO] [stdout] 181 | fn not_testing_mode_enabled(test_config: Res<AutoTestConfig>) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ButtonText` is never constructed
[INFO] [stdout]   --> src/components.rs:14:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct ButtonText;
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `wake_up_bonuses` is never read
[INFO] [stdout]   --> src/components.rs:38:9
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub struct TurnOrder {
[INFO] [stdout]    |            --------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub wake_up_bonuses: Vec<WakeUpBonus>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `PlayExtraWorker` is never constructed
[INFO] [stdout]   --> src/components.rs:47:5
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum WakeUpBonus {
[INFO] [stdout]    |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 47 |     PlayExtraWorker,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WakeUpBonus` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `get_wake_up_bonus` is never used
[INFO] [stdout]   --> src/components.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 50 | impl TurnOrder {
[INFO] [stdout]    | -------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 60 |     pub fn get_wake_up_bonus(&self, player_id: PlayerId) -> Option<WakeUpBonus> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `WineType` is never used
[INFO] [stdout]    --> src/components.rs:166:10
[INFO] [stdout]     |
[INFO] [stdout] 166 | pub enum WineType {
[INFO] [stdout]     |          ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `can_sell`, `sell_value`, `is_empty`, `has_vine`, `plant_vine`, and `can_plant_vine` are never used
[INFO] [stdout]    --> src/components.rs:198:12
[INFO] [stdout]     |
[INFO] [stdout] 173 | impl VineyardField {
[INFO] [stdout]     | ------------------ methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 198 |     pub fn can_sell(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 202 |     pub fn sell_value(&self) -> u8 {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 211 |     pub fn is_empty(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 215 |     pub fn has_vine(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 219 |     pub fn plant_vine(&mut self, vine_type: VineType) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn can_plant_vine(&self, vine_card: &VineCard, current_total: u8, max_value: u8) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: multiple methods are never used
[INFO] [stdout]    --> src/components.rs:254:8
[INFO] [stdout]     |
[INFO] [stdout] 236 | impl Vineyard {
[INFO] [stdout]     | ------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 254 |     fn get_field_total_value(&self, field_index: usize) -> u8 {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 271 |     pub fn get_field_harvest_values(&self, field_index: usize) -> (u8, u8) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 284 |     pub fn can_plant_vine(&self, field_index: usize, vine_card: &VineCard, structures: &[Structure]) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 317 |     pub fn plant_vine(&mut self, field_index: usize, vine_card: VineCard, structures: &[Structure]) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 382 |     pub fn can_make_wine(&self, wine_type: WineType, value: u8, structures: &[Structure]) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 402 |     pub fn fulfill_order(&mut self, order: &WineOrderCard) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 456 |     pub fn sell_field(&mut self, field_index: usize) -> Option<u8> {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 472 |     pub fn buy_back_field(&mut self, field_index: usize) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 489 |     pub fn available_fields(&self) -> Vec<usize> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `special_ability` are never read
[INFO] [stdout]    --> src/components.rs:507:9
[INFO] [stdout]     |
[INFO] [stdout] 506 | pub struct VineCard {
[INFO] [stdout]     |            -------- fields in this struct
[INFO] [stdout] 507 |     pub id: u32,
[INFO] [stdout]     |         ^^
[INFO] [stdout] ...
[INFO] [stdout] 511 |     pub special_ability: Option<VineAbility>, // New: special vine abilities
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `VineCard` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `order_type` are never read
[INFO] [stdout]    --> src/components.rs:584:9
[INFO] [stdout]     |
[INFO] [stdout] 583 | pub struct WineOrderCard {
[INFO] [stdout]     |            ------------- fields in this struct
[INFO] [stdout] 584 |     pub id: u32,
[INFO] [stdout]     |         ^^
[INFO] [stdout] ...
[INFO] [stdout] 590 |     pub order_type: OrderType, // New: different order types
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `WineOrderCard` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated function `new_with_residual` is never used
[INFO] [stdout]    --> src/components.rs:654:12
[INFO] [stdout]     |
[INFO] [stdout] 626 | impl WineOrderCard {
[INFO] [stdout]     | ------------------ associated function in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 654 |     pub fn new_with_residual(id: u32, red: u8, white: u8, vp: u8, payout: u8, residual: u8) -> Self {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_available_for_player_count`, `place_grande_on_occupied`, and `has_grande_worker` are never used
[INFO] [stdout]    --> src/components.rs:766:12
[INFO] [stdout]     |
[INFO] [stdout] 732 | impl ActionSpaceSlot {
[INFO] [stdout]     | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 766 |     pub fn is_available_for_player_count(&self, player_count: u8, position: usize) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 775 |     pub fn place_grande_on_occupied(&mut self, player_id: PlayerId) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 787 |     pub fn has_grande_worker(&self, player_id: PlayerId) -> bool {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `WineExpertise` is never constructed
[INFO] [stdout]    --> src/components.rs:850:5
[INFO] [stdout]     |
[INFO] [stdout] 846 | pub enum PapaAbility {
[INFO] [stdout]     |          ----------- variant in this enum
[INFO] [stdout] ...
[INFO] [stdout] 850 |     WineExpertise,       // Make blush wine more efficiently
[INFO] [stdout]     |     ^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `PapaAbility` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `add_visitor_card` and `total_cards` are never used
[INFO] [stdout]     --> src/components.rs:1044:12
[INFO] [stdout]      |
[INFO] [stdout] 1035 | impl Hand {
[INFO] [stdout]      | --------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1044 |     pub fn add_visitor_card(&mut self, visitor: VisitorCard) {
[INFO] [stdout]      |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 1050 |     pub fn total_cards(&self) -> usize {
[INFO] [stdout]      |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `player_id` is never read
[INFO] [stdout]     --> src/components.rs:1061:9
[INFO] [stdout]      |
[INFO] [stdout] 1060 | pub struct PlayerDashboard {
[INFO] [stdout]      |            --------------- field in this struct
[INFO] [stdout] 1061 |     pub player_id: PlayerId,
[INFO] [stdout]      |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `player_id` is never read
[INFO] [stdout]     --> src/components.rs:1074:9
[INFO] [stdout]      |
[INFO] [stdout] 1073 | pub struct WorkerSprite {
[INFO] [stdout]      |            ------------ field in this struct
[INFO] [stdout] 1074 |     pub player_id: PlayerId,
[INFO] [stdout]      |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `player_id` and `field_index` are never read
[INFO] [stdout]     --> src/components.rs:1079:9
[INFO] [stdout]      |
[INFO] [stdout] 1078 | pub struct VineyardSprite {
[INFO] [stdout]      |            -------------- fields in this struct
[INFO] [stdout] 1079 |     pub player_id: PlayerId,
[INFO] [stdout]      |         ^^^^^^^^^
[INFO] [stdout] 1080 |     pub field_index: usize,
[INFO] [stdout]      |         ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `card_type` is never read
[INFO] [stdout]     --> src/components.rs:1085:9
[INFO] [stdout]      |
[INFO] [stdout] 1084 | pub struct CardSprite {
[INFO] [stdout]      |            ---------- field in this struct
[INFO] [stdout] 1085 |     pub card_type: CardType,
[INFO] [stdout]      |         ^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `worker_texture`, `vine_card_texture`, `wine_order_card_texture`, and `field_texture` are never read
[INFO] [stdout]     --> src/components.rs:1099:9
[INFO] [stdout]      |
[INFO] [stdout] 1098 | pub struct GameAssets {
[INFO] [stdout]      |            ---------- fields in this struct
[INFO] [stdout] 1099 |     pub worker_texture: Handle<Image>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^
[INFO] [stdout] 1100 |     pub vine_card_texture: Handle<Image>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 1101 |     pub wine_order_card_texture: Handle<Image>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 1102 |     pub field_texture: Handle<Image>,
[INFO] [stdout]      |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `ai_enabled`, `ai_difficulty`, `audio_enabled`, `sfx_volume`, and `music_volume` are never read
[INFO] [stdout]     --> src/components.rs:1107:9
[INFO] [stdout]      |
[INFO] [stdout] 1106 | pub struct GameSettings {
[INFO] [stdout]      |            ------------ fields in this struct
[INFO] [stdout] 1107 |     pub ai_enabled: bool,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1108 |     pub ai_difficulty: u8,
[INFO] [stdout]      |         ^^^^^^^^^^^^^
[INFO] [stdout] 1109 |     pub audio_enabled: bool,
[INFO] [stdout]      |         ^^^^^^^^^^^^^
[INFO] [stdout] 1110 |     pub sfx_volume: f32,
[INFO] [stdout]      |         ^^^^^^^^^^
[INFO] [stdout] 1111 |     pub music_volume: f32,
[INFO] [stdout]      |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `MediumCellar`, `LargeCellar`, and `Cottage` are never constructed
[INFO] [stdout]     --> src/components.rs:1144:5
[INFO] [stdout]      |
[INFO] [stdout] 1140 | pub enum StructureType {
[INFO] [stdout]      |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 1144 |     MediumCellar, // $4 - Store 4-6 value wines, make blush
[INFO] [stdout]      |     ^^^^^^^^^^^^
[INFO] [stdout] 1145 |     LargeCellar,  // $6 - Store 7-9 value wines, make sparkling  
[INFO] [stdout]      |     ^^^^^^^^^^^
[INFO] [stdout] 1146 |     Windmill,     // $5 - +1 VP at end for every 7 lira
[INFO] [stdout] 1147 |     Cottage,      // $4 - Draw extra visitor in fall
[INFO] [stdout]      |     ^^^^^^^
[INFO] [stdout]      |
[INFO] [stdout]      = note: `StructureType` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `annual_income` is never used
[INFO] [stdout]     --> src/components.rs:1169:12
[INFO] [stdout]      |
[INFO] [stdout] 1160 | impl ResidualPaymentTracker {
[INFO] [stdout]      | --------------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 1169 |     pub fn annual_income(&self) -> u8 {
[INFO] [stdout]      |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GREY` is never used
[INFO] [stdout]  --> src/systems/input.rs:7:7
[INFO] [stdout]   |
[INFO] [stdout] 7 | const GREY: Srgba = Srgba::new(0.6, 0.6, 0.6, 1.0);
[INFO] [stdout]   |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GAME_OVER_TEXT` is never used
[INFO] [stdout]   --> src/systems/game_logic.rs:19:7
[INFO] [stdout]    |
[INFO] [stdout] 19 | const GAME_OVER_TEXT: &str = "GAME OVER!\n{} WINS with {} Victory Points!\n\nPress SPACE to play again";
[INFO] [stdout]    |       ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_residual_payments_system` is never used
[INFO] [stdout]    --> src/systems/game_logic.rs:746:8
[INFO] [stdout]     |
[INFO] [stdout] 746 | pub fn apply_residual_payments_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `enhanced_make_wine_action` is never used
[INFO] [stdout]    --> src/systems/game_logic.rs:804:8
[INFO] [stdout]     |
[INFO] [stdout] 804 | pub fn enhanced_make_wine_action(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `owner` and `expires_end_of_year` are never read
[INFO] [stdout]    --> src/systems/game_logic.rs:897:9
[INFO] [stdout]     |
[INFO] [stdout] 896 | pub struct TemporaryWorker {
[INFO] [stdout]     |            --------------- fields in this struct
[INFO] [stdout] 897 |     pub owner: PlayerId,
[INFO] [stdout]     |         ^^^^^
[INFO] [stdout] 898 |     pub expires_end_of_year: bool,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fall_draw_visitors_system` is never used
[INFO] [stdout]    --> src/systems/game_logic.rs:952:8
[INFO] [stdout]     |
[INFO] [stdout] 952 | pub fn fall_draw_visitors_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `fulfill_order_with_residual` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1008:8
[INFO] [stdout]      |
[INFO] [stdout] 1008 | pub fn fulfill_order_with_residual(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `plant_vine_with_requirements_system` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1035:8
[INFO] [stdout]      |
[INFO] [stdout] 1035 | pub fn plant_vine_with_requirements_system(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `field_transaction_system` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1083:8
[INFO] [stdout]      |
[INFO] [stdout] 1083 | pub fn field_transaction_system(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `enhanced_worker_placement_system` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1118:8
[INFO] [stdout]      |
[INFO] [stdout] 1118 | pub fn enhanced_worker_placement_system(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_enhanced_vine_deck` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1151:8
[INFO] [stdout]      |
[INFO] [stdout] 1151 | pub fn create_enhanced_vine_deck() -> Vec<VineCard> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_wine_orders_with_residual` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1202:8
[INFO] [stdout]      |
[INFO] [stdout] 1202 | pub fn create_wine_orders_with_residual() -> Vec<WineOrderCard> {
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_actions_with_requirements` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1222:8
[INFO] [stdout]      |
[INFO] [stdout] 1222 | pub fn validate_actions_with_requirements(
[INFO] [stdout]      |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ValidationResult` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1269:10
[INFO] [stdout]      |
[INFO] [stdout] 1269 | pub enum ValidationResult {
[INFO] [stdout]      |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `is_valid` is never used
[INFO] [stdout]     --> src/systems/game_logic.rs:1275:12
[INFO] [stdout]      |
[INFO] [stdout] 1274 | impl ValidationResult {
[INFO] [stdout]      | --------------------- method in this implementation
[INFO] [stdout] 1275 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]      |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GREY` is never used
[INFO] [stdout]  --> src/systems/sprites.rs:4:7
[INFO] [stdout]   |
[INFO] [stdout] 4 | const GREY: Srgba = Srgba::new(0.6, 0.6, 0.6, 1.0);
[INFO] [stdout]   |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `start_pos`, `target_pos`, `timer`, and `animation_type` are never read
[INFO] [stdout]   --> src/systems/animations.rs:7:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct WorkerAnimation {
[INFO] [stdout]    |            --------------- fields in this struct
[INFO] [stdout]  7 |     pub start_pos: Vec2,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout]  8 |     pub target_pos: Vec2,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout]  9 |     pub timer: Timer,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 10 |     pub animation_type: WorkerAnimationType,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Return` and `Bounce` are never constructed
[INFO] [stdout]   --> src/systems/animations.rs:16:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub enum WorkerAnimationType {
[INFO] [stdout]    |          ------------------- variants in this enum
[INFO] [stdout] 15 |     Placement,
[INFO] [stdout] 16 |     Return,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout] 17 |     Bounce,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `WorkerAnimationType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `start_pos`, `target_pos`, `timer`, `animation_type`, and `card_id` are never read
[INFO] [stdout]   --> src/systems/animations.rs:22:9
[INFO] [stdout]    |
[INFO] [stdout] 21 | pub struct CardAnimation {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout] 22 |     pub start_pos: Vec2,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 23 |     pub target_pos: Vec2,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 24 |     pub timer: Timer,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 25 |     pub animation_type: CardAnimationType,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 26 |     pub card_id: u32,
[INFO] [stdout]    |         ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Play`, `Discard`, and `Shuffle` are never constructed
[INFO] [stdout]   --> src/systems/animations.rs:32:5
[INFO] [stdout]    |
[INFO] [stdout] 30 | pub enum CardAnimationType {
[INFO] [stdout]    |          ----------------- variants in this enum
[INFO] [stdout] 31 |     Draw,
[INFO] [stdout] 32 |     Play,
[INFO] [stdout]    |     ^^^^
[INFO] [stdout] 33 |     Discard,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout] 34 |     Shuffle,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `CardAnimationType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `timer`, `from_season`, `to_season`, and `overlay_alpha` are never read
[INFO] [stdout]   --> src/systems/animations.rs:39:9
[INFO] [stdout]    |
[INFO] [stdout] 38 | pub struct SeasonTransition {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 39 |     pub timer: Timer,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout] 40 |     pub from_season: GameState,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 41 |     pub to_season: GameState,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 42 |     pub overlay_alpha: f32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `particles`, `effect_type`, and `timer` are never read
[INFO] [stdout]   --> src/systems/animations.rs:47:9
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub struct ParticleEffect {
[INFO] [stdout]    |            -------------- fields in this struct
[INFO] [stdout] 47 |     pub particles: Vec<Particle>,
[INFO] [stdout]    |         ^^^^^^^^^
[INFO] [stdout] 48 |     pub effect_type: ParticleType,
[INFO] [stdout]    |         ^^^^^^^^^^^
[INFO] [stdout] 49 |     pub timer: Timer,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParticleEffect` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `position`, `velocity`, `life`, `max_life`, `size`, and `color` are never read
[INFO] [stdout]   --> src/systems/animations.rs:54:9
[INFO] [stdout]    |
[INFO] [stdout] 53 | pub struct Particle {
[INFO] [stdout]    |            -------- fields in this struct
[INFO] [stdout] 54 |     pub position: Vec2,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 55 |     pub velocity: Vec2,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 56 |     pub life: f32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 57 |     pub max_life: f32,
[INFO] [stdout]    |         ^^^^^^^^
[INFO] [stdout] 58 |     pub size: f32,
[INFO] [stdout]    |         ^^^^
[INFO] [stdout] 59 |     pub color: Color,
[INFO] [stdout]    |         ^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `Particle` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `HarvestSparkles`, `WinePouring`, and `LiraGain` are never constructed
[INFO] [stdout]   --> src/systems/animations.rs:64:5
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub enum ParticleType {
[INFO] [stdout]    |          ------------ variants in this enum
[INFO] [stdout] 64 |     HarvestSparkles,
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^
[INFO] [stdout] 65 |     WinePouring,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 66 |     LiraGain,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ParticleType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `worker_animation_system` is never used
[INFO] [stdout]    --> src/systems/animations.rs:113:8
[INFO] [stdout]     |
[INFO] [stdout] 113 | pub fn worker_animation_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `animate_card_play` is never used
[INFO] [stdout]    --> src/systems/animations.rs:172:8
[INFO] [stdout]     |
[INFO] [stdout] 172 | pub fn animate_card_play(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `card_animation_system` is never used
[INFO] [stdout]    --> src/systems/animations.rs:190:8
[INFO] [stdout]     |
[INFO] [stdout] 190 | pub fn card_animation_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `season_transition_system` is never used
[INFO] [stdout]    --> src/systems/animations.rs:287:8
[INFO] [stdout]     |
[INFO] [stdout] 287 | pub fn season_transition_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_harvest_particles` is never used
[INFO] [stdout]    --> src/systems/animations.rs:336:8
[INFO] [stdout]     |
[INFO] [stdout] 336 | pub fn spawn_harvest_particles(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_wine_pouring_effect` is never used
[INFO] [stdout]    --> src/systems/animations.rs:358:8
[INFO] [stdout]     |
[INFO] [stdout] 358 | pub fn spawn_wine_pouring_effect(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_lira_particles` is never used
[INFO] [stdout]    --> src/systems/animations.rs:379:8
[INFO] [stdout]     |
[INFO] [stdout] 379 | pub fn spawn_lira_particles(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `particle_system` is never used
[INFO] [stdout]    --> src/systems/animations.rs:401:8
[INFO] [stdout]     |
[INFO] [stdout] 401 | pub fn particle_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_harvest_particles` is never used
[INFO] [stdout]    --> src/systems/animations.rs:456:4
[INFO] [stdout]     |
[INFO] [stdout] 456 | fn create_harvest_particles(center: Vec2, count: usize) -> Vec<Particle> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_pouring_particles` is never used
[INFO] [stdout]    --> src/systems/animations.rs:481:4
[INFO] [stdout]     |
[INFO] [stdout] 481 | fn create_pouring_particles(center: Vec2, count: usize) -> Vec<Particle> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_lira_particles` is never used
[INFO] [stdout]    --> src/systems/animations.rs:504:4
[INFO] [stdout]     |
[INFO] [stdout] 504 | fn create_lira_particles(center: Vec2, count: usize) -> Vec<Particle> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ease_out_back` is never used
[INFO] [stdout]    --> src/systems/animations.rs:548:4
[INFO] [stdout]     |
[INFO] [stdout] 548 | fn ease_out_back(t: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ease_in_out_cubic` is never used
[INFO] [stdout]    --> src/systems/animations.rs:554:4
[INFO] [stdout]     |
[INFO] [stdout] 554 | fn ease_in_out_cubic(t: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ease_out_bounce` is never used
[INFO] [stdout]    --> src/systems/animations.rs:562:4
[INFO] [stdout]     |
[INFO] [stdout] 562 | fn ease_out_bounce(t: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ease_out_cubic` is never used
[INFO] [stdout]    --> src/systems/animations.rs:580:4
[INFO] [stdout]     |
[INFO] [stdout] 580 | fn ease_out_cubic(t: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ease_in_cubic` is never used
[INFO] [stdout]    --> src/systems/animations.rs:584:4
[INFO] [stdout]     |
[INFO] [stdout] 584 | fn ease_in_cubic(t: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ease_in_out_back` is never used
[INFO] [stdout]    --> src/systems/animations.rs:588:4
[INFO] [stdout]     |
[INFO] [stdout] 588 | fn ease_in_out_back(t: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `ease_in_out_sine` is never used
[INFO] [stdout]    --> src/systems/animations.rs:599:4
[INFO] [stdout]     |
[INFO] [stdout] 599 | fn ease_in_out_sine(t: f32) -> f32 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `Error` and `PhaseChange` are never constructed
[INFO] [stdout]   --> src/systems/audio.rs:91:5
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub enum AudioType {
[INFO] [stdout]    |          --------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 91 |     Error,
[INFO] [stdout]    |     ^^^^^
[INFO] [stdout] 92 |     PhaseChange,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `AudioType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `enforce_rules` and `prevent_illegal_moves` are never read
[INFO] [stdout]  --> src/systems/validation.rs:6:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct GameValidation {
[INFO] [stdout]   |            -------------- fields in this struct
[INFO] [stdout] 6 |     pub enforce_rules: bool,
[INFO] [stdout]   |         ^^^^^^^^^^^^^
[INFO] [stdout] 7 |     pub prevent_illegal_moves: bool,
[INFO] [stdout]   |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_worker_placement` is never used
[INFO] [stdout]   --> src/systems/validation.rs:19:8
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub fn validate_worker_placement(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `validate_action_requirements` is never used
[INFO] [stdout]   --> src/systems/validation.rs:70:8
[INFO] [stdout]    |
[INFO] [stdout] 70 | pub fn validate_action_requirements(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ValidationResult` is never used
[INFO] [stdout]    --> src/systems/validation.rs:146:10
[INFO] [stdout]     |
[INFO] [stdout] 146 | pub enum ValidationResult {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `is_valid` and `error_message` are never used
[INFO] [stdout]    --> src/systems/validation.rs:152:12
[INFO] [stdout]     |
[INFO] [stdout] 151 | impl ValidationResult {
[INFO] [stdout]     | --------------------- methods in this implementation
[INFO] [stdout] 152 |     pub fn is_valid(&self) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 156 |     pub fn error_message(&self) -> Option<&str> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `apply_end_game_scoring` is never used
[INFO] [stdout]    --> src/systems/validation.rs:164:8
[INFO] [stdout]     |
[INFO] [stdout] 164 | pub fn apply_end_game_scoring(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_tie_breaker` is never used
[INFO] [stdout]    --> src/systems/validation.rs:186:8
[INFO] [stdout]     |
[INFO] [stdout] 186 | pub fn check_tie_breaker(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `balance_card_distribution` is never used
[INFO] [stdout]    --> src/systems/validation.rs:217:8
[INFO] [stdout]     |
[INFO] [stdout] 217 | pub fn balance_card_distribution(card_decks: &mut ResMut<CardDecks>) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `enhanced_tie_breaker` is never used
[INFO] [stdout]   --> src/systems/endgame.rs:79:8
[INFO] [stdout]    |
[INFO] [stdout] 79 | pub fn enhanced_tie_breaker(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `display_final_scores` is never used
[INFO] [stdout]    --> src/systems/endgame.rs:118:8
[INFO] [stdout]     |
[INFO] [stdout] 118 | pub fn display_final_scores(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: constant `GREY` is never used
[INFO] [stdout]  --> src/systems/performance.rs:5:7
[INFO] [stdout]   |
[INFO] [stdout] 5 | const GREY: Srgba = Srgba::new(0.6, 0.6, 0.6, 1.0);
[INFO] [stdout]   |       ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `enable_sprite_culling`, `limit_animations`, and `cache_ui_updates` are never read
[INFO] [stdout]   --> src/systems/performance.rs:9:9
[INFO] [stdout]    |
[INFO] [stdout]  8 | pub struct PerformanceSettings {
[INFO] [stdout]    |            ------------------- fields in this struct
[INFO] [stdout]  9 |     pub enable_sprite_culling: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     pub limit_animations: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 11 |     pub cache_ui_updates: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `last_ui_update`, `last_sprite_update`, and `cached_player_data` are never read
[INFO] [stdout]   --> src/systems/performance.rs:17:9
[INFO] [stdout]    |
[INFO] [stdout] 16 | pub struct FrameCache {
[INFO] [stdout]    |            ---------- fields in this struct
[INFO] [stdout] 17 |     pub last_ui_update: f32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^
[INFO] [stdout] 18 |     pub last_sprite_update: f32,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 19 |     pub cached_player_data: Vec<(PlayerId, u8, u8, u8, u8)>, // (id, vp, lira, workers, cards)
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `cached_ui_update_system` is never used
[INFO] [stdout]   --> src/systems/performance.rs:34:8
[INFO] [stdout]    |
[INFO] [stdout] 34 | pub fn cached_ui_update_system(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `culled_sprite_system` is never used
[INFO] [stdout]   --> src/systems/performance.rs:93:8
[INFO] [stdout]    |
[INFO] [stdout] 93 | pub fn culled_sprite_system(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `is_position_visible` is never used
[INFO] [stdout]    --> src/systems/performance.rs:157:4
[INFO] [stdout]     |
[INFO] [stdout] 157 | fn is_position_visible(pos: Vec2, camera_pos: Vec2, viewport_size: Vec2) -> bool {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_worker_sprite` is never used
[INFO] [stdout]    --> src/systems/performance.rs:165:4
[INFO] [stdout]     |
[INFO] [stdout] 165 | fn spawn_worker_sprite(commands: &mut Commands, worker: &Worker) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_vineyard_sprites` is never used
[INFO] [stdout]    --> src/systems/performance.rs:197:4
[INFO] [stdout]     |
[INFO] [stdout] 197 | fn spawn_vineyard_sprites(commands: &mut Commands, vineyard: &Vineyard) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `spawn_hand_sprites` is never used
[INFO] [stdout]    --> src/systems/performance.rs:235:4
[INFO] [stdout]     |
[INFO] [stdout] 235 | fn spawn_hand_sprites(commands: &mut Commands, hand: &Hand) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_normal_game` is never used
[INFO] [stdout]    --> src/systems/balance.rs:246:4
[INFO] [stdout]     |
[INFO] [stdout] 246 | fn setup_normal_game(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `auto_save_timer` and `last_save_time` are never read
[INFO] [stdout]    --> src/systems/save.rs:119:9
[INFO] [stdout]     |
[INFO] [stdout] 118 | pub struct SaveManager {
[INFO] [stdout]     |            ----------- fields in this struct
[INFO] [stdout] 119 |     pub auto_save_timer: Timer,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 120 |     pub last_save_time: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_save_data` is never used
[INFO] [stdout]    --> src/systems/save.rs:198:4
[INFO] [stdout]     |
[INFO] [stdout] 198 | fn create_save_data(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `save_to_file` is never used
[INFO] [stdout]    --> src/systems/save.rs:302:4
[INFO] [stdout]     |
[INFO] [stdout] 302 | fn save_to_file(save_data: &SaveData) -> Result<(), Box<dyn std::error::Error>> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `field_type_to_u8` is never used
[INFO] [stdout]    --> src/systems/save.rs:446:4
[INFO] [stdout]     |
[INFO] [stdout] 446 | fn field_type_to_u8(field_type: FieldType) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `card_art_to_u8` is never used
[INFO] [stdout]    --> src/systems/save.rs:462:4
[INFO] [stdout]     |
[INFO] [stdout] 462 | fn card_art_to_u8(art: CardArt) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `vine_ability_to_u8` is never used
[INFO] [stdout]    --> src/systems/save.rs:484:4
[INFO] [stdout]     |
[INFO] [stdout] 484 | fn vine_ability_to_u8(ability: VineAbility) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `order_art_to_u8` is never used
[INFO] [stdout]    --> src/systems/save.rs:500:4
[INFO] [stdout]     |
[INFO] [stdout] 500 | fn order_art_to_u8(art: OrderArt) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `order_type_to_u8` is never used
[INFO] [stdout]    --> src/systems/save.rs:516:4
[INFO] [stdout]     |
[INFO] [stdout] 516 | fn order_type_to_u8(order_type: OrderType) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `action_to_u8` is never used
[INFO] [stdout]    --> src/systems/save.rs:532:4
[INFO] [stdout]     |
[INFO] [stdout] 532 | fn action_to_u8(action: ActionSpace) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `state_to_u8` is never used
[INFO] [stdout]    --> src/systems/save.rs:563:4
[INFO] [stdout]     |
[INFO] [stdout] 563 | fn state_to_u8(state: &GameState) -> u8 {
[INFO] [stdout]     |    ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `average_vp_per_game` and `most_used_action` are never used
[INFO] [stdout]   --> src/systems/statistics.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 29 | impl GameStatistics {
[INFO] [stdout]    | ------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 51 |     pub fn average_vp_per_game(&self) -> f32 {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 59 |     pub fn most_used_action(&self) -> Option<ActionSpace> {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `u8_to_action` is never used
[INFO] [stdout]    --> src/systems/statistics.rs:288:4
[INFO] [stdout]     |
[INFO] [stdout] 288 | fn u8_to_action(value: u8) -> Option<ActionSpace> {
[INFO] [stdout]     |    ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `vine_card_count` and `wine_order_count` are never read
[INFO] [stdout]   --> src/systems/undo.rs:68:9
[INFO] [stdout]    |
[INFO] [stdout] 66 | pub struct HandSnapshot {
[INFO] [stdout]    |            ------------ fields in this struct
[INFO] [stdout] 67 |     pub owner_id: u8,
[INFO] [stdout] 68 |     pub vine_card_count: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 69 |     pub wine_order_count: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `HandSnapshot` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `action` is never read
[INFO] [stdout]   --> src/systems/undo.rs:88:9
[INFO] [stdout]    |
[INFO] [stdout] 87 | pub struct ActionSpaceSnapshot {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 88 |     pub action: u8,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `ActionSpaceSnapshot` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `extended_board` is never read
[INFO] [stdout]  --> src/systems/expansions.rs:9:9
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct ExpansionSettings {
[INFO] [stdout]   |            ----------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 9 |     pub extended_board: bool,
[INFO] [stdout]   |         ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `id` and `season` are never read
[INFO] [stdout]   --> src/systems/expansions.rs:14:9
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct VisitorCard {
[INFO] [stdout]    |            ----------- fields in this struct
[INFO] [stdout] 14 |     pub id: u32,
[INFO] [stdout]    |         ^^
[INFO] [stdout] ...
[INFO] [stdout] 17 |     pub season: VisitorSeason,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VisitorCard` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variants `ExtraWorker` and `SwapFields` are never constructed
[INFO] [stdout]   --> src/systems/expansions.rs:30:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | pub enum VisitorEffect {
[INFO] [stdout]    |          ------------- variants in this enum
[INFO] [stdout] ...
[INFO] [stdout] 30 |     ExtraWorker,
[INFO] [stdout]    |     ^^^^^^^^^^^
[INFO] [stdout] 31 |     SwapFields,
[INFO] [stdout]    |     ^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VisitorEffect` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `VisitorTiming` is never used
[INFO] [stdout]   --> src/systems/expansions.rs:42:10
[INFO] [stdout]    |
[INFO] [stdout] 42 | pub enum VisitorTiming {
[INFO] [stdout]    |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `board_type` and `bonus_fields` are never read
[INFO] [stdout]   --> src/systems/expansions.rs:51:9
[INFO] [stdout]    |
[INFO] [stdout] 49 | pub struct AdvancedVineyard {
[INFO] [stdout]    |            ---------------- fields in this struct
[INFO] [stdout] 50 |     pub owner: PlayerId,
[INFO] [stdout] 51 |     pub board_type: VineyardBoardType,
[INFO] [stdout]    |         ^^^^^^^^^^
[INFO] [stdout] 52 |     pub special_ability: SpecialAbility,
[INFO] [stdout] 53 |     pub bonus_fields: Vec<(usize, BonusFieldType)>,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variant `Standard` is never constructed
[INFO] [stdout]   --> src/systems/expansions.rs:58:5
[INFO] [stdout]    |
[INFO] [stdout] 57 | pub enum VineyardBoardType {
[INFO] [stdout]    |          ----------------- variant in this enum
[INFO] [stdout] 58 |     Standard,
[INFO] [stdout]    |     ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `VineyardBoardType` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `ExtendedActionSpace` is never used
[INFO] [stdout]    --> src/systems/expansions.rs:191:10
[INFO] [stdout]     |
[INFO] [stdout] 191 | pub enum ExtendedActionSpace {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_extended_wine_orders` is never used
[INFO] [stdout]    --> src/systems/expansions.rs:436:8
[INFO] [stdout]     |
[INFO] [stdout] 436 | pub fn create_extended_wine_orders() -> Vec<WineOrderCard> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_vineyard_capacity` is never used
[INFO] [stdout]    --> src/systems/expansions.rs:471:8
[INFO] [stdout]     |
[INFO] [stdout] 471 | pub fn check_vineyard_capacity(vineyard: &Vineyard) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `count_planted_vines` is never used
[INFO] [stdout]    --> src/systems/expansions.rs:475:8
[INFO] [stdout]     |
[INFO] [stdout] 475 | pub fn count_planted_vines(vineyard: &Vineyard) -> usize {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_vine_types_planted` is never used
[INFO] [stdout]    --> src/systems/expansions.rs:479:8
[INFO] [stdout]     |
[INFO] [stdout] 479 | pub fn get_vine_types_planted(vineyard: &Vineyard) -> Vec<VineType> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `create_enhanced_visitor_cards` is never used
[INFO] [stdout]    --> src/systems/expansions.rs:486:8
[INFO] [stdout]     |
[INFO] [stdout] 486 | pub fn create_enhanced_visitor_cards() -> Vec<VisitorCard> {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Tooltip` is never constructed
[INFO] [stdout]  --> src/systems/tooltips.rs:5:12
[INFO] [stdout]   |
[INFO] [stdout] 5 | pub struct Tooltip {
[INFO] [stdout]   |            ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_action_button_tooltips` is never used
[INFO] [stdout]    --> src/systems/tooltips.rs:261:8
[INFO] [stdout]     |
[INFO] [stdout] 261 | pub fn setup_action_button_tooltips(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_game_element_tooltips` is never used
[INFO] [stdout]    --> src/systems/tooltips.rs:359:8
[INFO] [stdout]     |
[INFO] [stdout] 359 | pub fn setup_game_element_tooltips(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `setup_status_tooltips` is never used
[INFO] [stdout]    --> src/systems/tooltips.rs:382:8
[INFO] [stdout]     |
[INFO] [stdout] 382 | pub fn setup_status_tooltips(commands: &mut Commands) {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_rule_explanation` is never used
[INFO] [stdout]    --> src/systems/tooltips.rs:399:8
[INFO] [stdout]     |
[INFO] [stdout] 399 | pub fn get_rule_explanation(concept: &str) -> String {
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AdvancedStructureType` is never used
[INFO] [stdout]   --> src/systems/advanced.rs:98:10
[INFO] [stdout]    |
[INFO] [stdout] 98 | pub enum AdvancedStructureType {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `cost` and `description` are never used
[INFO] [stdout]    --> src/systems/advanced.rs:110:12
[INFO] [stdout]     |
[INFO] [stdout] 109 | impl AdvancedStructureType {
[INFO] [stdout]     | -------------------------- methods in this implementation
[INFO] [stdout] 110 |     pub fn cost(&self) -> u8 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 129 |     pub fn description(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `PlayerPower` is never used
[INFO] [stdout]    --> src/systems/advanced.rs:201:10
[INFO] [stdout]     |
[INFO] [stdout] 201 | pub enum PlayerPower {
[INFO] [stdout]     |          ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `description` and `apply_effect` are never used
[INFO] [stdout]    --> src/systems/advanced.rs:212:12
[INFO] [stdout]     |
[INFO] [stdout] 211 | impl PlayerPower {
[INFO] [stdout]     | ---------------- methods in this implementation
[INFO] [stdout] 212 |     pub fn description(&self) -> &'static str {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 224 |     pub fn apply_effect(&self, action: ActionSpace, base_result: &mut ActionResult) {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `ActionResult` is never constructed
[INFO] [stdout]    --> src/systems/advanced.rs:244:12
[INFO] [stdout]     |
[INFO] [stdout] 244 | pub struct ActionResult {
[INFO] [stdout]     |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `base_difficulty`, `performance_modifier`, and `game_length_modifier` are never read
[INFO] [stdout]    --> src/systems/advanced.rs:254:9
[INFO] [stdout]     |
[INFO] [stdout] 253 | pub struct DifficultyScaling {
[INFO] [stdout]     |            ----------------- fields in this struct
[INFO] [stdout] 254 |     pub base_difficulty: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 255 |     pub performance_modifier: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 256 |     pub game_length_modifier: f32,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `adjust_for_performance` and `get_effective_difficulty` are never used
[INFO] [stdout]    --> src/systems/advanced.rs:260:12
[INFO] [stdout]     |
[INFO] [stdout] 259 | impl DifficultyScaling {
[INFO] [stdout]     | ---------------------- methods in this implementation
[INFO] [stdout] 260 |     pub fn adjust_for_performance(&mut self, games_won: u32, games_played: u32) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 276 |     pub fn get_effective_difficulty(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `AIPersonality` is never used
[INFO] [stdout]    --> src/systems/advanced.rs:283:10
[INFO] [stdout]     |
[INFO] [stdout] 283 | pub enum AIPersonality {
[INFO] [stdout]     |          ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `modify_action_score` is never used
[INFO] [stdout]    --> src/systems/advanced.rs:291:12
[INFO] [stdout]     |
[INFO] [stdout] 290 | impl AIPersonality {
[INFO] [stdout]     | ------------------ method in this implementation
[INFO] [stdout] 291 |     pub fn modify_action_score(&self, action: ActionSpace, base_score: f32, game_context: &GameContext) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GameContext` is never constructed
[INFO] [stdout]    --> src/systems/advanced.rs:332:12
[INFO] [stdout]     |
[INFO] [stdout] 332 | pub struct GameContext {
[INFO] [stdout]     |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `premium_wine_orders` and `premium_vine_cards` are never read
[INFO] [stdout]    --> src/systems/advanced.rs:343:9
[INFO] [stdout]     |
[INFO] [stdout] 342 | pub struct ExpansionContent {
[INFO] [stdout]     |            ---------------- fields in this struct
[INFO] [stdout] 343 |     pub premium_wine_orders: Vec<WineOrderCard>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 344 |     pub premium_vine_cards: Vec<VineCard>,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `ExpansionContent` has a derived impl for the trait `Clone`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `active`, `current_step`, `completed_steps`, and `skip_tutorial` are never read
[INFO] [stdout]   --> src/systems/tutorial.rs:7:9
[INFO] [stdout]    |
[INFO] [stdout]  6 | pub struct TutorialState {
[INFO] [stdout]    |            ------------- fields in this struct
[INFO] [stdout]  7 |     pub active: bool,
[INFO] [stdout]    |         ^^^^^^
[INFO] [stdout]  8 |     pub current_step: usize,
[INFO] [stdout]    |         ^^^^^^^^^^^^
[INFO] [stdout]  9 |     pub completed_steps: Vec<usize>,
[INFO] [stdout]    |         ^^^^^^^^^^^^^^^
[INFO] [stdout] 10 |     pub skip_tutorial: bool,
[INFO] [stdout]    |         ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `save` is never used
[INFO] [stdout]   --> src/systems/tutorial.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 20 | impl TutorialProgress {
[INFO] [stdout]    | --------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn save(&self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TutorialStep` is never constructed
[INFO] [stdout]   --> src/systems/tutorial.rs:36:12
[INFO] [stdout]    |
[INFO] [stdout] 36 | pub struct TutorialStep {
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TutorialAction` is never used
[INFO] [stdout]   --> src/systems/tutorial.rs:46:10
[INFO] [stdout]    |
[INFO] [stdout] 46 | pub enum TutorialAction {
[INFO] [stdout]    |          ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TutorialUI` is never constructed
[INFO] [stdout]   --> src/systems/tutorial.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct TutorialUI;
[INFO] [stdout]    |            ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `TutorialHighlight` is never constructed
[INFO] [stdout]   --> src/systems/tutorial.rs:63:12
[INFO] [stdout]    |
[INFO] [stdout] 63 | pub struct TutorialHighlight;
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tutorial_main_menu_system` is never used
[INFO] [stdout]   --> src/systems/tutorial.rs:71:8
[INFO] [stdout]    |
[INFO] [stdout] 71 | pub fn tutorial_main_menu_system(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_tutorial_intro` is never used
[INFO] [stdout]    --> src/systems/tutorial.rs:110:4
[INFO] [stdout]     |
[INFO] [stdout] 110 | fn show_tutorial_intro(commands: &mut Commands, progress: &TutorialProgress) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tutorial_guidance_system` is never used
[INFO] [stdout]    --> src/systems/tutorial.rs:169:8
[INFO] [stdout]     |
[INFO] [stdout] 169 | pub fn tutorial_guidance_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_tutorial_step` is never used
[INFO] [stdout]    --> src/systems/tutorial.rs:206:4
[INFO] [stdout]     |
[INFO] [stdout] 206 | fn get_tutorial_step(step_num: usize, game_state: &GameState) -> Option<TutorialStep> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_tutorial_step` is never used
[INFO] [stdout]    --> src/systems/tutorial.rs:308:4
[INFO] [stdout]     |
[INFO] [stdout] 308 | fn show_tutorial_step(commands: &mut Commands, step: &TutorialStep) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `check_step_completion` is never used
[INFO] [stdout]    --> src/systems/tutorial.rs:337:4
[INFO] [stdout]     |
[INFO] [stdout] 337 | fn check_step_completion(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_step_completion` is never used
[INFO] [stdout]    --> src/systems/tutorial.rs:362:4
[INFO] [stdout]     |
[INFO] [stdout] 362 | fn show_step_completion(commands: &mut Commands, message: &str) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `complete_tutorial` is never used
[INFO] [stdout]    --> src/systems/tutorial.rs:390:4
[INFO] [stdout]     |
[INFO] [stdout] 390 | fn complete_tutorial(tutorial_state: &mut TutorialState, commands: &mut Commands) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tutorial_cleanup_system` is never used
[INFO] [stdout]    --> src/systems/tutorial.rs:432:8
[INFO] [stdout]     |
[INFO] [stdout] 432 | pub fn tutorial_cleanup_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `save_progress`, `check_achievement`, and `get_completion_percentage` are never used
[INFO] [stdout]    --> src/systems/achievements.rs:64:12
[INFO] [stdout]     |
[INFO] [stdout]  39 | impl AchievementManager {
[INFO] [stdout]     | ----------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout]  64 |     pub fn save_progress(&self) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout]  70 |     pub fn check_achievement(&mut self, condition: &AchievementCondition, current_value: u32) -> Vec<String> {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 111 |     pub fn get_completion_percentage(&self) -> f32 {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AchievementNotification` is never constructed
[INFO] [stdout]    --> src/systems/achievements.rs:244:12
[INFO] [stdout]     |
[INFO] [stdout] 244 | pub struct AchievementNotification {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `AchievementUI` is never constructed
[INFO] [stdout]    --> src/systems/achievements.rs:250:12
[INFO] [stdout]     |
[INFO] [stdout] 250 | pub struct AchievementUI;
[INFO] [stdout]     |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `achievement_tracking_system` is never used
[INFO] [stdout]    --> src/systems/achievements.rs:257:8
[INFO] [stdout]     |
[INFO] [stdout] 257 | pub fn achievement_tracking_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_achievement_notification` is never used
[INFO] [stdout]    --> src/systems/achievements.rs:320:4
[INFO] [stdout]     |
[INFO] [stdout] 320 | fn show_achievement_notification(
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `achievement_notification_system` is never used
[INFO] [stdout]    --> src/systems/achievements.rs:357:8
[INFO] [stdout]     |
[INFO] [stdout] 357 | pub fn achievement_notification_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `achievement_menu_system` is never used
[INFO] [stdout]    --> src/systems/achievements.rs:371:8
[INFO] [stdout]     |
[INFO] [stdout] 371 | pub fn achievement_menu_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_achievement_menu` is never used
[INFO] [stdout]    --> src/systems/achievements.rs:388:4
[INFO] [stdout]     |
[INFO] [stdout] 388 | fn show_achievement_menu(commands: &mut Commands, achievement_manager: &AchievementManager) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: methods `save`, `is_new_player`, `should_show_tip`, and `mark_tip_seen` are never used
[INFO] [stdout]   --> src/systems/onboarding.rs:28:12
[INFO] [stdout]    |
[INFO] [stdout] 14 | impl OnboardingState {
[INFO] [stdout]    | -------------------- methods in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 28 |     pub fn save(&self) {
[INFO] [stdout]    |            ^^^^
[INFO] [stdout] ...
[INFO] [stdout] 34 |     pub fn is_new_player(&self) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 38 |     pub fn should_show_tip(&self, tip_id: &str) -> bool {
[INFO] [stdout]    |            ^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 42 |     pub fn mark_tip_seen(&mut self, tip_id: &str) {
[INFO] [stdout]    |            ^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `OnboardingUI` is never constructed
[INFO] [stdout]   --> src/systems/onboarding.rs:51:12
[INFO] [stdout]    |
[INFO] [stdout] 51 | pub struct OnboardingUI;
[INFO] [stdout]    |            ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `GameplayTip` is never constructed
[INFO] [stdout]   --> src/systems/onboarding.rs:54:12
[INFO] [stdout]    |
[INFO] [stdout] 54 | pub struct GameplayTip {
[INFO] [stdout]    |            ^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: struct `Tip` is never constructed
[INFO] [stdout]   --> src/systems/onboarding.rs:60:12
[INFO] [stdout]    |
[INFO] [stdout] 60 | pub struct Tip {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: enum `TipTrigger` is never used
[INFO] [stdout]   --> src/systems/onboarding.rs:69:10
[INFO] [stdout]    |
[INFO] [stdout] 69 | pub enum TipTrigger {
[INFO] [stdout]    |          ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `welcome_screen_system` is never used
[INFO] [stdout]   --> src/systems/onboarding.rs:84:8
[INFO] [stdout]    |
[INFO] [stdout] 84 | pub fn welcome_screen_system(
[INFO] [stdout]    |        ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_welcome_screen` is never used
[INFO] [stdout]    --> src/systems/onboarding.rs:128:4
[INFO] [stdout]     |
[INFO] [stdout] 128 | fn show_welcome_screen(commands: &mut Commands, onboarding: &OnboardingState) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `gameplay_tips_system` is never used
[INFO] [stdout]    --> src/systems/onboarding.rs:245:8
[INFO] [stdout]     |
[INFO] [stdout] 245 | pub fn gameplay_tips_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `get_contextual_tips` is never used
[INFO] [stdout]    --> src/systems/onboarding.rs:295:4
[INFO] [stdout]     |
[INFO] [stdout] 295 | fn get_contextual_tips() -> Vec<Tip> {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_gameplay_tip` is never used
[INFO] [stdout]    --> src/systems/onboarding.rs:349:4
[INFO] [stdout]     |
[INFO] [stdout] 349 | fn show_gameplay_tip(commands: &mut Commands, tip: &Tip) {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `tip_cleanup_system` is never used
[INFO] [stdout]    --> src/systems/onboarding.rs:380:8
[INFO] [stdout]     |
[INFO] [stdout] 380 | pub fn tip_cleanup_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `new_player_encouragement_system` is never used
[INFO] [stdout]    --> src/systems/onboarding.rs:394:8
[INFO] [stdout]     |
[INFO] [stdout] 394 | pub fn new_player_encouragement_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `onboarding_cleanup_system` is never used
[INFO] [stdout]    --> src/systems/onboarding.rs:472:8
[INFO] [stdout]     |
[INFO] [stdout] 472 | pub fn onboarding_cleanup_system(
[INFO] [stdout]     |        ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 2m 10s
[INFO] running `Command { std: "docker" "inspect" "cf7f45849b309ed380919037ed3a12e248c3a0c208fd0521012e4937b5b0c1ef", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "cf7f45849b309ed380919037ed3a12e248c3a0c208fd0521012e4937b5b0c1ef", kill_on_drop: false }`
[INFO] [stdout] cf7f45849b309ed380919037ed3a12e248c3a0c208fd0521012e4937b5b0c1ef
