11/22/2015 in devlog
This week started with me removing the code for "invoices", the internal data structure used so far to model monetary transactions between entities. We figured that the model was already too high-level and replaced it with a lower-level "payment" model similar to the transfer of materials between entities.
This was a requirement to complete the "fulfillment" of payment conditions in contracts. So technically, the very first commodity trade happened in EcoSim this week.
I also spent about a day improving our world builder tool to generate star maps with connections between systems so Micheal had some pretty test data for his work on ship movement. I then tied together my material storage system and Michael's ship movement code, allowing for the very first actual transport of materials to happen this week as well :)
Last but not least, I started working on a proper interface for the storage system so one can drag & drop materials from one store to another eventually.
This week has been all about the client!
I started with implementing the second part of the location selector. So far one has only been able to select planets within a system. With the new selector you can type a system's name and it'll show you a list with possible matches (fuzzy!).
Later I improved the highlighting of systems in the star map. Hovering over a star will show its name and also the line and circle that has been in there before.
To be able to show the connections of the stars and plot routes I added a library that allows to set up a graph structure and do searches on it. The first thing I've done with it was improving the before mentioned highlighting of systems the user hovers over. Starting at that system every system within 4 hops is searched and the edges between the systems are highlighted. This allows a better view of the local star connections.
With the graph search set up the next logical step was to plot the routes that the ships take when being sent to another location. There are still some bugs left, but it works!