aboutsummaryrefslogtreecommitdiff
path: root/light-client/src/tilemap.rs
diff options
context:
space:
mode:
Diffstat (limited to 'light-client/src/tilemap.rs')
-rw-r--r--light-client/src/tilemap.rs28
1 files changed, 11 insertions, 17 deletions
diff --git a/light-client/src/tilemap.rs b/light-client/src/tilemap.rs
index e84db8b1..e7341efa 100644
--- a/light-client/src/tilemap.rs
+++ b/light-client/src/tilemap.rs
@@ -15,15 +15,19 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-use crate::sprite_renderer::SpriteRenderer;
use hurrycurry_protocol::{glam::IVec2, TileIndex};
-use sdl2::rect::{FRect, Rect};
+use sdl2::rect::Rect;
use std::collections::HashMap;
+use crate::render::{
+ sprite::{Sprite, SpriteDraw},
+ SpriteRenderer,
+};
+
#[derive(Default)]
pub struct Tilemap {
tile_srcs: Vec<[Rect; 16]>,
- tiles: HashMap<IVec2, (Rect, FRect)>,
+ tiles: HashMap<IVec2, SpriteDraw>,
}
impl Tilemap {
@@ -72,23 +76,13 @@ impl Tilemap {
idx |= 0b0010 * (Some(tile) == neighbors[3]) as usize;
let src = self.tile_srcs[tile.0][idx];
- self.tiles.insert(
- pos,
- (
- src,
- FRect::new(
- pos.x as f32,
- pos.y as f32 + 1. - src.height() as f32 / 24.,
- src.width() as f32 / 32.,
- src.height() as f32 / 24.,
- ),
- ),
- );
+ self.tiles
+ .insert(pos, Sprite::new_tile(src).at(pos.as_vec2()));
}
pub fn draw(&self, ctx: &mut SpriteRenderer) {
- for &(src, dst) in self.tiles.values() {
- ctx.draw(dst.y + dst.h, src, dst);
+ for &sprite in self.tiles.values() {
+ ctx.draw_world(sprite);
}
}
}