diff options
-rw-r--r-- | client/src/world/map.rs | 15 | ||||
-rw-r--r-- | renderer/src/main.rs | 4 | ||||
-rw-r--r-- | renderer/src/map.rs | 31 |
3 files changed, 30 insertions, 20 deletions
diff --git a/client/src/world/map.rs b/client/src/world/map.rs index fb67918..fcc24c0 100644 --- a/client/src/world/map.rs +++ b/client/src/world/map.rs @@ -1,7 +1,7 @@ use ::map as mapfile; use anyhow::Error; -use common::{num::Cast, vec}; -use log::{info, log}; +use common::{num::Cast, pretty, vec}; +use log::{info, log, warn}; use ndarray::Array2; use std::{ collections::{hash_map, HashMap}, @@ -51,12 +51,20 @@ impl Map { || group.offset_y != 0 || group.clipping.is_some() { + warn!( + "skipping layer: {}: off_x:{} off_y:{} parallax_x:{} parallax_y:{} clipping:{:?}", + pretty::AlmostString::new(&group.name), + group.offset_x, + group.offset_y, + group.parallax_x, + group.parallax_y, + group.clipping, + ); continue; } for layer_idx in group.layer_indices { let layer = map.layer(layer_idx).unwrap(); - let tilemap = if let reader::LayerType::Tilemap(t) = layer.t { t } else { @@ -106,6 +114,7 @@ impl Map { Array2::from_shape_vec((height, width), data).unwrap() } None => { + warn!("layer with external tileset skipped"); continue; // let image_name = map.image_name(image.name)?; // // WARN? Unknown external image diff --git a/renderer/src/main.rs b/renderer/src/main.rs index d763336..bab0bd4 100644 --- a/renderer/src/main.rs +++ b/renderer/src/main.rs @@ -205,9 +205,9 @@ impl Renderer { let tee_paint = Paint::new( Color4f { a: 1.0, - r: 1.0, + r: 0.2, g: 0.0, - b: 1.0, + b: 0.2, }, &ColorSpace::new_srgb(), ); diff --git a/renderer/src/map.rs b/renderer/src/map.rs index 0ea3a6b..8517ee0 100644 --- a/renderer/src/map.rs +++ b/renderer/src/map.rs @@ -85,16 +85,25 @@ impl MapRenderer { if tileset.dim() == (1, 1) { continue; } - - for layer_y in (center.1 - 30)..(center.1 + 30) { - for layer_x in (center.0 - 30)..(center.0 + 30) { + // println!("{:?} {:?}", center, l.tiles.dim()); + for layer_y in (center.1 - 15)..(center.1 + 15) { + for layer_x in (center.0 - 15)..(center.0 + 15) { let layer_x = layer_x.try_into().unwrap_or(0); let layer_y = layer_y.try_into().unwrap_or(0); - if layer_x >= l.tiles.dim().1 || layer_y >= l.tiles.dim().0 { - continue; - } - let tile = l.tiles[(layer_y, layer_x)]; + let tile_rect = Rect { + top: layer_y as f32 * 16.0, + left: layer_x as f32 * 16.0, + bottom: layer_y as f32 * 16.0 + 16.0, + right: layer_x as f32 * 16.0 + 16.0, + }; + canvas.draw_rect(tile_rect, &grid_paint); + + let tile = match l.tiles.get((layer_y, layer_x)) { + Some(t) => t, + None => continue, + }; + println!("{:?}", tile); let _rotate = tile.flags & format::TILEFLAG_ROTATE != 0; let _vflip = tile.flags & format::TILEFLAG_VFLIP != 0; @@ -106,14 +115,6 @@ impl MapRenderer { continue; } - let tile_rect = Rect { - top: layer_y as f32 * 16.0, - left: layer_x as f32 * 16.0, - bottom: layer_y as f32 * 16.0 + 16.0, - right: layer_x as f32 * 16.0 + 16.0, - }; - canvas.draw_rect(tile_rect, &grid_paint); - const TL: u32 = 16; canvas.draw_image_rect( self.tileset.get(&l.image).unwrap(), |