|We have an abstract input system which should allow us to easily add more than one mechanism for input handling and easily switch between them.
Previously all of our input handling happened in the same class. The input handling code grew huge and ugly.
We refactored the old class into separate input handlers classes. Each input handler is responsible of handling one or many actions. In the base class of each input handler, we have events that notify other classes about any major activity that occurs in that input handler.
All the handlers live a control mechanism that handles the relation between the handlers and other classes that are interested in any info from those handlers.
Each control mechanism also has a control mechanism assistant which displays text and images to assist the player through the mechanism.
We can have more than one control mechanism, each would have a list of handlers, assigned from the inspector.