Skip to content

v0.9.0

Choose a tag to compare

@Trouv Trouv released this 11 Feb 17:18
e040747

0.9.0 (2024-02-11)

⚠ BREAKING CHANGES

  • upgrade to bevy 0.12 (#265)
  • upgrade to LDtk 1.5.3, dropping support for previous versions (#295)
  • add SpawnExclusions to LdtkSettings for skipping layers by identifier (#275)
  • add layer entity for Entity layers, changing the hierarchy (#257)
  • upgrade to LDtk types and examples to 1.4.1 (drop support for <1.4.1) (#256)
  • LdtkLevel renamed to LdtkExternalLevel and is no longer used as a component (#244)
  • redesign LdtkProject with better level data accessors and correct modeling of internal/external levels (#244)
  • use the bundle's Default implementation rather than the field's in LdtkEntity and LdtkIntCell derive macros (#222)
  • add RawLevelAccessor trait for LdtkJson level borrowing/iteration, replacing existing methods (#225)
  • add LevelIndices type defining a level's location in a project and use it in LevelSelection::Indices (#221)
  • change LevelEvent inner types from String to LevelIid (#219)
  • change LevelSet inner type from String to LevelIid (#219)
  • change LevelSelection::Iid inner type from String to LevelIid (#219)
  • replace LevelSet::from_iid with LevelSet::from_iids, which can convert from any collection of strings. (#219)
  • use new LevelIid type in LevelEvent, LevelSet, and LevelSelection, plus other improvements (#219)
  • LdtkProject::project and LdtkLevel::level fields have both been renamed to data (#206)
  • All fields of LdtkProject and LdtkLevel are now privatized, and have immutable getter methods (#206)
  • LevelMap and TilesetMap type aliases have been removed (#206)
  • LdtkAsset and LdtkProject are now exported in new assets module instead of lib.rs (#206)
  • asset Loader types are now private (#206)
  • LdtkAsset renamed to LdtkProject (#206)

Features

  • add LevelIndices type defining a level's location in a project and use it in LevelSelection::Indices (#221) (59618fe)
  • add RawLevelAccessor trait for LdtkJson level borrowing/iteration, replacing existing methods (#225) (d3de2d9)
  • add SpawnExclusions to LdtkSettings for skipping layers by identifier (#275) (282404d), closes #272
  • add layer entity for Entity layers, changing the hierarchy (#257) (ee20a53)
  • add LdtkJsonWithMetadata type for representing internal- and external-level project data with generics (#242) (630434a)
  • add LdtkProjectData for representing either internal- or external-level project data concretely (#243) (c530bc9)
  • add level locale types and begin splitting internal_levels and external_levels features (#237) (8129e55)
  • add LevelIid component and spawn it on every level (#215) (ad83455)
  • add LoadedLevel type that wraps around levels with complete data (#214) (3d40c15)
  • add types and traits around LevelMetadata (#229) (382dea2)
  • change LevelEvent inner types from String to LevelIid (#219) (0039ed7)
  • change LevelSelection::Iid inner type from String to LevelIid (#219) (0039ed7)
  • change LevelSet inner type from String to LevelIid (#219) (0039ed7)
  • LdtkLevel renamed to LdtkExternalLevel and is no longer used as a component (#244) (670cd4e)
  • redesign LdtkProject with better level data accessors and correct modeling of internal/external levels (#244) (670cd4e)
  • replace LevelSet::from_iid with LevelSet::from_iids, which can convert from any collection of strings. (#219) (0039ed7)
  • upgrade to bevy 0.12 (#265) (194731e)
  • upgrade to LDtk 1.5.3, dropping support for previous versions (#295) (4926a50)
  • upgrade to LDtk types and examples to 1.4.1 (drop support for <1.4.1) (#256) (ab21e2c)
  • use new LevelIid type in LevelEvent, LevelSet, and LevelSelection, plus other improvements (#219) (0039ed7)
  • use the bundle's Default implementation rather than the field's in LdtkEntity and LdtkIntCell derive macros (#222) (f003127)

Bug Fixes

  • don't apply level set until project and dependencies are completely loaded (#296) (dbfe1c6)
  • normalize resolved asset paths using path_clean (#255) (33a8998), closes #240
  • only spawn invisible tiles on first sub-layer of AutoTile+IntGrid layers (#231) (d2873e3)
  • recalculate layer offset to adjust for tileset sizes (#254) (c00085d)
  • use entity definition tile size instead of entity instance tile size as basis when calculating ldtk entity scale (#271) (833af01)

Documentation Changes

  • add 0.8 to 0.9 migration guide (#266) (bb91660)
  • add collectathon cargo example (#288) (32dfb85)
  • add mdbook with outline and introduction (#261) (810b25a)
  • add tile-based game example w/ a tutorial in the book, replacing getting-started guide (#269) (2d43efa)
  • document all-features in docs.rs (#252) (321bb07)
  • reference book in API ref and README.md, replacing redundant sections (#282) (e7afdad)
  • remove README.md caveat for hot reloading external levels (#253) (59eb6b3)
  • write Anatomy of the World chapter of book (#285) (29d5e33)
  • write Create bevy relations from ldtk entity references chapter of book (#287) (8080f24)
  • write Game Logic Integration chapter of the book (#279) (a62a556)
  • write Level Selection chapter of book (#284) (226c60c)
  • write Make level selection follow player chapter of book (#293) (201d908)
  • write Respawn levels and worlds chapter of book (#289) (55ed30f)

Code Refactors

  • LdtkAsset and LdtkProject are now exported in new assets module instead of lib.rs (#206) (fe44774)
  • LdtkAsset renamed to LdtkProject (#206) (fe44774)
  • LdtkProject::project and LdtkLevel::level fields have both been renamed to data (#206) (fe44774)
  • LevelMap and TilesetMap type aliases have been removed (#206) (fe44774)
  • All fields of LdtkProject and LdtkLevel are now privatized, and have immutable getter methods (#206) (fe44774)
  • asset Loader types are now private (#206) (fe44774)