Merge branch 'master' of https://github.com/huderlem/porymap into slam

This commit is contained in:
garak 2024-02-22 16:20:23 -05:00
commit 6520189352
50 changed files with 2647 additions and 1554 deletions

View file

@ -7,6 +7,25 @@ and this project somewhat adheres to [Semantic Versioning](https://semver.org/sp
The **"Breaking Changes"** listed below are changes that have been made in the decompilation projects (e.g. pokeemerald), which porymap requires in order to work properly. It also includes changes to the scripting API that may change the behavior of existing porymap scripts. If porymap is used with a project or API script that is not up-to-date with the breaking changes, then porymap will likely break or behave improperly.
## [Unreleased]
Nothing, yet.
## [5.4.0] - 2024-02-13
### Added
- Add a `Check for Updates` option to show new releases (Windows and macOS only).
### Changed
- If Wild Encounters fail to load they are now only disabled for that session, and the settings remain unchanged.
- Defaults are used if project constants are missing, rather than failing to open the project or changing settings.
- Selector images now center on the selection when eyedropping or zooming.
### Fixed
- Fix some minor visual issues with the various zoom sliders.
- Smooth out scrolling when mouse is over tile/metatile images.
- Fix the Tileset Editor selectors getting extra white space when changing tilesets.
- Fix a crash when adding disabled events with the Pencil tool.
- Fix error log about failing to find the scripts file when a new map is created.
## [5.3.0] - 2024-01-15
### Added
- Add zoom sliders to the Tileset Editor.
- Add `getMetatileBehaviorName` and `setMetatileBehaviorName` to the API.
@ -27,6 +46,7 @@ The **"Breaking Changes"** listed below are changes that have been made in the d
- Fix slow speed for the script label autcomplete.
- Fix deleted script labels still appearing in the autocomplete after project reload.
- Fix the map search bar stealing focus on startup.
- Fix border metatiles view not resizing properly.
- Fix Open Recent Project not clearing the API overlay
- Fix API error reporting.
@ -460,7 +480,9 @@ The **"Breaking Changes"** listed below are changes that have been made in the d
## [1.0.0] - 2018-10-26
This was the initial release.
[Unreleased]: https://github.com/huderlem/porymap/compare/5.2.0...HEAD
[Unreleased]: https://github.com/huderlem/porymap/compare/5.4.0...HEAD
[5.4.0]: https://github.com/huderlem/porymap/compare/5.3.0...5.4.0
[5.3.0]: https://github.com/huderlem/porymap/compare/5.2.0...5.3.0
[5.2.0]: https://github.com/huderlem/porymap/compare/5.1.1...5.2.0
[5.1.1]: https://github.com/huderlem/porymap/compare/5.1.0...5.1.1
[5.1.0]: https://github.com/huderlem/porymap/compare/5.0.0...5.1.0

View file

@ -1,5 +1,5 @@
Version: 5.2.0
Date: January 2nd, 2024
Version: 5.4.0
Date: February 13th, 2024
This version of porymap works with pokeruby and pokeemerald as of the following commit hashes:
* pokeemerald: c76beed98990a57c84d3930190fd194abfedf7e8
@ -12,6 +12,47 @@ Please report any issues on GitHub: [https://github.com/huderlem/porymap/issues]
-------------------------
## [5.4.0] - 2024-02-13
### Added
- Add a `Check for Updates` option to show new releases (Windows and macOS only).
### Changed
- If Wild Encounters fail to load they are now only disabled for that session, and the settings remain unchanged.
- Defaults are used if project constants are missing, rather than failing to open the project or changing settings.
- Selector images now center on the selection when eyedropping or zooming.
### Fixed
- Fix some minor visual issues with the various zoom sliders.
- Smooth out scrolling when mouse is over tile/metatile images.
- Fix the Tileset Editor selectors getting extra white space when changing tilesets.
- Fix a crash when adding disabled events with the Pencil tool.
- Fix error log about failing to find the scripts file when a new map is created.
## [5.3.0] - 2024-01-15
### Added
- Add zoom sliders to the Tileset Editor.
- Add `getMetatileBehaviorName` and `setMetatileBehaviorName` to the API.
- Add `metatile_behaviors`, `num_primary_palettes`, and `num_secondary_palettes` to `constants` in the API.
### Changed
- Metatile ID strings are now padded to their current max, not the overall max.
- Non-existent directories are now removed from the Open Recent Project menu.
- Hovering on the layer view in the Tileset Editor now displays the tile ID.
- Labels in the Script dropdown are now sorted alphabetically.
- The name of the Heal Locations table is no longer enforced.
- The API functions `addImage` and `createImage` now support project-relative paths.
### Fixed
- Fix the metatile selector rectangle jumping when selecting up or left of the origin.
- Fix the event group tabs sometimes showing an event from the wrong group.
- Fix the clear buttons in the Shortcuts Editor not actually removing shortcuts.
- Fix slow speed for the script label autcomplete.
- Fix deleted script labels still appearing in the autocomplete after project reload.
- Fix the map search bar stealing focus on startup.
- Fix border metatiles view not resizing properly.
- Fix Open Recent Project not clearing the API overlay
- Fix API error reporting.
## [5.2.0] - 2024-01-02
### Added
- Add an editor window under `Options -> Project Settings...` to customize the project-specific settings in `porymap.project.cfg` and `porymap.user.cfg`.

View file

@ -86,10 +86,11 @@ In addition to these files, there are some specific symbol and macro names that
``symbol_obj_event_gfx_pointers``, ``gObjectEventGraphicsInfoPointers``, to map Object Event graphics IDs to graphics data
``symbol_pokemon_icon_table``, ``gMonIconTable``, to map species constants to icon images
``symbol_wild_encounters``, ``gWildMonHeaders``, output as the ``label`` property for the top-level wild ecounters JSON object
``symbol_heal_locations``, ``sHealLocations``, only if ``Respawn Map/NPC`` is disabled
``symbol_spawn_points``, ``sSpawnPoints``, only if ``Respawn Map/NPC`` is enabled
``symbol_spawn_maps``, ``sWhiteoutRespawnHealCenterMapIdxs``, values for Heal Locations ``Respawn Map`` field
``symbol_spawn_npcs``, ``sWhiteoutRespawnHealerNpcIds``, values for Heal Locations ``Respawn NPC`` field
``symbol_heal_locations_type``, ``struct HealLocation``, the type for the Heal Locations table
``symbol_heal_locations``, ``sHealLocations``, the default Heal Locations table name when ``Respawn Map/NPC`` is disabled
``symbol_spawn_points``, ``sSpawnPoints``, the default Heal Locations table name when ``Respawn Map/NPC`` is enabled
``symbol_spawn_maps``, ``u16 sWhiteoutRespawnHealCenterMapIdxs``, the type and table name for Heal Location ``Respawn Map`` values
``symbol_spawn_npcs``, ``u8 sWhiteoutRespawnHealerNpcIds``, the type and table name for Heal Location ``Respawn NPC`` values
``symbol_attribute_table``, ``sMetatileAttrMasks``, optionally read to get settings on ``Tilesets`` tab
``symbol_tilesets_prefix``, ``gTileset_``, for new tileset names and to extract base tileset names
``define_obj_event_count``, ``OBJECT_EVENT_TEMPLATES_COUNT``, to limit total Object Events

View file

@ -1069,6 +1069,26 @@ All tileset functions are callable via the global ``map`` object.
:param behavior: the behavior
:type behavior: number
.. js:function:: map.getMetatileBehaviorName(metatileId)
Gets the behavior name for the specified metatile. Returns an empty string if the metatile's behavior value has no name.
:param metatileId: id of target metatile
:type metatileId: number
:returns: the behavior name
:rtype: string
.. js:function:: map.setMetatileBehaviorName(metatileId, behavior)
Sets the behavior name for the specified metatile. Does nothing if there is no metatile behavior define with the specified name.
**Warning:** This function writes directly to the tileset. There is no undo for this.
:param metatileId: id of target metatile
:type metatileId: number
:param behavior: the behavior name
:type behavior: string
.. js:function:: map.getMetatileAttributes(metatileId)
Gets the raw attributes value for the specified metatile.
@ -2082,6 +2102,14 @@ All constants are accessible via the global ``constants`` object.
The maximum number of metatiles in a secondary tileset.
.. js:attribute:: constants.num_primary_palettes
The number of palettes in a primary tileset.
.. js:attribute:: constants.num_secondary_palettes
The number of palettes in a secondary tileset.
.. js:attribute:: constants.layers_per_metatile
The number of tile layers used in each metatile. This will either be ``2`` or ``3``, depending on the config setting ``enable_triple_layer_metatiles``.
@ -2090,6 +2118,10 @@ All constants are accessible via the global ``constants`` object.
The number of tiles in each metatile. This will either be ``8`` or ``12``, depending on the config setting ``enable_triple_layer_metatiles``.
.. js:attribute:: constants.metatile_behaviors
An object mapping metatile behavior names to their values. For example, ``constants.metatile_behaviors["MB_TALL_GRASS"]`` would normally be ``2``.
.. js:attribute:: constants.base_game_version
The string value of the config setting ``base_game_version``. This will either be ``pokeruby``, ``pokefirered``, or ``pokeemerald``.

View file

@ -7,6 +7,34 @@ and this project somewhat adheres to [Semantic Versioning](https://semver.org/sp
The **"Breaking Changes"** listed below are changes that have been made in the decompilation projects (e.g. pokeemerald), which porymap requires in order to work properly. It also includes changes to the scripting API that may change the behavior of existing porymap scripts. If porymap is used with a project or API script that is not up-to-date with the breaking changes, then porymap will likely break or behave improperly.
## [Unreleased]
Nothing, yet.
## [5.3.0] - 2024-01-15
### Added
- Add zoom sliders to the Tileset Editor.
- Add `getMetatileBehaviorName` and `setMetatileBehaviorName` to the API.
- Add `metatile_behaviors`, `num_primary_palettes`, and `num_secondary_palettes` to `constants` in the API.
### Changed
- Metatile ID strings are now padded to their current max, not the overall max.
- Non-existent directories are now removed from the Open Recent Project menu.
- Hovering on the layer view in the Tileset Editor now displays the tile ID.
- Labels in the Script dropdown are now sorted alphabetically.
- The name of the Heal Locations table is no longer enforced.
- The API functions `addImage` and `createImage` now support project-relative paths.
### Fixed
- Fix the metatile selector rectangle jumping when selecting up or left of the origin.
- Fix the event group tabs sometimes showing an event from the wrong group.
- Fix the clear buttons in the Shortcuts Editor not actually removing shortcuts.
- Fix slow speed for the script label autcomplete.
- Fix deleted script labels still appearing in the autocomplete after project reload.
- Fix the map search bar stealing focus on startup.
- Fix border metatiles view not resizing properly.
- Fix Open Recent Project not clearing the API overlay
- Fix API error reporting.
## [5.2.0] - 2024-01-02
### Added
- Add an editor window under `Options -> Project Settings...` to customize the project-specific settings in `porymap.project.cfg` and `porymap.user.cfg`.
- Add an editor window under `Options -> Custom Scripts...` for Porymap's API scripts.
@ -436,7 +464,9 @@ The **"Breaking Changes"** listed below are changes that have been made in the d
## [1.0.0] - 2018-10-26
This was the initial release.
[Unreleased]: https://github.com/huderlem/porymap/compare/5.1.1...HEAD
[Unreleased]: https://github.com/huderlem/porymap/compare/5.3.0...HEAD
[5.3.0]: https://github.com/huderlem/porymap/compare/5.2.0...5.3.0
[5.2.0]: https://github.com/huderlem/porymap/compare/5.1.1...5.2.0
[5.1.1]: https://github.com/huderlem/porymap/compare/5.1.0...5.1.1
[5.1.0]: https://github.com/huderlem/porymap/compare/5.0.0...5.1.0
[5.0.0]: https://github.com/huderlem/porymap/compare/4.5.0...5.0.0

View file

@ -218,118 +218,125 @@
<p class="caption"><span class="caption-text">Reference</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="reference/changelog.html">Changelog</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#unreleased">Unreleased</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#unreleased">Unreleased</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id1">5.3.0 - 2024-01-15</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#added">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#changed">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#fixed">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id1">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id2">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id3">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id4">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id2">5.2.0 - 2024-01-02</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id3">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id4">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id5">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id5">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id6">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id7">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id8">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id6">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id7">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id8">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id9">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id9">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id10">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id11">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id12">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id13">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id14">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#breaking-changes">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id10">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id11">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id12">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id15">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id16">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id17">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id13">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id14">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id15">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id16">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id18">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id19">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id20">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id21">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id17">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id18">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id19">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id20">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id22">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id23">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id24">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id25">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id21">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id22">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id23">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id24">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id26">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id27">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id28">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id29">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id25">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id26">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id27">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id28">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id30">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id31">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id32">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id33">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id29">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id30">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id31">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id32">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id34">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id35">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id36">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id37">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id33">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id34">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id35">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id36">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id37">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id38">Breaking Changes</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id38">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id39">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id40">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id41">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id42">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id43">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id42">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id43">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id44">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id45">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id46">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id44">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id45">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id46">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id47">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id47">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id48">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id49">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id49">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id50">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id51">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id52">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id53">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id54">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id55">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id56">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id57">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id54">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id55">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id56">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id57">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id58">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id58">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id59">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id60">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id59">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id60">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id61">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id62">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id61">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id62">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id63">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id64">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id63">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id64">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id65">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id66">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id66">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id67">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id68">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id69">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id70">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id71">1.0.0 - 2018-10-26</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id71">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id72">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id73">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id74">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id75">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id76">1.0.0 - 2018-10-26</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="reference/related-projects.html">Related Projects</a></li>
@ -421,10 +428,16 @@
<li><a href="manual/scripting-capabilities.html#constants.max_primary_tiles">constants.max_primary_tiles (constants attribute)</a>
</li>
<li><a href="manual/scripting-capabilities.html#constants.max_secondary_metatiles">constants.max_secondary_metatiles (constants attribute)</a>
</li>
<li><a href="manual/scripting-capabilities.html#constants.max_secondary_tiles">constants.max_secondary_tiles (constants attribute)</a>
</li>
</ul></td>
<td style="width: 33%; vertical-align: top;"><ul>
<li><a href="manual/scripting-capabilities.html#constants.max_secondary_tiles">constants.max_secondary_tiles (constants attribute)</a>
<li><a href="manual/scripting-capabilities.html#constants.metatile_behaviors">constants.metatile_behaviors (constants attribute)</a>
</li>
<li><a href="manual/scripting-capabilities.html#constants.num_primary_palettes">constants.num_primary_palettes (constants attribute)</a>
</li>
<li><a href="manual/scripting-capabilities.html#constants.num_secondary_palettes">constants.num_secondary_palettes (constants attribute)</a>
</li>
<li><a href="manual/scripting-capabilities.html#constants.tiles_per_metatile">constants.tiles_per_metatile (constants attribute)</a>
</li>
@ -479,6 +492,8 @@
<li><a href="manual/scripting-capabilities.html#map.getMetatileAttributes">map.getMetatileAttributes() (map method)</a>
</li>
<li><a href="manual/scripting-capabilities.html#map.getMetatileBehavior">map.getMetatileBehavior() (map method)</a>
</li>
<li><a href="manual/scripting-capabilities.html#map.getMetatileBehaviorName">map.getMetatileBehaviorName() (map method)</a>
</li>
<li><a href="manual/scripting-capabilities.html#map.getMetatileEncounterType">map.getMetatileEncounterType() (map method)</a>
</li>
@ -579,6 +594,8 @@
<li><a href="manual/scripting-capabilities.html#map.setMetatileAttributes">map.setMetatileAttributes() (map method)</a>
</li>
<li><a href="manual/scripting-capabilities.html#map.setMetatileBehavior">map.setMetatileBehavior() (map method)</a>
</li>
<li><a href="manual/scripting-capabilities.html#map.setMetatileBehaviorName">map.setMetatileBehaviorName() (map method)</a>
</li>
<li><a href="manual/scripting-capabilities.html#map.setMetatileEncounterType">map.setMetatileEncounterType() (map method)</a>
</li>

View file

@ -218,118 +218,125 @@
<p class="caption"><span class="caption-text">Reference</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="reference/changelog.html">Changelog</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#unreleased">Unreleased</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#unreleased">Unreleased</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id1">5.3.0 - 2024-01-15</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#added">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#changed">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#fixed">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id1">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id2">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id3">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id4">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id2">5.2.0 - 2024-01-02</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id3">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id4">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id5">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id5">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id6">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id7">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id8">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id6">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id7">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id8">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id9">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id9">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id10">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id11">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id12">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id13">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id14">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#breaking-changes">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id10">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id11">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id12">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id15">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id16">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id17">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id13">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id14">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id15">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id16">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id18">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id19">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id20">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id21">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id17">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id18">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id19">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id20">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id22">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id23">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id24">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id25">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id21">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id22">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id23">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id24">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id26">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id27">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id28">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id29">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id25">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id26">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id27">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id28">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id30">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id31">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id32">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id33">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id29">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id30">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id31">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id32">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id34">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id35">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id36">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id37">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id33">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id34">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id35">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id36">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id37">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id38">Breaking Changes</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id38">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id39">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id40">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id41">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id42">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id43">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id42">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id43">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id44">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id45">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id46">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id44">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id45">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id46">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id47">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id47">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id48">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id49">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id49">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id50">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id51">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id52">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id53">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id54">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id55">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id56">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id57">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id54">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id55">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id56">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id57">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id58">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id58">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id59">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id60">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id59">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id60">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id61">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id62">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id61">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id62">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id63">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id64">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id63">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id64">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id65">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id66">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id66">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id67">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id68">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id69">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id70">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id71">1.0.0 - 2018-10-26</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id71">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id72">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id73">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id74">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id75">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id76">1.0.0 - 2018-10-26</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="reference/related-projects.html">Related Projects</a></li>
@ -512,24 +519,26 @@
<ul>
<li class="toctree-l1"><a class="reference internal" href="reference/changelog.html">Changelog</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#unreleased">Unreleased</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id1">5.1.1 - 2023-02-20</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id5">5.1.0 - 2023-01-22</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id9">5.0.0 - 2022-10-30</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id13">4.5.0 - 2021-12-26</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id17">4.4.0 - 2020-12-20</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id21">4.3.1 - 2020-07-17</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id25">4.3.0 - 2020-06-27</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id29">4.2.0 - 2020-06-06</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id33">4.1.0 - 2020-05-18</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id37">4.0.0 - 2020-04-28</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id42">3.0.1 - 2020-03-04</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id44">3.0.0 - 2020-03-04</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id49">2.0.0 - 2019-10-16</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id54">1.2.2 - 2019-05-16</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id58">1.2.1 - 2019-02-16</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id61">1.2.0 - 2019-02-04</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id66">1.1.0 - 2018-12-27</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id71">1.0.0 - 2018-10-26</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id1">5.3.0 - 2024-01-15</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id2">5.2.0 - 2024-01-02</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id6">5.1.1 - 2023-02-20</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id10">5.1.0 - 2023-01-22</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id14">5.0.0 - 2022-10-30</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id18">4.5.0 - 2021-12-26</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id22">4.4.0 - 2020-12-20</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id26">4.3.1 - 2020-07-17</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id30">4.3.0 - 2020-06-27</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id34">4.2.0 - 2020-06-06</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id38">4.1.0 - 2020-05-18</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id42">4.0.0 - 2020-04-28</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id47">3.0.1 - 2020-03-04</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id49">3.0.0 - 2020-03-04</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id54">2.0.0 - 2019-10-16</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id59">1.2.2 - 2019-05-16</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id63">1.2.1 - 2019-02-16</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id66">1.2.0 - 2019-02-04</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id71">1.1.0 - 2018-12-27</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id76">1.0.0 - 2018-10-26</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="reference/related-projects.html">Related Projects</a></li>

View file

@ -219,118 +219,125 @@
<p class="caption"><span class="caption-text">Reference</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../reference/changelog.html">Changelog</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#unreleased">Unreleased</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#unreleased">Unreleased</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id1">5.3.0 - 2024-01-15</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#added">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#changed">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#fixed">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id1">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id2">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id3">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id4">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id2">5.2.0 - 2024-01-02</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id3">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id4">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id5">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id5">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id6">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id7">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id8">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id6">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id7">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id8">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id9">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id9">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id10">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id11">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id12">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id13">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id14">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#breaking-changes">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id10">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id11">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id12">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id15">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id16">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id17">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id13">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id14">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id15">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id16">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id18">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id19">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id20">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id21">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id17">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id18">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id19">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id20">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id22">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id23">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id24">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id25">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id21">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id22">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id23">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id24">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id26">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id27">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id28">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id29">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id25">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id26">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id27">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id28">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id30">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id31">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id32">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id33">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id29">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id30">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id31">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id32">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id34">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id35">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id36">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id37">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id33">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id34">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id35">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id36">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id37">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id38">Breaking Changes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id38">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id39">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id40">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id41">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id42">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id43">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id42">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id43">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id44">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id45">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id46">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id44">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id45">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id46">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id47">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id47">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id48">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id49">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id49">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id50">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id51">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id52">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id53">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id54">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id55">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id56">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id57">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id54">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id55">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id56">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id57">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id58">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id58">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id59">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id60">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id59">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id60">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id61">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id62">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id61">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id62">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id63">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id64">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id63">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id64">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id65">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id66">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id66">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id67">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id68">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id69">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id70">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id71">1.0.0 - 2018-10-26</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id71">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id72">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id73">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id74">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id75">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id76">1.0.0 - 2018-10-26</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../reference/related-projects.html">Related Projects</a></li>

View file

@ -219,118 +219,125 @@
<p class="caption"><span class="caption-text">Reference</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../reference/changelog.html">Changelog</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#unreleased">Unreleased</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#unreleased">Unreleased</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id1">5.3.0 - 2024-01-15</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#added">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#changed">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#fixed">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id1">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id2">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id3">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id4">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id2">5.2.0 - 2024-01-02</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id3">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id4">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id5">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id5">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id6">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id7">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id8">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id6">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id7">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id8">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id9">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id9">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id10">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id11">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id12">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id13">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id14">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#breaking-changes">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id10">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id11">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id12">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id15">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id16">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id17">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id13">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id14">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id15">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id16">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id18">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id19">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id20">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id21">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id17">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id18">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id19">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id20">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id22">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id23">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id24">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id25">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id21">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id22">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id23">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id24">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id26">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id27">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id28">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id29">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id25">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id26">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id27">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id28">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id30">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id31">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id32">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id33">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id29">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id30">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id31">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id32">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id34">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id35">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id36">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id37">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id33">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id34">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id35">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id36">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id37">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id38">Breaking Changes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id38">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id39">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id40">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id41">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id42">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id43">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id42">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id43">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id44">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id45">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id46">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id44">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id45">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id46">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id47">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id47">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id48">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id49">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id49">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id50">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id51">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id52">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id53">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id54">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id55">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id56">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id57">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id54">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id55">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id56">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id57">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id58">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id58">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id59">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id60">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id59">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id60">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id61">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id62">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id61">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id62">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id63">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id64">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id63">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id64">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id65">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id66">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id66">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id67">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id68">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id69">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id70">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id71">1.0.0 - 2018-10-26</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id71">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id72">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id73">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id74">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id75">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id76">1.0.0 - 2018-10-26</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../reference/related-projects.html">Related Projects</a></li>

View file

@ -219,118 +219,125 @@
<p class="caption"><span class="caption-text">Reference</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../reference/changelog.html">Changelog</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#unreleased">Unreleased</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#unreleased">Unreleased</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id1">5.3.0 - 2024-01-15</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#added">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#changed">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#fixed">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id1">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id2">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id3">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id4">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id2">5.2.0 - 2024-01-02</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id3">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id4">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id5">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id5">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id6">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id7">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id8">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id6">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id7">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id8">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id9">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id9">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id10">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id11">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id12">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id13">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id14">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#breaking-changes">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id10">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id11">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id12">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id15">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id16">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id17">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id13">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id14">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id15">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id16">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id18">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id19">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id20">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id21">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id17">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id18">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id19">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id20">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id22">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id23">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id24">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id25">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id21">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id22">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id23">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id24">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id26">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id27">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id28">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id29">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id25">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id26">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id27">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id28">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id30">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id31">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id32">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id33">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id29">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id30">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id31">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id32">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id34">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id35">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id36">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id37">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id33">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id34">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id35">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id36">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id37">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id38">Breaking Changes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id38">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id39">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id40">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id41">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id42">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id43">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id42">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id43">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id44">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id45">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id46">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id44">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id45">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id46">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id47">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id47">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id48">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id49">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id49">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id50">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id51">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id52">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id53">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id54">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id55">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id56">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id57">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id54">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id55">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id56">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id57">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id58">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id58">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id59">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id60">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id59">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id60">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id61">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id62">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id61">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id62">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id63">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id64">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id63">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id64">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id65">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id66">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id66">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id67">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id68">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id69">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id70">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id71">1.0.0 - 2018-10-26</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id71">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id72">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id73">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id74">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id75">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id76">1.0.0 - 2018-10-26</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../reference/related-projects.html">Related Projects</a></li>
@ -749,195 +756,199 @@ to a file, it probably is not a good idea to edit yourself unless otherwise note
<td><code class="docutils literal notranslate"><span class="pre">gWildMonHeaders</span></code></td>
<td>output as the <code class="docutils literal notranslate"><span class="pre">label</span></code> property for the top-level wild ecounters JSON object</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">symbol_heal_locations</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">symbol_heal_locations_type</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">struct</span> <span class="pre">HealLocation</span></code></td>
<td>the type for the Heal Locations table</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">symbol_heal_locations</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">sHealLocations</span></code></td>
<td>only if <code class="docutils literal notranslate"><span class="pre">Respawn</span> <span class="pre">Map/NPC</span></code> is disabled</td>
<td>the default Heal Locations table name when <code class="docutils literal notranslate"><span class="pre">Respawn</span> <span class="pre">Map/NPC</span></code> is disabled</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">symbol_spawn_points</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">symbol_spawn_points</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">sSpawnPoints</span></code></td>
<td>only if <code class="docutils literal notranslate"><span class="pre">Respawn</span> <span class="pre">Map/NPC</span></code> is enabled</td>
<td>the default Heal Locations table name when <code class="docutils literal notranslate"><span class="pre">Respawn</span> <span class="pre">Map/NPC</span></code> is enabled</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">symbol_spawn_maps</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">sWhiteoutRespawnHealCenterMapIdxs</span></code></td>
<td>values for Heal Locations <code class="docutils literal notranslate"><span class="pre">Respawn</span> <span class="pre">Map</span></code> field</td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">symbol_spawn_maps</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">u16</span> <span class="pre">sWhiteoutRespawnHealCenterMapIdxs</span></code></td>
<td>the type and table name for Heal Location <code class="docutils literal notranslate"><span class="pre">Respawn</span> <span class="pre">Map</span></code> values</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">symbol_spawn_npcs</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">sWhiteoutRespawnHealerNpcIds</span></code></td>
<td>values for Heal Locations <code class="docutils literal notranslate"><span class="pre">Respawn</span> <span class="pre">NPC</span></code> field</td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">symbol_spawn_npcs</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">u8</span> <span class="pre">sWhiteoutRespawnHealerNpcIds</span></code></td>
<td>the type and table name for Heal Location <code class="docutils literal notranslate"><span class="pre">Respawn</span> <span class="pre">NPC</span></code> values</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">symbol_attribute_table</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">symbol_attribute_table</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">sMetatileAttrMasks</span></code></td>
<td>optionally read to get settings on <code class="docutils literal notranslate"><span class="pre">Tilesets</span></code> tab</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">symbol_tilesets_prefix</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">symbol_tilesets_prefix</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">gTileset_</span></code></td>
<td>for new tileset names and to extract base tileset names</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_obj_event_count</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_obj_event_count</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">OBJECT_EVENT_TEMPLATES_COUNT</span></code></td>
<td>to limit total Object Events</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_min_level</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_min_level</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">MIN_LEVEL</span></code></td>
<td>minimum wild encounters level</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_max_level</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_max_level</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">MAX_LEVEL</span></code></td>
<td>maximum wild encounters level</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_tiles_primary</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_tiles_primary</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">NUM_TILES_IN_PRIMARY</span></code></td>
<td>&#160;</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_tiles_total</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_tiles_total</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">NUM_TILES_TOTAL</span></code></td>
<td>&#160;</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_metatiles_primary</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_metatiles_primary</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">NUM_METATILES_IN_PRIMARY</span></code></td>
<td>total metatiles are calculated using metatile ID mask</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_pals_primary</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_pals_primary</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">NUM_PALS_IN_PRIMARY</span></code></td>
<td>&#160;</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_pals_total</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_pals_total</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">NUM_PALS_TOTAL</span></code></td>
<td>&#160;</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_map_size</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_map_size</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">MAX_MAP_DATA_SIZE</span></code></td>
<td>to limit map dimensions</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_mask_metatile</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_mask_metatile</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">MAPGRID_METATILE_ID_MASK</span></code></td>
<td>optionally read to get settings on <code class="docutils literal notranslate"><span class="pre">Maps</span></code> tab</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_mask_collision</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_mask_collision</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">MAPGRID_COLLISION_MASK</span></code></td>
<td>optionally read to get settings on <code class="docutils literal notranslate"><span class="pre">Maps</span></code> tab</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_mask_elevation</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_mask_elevation</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">MAPGRID_ELEVATION_MASK</span></code></td>
<td>optionally read to get settings on <code class="docutils literal notranslate"><span class="pre">Maps</span></code> tab</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_mask_behavior</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_mask_behavior</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">METATILE_ATTR_BEHAVIOR_MASK</span></code></td>
<td>optionally read to get settings on <code class="docutils literal notranslate"><span class="pre">Tilesets</span></code> tab</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_mask_layer</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_mask_layer</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">METATILE_ATTR_LAYER_MASK</span></code></td>
<td>optionally read to get settings on <code class="docutils literal notranslate"><span class="pre">Tilesets</span></code> tab</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_attribute_behavior</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_attribute_behavior</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">METATILE_ATTRIBUTE_BEHAVIOR</span></code></td>
<td>name used to extract setting from <code class="docutils literal notranslate"><span class="pre">symbol_attribute_table</span></code></td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_attribute_layer</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_attribute_layer</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">METATILE_ATTRIBUTE_LAYER_TYPE</span></code></td>
<td>name used to extract setting from <code class="docutils literal notranslate"><span class="pre">symbol_attribute_table</span></code></td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_attribute_terrain</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_attribute_terrain</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">METATILE_ATTRIBUTE_TERRAIN</span></code></td>
<td>name used to extract setting from <code class="docutils literal notranslate"><span class="pre">symbol_attribute_table</span></code></td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_attribute_encounter</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_attribute_encounter</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">METATILE_ATTRIBUTE_ENCOUNTER_TYPE</span></code></td>
<td>name used to extract setting from <code class="docutils literal notranslate"><span class="pre">symbol_attribute_table</span></code></td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_metatile_label_prefix</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_metatile_label_prefix</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">METATILE_</span></code></td>
<td>expected prefix for metatile label macro names</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_heal_locations_prefix</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_heal_locations_prefix</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">HEAL_LOCATION_</span></code></td>
<td>output as prefix for Heal Location IDs if <code class="docutils literal notranslate"><span class="pre">Respawn</span> <span class="pre">Map/NPC</span></code> is disabled</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_spawn_prefix</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_spawn_prefix</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">SPAWN_</span></code></td>
<td>output as prefix for Heal Location IDs if <code class="docutils literal notranslate"><span class="pre">Respawn</span> <span class="pre">Map/NPC</span></code> is enabled</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_map_prefix</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_map_prefix</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">MAP_</span></code></td>
<td>expected prefix for map macro names</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_map_dynamic</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_map_dynamic</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">DYNAMIC</span></code></td>
<td>macro name after prefix for Dynamic maps</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_map_empty</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_map_empty</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">UNDEFINED</span></code></td>
<td>macro name after prefix for empty maps</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_map_section_prefix</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_map_section_prefix</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">MAPSEC_</span></code></td>
<td>expected prefix for location macro names</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_map_section_empty</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_map_section_empty</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">NONE</span></code></td>
<td>macro name after prefix for empty region map sections</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">define_map_section_count</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">define_map_section_count</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">COUNT</span></code></td>
<td>macro name after prefix for total number of region map sections</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">regex_behaviors</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">regex_behaviors</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">\bMB_</span></code></td>
<td>regex to find metatile behavior macro names</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">regex_obj_event_gfx</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">regex_obj_event_gfx</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">\bOBJ_EVENT_GFX_</span></code></td>
<td>regex to find Object Event graphics ID macro names</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">regex_items</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">regex_items</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">\bITEM_(?!(B_)?USE_)</span></code></td>
<td>regex to find item macro names</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">regex_flags</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">regex_flags</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">\bFLAG_</span></code></td>
<td>regex to find flag macro names</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">regex_vars</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">regex_vars</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">\bVAR_</span></code></td>
<td>regex to find var macro names</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">regex_movement_types</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">regex_movement_types</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">\bMOVEMENT_TYPE_</span></code></td>
<td>regex to find movement type macro names</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">regex_map_types</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">regex_map_types</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">\bMAP_TYPE_</span></code></td>
<td>regex to find map type macro names</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">regex_battle_scenes</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">regex_battle_scenes</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">\bMAP_BATTLE_SCENE_</span></code></td>
<td>regex to find battle scene macro names</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">regex_weather</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">regex_weather</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">\bWEATHER_</span></code></td>
<td>regex to find map weather macro names</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">regex_coord_event_weather</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">regex_coord_event_weather</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">\bCOORD_EVENT_WEATHER_</span></code></td>
<td>regex to find weather trigger macro names</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">regex_secret_bases</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">regex_secret_bases</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">\bSECRET_BASE_[A-Za-z0-9_]*_[0-9]+</span></code></td>
<td>regex to find secret base ID macro names</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">regex_sign_facing_directions</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">regex_sign_facing_directions</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">\bBG_EVENT_PLAYER_FACING_</span></code></td>
<td>regex to find sign facing direction macro names</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">regex_trainer_types</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">regex_trainer_types</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">\bTRAINER_TYPE_</span></code></td>
<td>regex to find trainer type macro names</td>
</tr>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">regex_music</span></code></td>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">regex_music</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">\b(SE|MUS)_</span></code></td>
<td>regex to find music macro names</td>
</tr>
<tr class="row-odd"><td><code class="docutils literal notranslate"><span class="pre">regex_species</span></code></td>
<tr class="row-even"><td><code class="docutils literal notranslate"><span class="pre">regex_species</span></code></td>
<td><code class="docutils literal notranslate"><span class="pre">\bSPECIES_</span></code></td>
<td>regex to find species macro names</td>
</tr>

View file

@ -219,118 +219,125 @@
<p class="caption"><span class="caption-text">Reference</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../reference/changelog.html">Changelog</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#unreleased">Unreleased</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#unreleased">Unreleased</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id1">5.3.0 - 2024-01-15</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#added">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#changed">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#fixed">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id1">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id2">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id3">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id4">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id2">5.2.0 - 2024-01-02</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id3">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id4">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id5">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id5">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id6">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id7">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id8">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id6">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id7">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id8">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id9">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id9">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id10">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id11">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id12">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id13">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id14">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#breaking-changes">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id10">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id11">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id12">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id15">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id16">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id17">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id13">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id14">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id15">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id16">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id18">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id19">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id20">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id21">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id17">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id18">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id19">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id20">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id22">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id23">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id24">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id25">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id21">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id22">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id23">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id24">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id26">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id27">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id28">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id29">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id25">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id26">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id27">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id28">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id30">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id31">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id32">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id33">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id29">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id30">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id31">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id32">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id34">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id35">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id36">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id37">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id33">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id34">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id35">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id36">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id37">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id38">Breaking Changes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id38">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id39">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id40">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id41">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id42">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id43">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id42">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id43">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id44">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id45">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id46">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id44">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id45">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id46">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id47">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id47">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id48">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id49">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id49">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id50">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id51">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id52">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id53">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id54">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id55">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id56">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id57">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id54">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id55">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id56">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id57">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id58">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id58">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id59">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id60">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id59">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id60">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id61">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id62">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id61">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id62">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id63">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id64">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id63">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id64">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id65">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id66">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id66">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id67">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id68">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id69">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id70">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id71">1.0.0 - 2018-10-26</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id71">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id72">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id73">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id74">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id75">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id76">1.0.0 - 2018-10-26</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../reference/related-projects.html">Related Projects</a></li>
@ -2348,6 +2355,48 @@
</table>
</dd></dl>
<dl class="function">
<dt id="map.getMetatileBehaviorName">
<code class="descclassname">map.</code><code class="descname">getMetatileBehaviorName</code><span class="sig-paren">(</span><em>metatileId</em><span class="sig-paren">)</span><a class="headerlink" href="#map.getMetatileBehaviorName" title="Permalink to this definition"></a></dt>
<dd><p>Gets the behavior name for the specified metatile. Returns an empty string if the metatiles behavior value has no name.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Arguments:</th><td class="field-body"><ul class="first simple">
<li><strong>metatileId</strong> (<em>number</em>) id of target metatile</li>
</ul>
</td>
</tr>
<tr class="field-even field"><th class="field-name">Returns:</th><td class="field-body"><p class="first">the behavior name</p>
</td>
</tr>
<tr class="field-odd field"><th class="field-name">Return type:</th><td class="field-body"><p class="first last">string</p>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="function">
<dt id="map.setMetatileBehaviorName">
<code class="descclassname">map.</code><code class="descname">setMetatileBehaviorName</code><span class="sig-paren">(</span><em>metatileId</em>, <em>behavior</em><span class="sig-paren">)</span><a class="headerlink" href="#map.setMetatileBehaviorName" title="Permalink to this definition"></a></dt>
<dd><p>Sets the behavior name for the specified metatile. Does nothing if there is no metatile behavior define with the specified name.</p>
<p><strong>Warning:</strong> This function writes directly to the tileset. There is no undo for this.</p>
<table class="docutils field-list" frame="void" rules="none">
<col class="field-name" />
<col class="field-body" />
<tbody valign="top">
<tr class="field-odd field"><th class="field-name">Arguments:</th><td class="field-body"><ul class="first last simple">
<li><strong>metatileId</strong> (<em>number</em>) id of target metatile</li>
<li><strong>behavior</strong> (<em>string</em>) the behavior name</li>
</ul>
</td>
</tr>
</tbody>
</table>
</dd></dl>
<dl class="function">
<dt id="map.getMetatileAttributes">
<code class="descclassname">map.</code><code class="descname">getMetatileAttributes</code><span class="sig-paren">(</span><em>metatileId</em><span class="sig-paren">)</span><a class="headerlink" href="#map.getMetatileAttributes" title="Permalink to this definition"></a></dt>
@ -4227,6 +4276,18 @@
<dd><p>The maximum number of metatiles in a secondary tileset.</p>
</dd></dl>
<dl class="attribute">
<dt id="constants.num_primary_palettes">
<code class="descclassname">constants.</code><code class="descname">num_primary_palettes</code><a class="headerlink" href="#constants.num_primary_palettes" title="Permalink to this definition"></a></dt>
<dd><p>The number of palettes in a primary tileset.</p>
</dd></dl>
<dl class="attribute">
<dt id="constants.num_secondary_palettes">
<code class="descclassname">constants.</code><code class="descname">num_secondary_palettes</code><a class="headerlink" href="#constants.num_secondary_palettes" title="Permalink to this definition"></a></dt>
<dd><p>The number of palettes in a secondary tileset.</p>
</dd></dl>
<dl class="attribute">
<dt id="constants.layers_per_metatile">
<code class="descclassname">constants.</code><code class="descname">layers_per_metatile</code><a class="headerlink" href="#constants.layers_per_metatile" title="Permalink to this definition"></a></dt>
@ -4239,6 +4300,12 @@
<dd><p>The number of tiles in each metatile. This will either be <code class="docutils literal notranslate"><span class="pre">8</span></code> or <code class="docutils literal notranslate"><span class="pre">12</span></code>, depending on the config setting <code class="docutils literal notranslate"><span class="pre">enable_triple_layer_metatiles</span></code>.</p>
</dd></dl>
<dl class="attribute">
<dt id="constants.metatile_behaviors">
<code class="descclassname">constants.</code><code class="descname">metatile_behaviors</code><a class="headerlink" href="#constants.metatile_behaviors" title="Permalink to this definition"></a></dt>
<dd><p>An object mapping metatile behavior names to their values. For example, <code class="docutils literal notranslate"><span class="pre">constants.metatile_behaviors[&quot;MB_TALL_GRASS&quot;]</span></code> would normally be <code class="docutils literal notranslate"><span class="pre">2</span></code>.</p>
</dd></dl>
<dl class="attribute">
<dt id="constants.base_game_version">
<code class="descclassname">constants.</code><code class="descname">base_game_version</code><a class="headerlink" href="#constants.base_game_version" title="Permalink to this definition"></a></dt>

View file

@ -219,118 +219,125 @@
<p class="caption"><span class="caption-text">Reference</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../reference/changelog.html">Changelog</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#unreleased">Unreleased</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#unreleased">Unreleased</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id1">5.3.0 - 2024-01-15</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#added">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#changed">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#fixed">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id1">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id2">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id3">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id4">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id2">5.2.0 - 2024-01-02</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id3">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id4">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id5">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id5">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id6">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id7">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id8">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id6">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id7">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id8">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id9">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id9">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id10">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id11">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id12">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id13">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id14">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#breaking-changes">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id10">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id11">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id12">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id15">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id16">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id17">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id13">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id14">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id15">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id16">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id18">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id19">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id20">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id21">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id17">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id18">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id19">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id20">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id22">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id23">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id24">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id25">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id21">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id22">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id23">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id24">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id26">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id27">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id28">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id29">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id25">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id26">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id27">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id28">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id30">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id31">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id32">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id33">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id29">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id30">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id31">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id32">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id34">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id35">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id36">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id37">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id33">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id34">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id35">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id36">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id37">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id38">Breaking Changes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id38">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id39">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id40">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id41">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id42">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id43">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id42">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id43">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id44">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id45">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id46">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id44">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id45">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id46">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id47">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id47">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id48">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id49">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id49">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id50">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id51">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id52">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id53">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id54">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id55">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id56">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id57">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id54">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id55">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id56">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id57">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id58">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id58">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id59">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id60">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id59">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id60">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id61">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id62">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id61">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id62">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id63">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id64">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id63">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id64">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id65">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id66">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id66">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id67">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id68">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id69">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id70">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id71">1.0.0 - 2018-10-26</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id71">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id72">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id73">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id74">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id75">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id76">1.0.0 - 2018-10-26</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../reference/related-projects.html">Related Projects</a></li>

View file

@ -219,118 +219,125 @@
<p class="caption"><span class="caption-text">Reference</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../reference/changelog.html">Changelog</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#unreleased">Unreleased</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#unreleased">Unreleased</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id1">5.3.0 - 2024-01-15</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#added">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#changed">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#fixed">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id1">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id2">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id3">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id4">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id2">5.2.0 - 2024-01-02</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id3">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id4">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id5">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id5">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id6">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id7">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id8">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id6">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id7">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id8">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id9">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id9">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id10">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id11">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id12">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id13">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id14">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#breaking-changes">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id10">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id11">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id12">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id15">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id16">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id17">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id13">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id14">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id15">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id16">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id18">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id19">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id20">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id21">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id17">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id18">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id19">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id20">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id22">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id23">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id24">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id25">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id21">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id22">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id23">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id24">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id26">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id27">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id28">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id29">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id25">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id26">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id27">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id28">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id30">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id31">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id32">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id33">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id29">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id30">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id31">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id32">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id34">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id35">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id36">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id37">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id33">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id34">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id35">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id36">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id37">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id38">Breaking Changes</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id38">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id39">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id40">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id41">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id42">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id43">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id42">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id43">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id44">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id45">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id46">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id44">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id45">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id46">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id47">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id47">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id48">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id49">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id49">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id50">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id51">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id52">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id53">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id54">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id55">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id56">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id57">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id54">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id55">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id56">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id57">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id58">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id58">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id59">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id60">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id59">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id60">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id61">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id62">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id61">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id62">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id63">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id64">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id63">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id64">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id65">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id66">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id66">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id67">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id68">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id69">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id70">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id71">1.0.0 - 2018-10-26</a></li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id71">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id72">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id73">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id74">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="../reference/changelog.html#id75">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="../reference/changelog.html#id76">1.0.0 - 2018-10-26</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="../reference/related-projects.html">Related Projects</a></li>

Binary file not shown.

View file

@ -219,118 +219,125 @@
<p class="caption"><span class="caption-text">Reference</span></p>
<ul class="current">
<li class="toctree-l1 current"><a class="current reference internal" href="#">Changelog</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#unreleased">Unreleased</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#unreleased">Unreleased</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id1">5.3.0 - 2024-01-15</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#added">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#changed">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#fixed">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id1">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id2">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id3">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id4">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id2">5.2.0 - 2024-01-02</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id3">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id4">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id5">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id5">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id6">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id7">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id8">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id6">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id7">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id8">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id9">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id9">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#id10">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id11">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id12">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id13">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id14">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#breaking-changes">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id10">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id11">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id12">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id15">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id16">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id17">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id13">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id14">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id15">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id16">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id18">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id19">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id20">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id21">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id17">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id18">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id19">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id20">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id22">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id23">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id24">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id25">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id21">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id22">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id23">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id24">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id26">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id27">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id28">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id29">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id25">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id26">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id27">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id28">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id30">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id31">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id32">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id33">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id29">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id30">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id31">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id32">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id34">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id35">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id36">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id37">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id33">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id34">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id35">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id36">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id37">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id38">Breaking Changes</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id38">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id39">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id40">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id41">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id42">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id43">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id42">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id43">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id44">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id45">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id46">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id44">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id45">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id46">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id47">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id47">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id48">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id49">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#id49">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id50">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id51">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id52">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id53">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id54">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id55">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id56">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id57">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id54">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id55">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id56">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id57">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id58">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id58">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id59">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id60">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id59">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id60">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id61">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id62">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id61">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id62">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id63">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id64">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id63">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id64">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id65">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id66">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#id66">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id67">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id68">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id69">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id70">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id71">1.0.0 - 2018-10-26</a></li>
<li class="toctree-l2"><a class="reference internal" href="#id71">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#id72">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id73">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id74">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="#id75">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="#id76">1.0.0 - 2018-10-26</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="related-projects.html">Related Projects</a></li>
@ -407,10 +414,50 @@
and this project somewhat adheres to <a class="reference external" href="https://semver.org/spec/v2.0.0.html">Semantic Versioning</a>. The MAJOR version number is bumped when there are breaking changes in the pret projects.</p>
<p>The <strong>“Breaking Changes”</strong> listed below are changes that have been made in the decompilation projects (e.g. pokeemerald), which porymap requires in order to work properly. It also includes changes to the scripting API that may change the behavior of existing porymap scripts. If porymap is used with a project or API script that is not up-to-date with the breaking changes, then porymap will likely break or behave improperly.</p>
<div class="section" id="unreleased">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/5.1.1...HEAD">Unreleased</a><a class="headerlink" href="#unreleased" title="Permalink to this headline"></a></h2>
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/5.3.0...HEAD">Unreleased</a><a class="headerlink" href="#unreleased" title="Permalink to this headline"></a></h2>
<p>Nothing, yet.</p>
</div>
<div class="section" id="id1">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/5.2.0...5.3.0">5.3.0</a> - 2024-01-15<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h2>
<div class="section" id="added">
<h3>Added<a class="headerlink" href="#added" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add zoom sliders to the Tileset Editor.</li>
<li>Add <code class="docutils literal notranslate"><span class="pre">getMetatileBehaviorName</span></code> and <code class="docutils literal notranslate"><span class="pre">setMetatileBehaviorName</span></code> to the API.</li>
<li>Add <code class="docutils literal notranslate"><span class="pre">metatile_behaviors</span></code>, <code class="docutils literal notranslate"><span class="pre">num_primary_palettes</span></code>, and <code class="docutils literal notranslate"><span class="pre">num_secondary_palettes</span></code> to <code class="docutils literal notranslate"><span class="pre">constants</span></code> in the API.</li>
</ul>
</div>
<div class="section" id="changed">
<h3>Changed<a class="headerlink" href="#changed" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Metatile ID strings are now padded to their current max, not the overall max.</li>
<li>Non-existent directories are now removed from the Open Recent Project menu.</li>
<li>Hovering on the layer view in the Tileset Editor now displays the tile ID.</li>
<li>Labels in the Script dropdown are now sorted alphabetically.</li>
<li>The name of the Heal Locations table is no longer enforced.</li>
<li>The API functions <code class="docutils literal notranslate"><span class="pre">addImage</span></code> and <code class="docutils literal notranslate"><span class="pre">createImage</span></code> now support project-relative paths.</li>
</ul>
</div>
<div class="section" id="fixed">
<h3>Fixed<a class="headerlink" href="#fixed" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Fix the metatile selector rectangle jumping when selecting up or left of the origin.</li>
<li>Fix the event group tabs sometimes showing an event from the wrong group.</li>
<li>Fix the clear buttons in the Shortcuts Editor not actually removing shortcuts.</li>
<li>Fix slow speed for the script label autcomplete.</li>
<li>Fix deleted script labels still appearing in the autocomplete after project reload.</li>
<li>Fix the map search bar stealing focus on startup.</li>
<li>Fix border metatiles view not resizing properly.</li>
<li>Fix Open Recent Project not clearing the API overlay</li>
<li>Fix API error reporting.</li>
</ul>
</div>
</div>
<div class="section" id="id2">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/5.1.1...5.2.0">5.2.0</a> - 2024-01-02<a class="headerlink" href="#id2" title="Permalink to this headline"></a></h2>
<div class="section" id="id3">
<h3>Added<a class="headerlink" href="#id3" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add an editor window under <code class="docutils literal notranslate"><span class="pre">Options</span> <span class="pre">-&gt;</span> <span class="pre">Project</span> <span class="pre">Settings...</span></code> to customize the project-specific settings in <code class="docutils literal notranslate"><span class="pre">porymap.project.cfg</span></code> and <code class="docutils literal notranslate"><span class="pre">porymap.user.cfg</span></code>.</li>
<li>Add an editor window under <code class="docutils literal notranslate"><span class="pre">Options</span> <span class="pre">-&gt;</span> <span class="pre">Custom</span> <span class="pre">Scripts...</span></code> for Porymaps API scripts.</li>
<li>Add an <code class="docutils literal notranslate"><span class="pre">Open</span> <span class="pre">Recent</span> <span class="pre">Project</span></code> menu</li>
@ -423,8 +470,8 @@ and this project somewhat adheres to <a class="reference external" href="https:/
<li>Support for 8bpp tileset tile images.</li>
</ul>
</div>
<div class="section" id="changed">
<h3>Changed<a class="headerlink" href="#changed" title="Permalink to this headline"></a></h3>
<div class="section" id="id4">
<h3>Changed<a class="headerlink" href="#id4" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">Script</span></code> dropdowns now include scripts from the current maps scripts file.</li>
<li>Encounter Rate now defaults to the most commonly used value, rather than 0.</li>
@ -439,8 +486,8 @@ and this project somewhat adheres to <a class="reference external" href="https:/
<li>Porymap will now attempt to read metatile attribute masks from the project.</li>
</ul>
</div>
<div class="section" id="fixed">
<h3>Fixed<a class="headerlink" href="#fixed" title="Permalink to this headline"></a></h3>
<div class="section" id="id5">
<h3>Fixed<a class="headerlink" href="#id5" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Fix text boxes in the Palette Editor calculating color incorrectly.</li>
<li>Fix metatile labels being sorted incorrectly for tileset names with multiple underscores.</li>
@ -462,23 +509,23 @@ and this project somewhat adheres to <a class="reference external" href="https:/
</ul>
</div>
</div>
<div class="section" id="id1">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/5.1.0...5.1.1">5.1.1</a> - 2023-02-20<a class="headerlink" href="#id1" title="Permalink to this headline"></a></h2>
<div class="section" id="id2">
<h3>Added<a class="headerlink" href="#id2" title="Permalink to this headline"></a></h3>
<div class="section" id="id6">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/5.1.0...5.1.1">5.1.1</a> - 2023-02-20<a class="headerlink" href="#id6" title="Permalink to this headline"></a></h2>
<div class="section" id="id7">
<h3>Added<a class="headerlink" href="#id7" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add <code class="docutils literal notranslate"><span class="pre">registerToggleAction</span></code> to the scripting API</li>
</ul>
</div>
<div class="section" id="id3">
<h3>Changed<a class="headerlink" href="#id3" title="Permalink to this headline"></a></h3>
<div class="section" id="id8">
<h3>Changed<a class="headerlink" href="#id8" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Change encounter tab copy and paste behavior.</li>
<li>A warning will appear if a custom script fails to load or an action fails to run.</li>
</ul>
</div>
<div class="section" id="id4">
<h3>Fixed<a class="headerlink" href="#id4" title="Permalink to this headline"></a></h3>
<div class="section" id="id9">
<h3>Fixed<a class="headerlink" href="#id9" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Fix null characters being unpredictably written to some JSON files.</li>
<li>Fix tilesets that share part of their name loading incorrectly.</li>
@ -494,10 +541,10 @@ and this project somewhat adheres to <a class="reference external" href="https:/
</ul>
</div>
</div>
<div class="section" id="id5">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/5.0.0...5.1.0">5.1.0</a> - 2023-01-22<a class="headerlink" href="#id5" title="Permalink to this headline"></a></h2>
<div class="section" id="id6">
<h3>Added<a class="headerlink" href="#id6" title="Permalink to this headline"></a></h3>
<div class="section" id="id10">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/5.0.0...5.1.0">5.1.0</a> - 2023-01-22<a class="headerlink" href="#id10" title="Permalink to this headline"></a></h2>
<div class="section" id="id11">
<h3>Added<a class="headerlink" href="#id11" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add new config options for reorganizing metatile attributes.</li>
<li>Add <code class="docutils literal notranslate"><span class="pre">setScale</span></code> to the scripting API.</li>
@ -505,8 +552,8 @@ and this project somewhat adheres to <a class="reference external" href="https:/
<li>Add option to copy wild encounters from another encounters tab.</li>
</ul>
</div>
<div class="section" id="id7">
<h3>Changed<a class="headerlink" href="#id7" title="Permalink to this headline"></a></h3>
<div class="section" id="id12">
<h3>Changed<a class="headerlink" href="#id12" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Double-clicking on a connecting map on the Map or Events tabs will now open that map.</li>
<li>Hovering on border metatiles with the mouse will now display their information in the bottom bar.</li>
@ -515,8 +562,8 @@ and this project somewhat adheres to <a class="reference external" href="https:/
<li>Pokémon icons in the encounter editor have their transparency set.</li>
</ul>
</div>
<div class="section" id="id8">
<h3>Fixed<a class="headerlink" href="#id8" title="Permalink to this headline"></a></h3>
<div class="section" id="id13">
<h3>Fixed<a class="headerlink" href="#id13" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Fix the Region Map Editor being opened by the Shortcuts Editor.</li>
<li>Fix New Map settings being preserved when switching projects.</li>
@ -529,8 +576,8 @@ and this project somewhat adheres to <a class="reference external" href="https:/
</ul>
</div>
</div>
<div class="section" id="id9">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/4.5.0...5.0.0">5.0.0</a> - 2022-10-30<a class="headerlink" href="#id9" title="Permalink to this headline"></a></h2>
<div class="section" id="id14">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/4.5.0...5.0.0">5.0.0</a> - 2022-10-30<a class="headerlink" href="#id14" title="Permalink to this headline"></a></h2>
<div class="section" id="breaking-changes">
<h3>Breaking Changes<a class="headerlink" href="#breaking-changes" title="Permalink to this headline"></a></h3>
<ul class="simple">
@ -542,8 +589,8 @@ and this project somewhat adheres to <a class="reference external" href="https:/
<li>The API function <code class="docutils literal notranslate"><span class="pre">addFilledRect</span></code> has been removed; its been replaced by new arguments in <code class="docutils literal notranslate"><span class="pre">addRect</span></code>: <code class="docutils literal notranslate"><span class="pre">color</span></code> has been replaced with <code class="docutils literal notranslate"><span class="pre">borderColor</span></code> and <code class="docutils literal notranslate"><span class="pre">fillColor</span></code>, and a new <code class="docutils literal notranslate"><span class="pre">rounding</span></code> argument allows ellipses to be drawn.</li>
</ul>
</div>
<div class="section" id="id10">
<h3>Added<a class="headerlink" href="#id10" title="Permalink to this headline"></a></h3>
<div class="section" id="id15">
<h3>Added<a class="headerlink" href="#id15" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add prefab support</li>
<li>Add Cut/Copy/Paste for metatiles in the Tileset Editor.</li>
@ -554,8 +601,8 @@ and this project somewhat adheres to <a class="reference external" href="https:/
<li>Add new features to the scripting API, including the ability to display messages and user input windows, set the overlays opacity, rotation, scale, and clipping, interact with map header properties and the map border, read tile pixel data, and more.</li>
</ul>
</div>
<div class="section" id="id11">
<h3>Changed<a class="headerlink" href="#id11" title="Permalink to this headline"></a></h3>
<div class="section" id="id16">
<h3>Changed<a class="headerlink" href="#id16" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Previous settings will be remembered in the New Map Options window.</li>
<li>The Custom Attributes table for map headers and events now supports types other than strings.</li>
@ -579,8 +626,8 @@ and this project somewhat adheres to <a class="reference external" href="https:/
<li>If any JSON data is the incorrect type Porymap will now attempt to convert it.</li>
</ul>
</div>
<div class="section" id="id12">
<h3>Fixed<a class="headerlink" href="#id12" title="Permalink to this headline"></a></h3>
<div class="section" id="id17">
<h3>Fixed<a class="headerlink" href="#id17" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Fix events losing their assigned script when the script autocomplete is used.</li>
<li>Fix the unsaved changes indicator not disappearing when saving changes to events.</li>
@ -606,10 +653,10 @@ and this project somewhat adheres to <a class="reference external" href="https:/
</ul>
</div>
</div>
<div class="section" id="id13">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/4.4.0...4.5.0">4.5.0</a> - 2021-12-26<a class="headerlink" href="#id13" title="Permalink to this headline"></a></h2>
<div class="section" id="id14">
<h3>Added<a class="headerlink" href="#id14" title="Permalink to this headline"></a></h3>
<div class="section" id="id18">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/4.4.0...4.5.0">4.5.0</a> - 2021-12-26<a class="headerlink" href="#id18" title="Permalink to this headline"></a></h2>
<div class="section" id="id19">
<h3>Added<a class="headerlink" href="#id19" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>WSL project paths are now supported. (For example, \wsl$\Ubuntu-20.04\home\huderlem\pokeemerald)</li>
<li>Add ability to export map timelapse animated GIFs with <code class="docutils literal notranslate"><span class="pre">File</span> <span class="pre">-&gt;</span> <span class="pre">Export</span> <span class="pre">Map</span> <span class="pre">Timelapse</span> <span class="pre">Image...</span></code>.</li>
@ -621,8 +668,8 @@ and this project somewhat adheres to <a class="reference external" href="https:/
<li>Porymap is now compatible with Qt6.</li>
</ul>
</div>
<div class="section" id="id15">
<h3>Changed<a class="headerlink" href="#id15" title="Permalink to this headline"></a></h3>
<div class="section" id="id20">
<h3>Changed<a class="headerlink" href="#id20" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>New events will be placed in the center of the current view of the map.</li>
<li>Scripting API errors are more detailed and logged in more situations.</li>
@ -631,8 +678,8 @@ and this project somewhat adheres to <a class="reference external" href="https:/
<li>The onBlockChanged script callback is now called for blocks changed by Undo/Redo.</li>
</ul>
</div>
<div class="section" id="id16">
<h3>Fixed<a class="headerlink" href="#id16" title="Permalink to this headline"></a></h3>
<div class="section" id="id21">
<h3>Fixed<a class="headerlink" href="#id21" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Fix % operator in C defines not being evaluated</li>
<li>Fix tileset palette editor crash that could occur when switching maps or tilesets with it open.</li>
@ -642,10 +689,10 @@ and this project somewhat adheres to <a class="reference external" href="https:/
</ul>
</div>
</div>
<div class="section" id="id17">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/4.3.1...4.4.0">4.4.0</a> - 2020-12-20<a class="headerlink" href="#id17" title="Permalink to this headline"></a></h2>
<div class="section" id="id18">
<h3>Added<a class="headerlink" href="#id18" title="Permalink to this headline"></a></h3>
<div class="section" id="id22">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/4.3.1...4.4.0">4.4.0</a> - 2020-12-20<a class="headerlink" href="#id22" title="Permalink to this headline"></a></h2>
<div class="section" id="id23">
<h3>Added<a class="headerlink" href="#id23" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add undoable edit history for Events tab.</li>
<li>Add keyboard shortcut for <code class="docutils literal notranslate"><span class="pre">DEL</span></code> key to delete the currently selected event(s).</li>
@ -661,14 +708,14 @@ and this project somewhat adheres to <a class="reference external" href="https:/
<li>Add custom text editor commands in <code class="docutils literal notranslate"><span class="pre">Options</span> <span class="pre">-&gt;</span> <span class="pre">Edit</span> <span class="pre">Preferences</span></code>, a tool-button next to the <code class="docutils literal notranslate"><span class="pre">Script</span></code> combo-box, and <code class="docutils literal notranslate"><span class="pre">Tools</span> <span class="pre">-&gt;</span> <span class="pre">Open</span> <span class="pre">Project</span> <span class="pre">in</span> <span class="pre">Text</span> <span class="pre">Editor</span></code>. The tool-button will open the containing file to the cooresponding script.</li>
</ul>
</div>
<div class="section" id="id19">
<h3>Changed<a class="headerlink" href="#id19" title="Permalink to this headline"></a></h3>
<div class="section" id="id24">
<h3>Changed<a class="headerlink" href="#id24" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Holding <code class="docutils literal notranslate"><span class="pre">shift</span></code> now toggles “Smart Path” drawing; when the “Smart Paths” checkbox is checked, holding <code class="docutils literal notranslate"><span class="pre">shift</span></code> will temporarily disable it.</li>
</ul>
</div>
<div class="section" id="id20">
<h3>Fixed<a class="headerlink" href="#id20" title="Permalink to this headline"></a></h3>
<div class="section" id="id25">
<h3>Fixed<a class="headerlink" href="#id25" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Fix a bug with the current metatile selection zoom.</li>
<li>Fix bug preventing the status bar from updating the current position while dragging events.</li>
@ -679,26 +726,26 @@ and this project somewhat adheres to <a class="reference external" href="https:/
</ul>
</div>
</div>
<div class="section" id="id21">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/4.3.0...4.3.1">4.3.1</a> - 2020-07-17<a class="headerlink" href="#id21" title="Permalink to this headline"></a></h2>
<div class="section" id="id22">
<h3>Added<a class="headerlink" href="#id22" title="Permalink to this headline"></a></h3>
<div class="section" id="id26">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/4.3.0...4.3.1">4.3.1</a> - 2020-07-17<a class="headerlink" href="#id26" title="Permalink to this headline"></a></h2>
<div class="section" id="id27">
<h3>Added<a class="headerlink" href="#id27" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add keyboard shortcut <code class="docutils literal notranslate"><span class="pre">Ctrl</span> <span class="pre">+</span> <span class="pre">D</span></code> for duplicating map events.</li>
<li>Add keyboard shortcut <code class="docutils literal notranslate"><span class="pre">Ctrl</span> <span class="pre">+</span> <span class="pre">Shift</span> <span class="pre">+</span> <span class="pre">Z</span></code> for “redo” in the tileset editor.</li>
<li>Add scripting api to reorder metatile layers and draw them with opacity.</li>
</ul>
</div>
<div class="section" id="id23">
<h3>Changed<a class="headerlink" href="#id23" title="Permalink to this headline"></a></h3>
<div class="section" id="id28">
<h3>Changed<a class="headerlink" href="#id28" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>The tileset editor now syncs its metatile selection with the maps metatile selector.</li>
<li>The number of object events per map is now limited to OBJECT_EVENT_TEMPLATES_COUNT</li>
<li>The tileset editor can now flip selections that were taken from an existing metatile.</li>
</ul>
</div>
<div class="section" id="id24">
<h3>Fixed<a class="headerlink" href="#id24" title="Permalink to this headline"></a></h3>
<div class="section" id="id29">
<h3>Fixed<a class="headerlink" href="#id29" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Fix bug where editing a metatile layer would have no effect.</li>
<li>Fix a crash that occured when creating a new tileset using triple layer mode.</li>
@ -709,22 +756,22 @@ and this project somewhat adheres to <a class="reference external" href="https:/
</ul>
</div>
</div>
<div class="section" id="id25">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/4.2.0...4.3.0">4.3.0</a> - 2020-06-27<a class="headerlink" href="#id25" title="Permalink to this headline"></a></h2>
<div class="section" id="id26">
<h3>Added<a class="headerlink" href="#id26" title="Permalink to this headline"></a></h3>
<div class="section" id="id30">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/4.2.0...4.3.0">4.3.0</a> - 2020-06-27<a class="headerlink" href="#id30" title="Permalink to this headline"></a></h2>
<div class="section" id="id31">
<h3>Added<a class="headerlink" href="#id31" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add triple-layer metatiles support.</li>
</ul>
</div>
<div class="section" id="id27">
<h3>Changed<a class="headerlink" href="#id27" title="Permalink to this headline"></a></h3>
<div class="section" id="id32">
<h3>Changed<a class="headerlink" href="#id32" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>The “Open Scripts” button will fall back to <code class="docutils literal notranslate"><span class="pre">scripts.inc</span></code> if <code class="docutils literal notranslate"><span class="pre">scripts.pory</span></code> doesnt exist.</li>
</ul>
</div>
<div class="section" id="id28">
<h3>Fixed<a class="headerlink" href="#id28" title="Permalink to this headline"></a></h3>
<div class="section" id="id33">
<h3>Fixed<a class="headerlink" href="#id33" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Fix bug where exported tileset images could be horizontally or vertically flipped.</li>
<li>Fix bug where the map list wasnt filtered properly after switching filter types.</li>
@ -732,47 +779,47 @@ and this project somewhat adheres to <a class="reference external" href="https:/
</ul>
</div>
</div>
<div class="section" id="id29">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/4.1.0...4.2.0">4.2.0</a> - 2020-06-06<a class="headerlink" href="#id29" title="Permalink to this headline"></a></h2>
<div class="section" id="id30">
<h3>Added<a class="headerlink" href="#id30" title="Permalink to this headline"></a></h3>
<div class="section" id="id34">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/4.1.0...4.2.0">4.2.0</a> - 2020-06-06<a class="headerlink" href="#id34" title="Permalink to this headline"></a></h2>
<div class="section" id="id35">
<h3>Added<a class="headerlink" href="#id35" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add more project-specific configs to better support porting features from different projects.</li>
<li>Add metatile label names to the status bar when hovering over metatiles in the map editor tab.</li>
<li>Add mouse coordinates to the status bar when hovering in the events tab.</li>
</ul>
</div>
<div class="section" id="id31">
<h3>Changed<a class="headerlink" href="#id31" title="Permalink to this headline"></a></h3>
<div class="section" id="id36">
<h3>Changed<a class="headerlink" href="#id36" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li><code class="docutils literal notranslate"><span class="pre">metatile_labels.h</span></code> is now watched for changes.</li>
</ul>
</div>
<div class="section" id="id32">
<h3>Fixed<a class="headerlink" href="#id32" title="Permalink to this headline"></a></h3>
<div class="section" id="id37">
<h3>Fixed<a class="headerlink" href="#id37" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Reduce time it takes to load maps and save in the tileset editor.</li>
<li>Fix crash that could occur when parsing unknown symbols when evaluating <code class="docutils literal notranslate"><span class="pre">define</span></code> expressions.</li>
</ul>
</div>
</div>
<div class="section" id="id33">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/4.0.0...4.1.0">4.1.0</a> - 2020-05-18<a class="headerlink" href="#id33" title="Permalink to this headline"></a></h2>
<div class="section" id="id34">
<h3>Added<a class="headerlink" href="#id34" title="Permalink to this headline"></a></h3>
<div class="section" id="id38">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/4.0.0...4.1.0">4.1.0</a> - 2020-05-18<a class="headerlink" href="#id38" title="Permalink to this headline"></a></h2>
<div class="section" id="id39">
<h3>Added<a class="headerlink" href="#id39" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add scripting capabilities, which allows the user to add custom behavior to Porymap using JavaScript scripts.</li>
<li>Add ability to import FRLG tileset .bvd files from Advance Map 1.92.</li>
</ul>
</div>
<div class="section" id="id35">
<h3>Changed<a class="headerlink" href="#id35" title="Permalink to this headline"></a></h3>
<div class="section" id="id40">
<h3>Changed<a class="headerlink" href="#id40" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Edit modes are no longer shared between the Map and Events tabs. Pencil is default for Map tab, and Pointer is default for Events tab.</li>
</ul>
</div>
<div class="section" id="id36">
<h3>Fixed<a class="headerlink" href="#id36" title="Permalink to this headline"></a></h3>
<div class="section" id="id41">
<h3>Fixed<a class="headerlink" href="#id41" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Disallow drawing new heal locations in the events tab.</li>
<li>Fix issue where the metatile selection window was not resizable.</li>
@ -783,16 +830,16 @@ and this project somewhat adheres to <a class="reference external" href="https:/
</ul>
</div>
</div>
<div class="section" id="id37">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/3.0.1...4.0.0">4.0.0</a> - 2020-04-28<a class="headerlink" href="#id37" title="Permalink to this headline"></a></h2>
<div class="section" id="id38">
<h3>Breaking Changes<a class="headerlink" href="#id38" title="Permalink to this headline"></a></h3>
<div class="section" id="id42">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/3.0.1...4.0.0">4.0.0</a> - 2020-04-28<a class="headerlink" href="#id42" title="Permalink to this headline"></a></h2>
<div class="section" id="id43">
<h3>Breaking Changes<a class="headerlink" href="#id43" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>If you are using pokeemerald or pokeruby, there were changes made in <a class="reference external" href="https://github.com/pret/pokeemerald/pull/1010">pokeemerald/#1010</a> and <a class="reference external" href="https://github.com/pret/pokeruby/pull/776">pokeruby/#776</a> that you will need to integrate in order to use this version of porymap.</li>
</ul>
</div>
<div class="section" id="id39">
<h3>Added<a class="headerlink" href="#id39" title="Permalink to this headline"></a></h3>
<div class="section" id="id44">
<h3>Added<a class="headerlink" href="#id44" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Support for <a class="reference external" href="https://github.com/pret/pokefirered">pokefirered</a>. Kanto fans rejoice! At long last porymap supports the FRLG decompilation project.</li>
<li>Add ability to export map stitches with <code class="docutils literal notranslate"><span class="pre">File</span> <span class="pre">-&gt;</span> <span class="pre">Export</span> <span class="pre">Map</span> <span class="pre">Stitch</span> <span class="pre">Image...</span></code>.</li>
@ -803,8 +850,8 @@ and this project somewhat adheres to <a class="reference external" href="https:/
<li>Add <code class="docutils literal notranslate"><span class="pre">Pencil</span></code>, <code class="docutils literal notranslate"><span class="pre">Move</span></code>, and <code class="docutils literal notranslate"><span class="pre">Map</span> <span class="pre">Shift</span></code> tools to the Events tab.</li>
</ul>
</div>
<div class="section" id="id40">
<h3>Changed<a class="headerlink" href="#id40" title="Permalink to this headline"></a></h3>
<div class="section" id="id45">
<h3>Changed<a class="headerlink" href="#id45" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Porymap now saves map and encounter json data in an order consistent with the upstream repos. This will provide more comprehensible diffs when files are saved.</li>
<li>Update Porymap icon.</li>
@ -812,8 +859,8 @@ and this project somewhat adheres to <a class="reference external" href="https:/
<li>Extend connection min and max offsets to players view boundary, rather than the maps boundary.</li>
</ul>
</div>
<div class="section" id="id41">
<h3>Fixed<a class="headerlink" href="#id41" title="Permalink to this headline"></a></h3>
<div class="section" id="id46">
<h3>Fixed<a class="headerlink" href="#id46" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Fix bug where pressing TAB key did not navigate through widgets in the wild encounter tables.</li>
<li>Fix bug that allowed selecting an invalid metatile in the metatile selector.</li>
@ -822,19 +869,19 @@ and this project somewhat adheres to <a class="reference external" href="https:/
</ul>
</div>
</div>
<div class="section" id="id42">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/3.0.0...3.0.1">3.0.1</a> - 2020-03-04<a class="headerlink" href="#id42" title="Permalink to this headline"></a></h2>
<div class="section" id="id43">
<h3>Fixed<a class="headerlink" href="#id43" title="Permalink to this headline"></a></h3>
<div class="section" id="id47">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/3.0.0...3.0.1">3.0.1</a> - 2020-03-04<a class="headerlink" href="#id47" title="Permalink to this headline"></a></h2>
<div class="section" id="id48">
<h3>Fixed<a class="headerlink" href="#id48" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Fix bug on Mac where tileset images were corrupted when saving.</li>
</ul>
</div>
</div>
<div class="section" id="id44">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/2.0.0...3.0.0">3.0.0</a> - 2020-03-04<a class="headerlink" href="#id44" title="Permalink to this headline"></a></h2>
<div class="section" id="id45">
<h3>Breaking Changes<a class="headerlink" href="#id45" title="Permalink to this headline"></a></h3>
<div class="section" id="id49">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/2.0.0...3.0.0">3.0.0</a> - 2020-03-04<a class="headerlink" href="#id49" title="Permalink to this headline"></a></h2>
<div class="section" id="id50">
<h3>Breaking Changes<a class="headerlink" href="#id50" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>pokeemerald and pokeruby both underwent a naming consistency update with respect to “object events”. As such, these naming changes break old versions of Porymap.<ul>
<li>pokeemerald object event PR: https://github.com/pret/pokeemerald/pull/910</li>
@ -843,22 +890,22 @@ and this project somewhat adheres to <a class="reference external" href="https:/
</li>
</ul>
</div>
<div class="section" id="id46">
<h3>Added<a class="headerlink" href="#id46" title="Permalink to this headline"></a></h3>
<div class="section" id="id51">
<h3>Added<a class="headerlink" href="#id51" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add optional support for Poryscript script files via the <code class="docutils literal notranslate"><span class="pre">use_poryscript</span></code> config option.</li>
<li>Selecting a group of metatiles from the map area now also copies the collision properties, too.</li>
<li>Add keyboard shortcut <code class="docutils literal notranslate"><span class="pre">Ctrl</span> <span class="pre">+</span> <span class="pre">G</span></code> for toggling the map grid.</li>
</ul>
</div>
<div class="section" id="id47">
<h3>Changed<a class="headerlink" href="#id47" title="Permalink to this headline"></a></h3>
<div class="section" id="id52">
<h3>Changed<a class="headerlink" href="#id52" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Draw map connections with the current maps tilesets to more accurately mimic their appearance in-game.</li>
</ul>
</div>
<div class="section" id="id48">
<h3>Fixed<a class="headerlink" href="#id48" title="Permalink to this headline"></a></h3>
<div class="section" id="id53">
<h3>Fixed<a class="headerlink" href="#id53" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Fix index-out-of-bounds crash when deleting the last event in an event type group.</li>
<li>Fix bug where exporting tileset images could add an extra row of junk at the end.</li>
@ -868,17 +915,17 @@ and this project somewhat adheres to <a class="reference external" href="https:/
</ul>
</div>
</div>
<div class="section" id="id49">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/1.2.2...2.0.0">2.0.0</a> - 2019-10-16<a class="headerlink" href="#id49" title="Permalink to this headline"></a></h2>
<div class="section" id="id50">
<h3>Breaking Changes<a class="headerlink" href="#id50" title="Permalink to this headline"></a></h3>
<div class="section" id="id54">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/1.2.2...2.0.0">2.0.0</a> - 2019-10-16<a class="headerlink" href="#id54" title="Permalink to this headline"></a></h2>
<div class="section" id="id55">
<h3>Breaking Changes<a class="headerlink" href="#id55" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Accomodate event object graphics pointer table being explicitly indexed. From changes introduced in commits <a class="reference external" href="https://github.com/pret/pokeemerald/commit/cdae0c1444bed98e652c87dc3e3edcecacfef8be">cdae0c1444bed98e652c87dc3e3edcecacfef8be</a> and <a class="reference external" href="https://github.com/pret/pokeruby/commit/0e8ccfc4fd3544001f4c25fafd401f7558bdefba">0e8ccfc4fd3544001f4c25fafd401f7558bdefba</a>.</li>
<li>New “field” key in wild encounter JSON data from pokeemerald and pokeruby commits <a class="reference external" href="https://github.com/pret/pokeemerald/commit/adb0a444577b59eb02788c782a3d04bc285be0ba">adb0a444577b59eb02788c782a3d04bc285be0ba</a> and <a class="reference external" href="c73de8bed752ca538d90cfc93c4a9e8c7965f8c9">https://github.com/pret/pokeruby/commit/c73de8bed752ca538d90cfc93c4a9e8c7965f8c9</a>.</li>
</ul>
</div>
<div class="section" id="id51">
<h3>Added<a class="headerlink" href="#id51" title="Permalink to this headline"></a></h3>
<div class="section" id="id56">
<h3>Added<a class="headerlink" href="#id56" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add wild encounter table editor.</li>
<li>Add dark themes.</li>
@ -886,16 +933,16 @@ and this project somewhat adheres to <a class="reference external" href="https:/
<li>Add warning when closing porymap with unsaved changes.</li>
</ul>
</div>
<div class="section" id="id52">
<h3>Changed<a class="headerlink" href="#id52" title="Permalink to this headline"></a></h3>
<div class="section" id="id57">
<h3>Changed<a class="headerlink" href="#id57" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Exporting map images is now more configurable. Events, connections, collision, etc. can be toggled on and off before exporting the image.</li>
<li>The entire Tileset Editor selection is now conveniently flipped when selecting x-flip or y-flip.</li>
<li>Autocomplete for porymaps comboboxes no longer require typing the full string prefix.</li>
</ul>
</div>
<div class="section" id="id53">
<h3>Fixed<a class="headerlink" href="#id53" title="Permalink to this headline"></a></h3>
<div class="section" id="id58">
<h3>Fixed<a class="headerlink" href="#id58" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Fix bug where map group names were hardcoded when creating a new map.</li>
<li>Fix bug in Tileset Editor where multi-tile selections werent properly painted when clicking on the bottom row of the metatile layers.</li>
@ -906,18 +953,18 @@ and this project somewhat adheres to <a class="reference external" href="https:/
</ul>
</div>
</div>
<div class="section" id="id54">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/1.2.1...1.2.2">1.2.2</a> - 2019-05-16<a class="headerlink" href="#id54" title="Permalink to this headline"></a></h2>
<div class="section" id="id55">
<h3>Added<a class="headerlink" href="#id55" title="Permalink to this headline"></a></h3>
<div class="section" id="id59">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/1.2.1...1.2.2">1.2.2</a> - 2019-05-16<a class="headerlink" href="#id59" title="Permalink to this headline"></a></h2>
<div class="section" id="id60">
<h3>Added<a class="headerlink" href="#id60" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add region map editor</li>
<li>Add ability to add new tilesets</li>
<li>Add official Porymap documentation website: https://huderlem.github.io/porymap/</li>
</ul>
</div>
<div class="section" id="id56">
<h3>Changed<a class="headerlink" href="#id56" title="Permalink to this headline"></a></h3>
<div class="section" id="id61">
<h3>Changed<a class="headerlink" href="#id61" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Event sprites now display as facing the direction of their movement type.</li>
<li>Default values for newly-created events now use valid values from the project, rather than hardcoded values.</li>
@ -927,8 +974,8 @@ and this project somewhat adheres to <a class="reference external" href="https:/
<li>Default values for new events are now more sensible and guaranteed to be valid.</li>
</ul>
</div>
<div class="section" id="id57">
<h3>Fixed<a class="headerlink" href="#id57" title="Permalink to this headline"></a></h3>
<div class="section" id="id62">
<h3>Fixed<a class="headerlink" href="#id62" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Fix bug in zoomed metatile selector where a large selection rectangle was being rendered.</li>
<li>Fix bug where edited map icons were not rendered properly.</li>
@ -937,32 +984,32 @@ and this project somewhat adheres to <a class="reference external" href="https:/
</ul>
</div>
</div>
<div class="section" id="id58">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/1.2.0...1.2.1">1.2.1</a> - 2019-02-16<a class="headerlink" href="#id58" title="Permalink to this headline"></a></h2>
<div class="section" id="id59">
<h3>Added<a class="headerlink" href="#id59" title="Permalink to this headline"></a></h3>
<div class="section" id="id63">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/1.2.0...1.2.1">1.2.1</a> - 2019-02-16<a class="headerlink" href="#id63" title="Permalink to this headline"></a></h2>
<div class="section" id="id64">
<h3>Added<a class="headerlink" href="#id64" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add ability to zoom in and out the map metatile selector via a slider at the bottom of the metatile selector window.</li>
</ul>
</div>
<div class="section" id="id60">
<h3>Fixed<a class="headerlink" href="#id60" title="Permalink to this headline"></a></h3>
<div class="section" id="id65">
<h3>Fixed<a class="headerlink" href="#id65" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Fix crash when creating a new map from a layout that has no pre-existing maps that use it.</li>
<li>Fix bug where <code class="docutils literal notranslate"><span class="pre">var_value</span></code>, <code class="docutils literal notranslate"><span class="pre">trainer_type</span></code> and <code class="docutils literal notranslate"><span class="pre">trainer_sight_or_berry_tree_id</span></code> JSON fields were being interpreted as integers.</li>
</ul>
</div>
</div>
<div class="section" id="id61">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/1.1.0...1.2.0">1.2.0</a> - 2019-02-04<a class="headerlink" href="#id61" title="Permalink to this headline"></a></h2>
<div class="section" id="id62">
<h3>Breaking Changes<a class="headerlink" href="#id62" title="Permalink to this headline"></a></h3>
<div class="section" id="id66">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/1.1.0...1.2.0">1.2.0</a> - 2019-02-04<a class="headerlink" href="#id66" title="Permalink to this headline"></a></h2>
<div class="section" id="id67">
<h3>Breaking Changes<a class="headerlink" href="#id67" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>New JSON map data format in pokeemerald and pokeruby from commits <a class="reference external" href="https://github.com/pret/pokeemerald/commit/82abc164dc9f6a74fdf0c535cc1621b7ed05318b">82abc164dc9f6a74fdf0c535cc1621b7ed05318b</a> and <a class="reference external" href="https://github.com/pret/pokeruby/commit/a0ba1b7c6353f7e4f3066025514c05b323a0123d">a0ba1b7c6353f7e4f3066025514c05b323a0123d</a>.</li>
</ul>
</div>
<div class="section" id="id63">
<h3>Added<a class="headerlink" href="#id63" title="Permalink to this headline"></a></h3>
<div class="section" id="id68">
<h3>Added<a class="headerlink" href="#id68" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add “magic fill” mode to fill tool (hold down CTRL key). This fills all matching metatiles on the map, rather than only the contiguous region.</li>
<li>Add ability to import tileset palettes (JASC, .pal, .tpl, .gpl, .act).</li>
@ -975,8 +1022,8 @@ and this project somewhat adheres to <a class="reference external" href="https:/
<li>Add ability to define custom fields for map header and all events.</li>
</ul>
</div>
<div class="section" id="id64">
<h3>Changed<a class="headerlink" href="#id64" title="Permalink to this headline"></a></h3>
<div class="section" id="id69">
<h3>Changed<a class="headerlink" href="#id69" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Collapse the map list by default.</li>
<li>Collision view now has a transparency slider to help make it easier to view the underlying metatiles.</li>
@ -990,8 +1037,8 @@ and this project somewhat adheres to <a class="reference external" href="https:/
<li>The tiles image in the tileset editor will no longer flip according to the x/y flip checkboxes. The individual tile selection still flips, though.</li>
</ul>
</div>
<div class="section" id="id65">
<h3>Fixed<a class="headerlink" href="#id65" title="Permalink to this headline"></a></h3>
<div class="section" id="id70">
<h3>Fixed<a class="headerlink" href="#id70" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Fix bug where smart paths could be auto-enabled, despite the checkbox being disabled.</li>
<li>Fix crash that could occur when changing the palette id in the tileset palette editor.</li>
@ -1000,32 +1047,32 @@ and this project somewhat adheres to <a class="reference external" href="https:/
</ul>
</div>
</div>
<div class="section" id="id66">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/1.0.0...1.1.0">1.1.0</a> - 2018-12-27<a class="headerlink" href="#id66" title="Permalink to this headline"></a></h2>
<div class="section" id="id67">
<h3>Breaking Changes<a class="headerlink" href="#id67" title="Permalink to this headline"></a></h3>
<div class="section" id="id71">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/compare/1.0.0...1.1.0">1.1.0</a> - 2018-12-27<a class="headerlink" href="#id71" title="Permalink to this headline"></a></h2>
<div class="section" id="id72">
<h3>Breaking Changes<a class="headerlink" href="#id72" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>New map header format in pokeemerald from commit <a class="reference external" href="https://github.com/pret/pokeemerald/commit/a1ea3b5e394bc115ba9b86348c161094a00dcca7">a1ea3b5e394bc115ba9b86348c161094a00dcca7</a>.</li>
</ul>
</div>
<div class="section" id="id68">
<h3>Added<a class="headerlink" href="#id68" title="Permalink to this headline"></a></h3>
<div class="section" id="id73">
<h3>Added<a class="headerlink" href="#id73" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add <code class="docutils literal notranslate"><span class="pre">porymap.project.cfg</span></code> config file to project repos, in order to house project-specific settings, such as <code class="docutils literal notranslate"><span class="pre">base_game_version=pokeemerald</span></code>.</li>
<li>Write all logs to <code class="docutils literal notranslate"><span class="pre">porymap.log</span></code> file, so users can view any errors that porymap hits.</li>
<li>Changelog</li>
</ul>
</div>
<div class="section" id="id69">
<h3>Changed<a class="headerlink" href="#id69" title="Permalink to this headline"></a></h3>
<div class="section" id="id74">
<h3>Changed<a class="headerlink" href="#id74" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Add <code class="docutils literal notranslate"><span class="pre">porymap.cfg</span></code> base config file, rather than using built-in system settings (e.g. registry on Windows).</li>
<li>Properly read/write map headers for <code class="docutils literal notranslate"><span class="pre">pokeemerald</span></code>.</li>
<li>Overhauled event editing pane, which now contains tabs for each different event. Events of the same type can be iterated through using the spinner at the top of the tab. This makes it possible to edit events that are outside the viewing window.</li>
</ul>
</div>
<div class="section" id="id70">
<h3>Fixed<a class="headerlink" href="#id70" title="Permalink to this headline"></a></h3>
<div class="section" id="id75">
<h3>Fixed<a class="headerlink" href="#id75" title="Permalink to this headline"></a></h3>
<ul class="simple">
<li>Creating new hidden-item events now uses a valid default flag value.</li>
<li>Fix bug where tilesets were sometimes not displaying their bottom row of metatiles.</li>
@ -1038,8 +1085,8 @@ and this project somewhat adheres to <a class="reference external" href="https:/
</ul>
</div>
</div>
<div class="section" id="id71">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/tree/1.0.0">1.0.0</a> - 2018-10-26<a class="headerlink" href="#id71" title="Permalink to this headline"></a></h2>
<div class="section" id="id76">
<h2><a class="reference external" href="https://github.com/huderlem/porymap/tree/1.0.0">1.0.0</a> - 2018-10-26<a class="headerlink" href="#id76" title="Permalink to this headline"></a></h2>
<p>This was the initial release.</p>
</div>
</div>

View file

@ -218,118 +218,125 @@
<p class="caption"><span class="caption-text">Reference</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="reference/changelog.html">Changelog</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#unreleased">Unreleased</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#unreleased">Unreleased</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id1">5.3.0 - 2024-01-15</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#added">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#changed">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#fixed">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id1">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id2">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id3">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id4">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id2">5.2.0 - 2024-01-02</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id3">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id4">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id5">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id5">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id6">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id7">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id8">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id6">5.1.1 - 2023-02-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id7">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id8">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id9">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id9">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id10">5.1.0 - 2023-01-22</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id11">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id12">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id13">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id14">5.0.0 - 2022-10-30</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#breaking-changes">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id10">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id11">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id12">Fixed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id15">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id16">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id17">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id13">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id14">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id15">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id16">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id18">4.5.0 - 2021-12-26</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id19">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id20">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id21">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id17">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id18">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id19">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id20">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id22">4.4.0 - 2020-12-20</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id23">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id24">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id25">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id21">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id22">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id23">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id24">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id26">4.3.1 - 2020-07-17</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id27">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id28">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id29">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id25">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id26">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id27">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id28">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id30">4.3.0 - 2020-06-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id31">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id32">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id33">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id29">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id30">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id31">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id32">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id34">4.2.0 - 2020-06-06</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id35">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id36">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id37">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id33">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id34">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id35">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id36">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id37">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id38">Breaking Changes</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id38">4.1.0 - 2020-05-18</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id39">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id40">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id41">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id42">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id43">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id42">4.0.0 - 2020-04-28</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id43">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id44">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id45">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id46">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id44">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id45">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id46">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id47">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id47">3.0.1 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id48">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id49">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id49">3.0.0 - 2020-03-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id50">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id51">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id52">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id53">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id54">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id55">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id56">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id57">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id54">2.0.0 - 2019-10-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id55">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id56">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id57">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id58">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id58">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id59">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id60">Fixed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id59">1.2.2 - 2019-05-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id60">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id61">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id62">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id61">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id62">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id63">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id64">Changed</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id63">1.2.1 - 2019-02-16</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id64">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id65">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id66">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id66">1.2.0 - 2019-02-04</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id67">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id68">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id69">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id70">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id71">1.0.0 - 2018-10-26</a></li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id71">1.1.0 - 2018-12-27</a><ul>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id72">Breaking Changes</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id73">Added</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id74">Changed</a></li>
<li class="toctree-l3"><a class="reference internal" href="reference/changelog.html#id75">Fixed</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="reference/changelog.html#id76">1.0.0 - 2018-10-26</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="reference/related-projects.html">Related Projects</a></li>

File diff suppressed because one or more lines are too long

View file

@ -52,9 +52,6 @@
<pointsize>12</pointsize>
</font>
</property>
<property name="text">
<string>Version 5.2.0 - January 2nd, 2024</string>
</property>
<property name="alignment">
<set>Qt::AlignCenter</set>
</property>

View file

@ -7,7 +7,7 @@
<x>0</x>
<y>0</y>
<width>1287</width>
<height>815</height>
<height>936</height>
</rect>
</property>
<property name="windowTitle">
@ -90,8 +90,10 @@
<property name="icon">
<iconset resource="../resources/images.qrc">
<normaloff>:/icons/folder_eye_open.ico</normaloff>
<normalon>:/icons/folder_eye_closed.ico</normalon>
</iconset>
<normalon>:/icons/folder_eye_closed.ico</normalon>:/icons/folder_eye_open.ico</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="popupMode">
<enum>QToolButton::InstantPopup</enum>
@ -99,9 +101,6 @@
<property name="autoRaise">
<bool>true</bool>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item>
@ -155,8 +154,10 @@
<property name="icon">
<iconset resource="../resources/images.qrc">
<normaloff>:/icons/lock_edit.ico</normaloff>
<normalon>:/icons/unlock_edit.ico</normalon>
</iconset>
<normalon>:/icons/unlock_edit.ico</normalon>:/icons/lock_edit.ico</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="popupMode">
<enum>QToolButton::InstantPopup</enum>
@ -164,9 +165,6 @@
<property name="autoRaise">
<bool>true</bool>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item>
@ -275,8 +273,10 @@
<property name="icon">
<iconset resource="../resources/images.qrc">
<normaloff>:/icons/folder_eye_open.ico</normaloff>
<normalon>:/icons/folder_eye_closed.ico</normalon>
</iconset>
<normalon>:/icons/folder_eye_closed.ico</normalon>:/icons/folder_eye_open.ico</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="popupMode">
<enum>QToolButton::InstantPopup</enum>
@ -284,9 +284,6 @@
<property name="autoRaise">
<bool>true</bool>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item>
@ -435,8 +432,10 @@
<property name="icon">
<iconset resource="../resources/images.qrc">
<normaloff>:/icons/folder_eye_open.ico</normaloff>
<normalon>:/icons/folder_eye_closed.ico</normalon>
</iconset>
<normalon>:/icons/folder_eye_closed.ico</normalon>:/icons/folder_eye_open.ico</iconset>
</property>
<property name="checkable">
<bool>true</bool>
</property>
<property name="popupMode">
<enum>QToolButton::InstantPopup</enum>
@ -444,9 +443,6 @@
<property name="autoRaise">
<bool>true</bool>
</property>
<property name="checkable">
<bool>true</bool>
</property>
</widget>
</item>
<item>
@ -1007,6 +1003,9 @@
<string>Metatiles</string>
</attribute>
<layout class="QGridLayout" name="gridLayout_3">
<property name="sizeConstraint">
<enum>QLayout::SetNoConstraint</enum>
</property>
<property name="leftMargin">
<number>3</number>
</property>
@ -1022,7 +1021,7 @@
<property name="spacing">
<number>3</number>
</property>
<item row="6" column="0">
<item row="3" column="0">
<widget class="QSlider" name="horizontalSlider_MetatileZoom">
<property name="minimum">
<number>10</number>
@ -1038,50 +1037,51 @@
</property>
</widget>
</item>
<item row="5" column="0">
<widget class="QScrollArea" name="scrollArea_2">
<item row="2" column="0">
<widget class="QFrame" name="frame_Metatiles">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_16">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QSplitter" name="splitter_Metatiles">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<sizepolicy hsizetype="Preferred" vsizetype="Ignored">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOn</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAsNeeded</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustIgnored</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<property name="alignment">
<set>Qt::AlignHCenter|Qt::AlignTop</set>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents_2">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>8</x>
<y>0</y>
<width>408</width>
<height>380</height>
</rect>
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<widget class="QGroupBox" name="groupBox_BorderMetatiles">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
<property name="title">
<string>Border</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
@ -1095,46 +1095,50 @@
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="1" column="1">
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1">
<widget class="QGraphicsView" name="graphicsView_Metatiles">
<property name="enabled">
<bool>true</bool>
</property>
<item>
<widget class="QScrollArea" name="scrollArea_BorderMetatiles">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustIgnored</enum>
<property name="widgetResizable">
<bool>true</bool>
</property>
</widget>
</item>
<item row="0" column="0">
<spacer name="horizontalSpacer_14">
<widget class="QWidget" name="scrollAreaWidgetContents_BorderMetatiles">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>420</width>
<height>77</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_12">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<spacer name="horizontalSpacer_12">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@ -1146,8 +1150,27 @@
</property>
</spacer>
</item>
<item row="0" column="2">
<spacer name="horizontalSpacer_15">
<item>
<widget class="NoScrollGraphicsView" name="graphicsView_BorderMetatile">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The border is a 2x2 metatile which is repeated outside of the map layout's boundary. Draw on this border area to modify it.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_13">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@ -1163,39 +1186,22 @@
</widget>
</widget>
</item>
<item row="4" column="0">
<widget class="QFrame" name="frame_currentMetatileSelection">
</layout>
</widget>
<widget class="QGroupBox" name="groupBox_SelectedMetatiles">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
<verstretch>1</verstretch>
</sizepolicy>
</property>
<property name="minimumSize">
<size>
<width>0</width>
<height>92</height>
</size>
<property name="title">
<string>Selection</string>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>92</height>
</size>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_5">
<layout class="QHBoxLayout" name="horizontalLayout_13">
<property name="spacing">
<number>0</number>
</property>
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<property name="leftMargin">
<number>0</number>
</property>
@ -1209,28 +1215,13 @@
<number>0</number>
</property>
<item>
<widget class="QGroupBox" name="groupBox_2">
<property name="title">
<string>Selection</string>
<widget class="QScrollArea" name="scrollArea_SelectedMetatiles">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QGridLayout" name="gridLayout_17">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="0">
<widget class="QScrollArea" name="scrollArea_6">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
@ -1240,13 +1231,13 @@
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents_6">
<widget class="QWidget" name="scrollAreaWidgetContents_SelectedMetatiles">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>420</width>
<height>74</height>
<height>78</height>
</rect>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_7">
@ -1279,7 +1270,7 @@
</spacer>
</item>
<item>
<widget class="QGraphicsView" name="graphicsView_currentMetatileSelection">
<widget class="NoScrollGraphicsView" name="graphicsView_currentMetatileSelection">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Preferred">
<horstretch>0</horstretch>
@ -1298,9 +1289,6 @@
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="interactive">
<bool>true</bool>
</property>
</widget>
</item>
<item>
@ -1322,16 +1310,47 @@
</item>
</layout>
</widget>
</item>
</layout>
</widget>
</item>
<item row="3" column="0">
<widget class="QGroupBox" name="groupBox">
<property name="title">
<string>Border</string>
<widget class="QScrollArea" name="scrollArea_MetatileSelector">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>4</verstretch>
</sizepolicy>
</property>
<layout class="QGridLayout" name="gridLayout_16">
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOn</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAsNeeded</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustIgnored</enum>
</property>
<property name="widgetResizable">
<bool>true</bool>
</property>
<property name="alignment">
<set>Qt::AlignHCenter|Qt::AlignTop</set>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents_MetatileSelector">
<property name="enabled">
<bool>true</bool>
</property>
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>409</width>
<height>440</height>
</rect>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QGridLayout" name="gridLayout_5">
<property name="leftMargin">
<number>0</number>
</property>
@ -1347,36 +1366,8 @@
<property name="spacing">
<number>0</number>
</property>
<item row="0" column="1">
<widget class="QGraphicsView" name="graphicsView_BorderMetatile">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>48</height>
</size>
</property>
<property name="toolTip">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;The border is a 2x2 metatile which is repeated outside of the map layout's boundary. Draw on this border area to modify it.&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Sunken</enum>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAsNeeded</enum>
</property>
</widget>
</item>
<item row="0" column="0">
<spacer name="horizontalSpacer_12">
<spacer name="horizontalSpacer_14">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@ -1388,8 +1379,30 @@
</property>
</spacer>
</item>
<item row="0" column="1">
<widget class="NoScrollGraphicsView" name="graphicsView_Metatiles">
<property name="enabled">
<bool>true</bool>
</property>
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="horizontalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
<property name="sizeAdjustPolicy">
<enum>QAbstractScrollArea::AdjustIgnored</enum>
</property>
</widget>
</item>
<item row="0" column="2">
<spacer name="horizontalSpacer_13">
<spacer name="horizontalSpacer_15">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
@ -1401,13 +1414,31 @@
</property>
</spacer>
</item>
<item row="1" column="1">
<spacer name="verticalSpacer_5">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
</widget>
</item>
<item row="2" column="0">
</layout>
</widget>
</item>
<item row="1" column="0">
<widget class="QFrame" name="frame_Tilesets">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<sizepolicy hsizetype="Preferred" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
@ -1419,14 +1450,14 @@
<enum>QFrame::Raised</enum>
</property>
<layout class="QFormLayout" name="formLayout">
<item row="0" column="0">
<item row="1" column="0">
<widget class="QLabel" name="label_PrimaryTileset">
<property name="text">
<string>Primary Tileset</string>
</property>
</widget>
</item>
<item row="0" column="1">
<item row="1" column="1">
<widget class="NoScrollComboBox" name="comboBox_PrimaryTileset">
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
@ -1439,14 +1470,14 @@
</property>
</widget>
</item>
<item row="1" column="0">
<item row="2" column="0">
<widget class="QLabel" name="label_SecondaryTileset">
<property name="text">
<string>Secondary Tileset</string>
</property>
</widget>
</item>
<item row="1" column="1">
<item row="2" column="1">
<widget class="NoScrollComboBox" name="comboBox_SecondaryTileset">
<property name="focusPolicy">
<enum>Qt::StrongFocus</enum>
@ -1459,10 +1490,7 @@
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="1" column="0">
<item row="0" column="0">
<widget class="QFrame" name="frame_LayoutSelection">
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
@ -1484,6 +1512,9 @@
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item row="0" column="1">
<widget class="NoScrollComboBox" name="comboBox_LayoutSelector"/>
</item>
@ -1529,17 +1560,17 @@
</widget>
</item>
<item row="5" column="0" colspan="3">
<widget class="QScrollArea" name="scrollArea_1">
<widget class="QScrollArea" name="scrollArea_Collision">
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<widget class="QWidget" name="scrollAreaWidgetContents_Collision">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>427</width>
<height>512</height>
<width>424</width>
<height>627</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_7">
@ -1572,7 +1603,7 @@
</spacer>
</item>
<item row="2" column="1">
<widget class="QGraphicsView" name="graphicsView_Collision">
<widget class="NoScrollGraphicsView" name="graphicsView_Collision">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Preferred">
<horstretch>0</horstretch>
@ -1758,8 +1789,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>382</width>
<height>611</height>
<width>379</width>
<height>732</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout_14">
@ -2059,7 +2090,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>100</width>
<width>85</width>
<height>16</height>
</rect>
</property>
@ -2153,7 +2184,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>100</width>
<width>85</width>
<height>16</height>
</rect>
</property>
@ -2247,7 +2278,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>100</width>
<width>85</width>
<height>16</height>
</rect>
</property>
@ -2347,7 +2378,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>100</width>
<width>85</width>
<height>16</height>
</rect>
</property>
@ -2441,7 +2472,7 @@
<rect>
<x>0</x>
<y>0</y>
<width>100</width>
<width>85</width>
<height>16</height>
</rect>
</property>
@ -3457,6 +3488,7 @@
<addaction name="actionAbout_Porymap"/>
<addaction name="actionOpen_Log_File"/>
<addaction name="actionOpen_Config_Folder"/>
<addaction name="actionCheck_for_Updates"/>
</widget>
<widget class="QMenu" name="menuOptions">
<property name="title">
@ -3751,6 +3783,14 @@
<string>Custom Scripts...</string>
</property>
</action>
<action name="actionCheck_for_Updates">
<property name="text">
<string>Check for Updates...</string>
</property>
<property name="menuRole">
<enum>QAction::ApplicationSpecificRole</enum>
</property>
</action>
</widget>
<layoutdefault spacing="6" margin="11"/>
<customwidgets>
@ -3785,6 +3825,11 @@
<extends>QTreeView</extends>
<header>maplistmodels.h</header>
</customwidget>
<customwidget>
<class>NoScrollGraphicsView</class>
<extends>QGraphicsView</extends>
<header>mapview.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="../resources/images.qrc"/>

View file

@ -26,6 +26,9 @@
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QCheckBox" name="checkBox_MonitorProjectFiles">
<property name="toolTip">
<string>If checked, a prompt to reload your project will appear if relevant project files are edited</string>
</property>
<property name="text">
<string>Monitor project files</string>
</property>
@ -33,11 +36,24 @@
</item>
<item>
<widget class="QCheckBox" name="checkBox_OpenRecentProject">
<property name="toolTip">
<string>If checked, Porymap will automatically open your most recently opened project on startup</string>
</property>
<property name="text">
<string>Open recent project on launch</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkBox_CheckForUpdates">
<property name="toolTip">
<string>If checked, Porymap will automatically alert you on startup if a new release is available</string>
</property>
<property name="text">
<string>Automatically check for updates</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>

View file

@ -58,9 +58,9 @@
<bool>true</bool>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
<set>Qt::AlignHCenter|Qt::AlignTop</set>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents_2">
<widget class="QWidget" name="scrollAreaWidgetContents_Metatiles">
<property name="geometry">
<rect>
<x>0</x>
@ -85,21 +85,8 @@
<property name="horizontalSpacing">
<number>6</number>
</property>
<item row="1" column="1">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1">
<widget class="QGraphicsView" name="graphicsView_Metatiles">
<item row="0" column="0">
<widget class="NoScrollGraphicsView" name="graphicsView_Metatiles">
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
@ -108,28 +95,15 @@
</property>
</widget>
</item>
<item row="0" column="0">
<spacer name="horizontalSpacer_2">
<item row="1" column="0">
<spacer name="verticalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
<enum>Qt::Vertical</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="2">
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
<width>20</width>
<height>40</height>
</size>
</property>
</spacer>
@ -561,9 +535,9 @@
<bool>true</bool>
</property>
<property name="alignment">
<set>Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop</set>
<set>Qt::AlignHCenter|Qt::AlignTop</set>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<widget class="QWidget" name="scrollAreaWidgetContents_Tiles">
<property name="geometry">
<rect>
<x>0</x>
@ -585,21 +559,8 @@
<property name="bottomMargin">
<number>0</number>
</property>
<item row="0" column="2">
<spacer name="horizontalSpacer_4">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="0" column="1">
<widget class="QGraphicsView" name="graphicsView_Tiles">
<item row="0" column="0">
<widget class="NoScrollGraphicsView" name="graphicsView_Tiles">
<property name="verticalScrollBarPolicy">
<enum>Qt::ScrollBarAlwaysOff</enum>
</property>
@ -608,8 +569,8 @@
</property>
</widget>
</item>
<item row="1" column="1">
<spacer name="verticalSpacer_4">
<item row="1" column="0">
<spacer name="verticalSpacer_2">
<property name="orientation">
<enum>Qt::Vertical</enum>
</property>
@ -621,19 +582,6 @@
</property>
</spacer>
</item>
<item row="0" column="0">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</widget>
@ -858,6 +806,11 @@
<extends>QComboBox</extends>
<header>noscrollcombobox.h</header>
</customwidget>
<customwidget>
<class>NoScrollGraphicsView</class>
<extends>QGraphicsView</extends>
<header>mapview.h</header>
</customwidget>
</customwidgets>
<resources>
<include location="../resources/images.qrc"/>

104
forms/updatepromoter.ui Normal file
View file

@ -0,0 +1,104 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>UpdatePromoter</class>
<widget class="QDialog" name="UpdatePromoter">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>592</width>
<height>484</height>
</rect>
</property>
<property name="windowTitle">
<string>Porymap Version Update</string>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QFrame" name="frame">
<property name="frameShape">
<enum>QFrame::StyledPanel</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Raised</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_2">
<item>
<widget class="QLabel" name="label_Status">
<property name="text">
<string/>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_Warning">
<property name="text">
<string>&lt;html&gt;&lt;head/&gt;&lt;body&gt;&lt;p&gt;&lt;span style=&quot; font-size:13pt; color:#d7000c;&quot;&gt;WARNING: &lt;/span&gt;&lt;span style=&quot; font-weight:400;&quot;&gt;Updating Porymap may require you to update your projects. See &quot;Breaking Changes&quot; in the Changelog for details.&lt;/span&gt;&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;</string>
</property>
<property name="wordWrap">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QFrame" name="frame_Changelog">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="frameShadow">
<enum>QFrame::Plain</enum>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<widget class="QTextBrowser" name="text_Changelog">
<property name="openExternalLinks">
<bool>true</bool>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QCheckBox" name="checkBox_StopAlerts">
<property name="text">
<string>Do not alert me about new updates</string>
</property>
</widget>
</item>
</layout>
</widget>
</item>
<item>
<widget class="QDialogButtonBox" name="buttonBox">
<property name="standardButtons">
<set>QDialogButtonBox::Close|QDialogButtonBox::Retry</set>
</property>
</widget>
</item>
</layout>
</widget>
<resources/>
<connections/>
</ui>

View file

@ -8,9 +8,14 @@
#include <QSize>
#include <QKeySequence>
#include <QMultiMap>
#include <QDateTime>
#include <QUrl>
#include <QVersionNumber>
#include "events.h"
static const QVersionNumber porymapVersion = QVersionNumber::fromString(PORYMAP_VERSION);
// In both versions the default new map border is a generic tree
#define DEFAULT_BORDER_RSE (QList<uint16_t>{0x1D4, 0x1D5, 0x1DC, 0x1DD})
#define DEFAULT_BORDER_FRLG (QList<uint16_t>{0x14, 0x15, 0x1C, 0x1D})
@ -74,14 +79,18 @@ public:
this->paletteEditorBitDepth = 24;
this->projectSettingsTab = 0;
this->warpBehaviorWarningDisabled = false;
this->checkForUpdates = true;
this->lastUpdateCheckTime = QDateTime();
this->lastUpdateCheckVersion = porymapVersion;
this->rateLimitTimes.clear();
}
void addRecentProject(QString project);
void setRecentProjects(QStringList projects);
void setReopenOnLaunch(bool enabled);
void setMapSortOrder(MapSortOrder order);
void setPrettyCursors(bool enabled);
void setMainGeometry(QByteArray, QByteArray, QByteArray, QByteArray);
void setTilesetEditorGeometry(QByteArray, QByteArray);
void setMainGeometry(QByteArray, QByteArray, QByteArray, QByteArray, QByteArray);
void setTilesetEditorGeometry(QByteArray, QByteArray, QByteArray);
void setPaletteEditorGeometry(QByteArray, QByteArray);
void setRegionMapEditorGeometry(QByteArray, QByteArray);
void setProjectSettingsEditorGeometry(QByteArray, QByteArray);
@ -105,6 +114,10 @@ public:
void setPaletteEditorBitDepth(int bitDepth);
void setProjectSettingsTab(int tab);
void setWarpBehaviorWarningDisabled(bool disabled);
void setCheckForUpdates(bool enabled);
void setLastUpdateCheckTime(QDateTime time);
void setLastUpdateCheckVersion(QVersionNumber version);
void setRateLimitTimes(QMap<QUrl, QDateTime> map);
QString getRecentProject();
QStringList getRecentProjects();
bool getReopenOnLaunch();
@ -135,6 +148,10 @@ public:
int getPaletteEditorBitDepth();
int getProjectSettingsTab();
bool getWarpBehaviorWarningDisabled();
bool getCheckForUpdates();
QDateTime getLastUpdateCheckTime();
QVersionNumber getLastUpdateCheckVersion();
QMap<QUrl, QDateTime> getRateLimitTimes();
protected:
virtual QString getConfigFilepath() override;
virtual void parseConfigKeyValue(QString key, QString value) override;
@ -151,10 +168,11 @@ private:
QByteArray mainWindowGeometry;
QByteArray mainWindowState;
QByteArray mapSplitterState;
QByteArray eventsSlpitterState;
QByteArray mainSplitterState;
QByteArray metatilesSplitterState;
QByteArray tilesetEditorGeometry;
QByteArray tilesetEditorState;
QByteArray tilesetEditorSplitterState;
QByteArray paletteEditorGeometry;
QByteArray paletteEditorState;
QByteArray regionMapEditorGeometry;
@ -182,6 +200,10 @@ private:
int paletteEditorBitDepth;
int projectSettingsTab;
bool warpBehaviorWarningDisabled;
bool checkForUpdates;
QDateTime lastUpdateCheckTime;
QVersionNumber lastUpdateCheckVersion;
QMap<QUrl, QDateTime> rateLimitTimes;
};
extern PorymapConfig porymapConfig;

View file

@ -67,6 +67,7 @@ public:
bool needsLayoutDir = true;
bool needsHealLocation = false;
bool scriptsLoaded = false;
QMap<Event::Group, QList<Event *>> events;
QList<Event *> ownedEvents; // for memory management
@ -85,7 +86,7 @@ public:
int getBorderHeight();
QList<Event *> getAllEvents() const;
QStringList getScriptLabels(Event::Group group = Event::Group::None) const;
QStringList getScriptLabels(Event::Group group = Event::Group::None);
QString getScriptsFilePath() const;
void openScript(QString label);
void removeEvent(Event *);

87
include/core/network.h Normal file
View file

@ -0,0 +1,87 @@
#ifndef NETWORK_H
#define NETWORK_H
/*
The two classes defined here provide a simplified interface for Qt's network classes QNetworkAccessManager and QNetworkReply.
With the Qt classes, the workflow for a GET is roughly: generate a QNetworkRequest, give this request to QNetworkAccessManager::get,
connect the returned object to QNetworkReply::finished, and in the slot of that connection handle the various HTTP headers and attributes,
then manage errors or process the webpage's body.
These classes handle generating the QNetworkRequest with a given URL and manage the HTTP headers in the reply. They will automatically
respect rate limits and return cached data if the webpage hasn't changed since previous requests. Instead of interacting with a QNetworkReply,
callers interact with a simplified NetworkReplyData.
Example that logs Porymap's description on GitHub:
NetworkAccessManager * manager = new NetworkAccessManager(this);
NetworkReplyData * reply = manager->get("https://api.github.com/repos/huderlem/porymap");
connect(reply, &NetworkReplyData::finished, [reply] () {
if (!reply->errorString().isEmpty()) {
logError(QString("Failed to read description: %1").arg(reply->errorString()));
} else {
auto webpage = QJsonDocument::fromJson(reply->body());
logInfo(QString("Porymap: %1").arg(webpage["description"].toString()));
}
reply->deleteLater();
});
*/
#include <QNetworkAccessManager>
#include <QNetworkRequest>
#include <QNetworkReply>
#include <QDateTime>
class NetworkReplyData : public QObject
{
Q_OBJECT
public:
QUrl url() const { return m_url; }
QUrl nextUrl() const { return m_nextUrl; }
QByteArray body() const { return m_body; }
QString errorString() const { return m_error; }
QDateTime retryAfter() const { return m_retryAfter; }
bool isFinished() const { return m_finished; }
friend class NetworkAccessManager;
private:
QUrl m_url;
QUrl m_nextUrl;
QByteArray m_body;
QString m_error;
QDateTime m_retryAfter;
bool m_finished;
void finish() {
m_finished = true;
emit finished();
};
signals:
void finished();
};
class NetworkAccessManager : public QNetworkAccessManager
{
Q_OBJECT
public:
NetworkAccessManager(QObject * parent = nullptr);
~NetworkAccessManager();
NetworkReplyData * get(const QString &url);
NetworkReplyData * get(const QUrl &url);
private:
// For a more complex cache we could implement a QAbstractCache for the manager
struct CacheEntry {
QString eTag;
QByteArray data;
};
QMap<QUrl, CacheEntry*> cache;
QMap<QUrl, QDateTime> rateLimitTimes;
void processReply(QNetworkReply * reply, NetworkReplyData * data);
const QNetworkRequest getRequest(const QUrl &url);
};
#endif // NETWORK_H

View file

@ -28,6 +28,7 @@
#include "preferenceeditor.h"
#include "projectsettingseditor.h"
#include "customscriptseditor.h"
#include "updatepromoter.h"
@ -306,6 +307,7 @@ private slots:
void on_spinBox_SelectedCollision_valueChanged(int collision);
void on_actionRegion_Map_Editor_triggered();
void on_actionPreferences_triggered();
void on_actionCheck_for_Updates_triggered();
void togglePreferenceSpecificUi();
void on_actionProject_Settings_triggered();
void on_actionCustom_Scripts_triggered();
@ -335,7 +337,8 @@ private:
FilterChildrenProxyModel *layoutListProxyModel;
LayoutTreeModel *layoutTreeModel;
QPointer<UpdatePromoter> updatePromoter = nullptr;
QPointer<NetworkAccessManager> networkAccessManager = nullptr;
QAction *undoAction = nullptr;
QAction *redoAction = nullptr;
@ -414,7 +417,6 @@ private:
void initShortcuts();
void initExtraShortcuts();
void setProjectSpecificUI();
void setWildEncountersUIEnabled(bool enabled);
void loadUserSettings();
void applyMapListFilter(QString filterText);
void restoreWindowState();
@ -432,11 +434,15 @@ private:
void openProjectSettingsEditor(int tab);
bool isProjectOpen();
void showExportMapImageWindow(ImageExporterMode mode);
double getMetatilesZoomScale();
void redrawMetatileSelection();
void scrollMetatileSelectorToSelection();
QObjectList shortcutableObjects() const;
void addCustomHeaderValue(QString key, QJsonValue value, bool isNew = false);
int insertTilesetLabel(QStringList * list, QString label);
void checkForUpdates(bool requestedByUser);
};
#endif // MAINWINDOW_H

