Restructured MiCasaClient such that it could be extended for games that

need a custom (extended) client context.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@876 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2002-01-19 04:02:11 +00:00
parent e2fbfdf38c
commit ef9c12672e
2 changed files with 54 additions and 15 deletions
@@ -1,5 +1,5 @@
//
// $Id: MiCasaApp.java,v 1.4 2001/11/26 23:46:47 mdb Exp $
// $Id: MiCasaApp.java,v 1.5 2002/01/19 04:02:11 mdb Exp $
package com.threerings.micasa.client;
@@ -27,7 +27,21 @@ public class MiCasaApp
_frame = new MiCasaFrame();
// create our client instance
_client = new MiCasaClient(_frame);
String cclass = System.getProperty("client");
if (cclass == null) {
cclass = MiCasaClient.class.getName();
}
try {
_client = (MiCasaClient)Class.forName(cclass).newInstance();
} catch (Exception e) {
Log.warning("Unable to instantiate client class " +
"[cclass=" + cclass + "].");
Log.logStackTrace(e);
}
// initialize our client instance
_client.init(_frame);
}
public void run ()
@@ -1,5 +1,5 @@
//
// $Id: MiCasaClient.java,v 1.7 2001/12/20 01:10:51 shaper Exp $
// $Id: MiCasaClient.java,v 1.8 2002/01/19 04:02:11 mdb Exp $
package com.threerings.micasa.client;
@@ -26,29 +26,24 @@ import com.threerings.micasa.util.MiCasaContext;
/**
* The MiCasa client takes care of instantiating all of the proper
* managers and loading up all of the necessary configuration and getting
* the client bootstrapped.
* the client bootstrapped. It can be extended by games that require an
* extended context implementation.
*/
public class MiCasaClient
implements Client.Invoker
{
/**
* Creates a new client and provides it with a frame in which to
* Initializes a new client and provides it with a frame in which to
* display everything.
*/
public MiCasaClient (MiCasaFrame frame)
public void init (MiCasaFrame frame)
throws IOException
{
// create our context
_ctx = new MiCasaContextImpl();
_ctx = createContextImpl();
// create the handles on our various services
_config = new Config();
_client = new Client(null, this);
// create our managers and directors
_locdir = new LocationDirector(_ctx);
_occmgr = new OccupantManager(_ctx);
_pardtr = new ParlorDirector(_ctx);
// create the directors/managers/etc. provided by the context
createContextServices();
// for test purposes, hardcode the server info
_client.setServer("bering", 4007);
@@ -79,6 +74,36 @@ public class MiCasaClient
return _ctx;
}
/**
* Creates the {@link MiCasaContext} implementation that will be
* passed around to all of the client code. Derived classes may wish
* to override this and create some extended context implementation.
*/
protected MiCasaContext createContextImpl ()
{
return new MiCasaContextImpl();
}
/**
* Creates and initializes the various services that are provided by
* the context. Derived classes that provide an extended context
* should override this method and create their own extended
* services. They should be sure to call
* <code>super.createContextServices</code>.
*/
protected void createContextServices ()
throws IOException
{
// create the handles on our various services
_config = new Config();
_client = new Client(null, this);
// create our managers and directors
_locdir = new LocationDirector(_ctx);
_occmgr = new OccupantManager(_ctx);
_pardtr = new ParlorDirector(_ctx);
}
// documentation inherited
public void invokeLater (Runnable run)
{