Create our game configurator directly rather than returning a class and

forcing the caller to instantiate it.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3248 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2004-11-27 21:24:33 +00:00
parent 421ed5126e
commit d492d541b3
3 changed files with 13 additions and 15 deletions
@@ -1,5 +1,5 @@
// //
// $Id: TableListView.java,v 1.8 2004/08/27 02:12:51 mdb Exp $ // $Id$
// //
// Narya library - tools for developing networked games // Narya library - tools for developing networked games
// Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved // Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved
@@ -93,18 +93,14 @@ public class TableListView extends JPanel
_matchList.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); _matchList.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
panel.add(new JScrollPane(_matchList)); panel.add(new JScrollPane(_matchList));
// create our configurator interface // create and initialize the configurator interface
GameConfig gconfig = null; GameConfig gconfig = null;
try { try {
gconfig = config.getGameConfig(); gconfig = config.getGameConfig();
Class cclass = gconfig.getConfiguratorClass(); _figger = gconfig.createConfigurator();
if (cclass != null) { if (_figger != null) {
// create and initialize the configurator interface
_figger = (GameConfigurator)cclass.newInstance();
_figger.init(_ctx); _figger.init(_ctx);
// give it the game config
_figger.setGameConfig(gconfig); _figger.setGameConfig(gconfig);
// and add the whole business to the main UI
panel.add(_figger, VGroupLayout.FIXED); panel.add(_figger, VGroupLayout.FIXED);
} }
@@ -24,6 +24,8 @@ package com.threerings.parlor.game;
import com.threerings.crowd.data.PlaceConfig; import com.threerings.crowd.data.PlaceConfig;
import com.threerings.util.Name; import com.threerings.util.Name;
import com.threerings.parlor.client.GameConfigurator;
/** /**
* The game config class encapsulates the configuration information for a * The game config class encapsulates the configuration information for a
* particular type of game. The hierarchy of game config objects mimics * particular type of game. The hierarchy of game config objects mimics
@@ -68,12 +70,11 @@ public abstract class GameConfig extends PlaceConfig implements Cloneable
public abstract String getBundleName (); public abstract String getBundleName ();
/** /**
* Returns the class that should be used to create a user interface * Creates a configurator that can be used to create a user interface
* that can be used to configure this instance prior to starting the * for configuring this instance prior to starting the game. If no
* game. The configurator class must derive from {@link * configuration is necessary, this method should return null.
* GameConfigurator}.
*/ */
public abstract Class getConfiguratorClass (); public abstract GameConfigurator createConfigurator ();
/** /**
* Returns an array of strings that describe the configuration of this * Returns an array of strings that describe the configuration of this
@@ -1,5 +1,5 @@
// //
// $Id: TestConfig.java,v 1.6 2004/08/27 02:21:02 mdb Exp $ // $Id$
// //
// Narya library - tools for developing networked games // Narya library - tools for developing networked games
// Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved // Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved
@@ -21,6 +21,7 @@
package com.threerings.parlor; package com.threerings.parlor;
import com.threerings.parlor.client.GameConfigurator;
import com.threerings.parlor.game.GameConfig; import com.threerings.parlor.game.GameConfig;
public class TestConfig extends GameConfig public class TestConfig extends GameConfig
@@ -28,7 +29,7 @@ public class TestConfig extends GameConfig
/** The foozle parameter. */ /** The foozle parameter. */
public int foozle; public int foozle;
public Class getConfiguratorClass () public GameConfigurator createConfigurator ()
{ {
return null; return null;
} }