View file

@ -55,6 +55,7 @@ public:
QMap<int, QString> mapSectionValueToName;
QMap<QString, EventGraphics*> eventGraphicsMap;
QMap<QString, int> gfxDefines;
QString defaultSong;
QStringList songNames;
QStringList itemNames;
QStringList flagNames;
@ -79,6 +80,7 @@ public:
bool usingAsmTilesets;
QString importExportPath;
QSet<QString> disabledSettingsNames;
bool wildEncountersLoaded;
// For files that are read and could contain extra text
QMap<QString, QString> extraFileText;
@ -174,8 +176,6 @@ public:
void saveTilesetMetatiles(Tileset*);
void saveTilesetTilesImage(Tileset*);
void saveTilesetPalettes(Tileset*);
QString defaultSong;
void appendTilesetLabel(QString label, QString isSecondaryStr);
bool readTilesetLabels();
bool readTilesetMetatileLabels();
@ -264,7 +264,6 @@ private:
signals:
void reloadProject();
void uncheckMonitorFilesAction();
void disableWildEncountersUI();
};
#endif // PROJECT_H

View file

@ -52,7 +52,6 @@ public:
static QJSValue fromBlock(Block block);
static QJSValue fromTile(Tile tile);
static Tile toTile(QJSValue obj);
static QJSValue version(QList<int> versionNums);
static QJSValue dimensions(int width, int height);
static QJSValue position(int x, int y);
static const QImage * getImage(const QString &filepath, bool useCache);

