simple_game_utils/tiles/
file.rs

1use 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    ///recommended tileset for this map
10    ///some systems may use this to autoload the atlas
11    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}