summaryrefslogtreecommitdiff
path: root/src/canvas.rs
diff options
context:
space:
mode:
authorDavid Blajda <blajda@hotmail.com>2019-08-24 15:47:36 +0000
committerDavid Blajda <blajda@hotmail.com>2019-08-24 15:47:36 +0000
commit1e09bbf7e814d20ddbc446206d0855121ad556f2 (patch)
tree33f46ecbe5bbfc57f5cdd24345984da08aec78f8 /src/canvas.rs
parent42e06126fc8ad6b17d3e4c1c082fb7feb36d067f (diff)
:WIP: Web UI with stdwebHEADmaster
Diffstat (limited to 'src/canvas.rs')
-rw-r--r--src/canvas.rs61
1 files changed, 61 insertions, 0 deletions
diff --git a/src/canvas.rs b/src/canvas.rs
new file mode 100644
index 0000000..ead8636
--- /dev/null
+++ b/src/canvas.rs
@@ -0,0 +1,61 @@
+use stdweb::web::CanvasRenderingContext2d;
+use crate::{Level, Tile};
+
+use crate::Direction;
+
+const SCALE_X: f64 = 8.0;
+const SCALE_Y: f64 = 4.0;
+
+pub fn render_level(canvas: &mut CanvasRenderingContext2d, level: &Level) {
+ let region = &level.region;
+
+ let x_offset = 20.0;
+ let y_offset = 20.0;
+
+
+ for y in 0..region.height() {
+ for x in 0..region.width() {
+ let old_width = canvas.get_line_width();
+ canvas.set_line_width(2.0);
+ canvas.set_fill_style_color("lightgrey");
+ let x_f = x as f64;
+ let y_f = y as f64;
+
+ let x_l = x_offset + (x_f * SCALE_X);
+ let x_r = x_offset + (x_f + 1.0) * SCALE_X;
+
+ let y_t = y_offset + (y_f * SCALE_Y);
+ let y_b = y_offset + (y_f + 1.0) * SCALE_Y;
+
+
+ let tile = region.get(x, y).unwrap();
+ if let Some(tile) = tile {
+ canvas.fill_rect(x_l, y_t, x_r - x_l, y_b - y_t);
+ if tile.connections & Direction::UP == 0 {
+ canvas.begin_path();
+ canvas.move_to(x_l, y_t);
+ canvas.line_to(x_r, y_t);
+ canvas.stroke();
+ }
+ if tile.connections & Direction::RIGHT == 0 {
+ canvas.begin_path();
+ canvas.move_to(x_r, y_t);
+ canvas.line_to(x_r, y_b);
+ canvas.stroke();
+ }
+ if tile.connections & Direction::DOWN == 0 {
+ canvas.begin_path();
+ canvas.move_to(x_l, y_b);
+ canvas.line_to(x_r, y_b);
+ canvas.stroke();
+ }
+ if tile.connections & Direction::LEFT == 0 {
+ canvas.begin_path();
+ canvas.move_to(x_l, y_t);
+ canvas.line_to(x_l, y_b);
+ canvas.stroke();
+ }
+ }
+ }
+ }
+}