~starkingdoms/starkingdoms

a23bde6f4e5434609fad769eeec636c4601eff5c — core 2 years ago 0bef1cb
[WIP! VERY WIP! SUPER WIP!] start working on rendering code
1 files changed, 12 insertions(+), 3 deletions(-)

M client/src/rendering/renderer.rs
M client/src/rendering/renderer.rs => client/src/rendering/renderer.rs +12 -3
@@ 2,7 2,7 @@ use std::error::Error;
use async_trait::async_trait;
use web_sys::{CanvasRenderingContext2d, HtmlCanvasElement};
use crate::rendering::Renderer;
use wasm_bindgen::JsCast;
use wasm_bindgen::{JsCast, JsValue};
use crate::CLIENT;

#[derive(Debug)]


@@ 25,8 25,17 @@ impl Renderer for WebRenderer {
        let document = window.document().ok_or("window.document needs to exist")?;
        let canvas_element = document.get_element_by_id(&self.canvas_element_id).ok_or("canvas element does not exist")?;
        let typed_canvas_element: HtmlCanvasElement = canvas_element.dyn_into::<web_sys::HtmlCanvasElement>().map_err(|_| ()).unwrap();
        let _context = typed_canvas_element.get_context("2d").unwrap().unwrap().dyn_into::<CanvasRenderingContext2d>().unwrap();
        let _client = CLIENT.read()?;
        let context = typed_canvas_element.get_context("2d").unwrap().unwrap().dyn_into::<CanvasRenderingContext2d>().unwrap();
        let client = CLIENT.read()?;

        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 camera_translate_y = -client.y + (typed_canvas_element.height() / 2) as f64;

        context.translate(camera_translate_x, camera_translate_y).map_err(|e: JsValue| e.as_string().unwrap())?;

        Ok(())
    }
}
\ No newline at end of file