From b344f9a0a099d8fc318e51db46fc843251b348e7 Mon Sep 17 00:00:00 2001 From: core Date: Wed, 12 Apr 2023 20:08:46 -0400 Subject: [PATCH] fix planet rendering, add hearty rendering --- client/src/rendering/renderer.rs | 22 ++++++++++++++++++++-- server/src/planet.rs | 24 +++++++++++------------- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/client/src/rendering/renderer.rs b/client/src/rendering/renderer.rs index 1cc1abf78ee433d22d15257336035a1708d23396..b92817b085992847d05f7bb19444b24ddba5a6ee 100644 --- a/client/src/rendering/renderer.rs +++ b/client/src/rendering/renderer.rs @@ -41,20 +41,38 @@ impl Renderer for WebRenderer { let camera_translate_x = -client.x + (typed_canvas_element.width() / 2) as f64; let camera_translate_y = -client.y + (typed_canvas_element.height() / 2) as f64; - debug!("translating to {} {}", camera_translate_x, camera_translate_y); - context.translate(camera_translate_x, camera_translate_y).map_err(|e: JsValue| e.as_string().unwrap())?; for planet in &client.planets { context.save(); + context.set_transform(1f64, 0f64, 0f64, 1f64, 0f64, 0f64).map_err(|e: JsValue| e.as_string().unwrap())?; context.translate(-planet.x, -planet.y).map_err(|e: JsValue| e.as_string().unwrap())?; + let texture_image = document.get_element_by_id(&format!("tex-{}", planet.planet_type.as_texture_id())).unwrap().dyn_into::().unwrap(); context.draw_image_with_html_image_element_and_dw_and_dh(&texture_image, -planet.radius, -planet.radius, planet.radius * 2f64, planet.radius * 2f64).map_err(|e: JsValue| e.as_string().unwrap())?; + context.restore(); } + for player in &client.players { + context.save(); + + context.translate(player.x, player.y).map_err(|e: JsValue| e.as_string().unwrap())?; + context.set_text_align("center"); + context.set_font("30px Segoe UI"); + context.set_fill_style(&JsValue::from_str("white")); + + context.fill_text(&player.username, 0f64, -35f64).map_err(|e: JsValue| e.as_string().unwrap())?; + + context.rotate(player.rotation).map_err(|e: JsValue| e.as_string().unwrap())?; + + let texture_image = document.get_element_by_id("tex-hearty").unwrap().dyn_into::().unwrap(); + context.draw_image_with_html_image_element_and_dw_and_dh(&texture_image, -25f64, -25f64, 50f64, 50f64).map_err(|e: JsValue| e.as_string().unwrap())?; + + context.restore(); + } // do not remove // im making this smiley an easter egg soon diff --git a/server/src/planet.rs b/server/src/planet.rs index 020694e7ab4257e6d01320ad0a6f1e63bf73d43d..fb1ac78cd34c406520a538809a0ffe19dbd580ad 100644 --- a/server/src/planet.rs +++ b/server/src/planet.rs @@ -39,7 +39,7 @@ impl Planets { pub fn new(rigid_body_set: &mut RigidBodySet, collider_set: &mut ColliderSet) -> Planets { let mut planets = Vec::new(); - let _earth = Planets::make_planet( + Planets::make_planet( &mut planets, PlanetType::Earth, 2000.0, @@ -53,21 +53,19 @@ impl Planets { } pub fn to_protocol(&self) -> ClientHandlerMessage { - let mut message = ClientHandlerMessage::PlanetData { - planets: Vec::new() - }; + let mut planets = vec![]; for planet in self.planets.clone() { - if let ClientHandlerMessage::PlanetData { mut planets } = message.clone() { - planets.push(ProtocolPlanet { - planet_type: planet.planet_type, - x: planet.position.0 * SCALE, - y: planet.position.1 * SCALE, - radius: planet.radius, - }); - } + planets.push(ProtocolPlanet { + planet_type: planet.planet_type, + x: planet.position.0 * SCALE, + y: planet.position.1 * SCALE, + radius: planet.radius, + }); } - message + ClientHandlerMessage::PlanetData { + planets + } } }