Finally broke down and changed createPlaceView() to eliminate the annoying

potential fuckola of being called before the controller gets around to
initializing the casted context it almost certainly needs to create its
place view.


git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@3440 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
Michael Bayne
2005-03-30 01:09:30 +00:00
parent 2299e6a1de
commit afa995ebb9
5 changed files with 28 additions and 8 deletions
@@ -57,7 +57,7 @@ public abstract class PlaceController extends Controller
_config = config;
// create our user interface
_view = createPlaceView();
_view = createPlaceView(_ctx);
// initialize our delegates
applyToDelegates(new DelegateOp() {
@@ -101,8 +101,25 @@ public abstract class PlaceController extends Controller
* Creates the user interface that will be used to display this place.
* The view instance returned will later be configured with the place
* object, once it becomes available.
*
* @param ctx a reference to the {@link CrowdContext} associated with
* this controller.
*/
protected abstract PlaceView createPlaceView ();
protected PlaceView createPlaceView (CrowdContext ctx)
{
return createPlaceView();
}
/**
* Obsolete but retained for runtime compatibility with the old and
* busted.
*
* @deprecated Use {@link #createPlaceView(CrowdContext)}.
*/
protected PlaceView createPlaceView ()
{
return null;
}
/**
* This is called by the location director once the place object has
@@ -50,7 +50,7 @@ public class LobbyController extends PlaceController
_ctx.getParlorDirector().setInvitationHandler(this);
}
protected PlaceView createPlaceView ()
protected PlaceView createPlaceView (CrowdContext ctx)
{
return new LobbyPanel(_ctx, _config);
}
@@ -4,6 +4,7 @@
package com.threerings.stage.client;
import com.threerings.crowd.client.PlaceView;
import com.threerings.crowd.util.CrowdContext;
import com.threerings.whirled.data.SceneUpdate;
import com.threerings.whirled.spot.client.SpotSceneController;
@@ -17,9 +18,9 @@ import com.threerings.stage.util.StageContext;
public class StageSceneController extends SpotSceneController
{
// documentation inherited
protected PlaceView createPlaceView ()
protected PlaceView createPlaceView (CrowdContext ctx)
{
return new StageScenePanel((StageContext)_ctx, this);
return new StageScenePanel((StageContext)ctx, this);
}
// documentation inherited
@@ -22,11 +22,12 @@
package com.threerings.parlor;
import com.threerings.crowd.client.PlaceView;
import com.threerings.crowd.util.CrowdContext;
import com.threerings.parlor.game.client.GameController;
public class TestController extends GameController
{
public PlaceView createPlaceView ()
public PlaceView createPlaceView (CrowdContext ctx)
{
// nothing doing
return null;
@@ -1,5 +1,5 @@
//
// $Id: TestController.java,v 1.4 2004/08/27 02:21:05 mdb Exp $
// $Id$
//
// Narya library - tools for developing networked games
// Copyright (C) 2002-2004 Three Rings Design, Inc., All Rights Reserved
@@ -22,10 +22,11 @@
package com.threerings.whirled;
import com.threerings.crowd.client.*;
import com.threerings.crowd.util.CrowdContext;
public class TestController extends PlaceController
{
protected PlaceView createPlaceView ()
protected PlaceView createPlaceView (CrowdContext ctx)
{
// nothing doing
return null;