GSOC Day 17 – More Planning for Orders
I worked today on a few fixes for the Orders panel and on the beginnings of the new features. My first priority was to fix the bug whereby orders would not immediately update their parameters until after you clicked the “revert” button. This turned out to be a problem in StateTracker.py, which discards cache updates for anything that doesn’t have the ID of the currently selected object. The problem being, of course, that the order queue has a different ID now.
I was planning to simply add a check to determine whether it was an update for an object or its related order queues, but Mithro said that he’d like me to disassociate the order queue tracking from the object tracking. So I’ll split that into two classes tomorrow, and it should work eventually.
I also looked at the problem of missing panels for certain types of order parameters today. Some will be easier to add than others, and I added one for relative positions and one for player references (although the latter will need some additional code for filtering out players. I’ll talk to Mithro about that). Each panel needs an XRC base, plus client code to make it actually do things. XRC is a reasonably decent way to lay out a wxWidgets panel, but it has its own quirks and can be hard to figure out at times.
I’ll also need to use XRC to create the method of tracking multiple order queues. I was originally thinking of making a tabbed notebook that would hold each queue, but it seems like it will be easier to just make a set tabs or a dropdown menu with the list of queues, then have the same panel hold the actual information and refresh it whenever the queue changes. This won’t take nearly as much code and it will work essentially equivalently.
I’ve got my work cut out for me on the orders panel, but at least I think I understand where it’s going.