MWClient execution logic
1) Main method sets up logs using static methods of CampaignData which points to MWLogger ( Should we switch to a logger like log4j? )
2) Stdout and StdErr are set to /logs/megameklog.txt since megamek uses stdout and stderr ( duplicated code in MWDedHost, again should we use log4j? )
3) Args are parsed, ded is set to true if -dedicated is set, enable or disable splash is read.
4) New CConfig is created by reading
data/mwconfig.txt or data/mwconfig.txt.bak serverdata.dat if present images including camo if not a dedicated server
5 )Splash screen is enabled or disabled and data/mechfiles/units.cache is deleted if it exists
6) The created CConfig is passed as the argument for a new MWClient
7) The MWClient either calls the MekWarsDed.jar if it's a dedicated instance or sets the look and feel if not.
8) MWClient stores a reference to the java runtime bean at rt
9) MWClient creates a new CConnector, passing itself as the argument (since it implements IClient ) and sets the splash window.
10) If not a ded the client retrieves settings and sets data as follows -
Create a new CCampaign which in turn holds CPlayer and a reference to MWClient Grab the player reference from the CCampaign Initialise and set the protocal commands (comm, ping, pong and acksignon ) Initialise and set gui commands ( Ping and Mail ) Set the "loading data" status on the splash screen Show sign on dialog if autoconnect is false or if serverip, name or password are empty Create a datafetcher on specified port Check for data/servers/<serverip>.<serverport>/dataLastUpdated.dat. Set the cache to use this directory Load the ops list set up ops
If it is a ded then it does the following
create protocol commands create datafetcher, grab the ops delete mmconf/gameoptions.xml if it exists
11) Once past this step both deds and players load the camaignData by calling getData() and timestamping before and after data retrieval.The datafetcher updates the last updated stamp and serialises itself
12) At this point deds have the username prepended with [Dedicated]
13) Options for dedrestarts, savedgamemaxdays, dedowners, port, ignore lists and keywords are read in at this point. The autosave purging thread is started.
14) The splash is set to "connecting" and the chatserver ip and port are set.
15) Non-dedicated clients now start loading up the gui as follows
Create a new CMainFrame passing in the MWClient as the parameter and set the logout image Sets the window dimensions and components using either pack() or validate() depending on whether packframe is true. It also sets various gui items like size, location, state Mute sound if set update attack menu set browser to allow urls to be opened in system browser connect to chat server set splash to "constructing gui" set main frame to visible get rid of the splash refresh the status, playerpanel, bmpanel and hqpanel Send client version and username to the chat server Send /getsavedmail to the chat server Start the repair thread ( for repairing mechs )
If it's a ded then instead it
Tries to connect to the server up to 20 times with a 90 second sleep time
16)Set up the timeout thread