I have some suggestions, though we should discuss this thoroughly to decide on a good setup.
Very large classes:
- ExampleFrameListener - nearly 4000 lines long
- Could move the render queue processing to a separate class
- Console command processing could also be split out
- The render queue switch statement should be split to use a function for most of the cases instead of putting all the code in one huge function.
- The class should mainly handle the mapping of events to actions
- Not sure about the camera and text rendering stuff
- GameMap - ~2500 lines
- Not sure about this one. There is at least a bunch of helper functions that can be split out. Possibly also the pathfinding.
- Creature - ~2300 lines
- Again not sure. There are also some helper functions here.
- Huge switch statement in doTurn, see above
There is also the use of a bunch of global variables defined in globals.h. I suggest we try to move some of the use of them into parameters or member vars instead.
I also think we should merge ExampleApplication and MapEditor, (MapEditor inherits exampleapplication). I don't see the point of having a split class like this. Also ExampleApplication has all code in the header file, which is not ideal.
EDIT: Also, rename Example*, and possibly MapEditor.