openloco / objecteditor Goto Github PK
View Code? Open in Web Editor NEWA modern implementation of 'LocoTool' for dat file parsing
A modern implementation of 'LocoTool' for dat file parsing
Currently the settings.json
file that this program uses to store its settings is saved in the binary/executable folder itself. When I deploy new versions, those new versions will check its binary file location and if the settings file doesn't exist (which it won't in that specific folder) then a new file will be created, effectively meaning the user 'loses' their settings unless they copy across the file. OS's have ways to solve this, eg common folders like AppData or MyDocuments, etc.
Currently this tool uses WinForms' Bitmap class to create images from the graphics data in objects. This works great but is not cross-platform, and additionally prevents image creation in the 'Core' part of the codebase as that part does not reference WinForms dlls. In short, image creation currently happens on the UI layer, not at the core/business layer, and this needs to change.
I'm unsure if many locomotion objects rely on object packing into saves to function but this is something that rct2 players used a lot. (There were some popular objects in the rct2 community that violated the following and it caused much annoyance) For object packing to work all object header fields that are populated on load must be zero. For example the string id is usually offset 0 in an object header these are populated on load. Therefore they must be zero. I would suggest having a warning on objects that violate this.
Currently the program does not support tutorial files. Adding support would be great.
Many objects have flag types, where you can select 1-to-many values for the property. Currently the WinForms property grid does not support proper editing of these. The easiest solution is to add a custom type converter to handle it.
OpenLoco has many validation checks for objects to ensure values don't pass certain hard limits. Currently this tool does not enforce any limits and does not really care if the object is 'valid but has insane values'. Adding some kind of buggy object detection and warning would help a lot in cleaning up old community objects and prevent creation of new bugged ones.
Dark mode would greatly improve the visual look of the tool and not burn people's eyes late at night.
ObjectEditor/Core/Objects/BuildingObject.cs
Line 103 in 606e81f
Var_AD
is the numAnimationSequences
And Var_AE
is the animation sequences. It is a list of parts that should be drawn depending on the tick.
Hey LeftofZen, I've really been enjoying using your tool :-)
I found four station objects from Wisim-Welt that your tool cannot open the images. Then when I clicked "export to directory" your tool exported the images of the next object up in the main list. The status window at the bottom just displayed loading object... and saved images to... no errors
Maybe it needs an error message when it can't find the images. And it's a bug if it's exporting the wrong images.
Probably the objects are faulty too... I don't have time tonight to load them up, and edit them into my trackst.dat file
I hope you can make some sense of this ;-)
Currently vehicle animations (and all other object animations) have their animation frames displayed as static images. It would be nice to have an animated view like Loco does.
I've started implementing this already and the tab+some code exists, but it doesn't work currently.
Windows is great but I'd like to open this tool up to all users on Mac and Linux as well. This will be require ditching WinForms entirely and using something like AvaloniaUI.
Currently the only 'way' to use this tool is to load an existing object and edit it from there. I'd like to add a 'blank template' for each object type so that users can create new objects from scratch rather than editing existing ones.
Can't believe I missed this one - importing images simply replaces what you see in the UI - there is no code that is actually converting the images back into the graphics table format! I should implement that...
We need a central 'repo' of all objects so that dependent objects can find their dependencies here.
I've copied the G1 image id names from https://github.com/OpenLoco/OpenLoco/blob/master/src/OpenLoco/src/Graphics/ImageIds.h
and they all line up until 3550 when it appears to go off by 2 places (2 missing title menu lesson sprites) . This can be seen from the exported-and-named files:
The tool does display little icons for each object type, but this requires loading G1.dat (ie set a Data directory in the tool). In future I'd like these graphics (or at least an open-source non-copyright version) to be bundled with the app.
Korean and Chinese language strings use a particular non utf8 encoding that, when read by the tool are displayed incorrectly. Fixing this would be a good idea
This is a big feature, but would be highly useful. It would basically be a map editor in-tool, but a good first step would be loading the save/scenario files and displaying basic info like map width/height, etc.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.