I've got the basic Ship Cargo screen finished. A ship can now land at a colony that is owned by the same player and move cargo between the ship and the colony. While I was working on this, I decided to make a fairly major design change to simplify my life in coding and in the way the game is played.
I had planned for ships to take a certain amount of time to unload/load cargo. So it might take 10 minutes to unload a module, in which time the ship would be placed in Cargo Handling status for 10 minutes and wouldn't be able to initiate any other actions other than moving another item, which would extend the time out by 10 minutes. The item being moved to the colony would then not be available to the colony for until those initial 10 minutes was up.
I had planned on doing this by having an "available" column in the item table in the database, so when a ship moved a Command Module over to a colony the "available" column for that item would be set to a Unix timestamp 600 seconds in the future, and the colony would not be able to have access to that item until after that amount of time had passed. This is fine for modules and the like, which aren't stackable, but for things like ore, it would mean a ship moving a stack of 100 ore over to a colony that already had ore on hand would create a new stack of ore in the colony that wouldn't be available for 10 minutes and then the colony owner would have to consolidate those stacks. At an active colony this could lead to dozens of stacks of the same type of ore, and it would be more complicated to figure out which stack of ore to use first for production and such.
So, I've made the decision to just have the ships alone pay the time penalty for moving cargo. Anything moved from a ship to a colony will be instantly consolidated into the colony inventory and be available at the point the item was moved, while the ship will still have to wait for the action to complete before it can do anything else. This won't really matter when moving things from a colony to a ship since the ship will have to wait out the cargo action regardless.
It's not really the way I'd like to do it, but it makes things a lot simpler and will lead to getting the game playable sooner.
So here's a list of things a ship can currently do in the game.
1. Land on a planet at a certain square or at a colony.
2. Lift off into orbit of a planet.
3. Leave orbit of a planet.
4. Perform an overall mineral scan of a planet.
5. Perform a scan of a certain square on a planet. (Reveals that square on the planet map.)
6. Move to a new space square on the System Map.
7. Jump to a new star system via an Interstitial Access Point (IAP).
8. Perform a system scan to put the System Map in the library and reveal the distance to the closest IAP. If performed in the same space square as an unknown IAP, this will add the IAP to the library.
9. Install/Uninstall ship modules.
10. Move Cargo to/from a colony with the same owner.
Upcoming Ship Actions
1. Harvest comets.
2. Scoop Gas Giants.
3. Buy/Sell at colony markets.
4. Scan other ships.
5. Attack other ships.