Hide GIDs as internal details (#135)
* Partial commit
* Partial commit
* Partial commit
* Some suggested changes and fixed tests (except infinite)
* Replaced `tile` member in `LayerTileRef` with a function to get an
`Option<&Tile>`.
* Replaced `Map::get_tile_by_gid` with `Map::get_tileset_for_gid`, which
just returns the `Option<&Tileset>`. It also does a reverse search,
which fixes the lookup in case an external tileset has grown since the
map was last saved.
* Replaced `Tileset::get_tile_by_gid` with `Tileset::get_tile`, since
subtracting of the `first_gid` already happens when creating the
`LayerTileRef`. Also, we eventually should remove `first_gid` from
`Tileset`, since it should be possible to share a single tileset
instance betweeen several maps.
* Pre-allocate the tiles hash map for the expected number of tiles and
use `or_default` instead of `or_insert_with(Default::default)`.
* [nonbuilding] Move ownership of tilesets
- Moves the ownership of tilesets from Map to an object implementing `TilesetCache`
* Clean up
* More cleanup
* Organize layers into modules
* Further modularization
* Add layer wrappers
* Implement `Clone + PartialEq + Debug` for wrappers
* Fix example
* Fix all tests except for test_infinite_tileset
* Move layer utils to its own module
* Better `Map::layers` documentation
* `TilesetCache` -> `cache::ResourceCache`
* Add `ResourcePath`, rename and add errors
* Interface changes
- Move embedded tilesets from cache to map
- Store `Option<LayerTileData>` instead of `LayerTileData`
* parser ->`&mut impl Iterator<Item=XmlEventResult>`
* Document that tilesets are ordered by first GID
* Fix the layer tiles using GIDs issue
* Run `cargo fix`
* Fix `test_infinite_tileset` tests
* Implement a way to access object tile data
* Rename `TiledWrapper` to `MapWrapper`
* More efficient `get_or_try_insert_tileset_with`
* Add `ResourcePathBuf`, use `Rc<Tileset>` in `Map`
* Remove `MapTileset::first_gid`
* Run `cargo fix`
* Remove unrelated `Tileset` changes
* Requested changes
* Avoid reference counting when accessing tiles
* Store tile data instead of (u32, u32)` in objects
* Remove unneeded functions from `ResourceCache`
* Address PR comments
* Misc improvements in `layers::tile`
* Improve example
* Convert `LayerTile` properties to fields
Co-authored-by:
Thorbjørn Lindeijer <bjorn@lindeijer.nl>
Showing
- CHANGELOG.md 2 additions, 1 deletionCHANGELOG.md
- README.md 2 additions, 0 deletionsREADME.md
- examples/main.rs 47 additions, 4 deletionsexamples/main.rs
- src/cache.rs 55 additions, 0 deletionssrc/cache.rs
- src/error.rs 37 additions, 16 deletionssrc/error.rs
- src/image.rs 4 additions, 7 deletionssrc/image.rs
- src/layers.rs 0 additions, 303 deletionssrc/layers.rs
- src/layers/image.rs 38 additions, 0 deletionssrc/layers/image.rs
- src/layers/mod.rs 130 additions, 0 deletionssrc/layers/mod.rs
- src/layers/object.rs 59 additions, 0 deletionssrc/layers/object.rs
- src/layers/tile/finite.rs 71 additions, 0 deletionssrc/layers/tile/finite.rs
- src/layers/tile/infinite.rs 91 additions, 0 deletionssrc/layers/tile/infinite.rs
- src/layers/tile/mod.rs 148 additions, 0 deletionssrc/layers/tile/mod.rs
- src/layers/tile/util.rs 140 additions, 0 deletionssrc/layers/tile/util.rs
- src/lib.rs 2 additions, 0 deletionssrc/lib.rs
- src/map.rs 183 additions, 40 deletionssrc/map.rs
- src/objects.rs 40 additions, 23 deletionssrc/objects.rs
- src/properties.rs 10 additions, 8 deletionssrc/properties.rs
- src/tile.rs 23 additions, 20 deletionssrc/tile.rs
- src/tileset.rs 85 additions, 74 deletionssrc/tileset.rs
Loading
Please register or sign in to comment