diff --git a/src/main.rs b/src/main.rs index 84512d9..044a504 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,8 +2,13 @@ use bevy::prelude::*; use bevy_ecs_ldtk::prelude::*; use player::{Player, PlayerPlugin}; +mod camera; mod player; +const LEVEL_SET: [&str; 2] = [ + "ee0d1601-73f0-11ef-b8f3-190460ac7628", + "60e1c210-73f0-11ef-b56f-153ec435f652", +]; fn main() { App::new() .add_plugins(DefaultPlugins.set(ImagePlugin::default_nearest())) @@ -14,22 +19,25 @@ fn main() { .register_ldtk_entity::("Goal") .register_ldtk_int_cell::(1) .add_systems(Startup, setup) + .add_systems(Update, camera::camera_fit_inside_current_level) .run(); } fn setup(mut commands: Commands, asset_server: Res) { let mut camera = Camera2dBundle::default(); - camera.projection.scale = 0.5; + let level_set = LevelSet::from_iids(LEVEL_SET); + camera.projection.scale = 1.111; camera.transform.translation.x += 1280.0 / 4.0; camera.transform.translation.y += 720.0 / 4.0; commands.spawn(camera); commands.spawn(LdtkWorldBundle { ldtk_handle: asset_server.load("shocked-miguel.ldtk"), + level_set, + // transform: Transform::from_xyz(-256., -144., 0.), ..Default::default() }); } - #[derive(Default, Component)] struct Goal; @@ -65,6 +73,13 @@ fn check_goal( level_selection: ResMut, players: Query<&GridCoords, (With, Changed)>, goals: Query<&GridCoords, With>, + mut camera_query: Query< + ( + &mut bevy::render::camera::OrthographicProjection, + &mut Transform, + ), + Without, + >, ) { if players .iter()