Clone this wiki locally
There's a bunch of odd things the developers talk about.
OT: Order Targeter, an object which validates possible targets for an order. There are various implementations, which capture the specialized targeting requirements of various orders. These implement IOrderTargeter. Traits which implement IIssueOrder are expected to expose a sequence of OTs, which describe all of the orders that particular IIssueOrder implementation can issue. Opal aggregates together all the OTs offered by all the IIssueOrder traits on all the units in the selection, to build the order palette.
OG: Order Generator, an object which acts as the glue between the widget system's input handling and actually interacting with the game. There are various OG implementations, which capture the different button-handling requirements. Most normal interaction is done through either UOG or RUOG.
UOG: UnitOrderGenerator, which provides the "default" input mode. This does all the hard work to figure out what orders should be issued when the player has a bunch of units selected and right-clicks on something.
RUOG: RestrictedUnitOrderGenerator, an object which provides an input mode restricted to a particular order. This is used by opal when an order button is clicked which requires a target to be specified. For example, when the Move button is clicked, opal binds a RUOG which will only accept OTs with an OrderID of "Move".
Shellmap: A map running behind the game UI (the "shell").