simple_game_utils/tiles/
file.rs1use std::collections::HashMap;
2
3use crate::prelude::*;
4use serde::{Deserialize, Serialize};
5
6#[derive(Debug, Clone, Deserialize, Serialize)]
7pub struct TilemapFile {
8 pub name: String,
9 pub tileset: String,
12 pub flags: HashMap<u32, String>,
13 pub tiles: Vec<TileDescriptor>,
14 pub map: Vec<Vec<u16>>,
15 pub data: TilemapDataDescriptor,
16}
17
18#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
19pub struct TileDescriptor {
20 pub image: String,
21 pub flags: u32,
22}
23
24#[derive(Debug, Clone, Deserialize, Serialize, PartialEq)]
25pub struct TilemapDataDescriptor {
26 pub start: (u32, u32),
27 pub exits: Vec<(u32, u32, String, u32, u32)>,
28}
29
30#[derive(Debug, Clone, Eq, PartialEq, Serialize, Deserialize)]
31pub struct MapExit {
32 pub position: MapPosition,
33 pub target_map: String,
34 pub target_pos: MapPosition,
35}
36
37impl MapExit {
38 pub fn from_file(data: (u32, u32, String, u32, u32)) -> MapExit {
39 MapExit {
40 position: MapPosition::new(data.0, data.1),
41 target_map: data.2,
42 target_pos: MapPosition::new(data.3, data.4),
43 }
44 }
45}
46
47impl From<(u32, u32, String, u32, u32)> for MapExit {
48 fn from(value: (u32, u32, String, u32, u32)) -> Self {
49 MapExit::from_file(value)
50 }
51}