Skip to content
Snippets Groups Projects
Verified Commit ef8e13d8 authored by Louis's avatar Louis :fire:
Browse files

Update outdated usages of Bevy and old deps

parent 2da9cf0e
No related branches found
No related tags found
No related merge requests found
......@@ -2068,7 +2068,7 @@ dependencies = [
[[package]]
name = "micro_ldtk"
version = "0.2.0"
version = "0.3.0-beta.1"
dependencies = [
"anyhow",
"bevy",
......
......@@ -2,8 +2,9 @@ use std::collections::HashMap;
use bevy::prelude::*;
use crate::assets::{LevelIndex, TileMetadata, TilesetIndex};
use crate::ldtk::Project;
use crate::{LdtkLevel, LevelDataUpdated, LevelIndex, TileMetadata, TilesetIndex};
use crate::{LdtkLevel, LevelDataUpdated};
pub fn handle_ldtk_project_events(
mut events: EventReader<AssetEvent<Project>>,
......@@ -17,10 +18,8 @@ pub fn handle_ldtk_project_events(
AssetEvent::Created { handle } | AssetEvent::Modified { handle } => {
if let Some(project) = assets.get(handle) {
for level in &project.levels {
level_index.insert(
level.identifier.clone(),
LdtkLevel::from(level.serde_clone()),
);
level_index
.insert(level.identifier.clone(), LdtkLevel::from(level.clone()));
update_events.send(LevelDataUpdated(level.identifier.clone()));
}
......
......@@ -2,6 +2,9 @@ use std::collections::HashMap;
use std::ops::{Deref, DerefMut};
use bevy::prelude::Resource;
use serde_json::Value;
use crate::LdtkLevel;
#[derive(Resource, Default)]
pub struct LevelIndex(pub HashMap<String, LdtkLevel>);
......
......@@ -14,8 +14,9 @@ pub fn lock_camera_to_level<CameraSelector: ReadOnlyWorldQuery>(
};
for (mut transform, proj) in &mut camera_query {
let width = proj.right - proj.left;
let height = proj.top - proj.bottom;
let rect = proj.area;
let width = rect.width();
let height = rect.height();
let val_x = bounds
.get_min_x(width)
......@@ -24,9 +25,7 @@ pub fn lock_camera_to_level<CameraSelector: ReadOnlyWorldQuery>(
.get_min_y(height)
.max(bounds.get_max_y(height).min(transform.translation.y));
// log::info!("BEFORE {:?}", transform.translation);
transform.translation = Vec3::new(val_x, val_y, transform.translation.z);
// log::info!("AFTER {:?}", transform.translation);
}
}
......@@ -39,8 +38,9 @@ impl<'w, 's, Filter: ReadOnlyWorldQuery + 'static> CameraBounder<'w, 's, Filter>
pub fn get_extremeties(&self) -> Option<Rect> {
if let Some(bounds) = self.map_query.get_camera_bounds() {
if let Ok(proj) = self.query.get_single() {
let width = proj.right - proj.left;
let height = proj.top - proj.bottom;
let rect = proj.area;
let width = rect.width();
let height = rect.height();
Some(Rect::new(
bounds.get_min_x(width),
......
......@@ -11,10 +11,10 @@ pub use data_1_2_4::*;
#[cfg(feature = "ldtk_1_2_5")]
pub use data_1_2_5::*;
#[derive(thiserror::Error)]
#[derive(thiserror::Error, Debug)]
pub enum ParseError {
#[error("Failed to parse file: {0}")]
SerdeError(#[from] String),
SerdeError(String),
}
impl TypeUuid for Project {
......@@ -29,14 +29,6 @@ impl Project {
pub type LdtkProject = Project;
impl<'a> TryFrom<&'a [u8]> for Project {
type Error = ParseError;
fn try_from(value: &'a [u8]) -> Result<Self, Self::Error> {
Project::from_bytes(value)
}
}
impl<'a> From<&'a [u8]> for Project {
fn from(value: &'a [u8]) -> Self {
#[cfg(feature = "no_panic")]
......@@ -75,3 +67,18 @@ impl AssetLoader for LdtkLoader {
&["ldtk"]
}
}
#[cfg(test)]
mod test {
use crate::ldtk::Project;
#[test]
pub fn load_project() {
const project_data: &[u8] = include_bytes!("./test_data/ver_1_2_5.ldtk");
let project = Project::from_bytes(project_data).expect("Failed to parse project file");
for layer in project.defs.layers.iter() {
for auto_rule_group in layer.auto_rule_groups.iter() {}
}
}
}
This diff is collapsed.
......@@ -25,16 +25,15 @@ pub fn set_ldtk_tile_scale_f32(scale: f32) {
mod __plugin {
use std::marker::PhantomData;
use bevy::app::{App, CoreStage, Plugin};
use bevy::asset::AddAsset;
use bevy::ecs::query::ReadOnlyWorldQuery;
use bevy::prelude::*;
pub struct MicroLDTKPlugin;
impl Plugin for MicroLDTKPlugin {
fn build(&self, app: &mut App) {
#[cfg(any(feature = "ldtk_1_2_5", feature = "ldtk_1_2_4"))]
{
app.add_event::<super::types::LevelDataUpdated>()
app.add_event::<super::system::LevelDataUpdated>()
.add_asset::<super::ldtk::Project>()
.add_asset_loader(super::ldtk::LdtkLoader)
.init_resource::<super::assets::TilesetIndex>()
......@@ -66,9 +65,9 @@ mod __plugin {
for MicroLDTKCameraPlugin<CameraFilter>
{
fn build(&self, app: &mut App) {
app.add_system_to_stage(
CoreStage::PostUpdate,
super::camera::lock_camera_to_level::<CameraFilter>,
app.add_system(
super::camera::lock_camera_to_level::<CameraFilter>
.in_base_set(CoreSet::PostUpdate),
);
}
}
......@@ -77,8 +76,9 @@ mod __plugin {
use std::sync::atomic::{AtomicU32, Ordering};
pub use __plugin::{MicroLDTKCameraPlugin, MicroLDTKPlugin};
pub use assets::{LdtkLoader, LdtkProject, LevelIndex, TileMetadata, TilesetIndex};
pub use assets::{LevelIndex, TileMetadata, TilesetIndex};
pub use camera::CameraBounder;
pub use ldtk::{LdtkLoader, LdtkProject};
pub use map_query::{CameraBounds, MapQuery};
pub use pregen::{write_layer_to_texture, write_map_to_texture, Rasterise};
pub use system::*;
......@@ -7,7 +7,7 @@ use bevy::prelude::*;
use crate::assets::LevelIndex;
use crate::ldtk::EntityInstance;
use crate::utils::{ActiveLevel, SerdeClone};
use crate::system::ActiveLevel;
use crate::{get_ldtk_tile_scale, LdtkLayer, LdtkLevel};
#[derive(SystemParam)]
......@@ -149,13 +149,7 @@ impl<'w, 's> MapQuery<'w, 's> {
pub fn get_owned_entities_of(level: &LdtkLevel) -> Vec<EntityInstance> {
level
.layers()
.flat_map(|layer| {
layer
.as_ref()
.entity_instances
.iter()
.map(|inst| inst.serde_clone())
})
.flat_map(|layer| layer.as_ref().entity_instances.iter().cloned())
.collect()
}
......
......@@ -4,7 +4,6 @@ use std::ops::{Deref, DerefMut};
use std::path::Path;
use bevy::math::{IVec2, Rect, UVec2, Vec2};
use ldtk_rust::{EntityInstance, FieldInstance, LayerInstance, Level, TileInstance};
use num_traits::AsPrimitive;
use quadtree_rs::area::{Area, AreaBuilder};
use quadtree_rs::point::Point;
......@@ -13,7 +12,7 @@ use serde::{Deserialize, Serialize};
use serde_json::{Map, Number, Value};
use crate::ldtk::{EntityInstance, FieldInstance, LayerInstance, Level, TileInstance};
use crate::utils::{Indexer, SerdeClone};
use crate::system::Indexer;
use crate::{get_ldtk_tile_scale, px_to_grid, MapQuery};
#[derive(Default, Clone, Debug, Ord, PartialOrd, PartialEq, Eq)]
......@@ -255,7 +254,7 @@ impl LdtkLayer {
let x = tile.px[0] / scale;
let y = tile.px[1] / scale;
position_lookup.insert((x, y).into(), tile.serde_clone());
position_lookup.insert((x, y).into(), tile.clone());
}
Self {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment