fuck off mark <3

This commit is contained in:
2024-11-06 21:33:24 +02:00
parent 0ef3d227e8
commit fac0e40de5
1344 changed files with 0 additions and 71 deletions

View File

@@ -3,73 +3,6 @@ use bevy_ecs_ldtk::prelude::*;
use crate::player::Player;
const ASPECT_RATIO: f32 = 16. / 9.;
#[allow(clippy::type_complexity)]
pub fn camera_fit_inside_current_level(
mut camera_query: Query<
(
&mut bevy::render::camera::OrthographicProjection,
&mut Transform,
),
Without<Player>,
>,
player_query: Query<&Transform, With<Player>>,
level_query: Query<(&Transform, &LevelIid), (Without<OrthographicProjection>, Without<Player>)>,
ldtk_projects: Query<&Handle<LdtkProject>>,
level_selection: Res<LevelSelection>,
ldtk_project_assets: Res<Assets<LdtkProject>>,
) {
if let Ok(Transform {
translation: player_translation,
..
}) = player_query.get_single()
{
let player_translation = *player_translation;
let (mut orthographic_projection, mut camera_transform) = camera_query.single_mut();
for (level_transform, level_iid) in &level_query {
let ldtk_project = ldtk_project_assets
.get(ldtk_projects.single())
.expect("Project should be loaded if level has spawned");
let level = ldtk_project
.get_raw_level_by_iid(&level_iid.to_string())
.expect("Spawned level should exist in LDtk project");
if level_selection.is_match(&LevelIndices::default(), level) {
let level_ratio = level.px_wid as f32 / level.px_hei as f32;
orthographic_projection.viewport_origin = Vec2::ZERO;
if level_ratio > ASPECT_RATIO {
// level is wider than the screen
let height = (level.px_hei as f32 / 9.).round() * 9.;
let width = height * ASPECT_RATIO;
orthographic_projection.scaling_mode =
bevy::render::camera::ScalingMode::Fixed { width, height };
camera_transform.translation.x =
(player_translation.x - level_transform.translation.x - width / 4.)
.clamp(0., level.px_wid as f32 - width);
camera_transform.translation.y = 0.;
} else {
// level is taller than the screen
let width = (level.px_wid as f32 / 16.).round() * 16.;
let height = width / ASPECT_RATIO;
orthographic_projection.scaling_mode =
bevy::render::camera::ScalingMode::Fixed { width, height };
camera_transform.translation.y =
(player_translation.y - level_transform.translation.y - height / 4.)
.clamp(0., level.px_hei as f32 - height);
camera_transform.translation.x = 0.;
}
camera_transform.translation.x += level_transform.translation.x;
camera_transform.translation.y += level_transform.translation.y;
}
}
}
}
pub struct CameraPlugin;

View File

@@ -14,10 +14,6 @@ mod level_structure;
pub const GRID_SIZE: i32 = 16;
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()))