DS Map Studio 2.2 + all features of my fork #9
Open
AdAstra-LD wants to merge 61 commits into
Open
Conversation
- Added an extra mapping layer - Added two new buttons that start the full map conversion chain. OBJ -> IMD -> NSBMD -> NSBTX, for either "all maps" or for the "active map" only. - New option in the OBJ Export dialog, that enables exporting maps both separately and joined - New shortcuts for the layer selector. Clicking the mouse wheel switches from single layer to 'all layers but the selected one'. Pressing the backslash '\' key enables all layers. - Added export groups, a new feature that allows to export multiple maps as one. You will find a new button to view every export group of your PDSMAP, listing the location of each map in each group. - Added the 'split map' feature, which allows to split a big PDSMAP into smaller PDSMAPs per Area. - Added an animated status bar that tells you when the GUI is busy opening/saving a map or splitting the PDSMAP into areas. - The status bar now also tells you the ID of the tile you selected and its model name - New "Duplicate Plate" button in the BDHCAM editor - Fixed background image staying on screen even in the 3D view and not scaling properly (thanks to Trifindo) - Changed default settings of NSBMD and IMD export dialogs - Changed data structure of Area indices to TreeSet, in order to automatically sort them - Saving and opening a map starts a new Thread - Bigger "Import Map" Dialog - Fixed AdAstra BW2 Tileset
also new Platinum Tileset 7 by Jiboule
- Fixed minor grammar mistake [Splitted -> Split] - Inverted if logic in BdhcamCameraDisplay class - fixed "startsWith" check on exportgroupCenterTag in MapMatrix class
- BDHC plates can be duplicated - BDHC plates now appear slightly above the ground in the 3D Display
Set minimum screen size
- Added RGB settings for Diffuse, Ambient, Specular and Emission lights [L0, L1, L2, L3] - Added a couple helper methods to TilesetIO class - Renamed imd\notes\Material class to 'ImdMaterial' - Minor refactor for the sake of clarity °°
KLS-01
approved these changes
May 26, 2024
Introduce MainFrameContext and modular action classes (MainFrameBusyRunner, MainFrameViewUpdater, RecentMapsMenu, MapProjectActions, MapExportActions, MapEditActions, ToolDialogLauncher) and initialize them via initActionModules. Replace large blocks of in-class logic and dialog/tool operations with delegating calls to these modules (e.g. openMap, openTileset, saveMap, export helpers, editors and many action handlers now call mapProjectActions/mapExportActions/toolDialogLauncher/mapEditActions). Remove GUI-blocking and status text thread helpers and related fields, simplify imports, and add isMapOpened/setMapOpened accessors. This refactor centralizes responsibilities, reduces MainFrame size and prepares code for further modularization without changing external behavior.
Replace bulk texture reloads that left old GL objects allocated by calling updateTextures(gl) on tilesets and adding TileDisplay.updateTexturesGL() which destroys existing textures before reloading. Remove unnecessary glFinish() calls. Change TilesetIO to write int/float values directly to the stream (byte-wise) instead of allocating ByteBuffer arrays. Make Clusterer use a single Random instance (reuse instead of new Random() repeatedly) for selecting initial and fallback centroids.
Read and write field animation tables as fixed-size records matching fldtanime: a 32-bit count followed by 16-byte ASCII texture names and 18 frame/wait byte pairs. Validate animation names before saving, preserve 0xff as the terminator, clamp editable frame and delay values, and preview the current frame before advancing.
Make texture-list selection update the currently selected animation frame instead of just repainting, and keep programmatic selection changes from feeding back into edits. Wire the Apply button for name edits, reset frame selection when switching animations, and select newly-added frames so building animations from scratch is usable.
Add editor configs and attributes; remove jcenter and set jar duplicatesStrategy in build.gradle. Simplify GameFileSystem.getPath with String.join. Refactor MapData thumbnail generation: extract helpers, ensure Graphics is disposed, and add bounds/NULL checks when drawing tile thumbnails. Clean up MapGroup to use StringBuilder and explicit Point import. Harden MapLayerState and StateHandler with final fields, proper generics, safer state navigation, and removal of stray debug prints. Modernize Utils: use collections and try-with-resources, provide a missing-texture helper, tighten exception handling, simplify cloning methods, improve name-parsing logic, and add bounds checks to isTileAreaAvailable. Overall cleanup improves safety, readability, and resource management.
Move export-group state management out of the UI and into MapMatrix. Add methods to set a map's export group and center (setMapExportGroupIndex, setExportGroupCenter) and ensure a single center per group (clearExportGroupCenters, normalizeExportGroupCenters). Normalize centers and refresh export-group colors when loading/saving/exporting maps. UI code now enables/disables the 'group center' checkbox based on the group index and reads state from MapMatrix. Export code passes export group indices only when exportgroups are used and avoids exporting group 0 as a selectable group.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
New: 'PDMSAP Split' --> allows splitting a big PDSMAP into smaller PDSMAPs, one per Area (also changed data structure of Area indices to TreeSet, in order to automatically sort them).
New: 'Export groups' --> export multiple map models as one.
New: Button to view every export group of the current PDSMAP, listing the location of each map in each group.
(((TODO: The export group center should be unique for each export group, which... is something I haven't implemented yet.)))
New: More user control over RGB settings for lights L0, L1, L2 and L3 [Tileset Editor].
New: Added tile Z offset [Tileset Editor].
New: "Duplicate Plate" button in the BDHC and BDHCAM editors.
New: two buttons that start the full map conversion chain. OBJ -> IMD -> NSBMD -> NSBTX, for either "all maps" or for the "active map" only.
New: option in the OBJ Export dialog that enables exporting maps both separately and joined.
New: rudimentary animated status bar that tells you when the GUI is busy opening/saving a map or splitting the PDSMAP into areas.
New: the status bar now also tells you the ID of the tile you selected and its model name.
New: keyboard shortcuts for the layer selector. Clicking the mouse wheel switches from single-layer mode to 'all layers except the selected one'. Pressing the backslash '' key enables all layers.
Changed: added an extra mapping layer.
Changed: different default settings of NSBMD and IMD export dialogs
Changed: saving and opening a map uses a separate thread
Changed: bigger "Import Map" Dialog