Perhaps a good place to start the refactoring process would be in the engine itself. How's this look for a redesign of the mhframework.net.client package?
Corrections to be made to this diagram:
- Declare sendMessage() in MHAbstractClient superclass.
- Remove sendToAll() -- that's a server function.
- Consider making MHLocalClient observable. Or make an observable subclass of it.
- MHObservableClient needs separate lists of observers for system messages vs. game messages.
More to come...