The UserIdentifier is global. Cut through the crap.

git-svn-id: svn+ssh://src.earth.threerings.net/vilya/trunk@837 c613c5cb-e716-0410-b11b-feb51c14d237
This commit is contained in:
Ray Greenwell
2009-05-02 01:24:20 +00:00
parent cde19e6777
commit 75fdd4b2fc
5 changed files with 39 additions and 44 deletions
@@ -36,7 +36,6 @@ import com.threerings.crowd.util.CrowdContext;
import com.threerings.parlor.game.data.GameCodes; import com.threerings.parlor.game.data.GameCodes;
import com.threerings.parlor.game.data.GameConfig; import com.threerings.parlor.game.data.GameConfig;
import com.threerings.parlor.game.data.GameObject; import com.threerings.parlor.game.data.GameObject;
import com.threerings.parlor.game.data.UserIdentifier;
import com.threerings.parlor.util.ParlorContext; import com.threerings.parlor.util.ParlorContext;
/** /**
@@ -54,22 +53,6 @@ public /*abstract*/ class GameController extends PlaceController
{ {
protected static const log :Log = Log.getLog(GameController); protected static const log :Log = Log.getLog(GameController);
/**
* Configures a means for identifying users persistently.
*/
public static function setUserIdentifier (userIder :UserIdentifier) :void
{
_userIder = userIder;
}
/**
* Returns the persistent user id for the supplied player name.
*/
public static function nameToId (name :Name) :int
{
return (_userIder == null) ? 0 : _userIder.getUserId(name);
}
/** /**
* Initializes this game controller with the game configuration that * Initializes this game controller with the game configuration that
* was established during the match making process. Derived classes * was established during the match making process. Derived classes
@@ -339,8 +322,5 @@ public /*abstract*/ class GameController extends PlaceController
* the client knows the game is over before the server has * the client knows the game is over before the server has
* transitioned the game object accordingly. */ * transitioned the game object accordingly. */
protected var _gameOver :Boolean; protected var _gameOver :Boolean;
/** Used to map users to persistent integer identifiers. */
protected static var _userIder :UserIdentifier;
} }
} }
@@ -5,11 +5,21 @@ package com.threerings.parlor.game.data {
import com.threerings.util.Name; import com.threerings.util.Name;
public interface UserIdentifier public class UserIdentifier
{ {
/** /**
* Returns the id of the specified user, or 0 if they're not valid. * Get the user id for the specified user, or 0 if they're not valid.
*/ */
function getUserId (name :Name) :int; public static function getUserId (name :Name) :int
{
return (_userIder == null) ? 0 : _userIder(name);
}
public static function setIder (userIder :Function) :void
{
_userIder = userIder;
}
protected static var _userIder :Function;
} }
} }
@@ -5,10 +5,31 @@ package com.threerings.parlor.game.data;
import com.threerings.util.Name; import com.threerings.util.Name;
public interface UserIdentifier public class UserIdentifier
{ {
/**
* Implement this and set the mutha up.
*/
public interface Ider
{
int getUserId (Name name);
}
/** /**
* Returns the id of the specified user, or 0 if they're not valid. * Returns the id of the specified user, or 0 if they're not valid.
*/ */
int getUserId (Name name); public static int getUserId (Name name)
{
return (_userIder == null) ? 0 : _userIder.getUserId(name);
}
/**
* Set the global user identifier to use.
*/
public static void setIder (Ider userIder)
{
_userIder = userIder;
}
protected static Ider _userIder;
} }
@@ -66,15 +66,6 @@ import static com.threerings.parlor.Log.log;
public class GameManager extends PlaceManager public class GameManager extends PlaceManager
implements ParlorCodes, GameCodes, PlayManager implements ParlorCodes, GameCodes, PlayManager
{ {
/**
* Configures a means by which the Parlor game services can map users to a persistent user id
* for things like per-game cookies and ratings.
*/
public static void setUserIdentifier (UserIdentifier userIder)
{
_userIder = userIder;
}
/** /**
* Returns the configuration object for the game being managed by this manager. * Returns the configuration object for the game being managed by this manager.
*/ */
@@ -339,7 +330,7 @@ public class GameManager extends PlaceManager
*/ */
public int getPlayerPersistentId (Name name) public int getPlayerPersistentId (Name name)
{ {
return _userIder.getUserId(name); return UserIdentifier.getUserId(name);
} }
/** /**
@@ -1392,13 +1383,6 @@ public class GameManager extends PlaceManager
/** The interval for the AI tick. */ /** The interval for the AI tick. */
protected Interval _aiTicker; protected Interval _aiTicker;
/** Used to map users to persistent integer identifiers. */
protected static UserIdentifier _userIder = new UserIdentifier() {
public int getUserId (Name name) {
return 0; // by default no one has persistent info
}
};
/** The default value returned by {@link #getNoShowTime}. */ /** The default value returned by {@link #getNoShowTime}. */
protected static final long DEFAULT_NOSHOW_DELAY = 30 * 1000L; protected static final long DEFAULT_NOSHOW_DELAY = 30 * 1000L;
@@ -127,7 +127,7 @@ public abstract class RatingDelegate extends GameManagerDelegate
BodyObject bobj = (BodyObject)_omgr.getObject(_gobj.occupants.get(ii)); BodyObject bobj = (BodyObject)_omgr.getObject(_gobj.occupants.get(ii));
int pidx = _gmgr.getPlayerIndex(bobj.getVisibleName()); int pidx = _gmgr.getPlayerIndex(bobj.getVisibleName());
if (pidx != -1) { if (pidx != -1) {
_playerIds[pidx] = _gmgr.getPlayerPersistentId(bobj.getVisibleName()); _playerIds[pidx] = _gmgr.getPlayerPersistentId(bobj);
} }
Rating rating = maybeCreateRating(bobj); Rating rating = maybeCreateRating(bobj);
if (rating != null) { if (rating != null) {
@@ -169,7 +169,7 @@ public abstract class RatingDelegate extends GameManagerDelegate
protected Rating maybeCreateRating (BodyObject bobj) protected Rating maybeCreateRating (BodyObject bobj)
{ {
// if this occupant is not a player (or not ratable), skip 'em // if this occupant is not a player (or not ratable), skip 'em
int playerId = _gmgr.getPlayerPersistentId(bobj.getVisibleName()); int playerId = _gmgr.getPlayerPersistentId(bobj);
if (playerId == 0) { if (playerId == 0) {
return null; return null;
} }