Anyways, I've gotten Moe back to the Lobby stage adding proper connect functionality and server spawning. I've also added a configuration class which should allow for more flexibility down the road. The ChatBox and Console were also moved into their own classes to hide away initialization stuff, allow for changes to be done there rather than in client code, and so they're better contained/labeled for RenderTree manipulation. Logging is there and more reliable/consistant.
Next comes some of the pre-game messaging setup and the game start transition.
One usage pattern I've found is very nice in C# is the use of non-public EventHandlers:
public class EventGenerator{ public event delegateType Event;}public class EventConsumer{ protected ... EventHandler(...){ ... } // // Then in a property assignment or constructor, // the EventHandler is attached to a particular EventGenerator. //}
This seems to be a good way to get friend-like limited public use for methods. The EventHandler can then be triggered by the generator, but not by random objects/users.