~starkingdoms/starkingdoms

f963857665e23f741bba435f733b47f05cda237f — TerraMaster85 2 years ago b85786f
new rendering paradigm & de-fuck rotation
1 files changed, 28 insertions(+), 16 deletions(-)

M client/src/rendering/renderer.rs
M client/src/rendering/renderer.rs => client/src/rendering/renderer.rs +28 -16
@@ 35,45 35,57 @@ impl Renderer for WebRenderer {
        }
        let client_data = client.client_data.as_ref().unwrap();

        context.set_transform(1f64, 0f64, 0f64, 1f64, 0f64, 0f64).map_err(|e: JsValue| e.as_string().unwrap())?;
        context.clear_rect(0f64, 0f64, typed_canvas_element.width() as f64, typed_canvas_element.height() as f64);
        //let camera_translate_x = -client.x + (typed_canvas_element.width() / 2) as f64;
        let viewer_size_x = typed_canvas_element.width() as f64;
        //let camera_translate_y = -client.y + (typed_canvas_element.height() / 2) as f64;
        let viewer_size_y = typed_canvas_element.height() as f64;

        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;
        context.set_transform(1f64, 0f64, 0f64, 1f64, 0f64, 0f64).map_err(|e: JsValue| e.as_string().unwrap())?;
        context.clear_rect(0f64, 0f64, viewer_size_x, viewer_size_y);

        context.translate(camera_translate_x, camera_translate_y).map_err(|e: JsValue| e.as_string().unwrap())?;
        // *dont* translate the camera. we're movign everything else around us. cameracentrism.
        // only translation will be to center our core module.
        //context.translate(camera_translate_x, camera_translate_y).map_err(|e: JsValue| e.as_string().unwrap())?;
        context.translate(viewer_size_x / 2.0, viewer_size_y / 2.0).map_err(|e: JsValue| e.as_string().unwrap())?;

        for planet in &client.planets {
            context.save();
            //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())?;
            //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::<HtmlImageElement>().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())?;
            // pos:
            //debug!("P {} {}", planet.x - planet.radius - client.x, planet.y - planet.radius - client.y);
            debug!("P {} {}", planet.x - planet.radius - /*client.x*/0f64, planet.y - planet.radius - /*client.y*/100f64);
            context.draw_image_with_html_image_element_and_dw_and_dh(&texture_image, planet.x - planet.radius - /*client.x*/0f64, planet.y - planet.radius - /*client.y*/100f64, planet.radius * 2f64, planet.radius * 2f64).map_err(|e: JsValue| e.as_string().unwrap())?;

            context.restore();
            //context.restore();
        }

        for player in &client.players {
            context.save();

            context.translate(player.x, player.y).map_err(|e: JsValue| e.as_string().unwrap())?;
            //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.set_fill_style(&JsValue::from_str("white")); // CssStyleColor
            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())?;
            context.rotate(player.rotation).map_err(|e: JsValue| e.as_string().unwrap())?; // fwip

            let texture_image = document.get_element_by_id("tex-hearty").unwrap().dyn_into::<HtmlImageElement>().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())?;
            debug!("H {} {}", player.x - 25f64 - client.x, player.y - 25f64 - client.y);
            context.draw_image_with_html_image_element_and_dw_and_dh(&texture_image, player.x - 25f64 - client.x, player.y - 25f64 - client.y, 50f64, 50f64).map_err(|e: JsValue| e.as_string().unwrap())?; // sktch

            //context.rotate(-player.rotation).map_err(|e: JsValue| e.as_string().unwrap())?; // fwoop

            context.restore();
        }

        context.scale(0.25f64, 0.25f64).map_err(|e: JsValue| e.as_string().unwrap())?;

        // do not remove
        // im making this smiley an easter egg soon
        // i just have to go fix the broken build system first


@@ 105,4 117,4 @@ impl Renderer for WebRenderer {
*/
        Ok(())
    }
}
\ No newline at end of file
}