View file

@ -14,7 +14,6 @@ class AboutPorymap : public QMainWindow
public:
explicit AboutPorymap(QWidget *parent = nullptr);
~AboutPorymap();
QList<int> getVersionNumbers();
private:
Ui::AboutPorymap *ui;
};

View file

@ -4,12 +4,23 @@
#include <QGraphicsView>
#include <QMouseEvent>
class ClickableGraphicsView : public QGraphicsView
class NoScrollGraphicsView : public QGraphicsView
{
Q_OBJECT
public:
ClickableGraphicsView() : QGraphicsView() {}
ClickableGraphicsView(QWidget *parent) : QGraphicsView(parent) {}
NoScrollGraphicsView(QWidget *parent = nullptr) : QGraphicsView(parent) {}
protected:
void wheelEvent(QWheelEvent *event) {
event->ignore();
}
};
class ClickableGraphicsView : public NoScrollGraphicsView
{
Q_OBJECT
public:
ClickableGraphicsView(QWidget *parent = nullptr) : NoScrollGraphicsView(parent) {}
public:
void mouseReleaseEvent(QMouseEvent *event) override {

View file

@ -45,13 +45,14 @@ public:
QPoint getSelectionDimensions();
void draw();
bool select(uint16_t metatile);
bool selectFromMap(uint16_t metatileId, uint16_t collision, uint16_t elevation);
void selectFromMap(uint16_t metatileId, uint16_t collision, uint16_t elevation);
void setTilesets(Tileset*, Tileset*);
MetatileSelection getMetatileSelection();
void setPrefabSelection(MetatileSelection selection);
void setExternalSelection(int, int, QList<uint16_t>, QList<QPair<uint16_t, uint16_t>>);
QPoint getMetatileIdCoordsOnWidget(uint16_t);
void setLayout(Layout *layout);
bool isInternalSelection() const { return (!this->externalSelection && !this->prefabSelection); }
Tileset *primaryTileset;
Tileset *secondaryTileset;
protected:

View file

@ -134,6 +134,8 @@ private:
void setTilesets(QString primaryTilesetLabel, QString secondaryTilesetLabel);
void reset();
void drawSelectedTiles();
void redrawTileSelector();
void redrawMetatileSelector();
void importTilesetTiles(Tileset*, bool);
void importTilesetMetatiles(Tileset*, bool);
void refresh();

View file

@ -0,0 +1,50 @@
#ifndef UPDATEPROMOTER_H
#define UPDATEPROMOTER_H
#include "network.h"
#include <QDialog>
#include <QPushButton>
#include <QVersionNumber>
namespace Ui {
class UpdatePromoter;
}
class UpdatePromoter : public QDialog
{
Q_OBJECT
public:
explicit UpdatePromoter(QWidget *parent, NetworkAccessManager *manager);
~UpdatePromoter() {};
void checkForUpdates();
void updatePreferences();
private:
Ui::UpdatePromoter *ui;
NetworkAccessManager *const manager;
QPushButton * button_Downloads;
QPushButton * button_Retry;
QString changelog;
QUrl downloadUrl;
QVersionNumber newVersion;
bool foundReleases;
QSet<QUrl> visitedUrls; // Prevent infinite redirection
void resetDialog();
void get(const QUrl &url);
void processWebpage(const QJsonDocument &data, const QUrl &nextUrl);
void error(const QString &err, const QDateTime time = QDateTime());
private slots:
void dialogButtonClicked(QAbstractButton *button);
signals:
void changedPreferences();
};
#endif // UPDATEPROMOTER_H

View file

@ -4,7 +4,7 @@
#
#-------------------------------------------------
QT += core gui qml
QT += core gui qml network
greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
@ -14,6 +14,8 @@ RC_ICONS = resources/icons/porymap-icon-2.ico
ICON = resources/icons/porymap.icns
QMAKE_CXXFLAGS += -std=c++17 -Wall
QMAKE_TARGET_BUNDLE_PREFIX = com.pret
VERSION = 5.4.0
DEFINES += PORYMAP_VERSION=\\\"$$VERSION\\\"
SOURCES += src/core/block.cpp \
src/core/bitpacker.cpp \
@ -26,6 +28,7 @@ SOURCES += src/core/block.cpp \
src/core/mapparser.cpp \
src/core/metatile.cpp \
src/core/metatileparser.cpp \
src/core/network.cpp \
src/core/paletteutil.cpp \
src/core/parseutil.cpp \
src/core/tile.cpp \
@ -103,7 +106,8 @@ SOURCES += src/core/block.cpp \
src/project.cpp \
src/settings.cpp \
src/log.cpp \
src/ui/uintspinbox.cpp
src/ui/uintspinbox.cpp \
src/ui/updatepromoter.cpp
HEADERS += include/core/block.h \
include/core/bitpacker.h \
@ -118,6 +122,7 @@ HEADERS += include/core/block.h \
include/core/mapparser.h \
include/core/metatile.h \
include/core/metatileparser.h \
include/core/network.h \
include/core/paletteutil.h \
include/core/parseutil.h \
include/core/tile.h \
@ -198,7 +203,8 @@ HEADERS += include/core/block.h \
include/scriptutility.h \
include/settings.h \
include/log.h \
include/ui/uintspinbox.h
include/ui/uintspinbox.h \
include/ui/updatepromoter.h
FORMS += forms/mainwindow.ui \
forms/prefabcreationdialog.ui \
@ -216,7 +222,8 @@ FORMS += forms/mainwindow.ui \
forms/colorpicker.ui \
forms/projectsettingseditor.ui \
forms/customscriptseditor.ui \
forms/customscriptslistitem.ui
forms/customscriptslistitem.ui \
forms/updatepromoter.ui
RESOURCES += \
resources/images.qrc \

View file

@ -342,12 +342,16 @@ void PorymapConfig::parseConfigKeyValue(QString key, QString value) {
this->mapSplitterState = bytesFromString(value);
} else if (key == "main_splitter_state") {
this->mainSplitterState = bytesFromString(value);
} else if (key == "metatiles_splitter_state") {
this->metatilesSplitterState = bytesFromString(value);
} else if (key == "collision_opacity") {
this->collisionOpacity = getConfigInteger(key, value, 0, 100, 50);
} else if (key == "tileset_editor_geometry") {
this->tilesetEditorGeometry = bytesFromString(value);
} else if (key == "tileset_editor_state") {
this->tilesetEditorState = bytesFromString(value);
} else if (key == "tileset_editor_splitter_state") {
this->tilesetEditorSplitterState = bytesFromString(value);
} else if (key == "palette_editor_geometry") {
this->paletteEditorGeometry = bytesFromString(value);
} else if (key == "palette_editor_state") {
@ -403,6 +407,24 @@ void PorymapConfig::parseConfigKeyValue(QString key, QString value) {
this->projectSettingsTab = getConfigInteger(key, value, 0);
} else if (key == "warp_behavior_warning_disabled") {
this->warpBehaviorWarningDisabled = getConfigBool(key, value);
} else if (key == "check_for_updates") {
this->checkForUpdates = getConfigBool(key, value);
} else if (key == "last_update_check_time") {
this->lastUpdateCheckTime = QDateTime::fromString(value).toLocalTime();
} else if (key == "last_update_check_version") {
auto version = QVersionNumber::fromString(value);
if (version.segmentCount() != 3) {
logWarn(QString("Invalid config value for %1: '%2'. Must be 3 numbers separated by '.'").arg(key).arg(value));
this->lastUpdateCheckVersion = porymapVersion;
} else {
this->lastUpdateCheckVersion = version;
}
} else if (key.startsWith("rate_limit_time/")) {
static const QRegularExpression regex("\\brate_limit_time/(?<url>.+)");
QRegularExpressionMatch match = regex.match(key);
if (match.hasMatch()) {
this->rateLimitTimes.insert(match.captured("url"), QDateTime::fromString(value).toLocalTime());
}
} else {
logWarn(QString("Invalid config key found in config file %1: '%2'").arg(this->getConfigFilepath()).arg(key));
}
@ -418,8 +440,10 @@ QMap<QString, QString> PorymapConfig::getKeyValueMap() {
map.insert("main_window_state", stringFromByteArray(this->mainWindowState));
map.insert("map_splitter_state", stringFromByteArray(this->mapSplitterState));
map.insert("main_splitter_state", stringFromByteArray(this->mainSplitterState));
map.insert("metatiles_splitter_state", stringFromByteArray(this->metatilesSplitterState));
map.insert("tileset_editor_geometry", stringFromByteArray(this->tilesetEditorGeometry));
map.insert("tileset_editor_state", stringFromByteArray(this->tilesetEditorState));
map.insert("tileset_editor_splitter_state", stringFromByteArray(this->tilesetEditorSplitterState));
map.insert("palette_editor_geometry", stringFromByteArray(this->paletteEditorGeometry));
map.insert("palette_editor_state", stringFromByteArray(this->paletteEditorState));
map.insert("region_map_editor_geometry", stringFromByteArray(this->regionMapEditorGeometry));
@ -447,6 +471,15 @@ QMap<QString, QString> PorymapConfig::getKeyValueMap() {
map.insert("palette_editor_bit_depth", QString::number(this->paletteEditorBitDepth));
map.insert("project_settings_tab", QString::number(this->projectSettingsTab));
map.insert("warp_behavior_warning_disabled", QString::number(this->warpBehaviorWarningDisabled));
map.insert("check_for_updates", QString::number(this->checkForUpdates));
map.insert("last_update_check_time", this->lastUpdateCheckTime.toUTC().toString());
map.insert("last_update_check_version", this->lastUpdateCheckVersion.toString());
for (auto i = this->rateLimitTimes.cbegin(), end = this->rateLimitTimes.cend(); i != end; i++){
// Only include rate limit times that are still active (i.e., in the future)
const QDateTime time = i.value();
if (!time.isNull() && time > QDateTime::currentDateTime())
map.insert("rate_limit_time/" + i.key().toString(), time.toUTC().toString());
}
return map;
}
@ -505,17 +538,20 @@ void PorymapConfig::setTilesetCheckerboardFill(bool checkerboard) {
}
void PorymapConfig::setMainGeometry(QByteArray mainWindowGeometry_, QByteArray mainWindowState_,
QByteArray mapSplitterState_, QByteArray mainSplitterState_) {
QByteArray mapSplitterState_, QByteArray mainSplitterState_, QByteArray metatilesSplitterState_) {
this->mainWindowGeometry = mainWindowGeometry_;
this->mainWindowState = mainWindowState_;
this->mapSplitterState = mapSplitterState_;
this->mainSplitterState = mainSplitterState_;
this->metatilesSplitterState = metatilesSplitterState_;
this->save();
}
void PorymapConfig::setTilesetEditorGeometry(QByteArray tilesetEditorGeometry_, QByteArray tilesetEditorState_) {
void PorymapConfig::setTilesetEditorGeometry(QByteArray tilesetEditorGeometry_, QByteArray tilesetEditorState_,
QByteArray tilesetEditorSplitterState_) {
this->tilesetEditorGeometry = tilesetEditorGeometry_;
this->tilesetEditorState = tilesetEditorState_;
this->tilesetEditorSplitterState = tilesetEditorSplitterState_;
this->save();
}
@ -622,6 +658,31 @@ void PorymapConfig::setProjectSettingsTab(int tab) {
this->save();
}
void PorymapConfig::setWarpBehaviorWarningDisabled(bool disabled) {
this->warpBehaviorWarningDisabled = disabled;
this->save();
}
void PorymapConfig::setCheckForUpdates(bool enabled) {
this->checkForUpdates = enabled;
this->save();
}
void PorymapConfig::setLastUpdateCheckTime(QDateTime time) {
this->lastUpdateCheckTime = time;
this->save();
}
void PorymapConfig::setLastUpdateCheckVersion(QVersionNumber version) {
this->lastUpdateCheckVersion = version;
this->save();
}
void PorymapConfig::setRateLimitTimes(QMap<QUrl, QDateTime> map) {
this->rateLimitTimes = map;
this->save();
}
QString PorymapConfig::getRecentProject() {
return this->recentProjects.value(0);
}
@ -649,6 +710,7 @@ QMap<QString, QByteArray> PorymapConfig::getMainGeometry() {
geometry.insert("main_window_state", this->mainWindowState);
geometry.insert("map_splitter_state", this->mapSplitterState);
geometry.insert("main_splitter_state", this->mainSplitterState);
geometry.insert("metatiles_splitter_state", this->metatilesSplitterState);
return geometry;
}
@ -658,6 +720,7 @@ QMap<QString, QByteArray> PorymapConfig::getTilesetEditorGeometry() {
geometry.insert("tileset_editor_geometry", this->tilesetEditorGeometry);
geometry.insert("tileset_editor_state", this->tilesetEditorState);
geometry.insert("tileset_editor_splitter_state", this->tilesetEditorSplitterState);
return geometry;
}
@ -770,15 +833,26 @@ int PorymapConfig::getProjectSettingsTab() {
return this->projectSettingsTab;
}
void PorymapConfig::setWarpBehaviorWarningDisabled(bool disabled) {
this->warpBehaviorWarningDisabled = disabled;
this->save();
}
bool PorymapConfig::getWarpBehaviorWarningDisabled() {
return this->warpBehaviorWarningDisabled;
}
bool PorymapConfig::getCheckForUpdates() {
return this->checkForUpdates;
}
QDateTime PorymapConfig::getLastUpdateCheckTime() {
return this->lastUpdateCheckTime;
}
QVersionNumber PorymapConfig::getLastUpdateCheckVersion() {
return this->lastUpdateCheckVersion;
}
QMap<QUrl, QDateTime> PorymapConfig::getRateLimitTimes() {
return this->rateLimitTimes;
}
const QStringList ProjectConfig::versionStrings = {
"pokeruby",
"pokefirered",

View file

@ -1,5 +1,5 @@
#include "bitpacker.h"
#include <limits.h>
#include <climits>
// Sometimes we can't explicitly define bitfields because we need to allow users to
// change the size and arrangement of its members. In those cases we use this

View file

@ -233,8 +233,8 @@ bool ObjectEvent::loadFromJson(QJsonObject json, Project *) {
}
void ObjectEvent::setDefaultValues(Project *project) {
this->setGfx(project->gfxDefines.keys().first());
this->setMovement(project->movementTypes.first());
this->setGfx(project->gfxDefines.keys().value(0, "0"));
this->setMovement(project->movementTypes.value(0, "0"));
this->setScript("NULL");
this->setTrainerType(project->trainerTypes.value(0, "0"));
this->setFlag("0");
@ -404,7 +404,7 @@ bool CloneObjectEvent::loadFromJson(QJsonObject json, Project *project) {
}
void CloneObjectEvent::setDefaultValues(Project *project) {
this->setGfx(project->gfxDefines.keys().first());
this->setGfx(project->gfxDefines.keys().value(0, "0"));
this->setTargetID(1);
if (this->getMap()) this->setTargetMap(this->getMap()->name);
}
@ -436,8 +436,8 @@ void CloneObjectEvent::loadPixmap(Project *project) {
this->movement = clonedObject->getMovement();
} else {
// Invalid object specified, use default graphics data (as would be shown in-game)
this->gfx = project->gfxDefines.key(0);
this->movement = project->movementTypes.first();
this->gfx = project->gfxDefines.key(0, "0");
this->movement = project->movementTypes.value(0, "0");
}
EventGraphics *eventGfx = project->eventGraphicsMap.value(gfx, nullptr);
@ -596,7 +596,7 @@ bool TriggerEvent::loadFromJson(QJsonObject json, Project *) {
void TriggerEvent::setDefaultValues(Project *project) {
this->setScriptLabel("NULL");
this->setScriptVar(project->varNames.first());
this->setScriptVar(project->varNames.value(0, "0"));
this->setScriptVarValue("0");
this->setElevation(0);
}
@ -665,7 +665,7 @@ bool WeatherTriggerEvent::loadFromJson(QJsonObject json, Project *) {
}
void WeatherTriggerEvent::setDefaultValues(Project *project) {
this->setWeather(project->coordEventWeatherNames.first());
this->setWeather(project->coordEventWeatherNames.value(0, "0"));
this->setElevation(0);
}
@ -734,7 +734,7 @@ bool SignEvent::loadFromJson(QJsonObject json, Project *) {
}
void SignEvent::setDefaultValues(Project *project) {
this->setFacingDirection(project->bgEventFacingDirections.first());
this->setFacingDirection(project->bgEventFacingDirections.value(0, "0"));
this->setScriptLabel("NULL");
this->setElevation(0);
}
@ -819,8 +819,8 @@ bool HiddenItemEvent::loadFromJson(QJsonObject json, Project *) {
}
void HiddenItemEvent::setDefaultValues(Project *project) {
this->setItem(project->itemNames.first());
this->setFlag(project->flagNames.first());
this->setItem(project->itemNames.value(0, "0"));
this->setFlag(project->flagNames.value(0, "0"));
if (projectConfig.getHiddenItemQuantityEnabled()) {
this->setQuantity(1);
}
@ -898,7 +898,7 @@ bool SecretBaseEvent::loadFromJson(QJsonObject json, Project *) {
}
void SecretBaseEvent::setDefaultValues(Project *project) {
this->setBaseID(project->secretBaseIds.first());
this->setBaseID(project->secretBaseIds.value(0, "0"));
this->setElevation(0);
}

View file

@ -27,7 +27,7 @@ Map::~Map() {
void Map::setName(QString mapName) {
name = mapName;
constantName = mapConstantFromName(mapName);
scriptsFileLabels = ParseUtil::getGlobalScriptLabels(this->getScriptsFilePath());
scriptsLoaded = false;
}
void Map::setLayout(Layout *layout) {
@ -117,7 +117,12 @@ QList<Event *> Map::getAllEvents() const {
return all_events;
}
QStringList Map::getScriptLabels(Event::Group group) const {
QStringList Map::getScriptLabels(Event::Group group) {
if (!this->scriptsLoaded) {
this->scriptsFileLabels = ParseUtil::getGlobalScriptLabels(this->getScriptsFilePath());
this->scriptsLoaded = true;
}
QStringList scriptLabels;
// Get script labels currently in-use by the map's events
@ -136,7 +141,7 @@ QStringList Map::getScriptLabels(Event::Group group) const {
}
// Add scripts from map's scripts file, and empty names.
scriptLabels.append(scriptsFileLabels);
scriptLabels.append(this->scriptsFileLabels);
scriptLabels.sort(Qt::CaseInsensitive);
scriptLabels.prepend("0x0");
scriptLabels.prepend("NULL");

154
src/core/network.cpp Normal file
View file

@ -0,0 +1,154 @@
#include "network.h"
#include "config.h"
#include <QCoreApplication>
#include <QRegularExpression>
#include <QTimer>
// Fallback wait time (in seconds) for rate limiting
static const int DefaultWaitTime = 120;
NetworkAccessManager::NetworkAccessManager(QObject * parent) : QNetworkAccessManager(parent) {
// We store rate limit end times in the user's config so that Porymap will still respect them after a restart.
// To avoid reading/writing to a local file during network operations, we only read/write the file when the
// manager is created/destroyed respectively.
this->rateLimitTimes = porymapConfig.getRateLimitTimes();
this->setRedirectPolicy(QNetworkRequest::NoLessSafeRedirectPolicy);
};
NetworkAccessManager::~NetworkAccessManager() {
porymapConfig.setRateLimitTimes(this->rateLimitTimes);
qDeleteAll(this->cache);
}
const QNetworkRequest NetworkAccessManager::getRequest(const QUrl &url) {
QNetworkRequest request(url);
// Set User-Agent to porymap/#.#.#
request.setHeader(QNetworkRequest::UserAgentHeader, QString("%1/%2").arg(QCoreApplication::applicationName())
.arg(QCoreApplication::applicationVersion()));
// If we've made a successful request in this session already, set the If-None-Match header.
// We'll only get a full response from the server if the data has changed since this last request.
// This helps to avoid hitting rate limits.
auto cacheEntry = this->cache.value(url, nullptr);
if (cacheEntry)
request.setHeader(QNetworkRequest::IfNoneMatchHeader, cacheEntry->eTag);
return request;
}
NetworkReplyData * NetworkAccessManager::get(const QString &url) {
return this->get(QUrl(url));
}
NetworkReplyData * NetworkAccessManager::get(const QUrl &url) {
NetworkReplyData * data = new NetworkReplyData();
data->m_url = url;
// If we are rate-limited, don't send a new request.
if (this->rateLimitTimes.contains(url)) {
auto time = this->rateLimitTimes.value(url);
if (!time.isNull() && time > QDateTime::currentDateTime()) {
data->m_retryAfter = time;
data->m_error = QString("Rate limit reached. Please try again after %1.").arg(data->m_retryAfter.toString());
QTimer::singleShot(1000, data, &NetworkReplyData::finish); // We can't emit this signal before caller has a chance to connect
return data;
}
// Rate limiting expired
this->rateLimitTimes.remove(url);
}
QNetworkReply * reply = QNetworkAccessManager::get(this->getRequest(url));
connect(reply, &QNetworkReply::finished, [this, reply, data] {
this->processReply(reply, data);
data->finish();
});
return data;
}
void NetworkAccessManager::processReply(QNetworkReply * reply, NetworkReplyData * data) {
if (!reply || !reply->isFinished())
return;
// The url in the request and the url ultimately processed (reply->url()) may differ if the request was redirected.
// For identification purposes (e.g. knowing if we are rate limited before a request is made) we use the url that
// was originally given for the request.
auto url = data->m_url;
reply->deleteLater();
int statusCode = reply->attribute(QNetworkRequest::HttpStatusCodeAttribute).toInt();
// Handle pagination (specifically, the format GitHub uses).
// This header is still sent for a 304, so we don't need to bother caching it.
if (reply->hasRawHeader("link")) {
static const QRegularExpression regex("<(?<url>.+)?>; rel=\"next\"");
QRegularExpressionMatch match = regex.match(QString(reply->rawHeader("link")));
if (match.hasMatch())
data->m_nextUrl = QUrl(match.captured("url"));
}
if (statusCode == 304) {
// "Not Modified", data hasn't changed since our last request.
auto cacheEntry = this->cache.value(url, nullptr);
if (cacheEntry)
data->m_body = cacheEntry->data;
else
data->m_error = "Failed to read webpage from cache.";
return;
}
// Handle standard rate limit header
if (reply->hasRawHeader("retry-after")) {
auto retryAfter = QVariant(reply->rawHeader("retry-after"));
if (retryAfter.canConvert<QDateTime>()) {
data->m_retryAfter = retryAfter.toDateTime().toLocalTime();
} else if (retryAfter.canConvert<int>()) {
data->m_retryAfter = QDateTime::currentDateTime().addSecs(retryAfter.toInt());
}
if (data->m_retryAfter.isNull() || data->m_retryAfter <= QDateTime::currentDateTime()) {
data->m_retryAfter = QDateTime::currentDateTime().addSecs(DefaultWaitTime);
}
if (statusCode == 429) {
data->m_error = "Too many requests. ";
} else if (statusCode == 503) {
data->m_error = "Service busy or unavailable. ";
}
data->m_error.append(QString("Please try again after %1.").arg(data->m_retryAfter.toString()));
this->rateLimitTimes.insert(url, data->m_retryAfter);
return;
}
// Handle GitHub's rate limit headers. As of writing this is (without authentication) 60 requests per IP address per hour.
bool ok;
int limitRemaining = reply->rawHeader("x-ratelimit-remaining").toInt(&ok);
if (ok && limitRemaining <= 0) {
auto limitReset = reply->rawHeader("x-ratelimit-reset").toLongLong(&ok);
data->m_retryAfter = ok ? QDateTime::fromSecsSinceEpoch(limitReset).toLocalTime()
: QDateTime::currentDateTime().addSecs(DefaultWaitTime);;
data->m_error = QString("Too many requests. Please try again after %1.").arg(data->m_retryAfter.toString());
this->rateLimitTimes.insert(url, data->m_retryAfter);
return;
}
// Handle remaining errors generically
auto error = reply->error();
if (error != QNetworkReply::NoError) {
data->m_error = reply->errorString();
return;
}
// Successful reply, we've received new data. Insert this data in the cache.
CacheEntry * cacheEntry = this->cache.value(url, nullptr);
if (!cacheEntry) {
cacheEntry = new CacheEntry;
this->cache.insert(url, cacheEntry);
}
auto eTagHeader = reply->header(QNetworkRequest::ETagHeader);
if (eTagHeader.canConvert<QString>())
cacheEntry->eTag = eTagHeader.toString();
cacheEntry->data = data->m_body = reply->readAll();
}

View file

@ -43,6 +43,12 @@
#include <QSet>
#include <QLoggingCategory>
// We only publish release binaries for Windows and macOS.
// This is relevant for the update promoter, which alerts users of a new release.
#if defined(Q_OS_WIN) || defined(Q_OS_MACOS)
#define RELEASE_PLATFORM
#endif
using OrderedJson = poryjson::Json;
using OrderedJsonDoc = poryjson::JsonDoc;
@ -55,11 +61,13 @@ MainWindow::MainWindow(QWidget *parent) :
{
QCoreApplication::setOrganizationName("pret");
QCoreApplication::setApplicationName("porymap");
QCoreApplication::setApplicationVersion(PORYMAP_VERSION);
QApplication::setApplicationDisplayName("porymap");
QApplication::setWindowIcon(QIcon(":/icons/porymap-icon-2.ico"));
ui->setupUi(this);
cleanupLargeLog();
logInfo(QString("Launching Porymap v%1").arg(QCoreApplication::applicationVersion()));
this->initWindow();
if (porymapConfig.getReopenOnLaunch() && this->openProject(porymapConfig.getRecentProject(), true))
@ -68,6 +76,9 @@ MainWindow::MainWindow(QWidget *parent) :
// there is a bug affecting macOS users, where the trackpad deilveres a bad touch-release gesture
// the warning is a bit annoying, so it is disabled here
QLoggingCategory::setFilterRules(QStringLiteral("qt.pointer.dispatch=false"));
if (porymapConfig.getCheckForUpdates())
this->checkForUpdates(false);
}
MainWindow::~MainWindow()
@ -93,6 +104,7 @@ void MainWindow::setWindowDisabled(bool disabled) {
ui->actionAbout_Porymap->setDisabled(false);
ui->actionOpen_Log_File->setDisabled(false);
ui->actionOpen_Config_Folder->setDisabled(false);
ui->actionCheck_for_Updates->setDisabled(false);
if (!disabled)
togglePreferenceSpecificUi();
}
@ -107,6 +119,10 @@ void MainWindow::initWindow() {
this->initShortcuts();
this->restoreWindowState();
#ifndef RELEASE_PLATFORM
ui->actionCheck_for_Updates->setVisible(false);
#endif
setWindowDisabled(true);
}
@ -281,6 +297,39 @@ void MainWindow::initExtraSignals() {
label_MapRulerStatus->setTextInteractionFlags(Qt::TextSelectableByMouse);
}
void MainWindow::on_actionCheck_for_Updates_triggered() {
checkForUpdates(true);
}
#ifdef RELEASE_PLATFORM
void MainWindow::checkForUpdates(bool requestedByUser) {
if (!this->networkAccessManager)
this->networkAccessManager = new NetworkAccessManager(this);
if (!this->updatePromoter) {
this->updatePromoter = new UpdatePromoter(this, this->networkAccessManager);
connect(this->updatePromoter, &UpdatePromoter::changedPreferences, [this] {
if (this->preferenceEditor)
this->preferenceEditor->updateFields();
});
}
if (requestedByUser) {
openSubWindow(this->updatePromoter);
} else {
// This is an automatic update check. Only run if we haven't done one in the last 5 minutes
QDateTime lastCheck = porymapConfig.getLastUpdateCheckTime();
if (lastCheck.addSecs(5*60) >= QDateTime::currentDateTime())
return;
}
this->updatePromoter->checkForUpdates();
porymapConfig.setLastUpdateCheckTime(QDateTime::currentDateTime());
}
#else
void MainWindow::checkForUpdates(bool) {}
#endif
void MainWindow::initEditor() {
this->editor = new Editor(ui);
connect(this->editor, &Editor::objectsChanged, this, &MainWindow::updateObjects);
@ -394,14 +443,12 @@ void MainWindow::markMapEdited() {
}
}
void MainWindow::setWildEncountersUIEnabled(bool enabled) {
ui->mainTabBar->setTabEnabled(4, enabled);
}
// Update the UI using information we've read from the user's project files.
void MainWindow::setProjectSpecificUI()
{
this->setWildEncountersUIEnabled(userConfig.getEncounterJsonActive());
// Wild Encounters tab
// TODO: This index should come from an enum
ui->mainTabBar->setTabEnabled(4, editor->project->wildEncountersLoaded);
bool hasFlags = projectConfig.getMapAllowFlagsEnabled();
ui->checkBox_AllowRunning->setVisible(hasFlags);
@ -497,6 +544,7 @@ void MainWindow::restoreWindowState() {
this->restoreState(geometry.value("main_window_state"));
this->ui->splitter_map->restoreState(geometry.value("map_splitter_state"));
this->ui->splitter_main->restoreState(geometry.value("main_splitter_state"));
this->ui->splitter_Metatiles->restoreState(geometry.value("metatiles_splitter_state"));
}
void MainWindow::setTheme(QString theme) {
@ -532,7 +580,10 @@ bool MainWindow::openProject(const QString &dir, bool initial) {
}
return false;
}
this->statusBar()->showMessage(QString("Opening %1").arg(projectString));
const QString openMessage = QString("Opening %1").arg(projectString);
this->statusBar()->showMessage(openMessage);
logInfo(openMessage);
userConfig.setProjectDir(dir);
userConfig.load();
@ -551,7 +602,6 @@ bool MainWindow::openProject(const QString &dir, bool initial) {
editor->closeProject();
editor->project = new Project(editor);
QObject::connect(editor->project, &Project::reloadProject, this, &MainWindow::on_action_Reload_Project_triggered);
QObject::connect(editor->project, &Project::disableWildEncountersUI, [this]() { this->setWildEncountersUIEnabled(false); });
QObject::connect(editor->project, &Project::uncheckMonitorFilesAction, [this]() {
porymapConfig.setMonitorFiles(false);
if (this->preferenceEditor)
@ -576,10 +626,7 @@ bool MainWindow::openProject(const QString &dir, bool initial) {
}
showWindowTitle();
const QString successMessage = QString("Opened %1").arg(projectString);
this->statusBar()->showMessage(successMessage);
logInfo(successMessage);
this->statusBar()->showMessage(QString("Opened %1").arg(projectString));
porymapConfig.addRecentProject(dir);
refreshRecentProjectsMenu();
@ -647,29 +694,22 @@ QString MainWindow::getDefaultMap() {
}
bool MainWindow::setInitialMap() {
QList<QStringList> names;
QStringList names;
if (editor && editor->project)
names = editor->project->groupedMapNames;
names = editor->project->mapNames;
// Try to set most recently-opened map, if it's still in the list.
QString recentMap = userConfig.getRecentMap();
if (!recentMap.isEmpty()) {
// Make sure the recent map is still in the map list
for (int i = 0; i < names.length(); i++) {
if (names.value(i).contains(recentMap)) {
return setMap(recentMap, true);
}
}
if (!recentMap.isEmpty() && names.contains(recentMap) && setMap(recentMap, true))
return true;
// Failing that, try loading maps in the map list sequentially.
for (auto name : names) {
if (name != recentMap && setMap(name, true))
return true;
}
// Failing that, just get the first map in the list.
for (int i = 0; i < names.length(); i++) {
QStringList list = names.value(i);
if (list.length()) {
return setMap(list.value(0), true);
}
}
logError("Failed to load any map names.");
logError("Failed to load any maps.");
return false;
}
@ -1730,31 +1770,52 @@ void MainWindow::updateTilesetEditor() {
}
}
void MainWindow::redrawMetatileSelection()
{
double scale = pow(3.0, static_cast<double>(porymapConfig.getMetatilesZoom() - 30) / 30.0);
double MainWindow::getMetatilesZoomScale() {
return pow(3.0, static_cast<double>(porymapConfig.getMetatilesZoom() - 30) / 30.0);
}
void MainWindow::redrawMetatileSelection() {
QSize size(editor->current_metatile_selection_item->pixmap().width(), editor->current_metatile_selection_item->pixmap().height());
ui->graphicsView_currentMetatileSelection->setSceneRect(0, 0, size.width(), size.height());
auto scale = getMetatilesZoomScale();
QTransform transform;
transform.scale(scale, scale);
size *= scale;
ui->graphicsView_currentMetatileSelection->setTransform(transform);
ui->graphicsView_currentMetatileSelection->setFixedSize(editor->current_metatile_selection_item->pixmap().width() * scale + 2, editor->current_metatile_selection_item->pixmap().height() * scale + 2);
ui->graphicsView_currentMetatileSelection->setFixedSize(size.width() + 2, size.height() + 2);
ui->scrollAreaWidgetContents_SelectedMetatiles->adjustSize();
}
void MainWindow::scrollMetatileSelectorToSelection() {
// Internal selections or 1x1 external selections can be scrolled to
if (!editor->metatile_selector_item->isInternalSelection() && editor->metatile_selector_item->getSelectionDimensions() != QPoint(1, 1))
return;
QPoint size = editor->metatile_selector_item->getSelectionDimensions();
if (size.x() == 1 && size.y() == 1) {
MetatileSelection selection = editor->metatile_selector_item->getMetatileSelection();
if (selection.metatileItems.isEmpty())
return;
QPoint pos = editor->metatile_selector_item->getMetatileIdCoordsOnWidget(selection.metatileItems.first().metatileId);
pos *= scale;
ui->scrollArea_2->ensureVisible(pos.x(), pos.y(), 8 * scale, 8 * scale);
}
QPoint size = editor->metatile_selector_item->getSelectionDimensions();
pos += QPoint(size.x() - 1, size.y() - 1) * 16 / 2; // We want to focus on the center of the whole selection
pos *= getMetatilesZoomScale();
auto viewport = ui->scrollArea_MetatileSelector->viewport();
ui->scrollArea_MetatileSelector->ensureVisible(pos.x(), pos.y(), viewport->width() / 2, viewport->height() / 2);
}
void MainWindow::currentMetatilesSelectionChanged()
{
void MainWindow::currentMetatilesSelectionChanged() {
redrawMetatileSelection();
if (this->tilesetEditor) {
MetatileSelection selection = editor->metatile_selector_item->getMetatileSelection();
this->tilesetEditor->selectMetatile(selection.metatileItems.first().metatileId);
}
// Don't scroll to internal selections here, it will disrupt the user while they make their selection.
if (!editor->metatile_selector_item->isInternalSelection())
scrollMetatileSelectorToSelection();
}
// !TODO
@ -2159,7 +2220,7 @@ void MainWindow::on_mainTabBar_tabBarClicked(int index)
if (!editor->map) return;
if (index != 4) {
if (userConfig.getEncounterJsonActive())
if (editor->project && editor->project->wildEncountersLoaded)
editor->saveEncounterTabData();
}
if (index != 1) {
@ -3207,6 +3268,9 @@ void MainWindow::togglePreferenceSpecificUi() {
ui->actionOpen_Project_in_Text_Editor->setEnabled(false);
else
ui->actionOpen_Project_in_Text_Editor->setEnabled(true);
if (this->updatePromoter)
this->updatePromoter->updatePreferences();
}
void MainWindow::openProjectSettingsEditor(int tab) {
@ -3310,7 +3374,11 @@ void MainWindow::on_horizontalSlider_MetatileZoom_valueChanged(int value) {
ui->graphicsView_BorderMetatile->setFixedSize(ceil(static_cast<double>(editor->selected_border_metatiles_item->pixmap().width()) * scale) + 2,
ceil(static_cast<double>(editor->selected_border_metatiles_item->pixmap().height()) * scale) + 2);
ui->scrollAreaWidgetContents_MetatileSelector->adjustSize();
ui->scrollAreaWidgetContents_BorderMetatiles->adjustSize();
redrawMetatileSelection();
scrollMetatileSelectorToSelection();
}
void MainWindow::on_horizontalSlider_CollisionZoom_valueChanged(int value) {
@ -3326,6 +3394,7 @@ void MainWindow::on_horizontalSlider_CollisionZoom_valueChanged(int value) {
ui->graphicsView_Collision->setResizeAnchor(QGraphicsView::NoAnchor);
ui->graphicsView_Collision->setTransform(transform);
ui->graphicsView_Collision->setFixedSize(size.width() + 2, size.height() + 2);
ui->scrollAreaWidgetContents_Collision->adjustSize();
}
void MainWindow::on_spinBox_SelectedCollision_valueChanged(int collision) {
@ -3410,7 +3479,8 @@ void MainWindow::closeEvent(QCloseEvent *event) {
this->saveGeometry(),
this->saveState(),
this->ui->splitter_map->saveState(),
this->ui->splitter_main->saveState()
this->ui->splitter_main->saveState(),
this->ui->splitter_Metatiles->saveState()
);
porymapConfig.save();
shortcutsConfig.save();

View file

@ -731,7 +731,7 @@ void Project::saveMapSections() {
}
void Project::saveWildMonData() {
if (!userConfig.getEncounterJsonActive()) return;
if (!this->wildEncountersLoaded) return;
QString wildEncountersJsonFilepath = QString("%1/%2").arg(root).arg(projectConfig.getFilePath(ProjectFilePath::json_wild_encounters));
QFile wildEncountersFile(wildEncountersJsonFilepath);
@ -1728,6 +1728,7 @@ bool Project::readWildMonData() {
wildMonFields.clear();
wildMonData.clear();
encounterGroupLabels.clear();
this->wildEncountersLoaded = false;
if (!userConfig.getEncounterJsonActive()) {
return true;
}
@ -1737,10 +1738,7 @@ bool Project::readWildMonData() {
OrderedJson::object wildMonObj;
if (!parser.tryParseOrderedJsonFile(&wildMonObj, wildMonJsonFilepath)) {
// Failing to read wild encounters data is not a critical error, just disable the
// encounter editor and log a warning in case the user intended to have this data.
userConfig.setEncounterJsonActive(false);
emit disableWildEncountersUI();
// Failing to read wild encounters data is not a critical error, the encounter editor will just be disabled
logWarn(QString("Failed to read wild encounters from %1").arg(wildMonJsonFilepath));
return true;
}
@ -1828,54 +1826,64 @@ bool Project::readWildMonData() {
setDefaultEncounterRate(i.key(), rate);
}
this->wildEncountersLoaded = true;
return true;
}
bool Project::readMapGroups() {
mapConstantsToMapNames.clear();
mapNamesToMapConstants.clear();
mapGroups.clear();
this->mapConstantsToMapNames.clear();
this->mapNamesToMapConstants.clear();
this->mapGroups.clear();
this->groupNames.clear();
this->groupedMapNames.clear();
this->mapNames.clear();
QString mapGroupsFilepath = root + "/" + projectConfig.getFilePath(ProjectFilePath::json_map_groups);
fileWatcher.addPath(mapGroupsFilepath);
const QString filepath = root + "/" + projectConfig.getFilePath(ProjectFilePath::json_map_groups);
fileWatcher.addPath(filepath);
QJsonDocument mapGroupsDoc;
if (!parser.tryParseJsonFile(&mapGroupsDoc, mapGroupsFilepath)) {
logError(QString("Failed to read map groups from %1").arg(mapGroupsFilepath));
if (!parser.tryParseJsonFile(&mapGroupsDoc, filepath)) {
logError(QString("Failed to read map groups from %1").arg(filepath));
return false;
}
QJsonObject mapGroupsObj = mapGroupsDoc.object();
QJsonArray mapGroupOrder = mapGroupsObj["group_order"].toArray();
QList<QStringList> groupedMaps;
QStringList maps;
QStringList groups;
for (int groupIndex = 0; groupIndex < mapGroupOrder.size(); groupIndex++) {
QString groupName = ParseUtil::jsonToQString(mapGroupOrder.at(groupIndex));
QJsonArray mapNames = mapGroupsObj.value(groupName).toArray();
groupedMaps.append(QStringList());
groups.append(groupName);
for (int j = 0; j < mapNames.size(); j++) {
QString mapName = ParseUtil::jsonToQString(mapNames.at(j));
mapGroups.insert(mapName, groupIndex);
groupedMaps[groupIndex].append(mapName);
maps.append(mapName);
QJsonArray mapNamesJson = mapGroupsObj.value(groupName).toArray();
this->groupedMapNames.append(QStringList());
this->groupNames.append(groupName);
for (int j = 0; j < mapNamesJson.size(); j++) {
QString mapName = ParseUtil::jsonToQString(mapNamesJson.at(j));
if (mapName == DYNAMIC_MAP_NAME) {
logWarn(QString("Ignoring map with reserved name '%1'.").arg(mapName));
continue;
}
this->mapGroups.insert(mapName, groupIndex);
this->groupedMapNames[groupIndex].append(mapName);
this->mapNames.append(mapName);
// Build the mapping and reverse mapping between map constants and map names.
QString mapConstant = Map::mapConstantFromName(mapName);
mapConstantsToMapNames.insert(mapConstant, mapName);
mapNamesToMapConstants.insert(mapName, mapConstant);
this->mapConstantsToMapNames.insert(mapConstant, mapName);
this->mapNamesToMapConstants.insert(mapName, mapConstant);
}
}
if (this->groupNames.isEmpty()) {
logError(QString("Failed to find any map groups in %1").arg(filepath));
return false;
}
if (this->mapNames.isEmpty()) {
logError(QString("Failed to find any map names in %1").arg(filepath));
return false;
}
const QString defineName = this->getDynamicMapDefineName();
mapConstantsToMapNames.insert(defineName, DYNAMIC_MAP_NAME);
mapNamesToMapConstants.insert(DYNAMIC_MAP_NAME, defineName);
maps.append(DYNAMIC_MAP_NAME);
this->mapConstantsToMapNames.insert(defineName, DYNAMIC_MAP_NAME);
this->mapNamesToMapConstants.insert(DYNAMIC_MAP_NAME, defineName);
this->mapNames.append(DYNAMIC_MAP_NAME);
groupNames = groups;
groupedMapNames = groupedMaps;
mapNames = maps;
return true;
}
@ -2341,10 +2349,8 @@ bool Project::readItemNames() {
const QString filename = projectConfig.getFilePath(ProjectFilePath::constants_items);
fileWatcher.addPath(root + "/" + filename);
itemNames = parser.readCDefineNames(filename, prefixes);
if (itemNames.isEmpty()) {
logError(QString("Failed to read item constants from %1").arg(filename));
return false;
}
if (itemNames.isEmpty())
logWarn(QString("Failed to read item constants from %1").arg(filename));
return true;
}
@ -2353,10 +2359,8 @@ bool Project::readFlagNames() {
const QString filename = projectConfig.getFilePath(ProjectFilePath::constants_flags);
fileWatcher.addPath(root + "/" + filename);
flagNames = parser.readCDefineNames(filename, prefixes);
if (flagNames.isEmpty()) {
logError(QString("Failed to read flag constants from %1").arg(filename));
return false;
}
if (flagNames.isEmpty())
logWarn(QString("Failed to read flag constants from %1").arg(filename));
return true;
}
@ -2365,10 +2369,8 @@ bool Project::readVarNames() {
const QString filename = projectConfig.getFilePath(ProjectFilePath::constants_vars);
fileWatcher.addPath(root + "/" + filename);
varNames = parser.readCDefineNames(filename, prefixes);
if (varNames.isEmpty()) {
logError(QString("Failed to read var constants from %1").arg(filename));
return false;
}
if (varNames.isEmpty())
logWarn(QString("Failed to read var constants from %1").arg(filename));
return true;
}
@ -2377,10 +2379,8 @@ bool Project::readMovementTypes() {
const QString filename = projectConfig.getFilePath(ProjectFilePath::constants_obj_event_movement);
fileWatcher.addPath(root + "/" + filename);
movementTypes = parser.readCDefineNames(filename, prefixes);
if (movementTypes.isEmpty()) {
logError(QString("Failed to read movement type constants from %1").arg(filename));
return false;
}
if (movementTypes.isEmpty())
logWarn(QString("Failed to read movement type constants from %1").arg(filename));
return true;
}
@ -2388,10 +2388,8 @@ bool Project::readInitialFacingDirections() {
QString filename = projectConfig.getFilePath(ProjectFilePath::initial_facing_table);
fileWatcher.addPath(root + "/" + filename);
facingDirections = parser.readNamedIndexCArray(filename, projectConfig.getIdentifier(ProjectIdentifier::symbol_facing_directions));
if (facingDirections.isEmpty()) {
logError(QString("Failed to read initial movement type facing directions from %1").arg(filename));
return false;
}
if (facingDirections.isEmpty())
logWarn(QString("Failed to read initial movement type facing directions from %1").arg(filename));
return true;
}
@ -2400,10 +2398,8 @@ bool Project::readMapTypes() {
const QString filename = projectConfig.getFilePath(ProjectFilePath::constants_map_types);
fileWatcher.addPath(root + "/" + filename);
mapTypes = parser.readCDefineNames(filename, prefixes);
if (mapTypes.isEmpty()) {
logError(QString("Failed to read map type constants from %1").arg(filename));
return false;
}
if (mapTypes.isEmpty())
logWarn(QString("Failed to read map type constants from %1").arg(filename));
return true;
}
@ -2412,10 +2408,8 @@ bool Project::readMapBattleScenes() {
const QString filename = projectConfig.getFilePath(ProjectFilePath::constants_map_types);
fileWatcher.addPath(root + "/" + filename);
mapBattleScenes = parser.readCDefineNames(filename, prefixes);
if (mapBattleScenes.isEmpty()) {
logError(QString("Failed to read map battle scene constants from %1").arg(filename));
return false;
}
if (mapBattleScenes.isEmpty())
logWarn(QString("Failed to read map battle scene constants from %1").arg(filename));
return true;
}
@ -2424,10 +2418,8 @@ bool Project::readWeatherNames() {
const QString filename = projectConfig.getFilePath(ProjectFilePath::constants_weather);
fileWatcher.addPath(root + "/" + filename);
weatherNames = parser.readCDefineNames(filename, prefixes);
if (weatherNames.isEmpty()) {
logError(QString("Failed to read weather constants from %1").arg(filename));
return false;
}
if (weatherNames.isEmpty())
logWarn(QString("Failed to read weather constants from %1").arg(filename));
return true;
}
@ -2439,10 +2431,8 @@ bool Project::readCoordEventWeatherNames() {
const QString filename = projectConfig.getFilePath(ProjectFilePath::constants_weather);
fileWatcher.addPath(root + "/" + filename);
coordEventWeatherNames = parser.readCDefineNames(filename, prefixes);
if (coordEventWeatherNames.isEmpty()) {
logWarn(QString("Failed to read coord event weather constants from %1. Disabling Weather Trigger events.").arg(filename));
projectConfig.setEventWeatherTriggerEnabled(false);
}
if (coordEventWeatherNames.isEmpty())
logWarn(QString("Failed to read coord event weather constants from %1").arg(filename));
return true;
}
@ -2454,10 +2444,8 @@ bool Project::readSecretBaseIds() {
const QString filename = projectConfig.getFilePath(ProjectFilePath::constants_secret_bases);
fileWatcher.addPath(root + "/" + filename);
secretBaseIds = parser.readCDefineNames(filename, prefixes);
if (secretBaseIds.isEmpty()) {
logWarn(QString("Failed to read secret base id constants from '%1'. Disabling Secret Base events.").arg(filename));
projectConfig.setEventSecretBaseEnabled(false);
}
if (secretBaseIds.isEmpty())
logWarn(QString("Failed to read secret base id constants from '%1'").arg(filename));
return true;
}
@ -2466,10 +2454,8 @@ bool Project::readBgEventFacingDirections() {
const QString filename = projectConfig.getFilePath(ProjectFilePath::constants_event_bg);
fileWatcher.addPath(root + "/" + filename);
bgEventFacingDirections = parser.readCDefineNames(filename, prefixes);
if (bgEventFacingDirections.isEmpty()) {
logError(QString("Failed to read bg event facing direction constants from %1").arg(filename));
return false;
}
if (bgEventFacingDirections.isEmpty())
logWarn(QString("Failed to read bg event facing direction constants from %1").arg(filename));
return true;
}
@ -2478,10 +2464,8 @@ bool Project::readTrainerTypes() {
const QString filename = projectConfig.getFilePath(ProjectFilePath::constants_trainer_types);
fileWatcher.addPath(root + "/" + filename);
trainerTypes = parser.readCDefineNames(filename, prefixes);
if (trainerTypes.isEmpty()) {
logError(QString("Failed to read trainer type constants from %1").arg(filename));
return false;
}
if (trainerTypes.isEmpty())
logWarn(QString("Failed to read trainer type constants from %1").arg(filename));
return true;
}
@ -2515,12 +2499,12 @@ bool Project::readSongNames() {
const QString filename = projectConfig.getFilePath(ProjectFilePath::constants_songs);
fileWatcher.addPath(root + "/" + filename);
this->songNames = parser.readCDefineNames(filename, prefixes);
if (this->songNames.isEmpty()) {
logError(QString("Failed to read song names from %1.").arg(filename));
return false;
}
this->defaultSong = this->songNames.value(0);
if (this->songNames.isEmpty())
logWarn(QString("Failed to read song names from %1.").arg(filename));
// Song names don't have a very useful order (esp. if we include SE_* values), so sort them alphabetically.
// The default song should be the first in the list, not the first alphabetically, so save that before sorting.
this->defaultSong = this->songNames.value(0, "0");
this->songNames.sort();
return true;
}
@ -2530,10 +2514,8 @@ bool Project::readObjEventGfxConstants() {
QString filename = projectConfig.getFilePath(ProjectFilePath::constants_obj_events);
fileWatcher.addPath(root + "/" + filename);
this->gfxDefines = parser.readCDefinesByPrefix(filename, prefixes);
if (this->gfxDefines.isEmpty()) {
logError(QString("Failed to read object event graphics constants from %1.").arg(filename));
return false;
}
if (this->gfxDefines.isEmpty())
logWarn(QString("Failed to read object event graphics constants from %1.").arg(filename));
return true;
}

View file

@ -141,8 +141,8 @@ int ScriptUtility::getMainTab() {
void ScriptUtility::setMainTab(int index) {
if (!window || !window->ui || !window->ui->mainTabBar || index < 0 || index >= window->ui->mainTabBar->count())
return;
// Can't select Wild Encounters tab if it's disabled
if (index == 4 && !userConfig.getEncounterJsonActive())
// Can't select tab if it's disabled
if (!window->ui->mainTabBar->isTabEnabled(index))
return;
// don't change tab when not editing a map
if (!window->editor || !window->editor->map)

View file

@ -1,7 +1,6 @@
#include "scripting.h"
#include "log.h"
#include "config.h"
#include "aboutporymap.h"
QMap<CallbackType, QString> callbackFunctions = {
{OnProjectOpened, "onProjectOpened"},
@ -77,15 +76,12 @@ void Scripting::populateGlobalObject(MainWindow *mainWindow) {
QJSValue constants = instance->engine->newObject();
// Invisibly create an "About" window to read Porymap version
AboutPorymap *about = new AboutPorymap(mainWindow);
if (about) {
QJSValue version = Scripting::version(about->getVersionNumbers());
// Get version numbers
QJSValue version = instance->engine->newObject();
version.setProperty("major", porymapVersion.majorVersion());
version.setProperty("minor", porymapVersion.minorVersion());
version.setProperty("patch", porymapVersion.microVersion());
constants.setProperty("version", version);
delete about;
} else {
logError("Failed to read Porymap version for API");
}
// Get basic tileset information
int numTilesPrimary = Project::getNumTilesPrimary();
@ -343,14 +339,6 @@ QJSValue Scripting::position(int x, int y) {
return obj;
}
QJSValue Scripting::version(QList<int> versionNums) {
QJSValue obj = instance->engine->newObject();
obj.setProperty("major", versionNums.at(0));
obj.setProperty("minor", versionNums.at(1));
obj.setProperty("patch", versionNums.at(2));
return obj;
}
Tile Scripting::toTile(QJSValue obj) {
Tile tile = Tile();

View file

@ -8,6 +8,7 @@ AboutPorymap::AboutPorymap(QWidget *parent) :
{
ui->setupUi(this);
this->ui->label_Version->setText(QString("Version %1 - %2").arg(QCoreApplication::applicationVersion()).arg(QStringLiteral(__DATE__)));
this->ui->textBrowser->setSource(QUrl("qrc:/CHANGELOG.md"));
}
@ -15,16 +16,3 @@ AboutPorymap::~AboutPorymap()
{
delete ui;
}
// Returns the Porymap version number as a list of ints with the order {major, minor, patch}
QList<int> AboutPorymap::getVersionNumbers()
{
// Get the version string "#.#.#"
static const QRegularExpression regex("Version (\\d+)\\.(\\d+)\\.(\\d+)");
QRegularExpressionMatch match = regex.match(ui->label_Version->text());
if (!match.hasMatch()) {
logError("Failed to locate Porymap version text");
return QList<int>({0, 0, 0});
}
return QList<int>({match.captured(1).toInt(), match.captured(2).toInt(), match.captured(3).toInt()});
}

View file

@ -171,7 +171,7 @@ void EventFrame::setActive(bool active) {
void EventFrame::populateScriptDropdown(NoScrollComboBox * combo, Project * project) {
// The script dropdown is populated with scripts used by the map's events and from its scripts file.
if (this->event->getMap())
combo->addItems(this->event->getMap()->getScriptLabels());
combo->addItems(this->event->getMap()->getScriptLabels(this->event->getEventGroup()));
// The dropdown's autocomplete has all script labels across the full project.
auto completer = new QCompleter(project->globalScriptLabels, combo);

View file

@ -59,12 +59,9 @@ bool MetatileSelector::select(uint16_t metatileId) {
return true;
}
bool MetatileSelector::selectFromMap(uint16_t metatileId, uint16_t collision, uint16_t elevation) {
if (!Tileset::metatileIsValid(metatileId, this->primaryTileset, this->secondaryTileset)) return false;
this->select(metatileId);
this->selection.collisionItems.append(CollisionSelectionItem{true, collision, elevation});
this->selection.hasCollision = true;
return true;
void MetatileSelector::selectFromMap(uint16_t metatileId, uint16_t collision, uint16_t elevation) {
QPair<uint16_t, uint16_t> movePermissions(collision, elevation);
this->setExternalSelection(1, 1, {metatileId}, {movePermissions});
}
void MetatileSelector::setTilesets(Tileset *primaryTileset, Tileset *secondaryTileset) {
@ -100,6 +97,10 @@ void MetatileSelector::setExternalSelection(int width, int height, QList<uint16_
metatileId = 0;
this->selection.metatileItems.append(MetatileSelectionItem{true, metatileId});
}
if (this->selection.metatileItems.length() == 1) {
QPoint coords = this->getMetatileIdCoords(this->selection.metatileItems.first().metatileId);
SelectablePixmapItem::select(coords.x(), coords.y(), 0, 0);
}
this->draw();
emit selectedMetatilesChanged();

View file

@ -33,7 +33,7 @@ void NewMapPopup::initUi() {
ui->comboBox_NewMap_Group->addItems(project->groupNames);
ui->comboBox_NewMap_Song->addItems(project->songNames);
ui->comboBox_NewMap_Type->addItems(project->mapTypes);
ui->comboBox_NewMap_Location->addItems(project->mapSectionValueToName.values());
ui->comboBox_NewMap_Location->addItems(project->mapSectionNameToValue.keys());
const QSignalBlocker b(ui->comboBox_Layout);
ui->comboBox_Layout->addItems(project->mapLayoutsTable);
@ -184,8 +184,8 @@ void NewMapPopup::setDefaultSettings(Project *project) {
settings.borderHeight = DEFAULT_BORDER_HEIGHT;
settings.primaryTilesetLabel = project->getDefaultPrimaryTilesetLabel();
settings.secondaryTilesetLabel = project->getDefaultSecondaryTilesetLabel();
settings.type = project->mapTypes.at(0);
settings.location = project->mapSectionValueToName.values().at(0);
settings.type = project->mapTypes.value(0, "0");
settings.location = project->mapSectionNameToValue.keys().value(0, "0");
settings.song = project->defaultSong;
settings.canFlyTo = false;
settings.showLocationName = true;
@ -301,9 +301,9 @@ void NewMapPopup::on_pushButton_NewMap_Accept_clicked() {
newMap->location = this->ui->comboBox_NewMap_Location->currentText();
newMap->song = this->ui->comboBox_NewMap_Song->currentText();
newMap->requiresFlash = false;
newMap->weather = this->project->weatherNames.value(0);
newMap->weather = this->project->weatherNames.value(0, "0");
newMap->show_location = this->ui->checkBox_NewMap_Show_Location->isChecked();
newMap->battle_scene = this->project->mapBattleScenes.value(0);
newMap->battle_scene = this->project->mapBattleScenes.value(0, "0");
if (this->existingLayout) {
layout = this->project->mapLayouts.value(this->layoutId);

View file

@ -49,6 +49,7 @@ void PreferenceEditor::updateFields() {
ui->lineEdit_TextEditorGotoLine->setText(porymapConfig.getTextEditorGotoLine());
ui->checkBox_MonitorProjectFiles->setChecked(porymapConfig.getMonitorFiles());
ui->checkBox_OpenRecentProject->setChecked(porymapConfig.getReopenOnLaunch());
ui->checkBox_CheckForUpdates->setChecked(porymapConfig.getCheckForUpdates());
}
void PreferenceEditor::saveFields() {
@ -58,10 +59,14 @@ void PreferenceEditor::saveFields() {
emit themeChanged(theme);
}
porymapConfig.setSaveDisabled(true);
porymapConfig.setTextEditorOpenFolder(ui->lineEdit_TextEditorOpenFolder->text());
porymapConfig.setTextEditorGotoLine(ui->lineEdit_TextEditorGotoLine->text());
porymapConfig.setMonitorFiles(ui->checkBox_MonitorProjectFiles->isChecked());
porymapConfig.setReopenOnLaunch(ui->checkBox_OpenRecentProject->isChecked());
porymapConfig.setCheckForUpdates(ui->checkBox_CheckForUpdates->isChecked());
porymapConfig.setSaveDisabled(false);
porymapConfig.save();
emit preferencesSaved();
}

View file

@ -71,8 +71,7 @@ bool TilesetEditor::selectMetatile(uint16_t metatileId) {
if (!Tileset::metatileIsValid(metatileId, this->primaryTileset, this->secondaryTileset) || this->lockSelection)
return false;
this->metatileSelector->select(metatileId);
QPoint pos = this->metatileSelector->getMetatileIdCoordsOnWidget(metatileId);
this->ui->scrollArea_Metatiles->ensureVisible(pos.x(), pos.y());
this->redrawMetatileSelector();
return true;
}
@ -168,6 +167,7 @@ void TilesetEditor::setAttributesUi() {
this->ui->label_layerType->setVisible(false);
this->ui->label_BottomTop->setText("Bottom/Middle/Top");
}
this->ui->frame_Properties->adjustSize();
}
void TilesetEditor::setMetatileLabelValidator() {
@ -196,6 +196,7 @@ void TilesetEditor::initMetatileSelector()
this->metatileSelector->draw();
this->ui->graphicsView_Metatiles->setScene(this->metatilesScene);
this->ui->graphicsView_Metatiles->setResizeAnchor(QGraphicsView::AnchorViewCenter);
this->ui->horizontalSlider_MetatilesZoom->setValue(porymapConfig.getTilesetEditorMetatilesZoom());
}
@ -236,6 +237,7 @@ void TilesetEditor::initTileSelector()
this->tileSelector->draw();
this->ui->graphicsView_Tiles->setScene(this->tilesScene);
this->ui->graphicsView_Tiles->setResizeAnchor(QGraphicsView::AnchorViewCenter);
this->ui->horizontalSlider_TilesZoom->setValue(porymapConfig.getTilesetEditorTilesZoom());
}
@ -293,6 +295,7 @@ void TilesetEditor::restoreWindowState() {
QMap<QString, QByteArray> geometry = porymapConfig.getTilesetEditorGeometry();
this->restoreGeometry(geometry.value("tileset_editor_geometry"));
this->restoreState(geometry.value("tileset_editor_state"));
this->ui->splitter->restoreState(geometry.value("tileset_editor_splitter_state"));
}
void TilesetEditor::initMetatileHistory() {
@ -314,7 +317,6 @@ void TilesetEditor::refresh() {
this->tileSelector->setTilesets(this->primaryTileset, this->secondaryTileset);
this->metatileSelector->setTilesets(this->primaryTileset, this->secondaryTileset);
this->metatileSelector->select(this->getSelectedMetatileId());
this->drawSelectedTiles();
if (metatileSelector) {
if (metatileSelector->selectorShowUnused || metatileSelector->selectorShowCounts) {
@ -330,11 +332,9 @@ void TilesetEditor::refresh() {
}
}
this->ui->graphicsView_Tiles->setSceneRect(0, 0, this->tileSelector->pixmap().width() + 2, this->tileSelector->pixmap().height() + 2);
this->ui->graphicsView_Tiles->setFixedSize(this->tileSelector->pixmap().width() + 2, this->tileSelector->pixmap().height() + 2);
this->ui->graphicsView_Metatiles->setSceneRect(0, 0, this->metatileSelector->pixmap().width() + 2, this->metatileSelector->pixmap().height() + 2);
this->ui->graphicsView_Metatiles->setFixedSize(this->metatileSelector->pixmap().width() + 2, this->metatileSelector->pixmap().height() + 2);
this->ui->graphicsView_selectedTile->setFixedSize(this->selectedTilePixmapItem->pixmap().width() + 2, this->selectedTilePixmapItem->pixmap().height() + 2);
this->redrawTileSelector();
this->redrawMetatileSelector();
this->drawSelectedTiles();
}
void TilesetEditor::drawSelectedTiles() {
@ -360,7 +360,10 @@ void TilesetEditor::drawSelectedTiles() {
this->selectedTilePixmapItem = new QGraphicsPixmapItem(QPixmap::fromImage(selectionImage));
this->selectedTileScene->addItem(this->selectedTilePixmapItem);
this->ui->graphicsView_selectedTile->setFixedSize(this->selectedTilePixmapItem->pixmap().width() + 2, this->selectedTilePixmapItem->pixmap().height() + 2);
QSize size(this->selectedTilePixmapItem->pixmap().width(), this->selectedTilePixmapItem->pixmap().height());
this->ui->graphicsView_selectedTile->setSceneRect(0, 0, size.width(), size.height());
this->ui->graphicsView_selectedTile->setFixedSize(size.width() + 2, size.height() + 2);
}
void TilesetEditor::onHoveredMetatileChanged(uint16_t metatileId) {
@ -476,13 +479,12 @@ void TilesetEditor::onMetatileLayerSelectionChanged(QPoint selectionOrigin, int
}
}
if (width == 1 && height == 1) {
this->tileSelector->highlight(static_cast<uint16_t>(tiles[0].tileId));
ui->spinBox_paletteSelector->setValue(tiles[0].palette);
QPoint pos = tileSelector->getTileCoordsOnWidget(static_cast<uint16_t>(tiles[0].tileId));
ui->scrollArea_Tiles->ensureVisible(pos.x(), pos.y());
}
this->tileSelector->setExternalSelection(width, height, tiles, tileIdxs);
if (width == 1 && height == 1) {
ui->spinBox_paletteSelector->setValue(tiles[0].palette);
this->tileSelector->highlight(static_cast<uint16_t>(tiles[0].tileId));
this->redrawTileSelector();
}
this->metatileLayersItem->clearLastModifiedCoords();
}
@ -766,7 +768,8 @@ void TilesetEditor::closeEvent(QCloseEvent *event)
if (this->paletteEditor) this->paletteEditor->close();
porymapConfig.setTilesetEditorGeometry(
this->saveGeometry(),
this->saveState()
this->saveState(),
this->ui->splitter->saveState()
);
}
}
@ -1185,28 +1188,53 @@ void TilesetEditor::on_copyButton_metatileLabel_clicked() {
void TilesetEditor::on_horizontalSlider_MetatilesZoom_valueChanged(int value) {
porymapConfig.setTilesetEditorMetatilesZoom(value);
double scale = pow(3.0, static_cast<double>(value - 30) / 30.0);
this->redrawMetatileSelector();
}
void TilesetEditor::redrawMetatileSelector() {
QSize size(this->metatileSelector->pixmap().width(), this->metatileSelector->pixmap().height());
this->ui->graphicsView_Metatiles->setSceneRect(0, 0, size.width(), size.height());
double scale = pow(3.0, static_cast<double>(porymapConfig.getTilesetEditorMetatilesZoom() - 30) / 30.0);
QTransform transform;
transform.scale(scale, scale);
QSize size(this->metatileSelector->pixmap().width(), this->metatileSelector->pixmap().height());
size *= scale;
this->ui->graphicsView_Metatiles->setResizeAnchor(QGraphicsView::NoAnchor);
this->ui->graphicsView_Metatiles->setTransform(transform);
this->ui->graphicsView_Metatiles->setFixedSize(size.width() + 2, size.height() + 2);
QPoint pos = this->metatileSelector->getMetatileIdCoordsOnWidget(this->getSelectedMetatileId());
pos *= scale;
this->ui->scrollAreaWidgetContents_Metatiles->adjustSize();
auto viewport = this->ui->scrollArea_Metatiles->viewport();
this->ui->scrollArea_Metatiles->ensureVisible(pos.x(), pos.y(), viewport->width() / 2, viewport->height() / 2);
}
void TilesetEditor::on_horizontalSlider_TilesZoom_valueChanged(int value) {
porymapConfig.setTilesetEditorTilesZoom(value);
double scale = pow(3.0, static_cast<double>(value - 30) / 30.0);
this->redrawTileSelector();
}
void TilesetEditor::redrawTileSelector() {
QSize size(this->tileSelector->pixmap().width(), this->tileSelector->pixmap().height());
this->ui->graphicsView_Tiles->setSceneRect(0, 0, size.width(), size.height());
double scale = pow(3.0, static_cast<double>(porymapConfig.getTilesetEditorTilesZoom() - 30) / 30.0);
QTransform transform;
transform.scale(scale, scale);
QSize size(this->tileSelector->pixmap().width(), this->tileSelector->pixmap().height());
size *= scale;
this->ui->graphicsView_Tiles->setResizeAnchor(QGraphicsView::NoAnchor);
this->ui->graphicsView_Tiles->setTransform(transform);
this->ui->graphicsView_Tiles->setFixedSize(size.width() + 2, size.height() + 2);
this->ui->scrollAreaWidgetContents_Tiles->adjustSize();
auto tiles = this->tileSelector->getSelectedTiles();
if (!tiles.isEmpty()) {
QPoint pos = this->tileSelector->getTileCoordsOnWidget(tiles[0].tileId);
pos *= scale;
auto viewport = this->ui->scrollArea_Tiles->viewport();
this->ui->scrollArea_Tiles->ensureVisible(pos.x(), pos.y(), viewport->width() / 2, viewport->height() / 2);
}
}

187
src/ui/updatepromoter.cpp Normal file
View file

@ -0,0 +1,187 @@
#include "updatepromoter.h"
#include "ui_updatepromoter.h"
#include "log.h"
#include "config.h"
#include <QJsonDocument>
#include <QJsonArray>
#include <QJsonObject>
#include <QDesktopServices>
#include <QTimer>
UpdatePromoter::UpdatePromoter(QWidget *parent, NetworkAccessManager *manager)
: QDialog(parent),
ui(new Ui::UpdatePromoter),
manager(manager)
{
ui->setupUi(this);
// Set up "Do not alert me" check box
this->updatePreferences();
ui->checkBox_StopAlerts->setVisible(false);
connect(ui->checkBox_StopAlerts, &QCheckBox::stateChanged, [this](int state) {
bool enable = (state != Qt::Checked);
porymapConfig.setCheckForUpdates(enable);
emit this->changedPreferences();
});
// Set up button box
this->button_Retry = ui->buttonBox->button(QDialogButtonBox::Retry);
this->button_Downloads = ui->buttonBox->addButton("Go to Downloads...", QDialogButtonBox::ActionRole);
ui->buttonBox->button(QDialogButtonBox::Close)->setDefault(true);
connect(ui->buttonBox, &QDialogButtonBox::clicked, this, &UpdatePromoter::dialogButtonClicked);
this->resetDialog();
}
void UpdatePromoter::resetDialog() {
this->button_Downloads->setEnabled(false);
ui->text_Changelog->setVisible(false);
ui->label_Warning->setVisible(false);
ui->label_Status->setText("");
this->changelog = QString();
this->downloadUrl = QString();
this->newVersion = QVersionNumber();
this->foundReleases = false;
this->visitedUrls.clear();
}
void UpdatePromoter::checkForUpdates() {
// If the Retry button is disabled, making requests is disabled
if (!this->button_Retry->isEnabled())
return;
this->resetDialog();
this->button_Retry->setEnabled(false);
ui->label_Status->setText("Checking for updates...");
// We could use the URL ".../releases/latest" to retrieve less data, but this would run into problems if the
// most recent item on the releases page is not actually a new release (like the static windows build).
// By getting all releases we can also present a multi-version changelog of all changes since the host release.
static const QUrl url("https://api.github.com/repos/huderlem/porymap/releases");
this->get(url);
}
void UpdatePromoter::get(const QUrl &url) {
this->visitedUrls.insert(url);
auto reply = this->manager->get(url);
connect(reply, &NetworkReplyData::finished, [this, reply] () {
if (!reply->errorString().isEmpty()) {
this->error(reply->errorString(), reply->retryAfter());
} else {
this->processWebpage(QJsonDocument::fromJson(reply->body()), reply->nextUrl());
}
reply->deleteLater();
});
}
// Read all the items on the releases page, ignoring entries without a version identifier tag.
// Objects in the releases page data are sorted newest to oldest.
void UpdatePromoter::processWebpage(const QJsonDocument &data, const QUrl &nextUrl) {
const QJsonArray releases = data.array();
int i;
for (i = 0; i < releases.size(); i++) {
auto release = releases.at(i).toObject();
// Convert tag string to version numbers
const QString tagName = release.value("tag_name").toString();
const QVersionNumber version = QVersionNumber::fromString(tagName);
if (version.segmentCount() != 3) continue;
// We've found a valid release tag. If the version number is not newer than the host version then we can stop looking at releases.
this->foundReleases = true;
if (porymapVersion >= version)
break;
const QString description = release.value("body").toString();
if (description.isEmpty()) {
// If the release was published very recently it won't have a description yet, in which case don't tell the user about it yet.
continue;
}
if (this->downloadUrl.isEmpty()) {
// This is the first (newest) release we've found. Record its URL for download.
const QUrl url = QUrl(release.value("html_url").toString());
if (url.isEmpty()) {
// If there's no URL, something has gone wrong and we should skip this release.
continue;
}
this->downloadUrl = url;
this->newVersion = version;
}
// Record the changelog of this release so we can show all changes since the host release.
this->changelog.append(QString("## %1\n%2\n\n").arg(tagName).arg(description));
}
// If we read the entire page then we didn't find a release as old as the host version.
// Keep looking on the second page, there might still be new releases there.
if (i == releases.size() && !nextUrl.isEmpty() && !this->visitedUrls.contains(nextUrl)) {
this->get(nextUrl);
return;
}
if (!this->foundReleases) {
// We retrieved the webpage but didn't successfully parse any releases.
this->error("Error parsing releases webpage");
return;
}
// Populate dialog with result
ui->text_Changelog->setMarkdown(this->changelog);
ui->text_Changelog->setVisible(!this->changelog.isEmpty());
this->button_Downloads->setEnabled(!this->downloadUrl.isEmpty());
this->button_Retry->setEnabled(true);
if (!this->newVersion.isNull()) {
ui->label_Status->setText("A new version of Porymap is available!");
ui->label_Warning->setVisible(this->newVersion.majorVersion() > porymapVersion.majorVersion());
// Alert the user about the new version if the dialog wasn't already open.
// Show the window, but also show the option to turn off automatic alerts in the future.
// We only show this alert once for a given release.
if (!this->isVisible() && this->newVersion > porymapConfig.getLastUpdateCheckVersion()) {
ui->checkBox_StopAlerts->setVisible(true);
this->show();
}
porymapConfig.setLastUpdateCheckVersion(this->newVersion);
} else {
ui->label_Status->setText("Your version of Porymap is up to date!");
ui->label_Warning->setVisible(false);
}
}
void UpdatePromoter::error(const QString &err, const QDateTime retryAfter) {
const QString message = QString("Failed to check for version update: %1").arg(err);
ui->label_Status->setText(message);
if (!this->isVisible())
logWarn(message);
// If a "retry after" date/time is provided, disable the Retry button until then.
// Otherwise users are allowed to retry after an error.
auto timeUntil = QDateTime::currentDateTime().msecsTo(retryAfter);
if (timeUntil > 0) {
this->button_Retry->setEnabled(false);
QTimer::singleShot(timeUntil, Qt::VeryCoarseTimer, [this]() {
this->button_Retry->setEnabled(true);
});
} else {
this->button_Retry->setEnabled(true);
}
}
void UpdatePromoter::updatePreferences() {
const QSignalBlocker blocker(ui->checkBox_StopAlerts);
ui->checkBox_StopAlerts->setChecked(!porymapConfig.getCheckForUpdates());
}
void UpdatePromoter::dialogButtonClicked(QAbstractButton *button) {
if (ui->buttonBox->buttonRole(button) == QDialogButtonBox::RejectRole) {
this->close();
} else if (button == this->button_Retry) {
this->checkForUpdates();
} else if (button == this->button_Downloads) {
QDesktopServices::openUrl(this->downloadUrl);
}
}