CodingSquirrel wrote:One other outstanding issue I have, that I don't think I'll be able to fix while keeping this UI only, is if you try to do a "clean" command while on an upgrade the mod will think you have canceled your upgrade despite the fact that it is still running. What I mean by "clean" command is if you try to issue a command without holding shift, which would normally reset your orders and issue the new one only. It technically does that, but will also leave your current upgrade running. The problem this causes for me in tracking what's going on, is that even though the upgrade is still running, the unit's queue completely forgets about it. I just don't know a way to interpolate that missing information accurately. Any solution I tried to come up with, I could also come up with scenarios where the data I had available could mean multiple things. So basically unless this can be fixed sim side (such as doing a full cancel on an upgrading ACU/SCU if given a clean order set), don't issue clean orders if you want the notify to properly print to chat. I believe right now it will result in a notification of the upgrade's cancellation, and will remove the upgrade from your displayed build queue, despite the fact that the upgrade is still running.
So I ended up fixing this after all. I will likely hold off on submitting this fix for now, just in case something else comes up, so that I'm not submitting so many versions. That is, unless people report that this is causing some issues for them. (everything below here is a bit technical)
The behavior is a bit different than I had originally understood. If you are currently upgrading and attempt to issue a clean command, it will issue that command like it always does, and as far as how the engine reports it that's exactly what happens. Except, since you are upgrading this clean command fails, so the commands revert to their previous state, which includes your entire previous queue of commands. So unlike what I previously thought, it doesn't actually clear all commands and forget about it, it just forgets about it when it tries to issue the command which ultimately fails. Another oddity to it is that when you click and drag a line of orders, they're actually given one at a time. So even if the first is a clean command, all of the others are issued as non-clean. This means that only the first in the line (the one that wasn't clean) is actually canceled, and the rest are just appended to your original queue as if you had been holding shift. The fix for this is actually quite simply, if I'm upgrading and a clean command comes in, I ignore it. If it's just a single command then it would be ignored anyway. If it's a line of commands, they'll be processed on their own as a non-clean command anyway and will be handled like normal.