Add a separate overridable step to register listeners in AbstractGame
Summary
Currently, listeners are registered by default in setupWindowViewports
implementation. That method is doing more than what its name implies and should be broken down.
Example
One possible way could be...
protected void setupListeners(RenderWindow rw) {
rw.addKeyListener(this);
rw.addMouseListener(this);
rw.addMouseMotionListener(this);
rw.addMouseWheelListener(this);
}
or
protected void setupListeners(Engine engine) {
RenderWindow rw = engine.getRenderSystem().getRenderWindow();
rw.addKeyListener(this);
rw.addMouseListener(this);
rw.addMouseMotionListener(this);
rw.addMouseWheelListener(this);
}
Benefits
System initialization steps are divided more clearly and cleanly. It's unlikely anyone expects to be required to register listeners if they choose to override a method to setup viewports, so the immediate lack of response to key/mouse events would be less obvious.