eliasdoehne / stellaris-dashboard

A graph dashboard and event log for Stellaris.
123 stars 14 forks source link

Automatically load modded localization by checking `dlc_load.json` #114

Closed MichaelMakesGames closed 11 months ago

MichaelMakesGames commented 11 months ago

Currently, setting up localization for modded saves is a bit troublesome (requires manually copying files around). Instead, stellaris-dashboard could check the dlc_load.json file for the list of paths to mod descriptor files, then check the mod descriptor files for paths to the mod data.

I recently set this up for my project https://github.com/MichaelMakesGames/stellarmaps and would be willing to help implement equivalent functionality here.

(Note: this could be relevant for loading modded flag/map colors too, once #80 is done)

MichaelMakesGames commented 11 months ago

This would address #100

eliasdoehne commented 11 months ago

Nice that would be a great solution, I did not know about dlc_load.json.

I also included some changes related to loading the game files and fixes for the name rendering/localization system in my (unexpectedly long-lived) branch here:

https://github.com/eliasdoehne/stellaris-dashboard/pull/110/files (game_info.py and config.py)

However, I think the changes there are not directly related to finding the localization files from the game and mods. So if you want, you can start on the file loading topic, and I will adapt my branch if/when it is ready to merge.

eliasdoehne commented 11 months ago

Having a reliable way to locate all game files in use also opens some really interesting possibilities. If I remember correctly, it may be feasible to track in-game events like anomaly or situation log, add them to the database by their key, and render the descriptions at runtime with the localization files.

MichaelMakesGames commented 11 months ago

render the descriptions at runtime

Some things can have triggered descriptions (for example, for variations for gestalts), so that could be tricky. And within the description there can be scripted_loc