From 859f8c9c72e73a217401cdf552f46672811b1dc6 Mon Sep 17 00:00:00 2001 From: core Date: Sun, 5 Jan 2025 20:45:39 -0500 Subject: [PATCH] appease clippy --- starkingdoms-client/src/lib.rs | 30 +++++++++++++++---- starkingdoms-client/src/native/mod.rs | 2 -- starkingdoms-client/src/rendering/mod.rs | 22 +++++++------- starkingdoms-client/src/rendering/renderer.rs | 4 ++- starkingdoms-client/src/wasm/mod.rs | 1 - 5 files changed, 40 insertions(+), 19 deletions(-) diff --git a/starkingdoms-client/src/lib.rs b/starkingdoms-client/src/lib.rs index 9033786855d721152d4375eb06ce5f7ca2d53770..f7e075a943ce7d00fecea9df0a243f8c6d0e366d 100644 --- a/starkingdoms-client/src/lib.rs +++ b/starkingdoms-client/src/lib.rs @@ -2,14 +2,12 @@ use crate::ecs::{Camera, Position, Scale, SpriteBundle, SpriteTexture}; use crate::input::MouseWheelEvent; use crate::rendering::ui::UiRenderable; use crate::rendering::App; -use bevy_ecs::event::Events; +use bevy_ecs::event::{EventReader, Events}; use bevy_ecs::schedule::Schedule; +use bevy_ecs::system::ResMut; use bevy_ecs::world::World; use egui::Context; -use std::ops::Add; -use std::time::Duration; use tracing::info; -use web_time::Instant; use winit::event_loop::{ControlFlow, EventLoop}; #[cfg(target_arch = "wasm32")] @@ -53,6 +51,7 @@ pub fn start() { let mut update_schedule = Schedule::default(); // Add things to run every frame here // Caution: This will run once before there are things on screen + update_schedule.add_systems(zoom_camera_on_mouse_events); world.spawn(SpriteBundle { position: Position { x: 0.0, y: 0.0 }, @@ -72,9 +71,30 @@ pub fn start() { .unwrap(); } +fn zoom_camera_on_mouse_events(mut events: EventReader, mut camera: ResMut) { + for event in events.read() { + let raw_delta = match event { + MouseWheelEvent::Line { y, .. } => *y, + MouseWheelEvent::Pixel { y, ..} => *y, + } as f32; + + let delta = if raw_delta < 0.0 { + raw_delta * -0.9 + } else { + raw_delta * 1.1 + }; + + if delta < 0.0 { + camera.zoom *= 1.0 / delta; + } else { + camera.zoom *= delta; + } + } +} + pub struct Gui {} impl UiRenderable for Gui { - fn render(&mut self, ctx: &Context, world: &mut World) { + fn render(&mut self, ctx: &Context, _world: &mut World) { egui::Window::new("Main Menu") .resizable(false) .show(ctx, |ui| { diff --git a/starkingdoms-client/src/native/mod.rs b/starkingdoms-client/src/native/mod.rs index 438b366e36382ed0dac5f6284939a14b41967630..2140dc3c59d0776f13eba38dc3bd9cffe081e0c9 100644 --- a/starkingdoms-client/src/native/mod.rs +++ b/starkingdoms-client/src/native/mod.rs @@ -1,5 +1,3 @@ -use wgpu::{Backends, Limits}; - /// --- IMPORTANT: THIS IS A DUAL TARGET CRATE --- /// THIS WILL ONLY EXECUTE ON NATIVE /// DO ONLY PLATFORM SPECIFIC INITIALIZATION HERE diff --git a/starkingdoms-client/src/rendering/mod.rs b/starkingdoms-client/src/rendering/mod.rs index 1748abadff1dedc1acadb00a94f83b6a63a45ff6..64e0e17c5aa440458b9e590e0f283853433b8f58 100644 --- a/starkingdoms-client/src/rendering/mod.rs +++ b/starkingdoms-client/src/rendering/mod.rs @@ -5,7 +5,8 @@ pub mod ui; use crate::input::MouseWheelEvent; use crate::rendering::renderer::RenderInitRes::{Initialized, NotReadyYet}; -use crate::rendering::renderer::{RenderInitRes, Renderer}; +#[allow(unused_imports)] +use crate::rendering::renderer::{Renderer, RenderInitRes}; use crate::rendering::ui::UiRenderable; use bevy_ecs::schedule::Schedule; use bevy_ecs::world::World; @@ -13,12 +14,12 @@ use std::ops::Add; use std::process::exit; use std::sync::Arc; use std::time::Duration; -use tracing::{debug, error, info}; +use tracing::info; use web_time::Instant; use winit::application::ApplicationHandler; use winit::dpi::LogicalSize; use winit::event::{MouseScrollDelta, WindowEvent}; -use winit::event_loop::{ActiveEventLoop, ControlFlow, EventLoop}; +use winit::event_loop::{ActiveEventLoop, ControlFlow}; use winit::window::{Window, WindowId}; pub struct App { @@ -61,7 +62,7 @@ impl ApplicationHandler for App { #[cfg(not(target_arch = "wasm32"))] { let renderer = pollster::block_on(async move { - Renderer::new(window.clone(), world, update_schedule, ui_renderable).await + Renderer::try_init(window.clone(), world, update_schedule, ui_renderable).await }); match renderer { Initialized(r) => { @@ -91,8 +92,8 @@ impl ApplicationHandler for App { self.renderer_rx = Some(rx); wasm_bindgen_futures::spawn_local(async move { let renderer = - Renderer::new(window.clone(), world, update_schedule, ui_renderable).await; - tx.send(renderer.into()).unwrap(); + Renderer::try_init(window.clone(), world, update_schedule, ui_renderable).await; + tx.send(renderer).unwrap(); }); } } @@ -101,7 +102,7 @@ impl ApplicationHandler for App { fn window_event( &mut self, event_loop: &ActiveEventLoop, - window_id: WindowId, + _window_id: WindowId, event: WindowEvent, ) { if event == WindowEvent::CloseRequested { @@ -158,6 +159,7 @@ impl ApplicationHandler for App { } fn about_to_wait(&mut self, event_loop: &ActiveEventLoop) { + #[allow(unused_variables)] if let Some(window) = self.window.clone() { #[cfg(target_arch = "wasm32")] { @@ -173,8 +175,8 @@ impl ApplicationHandler for App { let (tx, rx) = futures::channel::oneshot::channel(); self.renderer_rx = Some(rx); wasm_bindgen_futures::spawn_local(async move { - let renderer = Renderer::new(window.clone(), w, u, t).await; - tx.send(renderer.into()).unwrap(); + let renderer = Renderer::try_init(window.clone(), w, u, t).await; + tx.send(renderer).unwrap(); }); } } @@ -194,7 +196,7 @@ impl ApplicationHandler for App { let ui_renderable = self.ui_renderable.take().unwrap(); let renderer = pollster::block_on(async move { - Renderer::new(window.clone(), world, update_schedule, ui_renderable) + Renderer::try_init(window.clone(), world, update_schedule, ui_renderable) .await }); diff --git a/starkingdoms-client/src/rendering/renderer.rs b/starkingdoms-client/src/rendering/renderer.rs index 1e04b23fb120a0e2c5ad56f622ab604a83681ce2..6fa50aafa11c6b92149a010a0afcef3b652f84ab 100644 --- a/starkingdoms-client/src/rendering/renderer.rs +++ b/starkingdoms-client/src/rendering/renderer.rs @@ -23,6 +23,7 @@ use wgpu::{ use winit::dpi::{LogicalSize, PhysicalSize}; use winit::window::Window; +#[allow(unused_attributes, dead_code)] pub struct Renderer { pub last_frame_time: Instant, @@ -55,6 +56,7 @@ pub struct Renderer { pub logical_size: LogicalSize, } +#[allow(clippy::large_enum_variant)] pub enum RenderInitRes { Initialized(Renderer), NotReadyYet(World, Schedule, T), @@ -69,7 +71,7 @@ impl Debug for RenderInitRes { } impl Renderer { - pub async fn new( + pub async fn try_init( window: Arc, world: World, update_schedule: Schedule, diff --git a/starkingdoms-client/src/wasm/mod.rs b/starkingdoms-client/src/wasm/mod.rs index ed321e64d4a7469f5595bf772b0c1c70bad06c54..b306036d4bddf30b23e10932c4cecbe744c194b6 100644 --- a/starkingdoms-client/src/wasm/mod.rs +++ b/starkingdoms-client/src/wasm/mod.rs @@ -3,7 +3,6 @@ use tracing_subscriber::fmt::format::Pretty; use tracing_subscriber::prelude::*; use tracing_web::{performance_layer, MakeWebConsoleWriter}; use wasm_bindgen::prelude::wasm_bindgen; -use wgpu::{Backends, Limits}; /// --- IMPORTANT: THIS IS A DUAL TARGET CRATE --- /// THIS WILL ONLY EXECUTE ON WEBASSEMBLY