Back again, I peeked at the code several times; I'd recommend making the ShipSave class into its own file, to make use of the object-oriented nature of Java.
It looks like right now it only holds a reference to the savegame file itself - it's kind of a waste (you could use an ArrayList<File> for that), especially since you could have it contain the ship's image, button reference, data from within the save file (so you don't have to read it anew each time you need the info), as well as making it host the dockShip and boardShip functions (and all the other relevant methods I haven't spotted)
Also, as I was told by shark when I started, it might be a good idea to organize the code into relevant packages:
Code: Select all
org.iceburg.ftl.homeworld.core
- FTLHomeworld
- SaveGameParser
org.iceburg.ftl.homeworld.elements
- Savegame
org.iceburg.ftl.homeworld.ui
- SpaceDockUI
- CargoBayUI
It might also be a good idea to include relevant pieces of code from the Savegame Editor in your own project, to eliminate the confusing dependency. The code is open-source, so it's not a crime if you copy it.
Also, since the savegame location cannot be changed AFAIK, you can just hardcode it into your program, so that the Spacedock doesn't have to be placed inside FTL's savegame directory. And even if the savegame location can be changed, you can prompt the user to point the program to it.
Well, that's about it - there are some other things I wanted to suggest, but figured I'd leave them to you to learn
