1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
use crate::pico8::Clearable;
use bevy::prelude::*;
use bevy_ecs_tiled::{prelude::*, TiledMapPluginConfig};
use bevy_ecs_tilemap::prelude::*;
// pub mod ldtk;
// use ldtk::*;
pub(crate) mod asset;
pub(crate) mod reader;
pub mod tiled;
#[derive(Debug, Clone, Reflect)]
pub enum Tiled {
Map { handle: Handle<TiledMap> },
World { handle: Handle<TiledWorld> },
}
impl Tiled {
pub fn map(&self, screen_start: Vec2, _level: usize, commands: &mut Commands) -> Entity {
// commands.insert_resource(LevelSelection::index(level));
let clearable = Clearable::default();
// let mut transform =
// get_tilemap_top_left_transform(&map_size, &grid_size, &map_type, clearable.suggest_z());
// transform.translation += screen_start.extend(0.0);
match self {
Tiled::Map { handle } => {
commands
.spawn((
TiledMapHandle(handle.clone()),
// ldtk_map: self.handle.clone(),
Transform::from_xyz(screen_start.x, screen_start.y, clearable.suggest_z()),
TilemapAnchor::TopLeft,
TiledMapLayerZOffset(1.0),
Name::new("level"),
clearable,
InheritedVisibility::default(),
))
.id()
}
Tiled::World { handle } => {
commands
.spawn((
TiledWorldHandle(handle.clone()),
TiledWorldChunking::new(1000., 1000.),
// TiledWorldChunking(None),
// ldtk_map: self.handle.clone(),
Transform::from_xyz(screen_start.x, screen_start.y, clearable.suggest_z()),
TilemapAnchor::TopLeft,
TiledMapLayerZOffset(1.0),
Name::new("level"),
clearable,
InheritedVisibility::default(),
))
.id()
}
}
}
}
pub(crate) fn plugin(app: &mut App) {
app//.add_plugins(LdtkPlugin)
.register_type::<Tiled>()
.init_asset_loader::<asset::TiledSetLoader>()
.add_plugins(TilemapPlugin)
.add_plugins(TiledMapPlugin(TiledMapPluginConfig { tiled_types_export_file: None }))
.add_plugins(tiled::plugin)
// .add_plugins(ldtk::LdtkPlugin)
// .register_ldtk_entity::<Slime>("Slime")
// .insert_resource(LevelSelection::index(0))
// .add_systems(PostUpdate, process_entities)
;
}