lisongmechlab / lsml

Li Song Mech Lab
http://lisongmechlab.github.io/lsml/
GNU General Public License v3.0
42 stars 6 forks source link

XML parsing issue post 24 January 2023 Patch #804

Closed GidonsClaw closed 1 year ago

GidonsClaw commented 1 year ago

LSML version: 2.0.16 Screen resolution: 2560x1440 Java version: 1.8.0_361

Steps to reproduce issue:

Open LSML
Error show on load

Actual result: Error message with detail:

java.io.IOException: Unable to load chassi configuration for [fnr-j]! at org.lisoft.lsml.model.database.gamedata.MwoDataReader.parseChassis(MwoDataReader.java:243) at org.lisoft.lsml.model.database.gamedata.MwoDataReader.parseGameFiles(MwoDataReader.java:147) at org.lisoft.lsml.view_fx.GraphicalDatabaseProvider.updateDatabase(GraphicalDatabaseProvider.java:268) at org.lisoft.lsml.view_fx.GraphicalDatabaseProvider.loadDatabase(GraphicalDatabaseProvider.java:243) at org.lisoft.lsml.view_fx.GraphicalDatabaseProvider.getDatabase(GraphicalDatabaseProvider.java:78) at org.lisoft.lsml.view_fx.LiSongMechLab.backgroundLoad(LiSongMechLab.java:242) at org.lisoft.lsml.view_fx.LiSongMechLab.access$000(LiSongMechLab.java:63) at org.lisoft.lsml.view_fx.LiSongMechLab$1.call(LiSongMechLab.java:185) at org.lisoft.lsml.view_fx.LiSongMechLab$1.call(LiSongMechLab.java:181) at javafx.concurrent.Task$TaskCallable.call(Task.java:1423) at java.util.concurrent.FutureTask.run(Unknown Source) at java.lang.Thread.run(Unknown Source) Caused by: java.lang.IllegalArgumentException: No such key found!: @fnr-j at org.lisoft.lsml.model.database.gamedata.Localisation.key2string(Localisation.java:98) at org.lisoft.lsml.model.database.gamedata.MdfMechDefinition.asChassisStandard(MdfMechDefinition.java:123) at org.lisoft.lsml.model.database.gamedata.MwoDataReader.parseChassis(MwoDataReader.java:240) ... 11 more

Expected result: Load as normal

LiSongMWO commented 1 year ago

Interesting, is FNR-J a new mech? It looks like PGI forgot to update their localisation files to include the human readable names...

GidonsClaw commented 1 year ago

Interesting, is FNR-J a new mech? It looks like PGI forgot to update their localisation files to include the human readable names...

Not that I know of or can find in the mech store...

Typical PGI rushing QA...

LiSongMWO commented 1 year ago

If you can't find it in the store, then it's probably a still unreleased mech... It's not uncommon for PGI to mess up data entry of new mechs or equipment. They have no validation of their files that would catch inconsistencies like this.... hecc if they'd just try to start LSML before releasing their patch they could avoid most of the bugs at this point lol...

I'll see about improving the robustness of the parser so that it can still start the application even when PGI messed up like this...

LiSongMWO commented 1 year ago

I'm kind of half way through a conversion to Java 17 that will remove the need to have a JVM installed so it might be a while before I can get this patched.

GidonsClaw commented 1 year ago

I'm kind of half way through a conversion to Java 17 that will remove the need to have a JVM installed so it might be a while before I can get this patched.

No problem, appreciate it :)

LiSongMWO commented 1 year ago

I've looked through the data files, the FNR-J lacks any mention in the localisation files, this seems pretty much like a SNAFU by PGI as yush.

If I work around this by allowing localization to quietly fail, that introduces other issues where I won't know if something actually broke because of LSML being unable to parse a new format or smth like that. I also don't want to have to special case the fnr-j, even though this has been done for some mechs in the past (I'm looking at you SMN-G, still has a broken chassis config wtf?), but doing this for the localisation data is rough.

That said, I really think it's better to wait a patch or two to see if PGI will fix the missing localisation.

GidonsClaw commented 1 year ago

I've looked through the data files, the FNR-J lacks any mention in the localisation files, this seems pretty much like a SNAFU by PGI as yush.

If I work around this by allowing localization to quietly fail, that introduces other issues where I won't know if something actually broke because of LSML being unable to parse a new format or smth like that. I also don't want to have to special case the fnr-j, even though this has been done for some mechs in the past (I'm looking at you SMN-G, still has a broken chassis config wtf?), but doing this for the localisation data is rough.

That said, I really think it's better to wait a patch or two to see if PGI will fix the missing localisation.

No worries, will keep an eye on it.

LiSongMWO commented 1 year ago

Welp funny how that works, I made some other changes that basically meant I had to work around this. The FNR-J is now unofficially called "JAILBIRD" until PGI gives it a proper name, at which point LSML will pick that up.