Yeah, multiple assignment is messy.
Lix has multiple assignments because of the networking model. At click time, I don't know whether my team partner has assigned something.
With multiple assignments, you must handle user input of 20 basher assignments, then 50 builder assignments, then 10 floater assignment to same lem, in same frame. Do you want to let exactly 1 basher and 1 floater assignment go through? Write this extra handling. If you pause the game and don't advance, what should the panel show? After the basher assignment, should the UI prevent the builder assignment, but not the floater assignment?
Builders queue in lix. If we hadn't assigned basher, the 50 builder assignment should all go through.
On assignment user input, what assignments do you remove from the replay for the next frame? If you keep all assignments for the next frame, then you get an irritating variant of
LMB advances physics before cancelling replay. If you delete all assignments for the next frame, you can't assign multiple times. If you cache new assignments, and only commit them to the replay when the update happens, you must develop this caching.
The question is: if you assign a skill, then step back and assign a skill to a different lemming, what do you expect to happen / what would be more convenient to have happen -- for it to override the first assignment or for both to be carried out?
At least override when you have framestepped to this frame from the past instead of from the future.
-- Simon