aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormetamuffin <yvchraiqi@protonmail.com>2022-06-09 10:15:54 +0200
committermetamuffin <yvchraiqi@protonmail.com>2022-06-09 10:15:54 +0200
commitc5799343499ef6ca63490c83f39d9fda2da19a00 (patch)
tree76870830ef9d7a02d58530773d584fee870a1986
parent7a0d09e5cd0075e2a0d3db4505d7ec77dff35ae0 (diff)
downloadtwclient-c5799343499ef6ca63490c83f39d9fda2da19a00.tar
twclient-c5799343499ef6ca63490c83f39d9fda2da19a00.tar.bz2
twclient-c5799343499ef6ca63490c83f39d9fda2da19a00.tar.zst
asd
-rw-r--r--client/src/world/map.rs15
-rw-r--r--renderer/src/main.rs4
-rw-r--r--renderer/src/map.rs31
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(),