Files
vilya/apidocs/com/threerings/parlor/game/server/GameManager.html
T
2011-04-06 17:01:15 -07:00

1250 lines
54 KiB
HTML

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!--NewPage-->
<HTML>
<HEAD>
<!-- Generated by javadoc (build 1.6.0_24) on Wed Apr 06 17:00:09 PDT 2011 -->
<META http-equiv="Content-Type" content="text/html; charset=UTF-8">
<TITLE>
GameManager (vilya 1.3 API)
</TITLE>
<META NAME="date" CONTENT="2011-04-06">
<LINK REL ="stylesheet" TYPE="text/css" HREF="../../../../../stylesheet.css" TITLE="Style">
<SCRIPT type="text/javascript">
function windowTitle()
{
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="GameManager (vilya 1.3 API)";
}
}
</SCRIPT>
<NOSCRIPT>
</NOSCRIPT>
</HEAD>
<BODY BGCOLOR="white" onload="windowTitle();">
<HR>
<!-- ========= START OF TOP NAVBAR ======= -->
<A NAME="navbar_top"><!-- --></A>
<A HREF="#skip-navbar_top" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_top_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/GameManager.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV CLASS&nbsp;
&nbsp;<A HREF="../../../../../com/threerings/parlor/game/server/GameManagerDelegate.html" title="class in com.threerings.parlor.game.server"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?com/threerings/parlor/game/server/GameManager.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="GameManager.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;<A HREF="#nested_classes_inherited_from_class_com.threerings.crowd.server.PlaceManager">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_top"></A>
<!-- ========= END OF TOP NAVBAR ========= -->
<HR>
<!-- ======== START OF CLASS DATA ======== -->
<H2>
<FONT SIZE="-1">
com.threerings.parlor.game.server</FONT>
<BR>
Class GameManager</H2>
<PRE>
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</A>
<IMG SRC="../../../../../resources/inherit.gif" ALT="extended by ">com.threerings.crowd.server.PlaceManager
<IMG SRC="../../../../../resources/inherit.gif" ALT="extended by "><B>com.threerings.parlor.game.server.GameManager</B>
</PRE>
<DL>
<DT><B>All Implemented Interfaces:</B> <DD>com.threerings.crowd.chat.server.SpeakHandler.SpeakerValidator, <A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html" title="interface in com.threerings.parlor.data">ParlorCodes</A>, <A HREF="../../../../../com/threerings/parlor/game/data/GameCodes.html" title="interface in com.threerings.parlor.game.data">GameCodes</A>, <A HREF="../../../../../com/threerings/parlor/server/PlayManager.html" title="interface in com.threerings.parlor.server">PlayManager</A>, com.threerings.presents.data.InvocationCodes, com.threerings.presents.dobj.ChangeListener, com.threerings.presents.dobj.MessageListener</DD>
</DL>
<DL>
<DT><B>Direct Known Subclasses:</B> <DD><A HREF="../../../../../com/threerings/parlor/card/server/CardGameManager.html" title="class in com.threerings.parlor.card.server">CardGameManager</A>, <A HREF="../../../../../com/threerings/puzzle/server/PuzzleManager.html" title="class in com.threerings.puzzle.server">PuzzleManager</A></DD>
</DL>
<HR>
<DL>
<DT><PRE>public class <B>GameManager</B><DT>extends com.threerings.crowd.server.PlaceManager<DT>implements <A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html" title="interface in com.threerings.parlor.data">ParlorCodes</A>, <A HREF="../../../../../com/threerings/parlor/game/data/GameCodes.html" title="interface in com.threerings.parlor.game.data">GameCodes</A>, <A HREF="../../../../../com/threerings/parlor/server/PlayManager.html" title="interface in com.threerings.parlor.server">PlayManager</A></DL>
</PRE>
<P>
The game manager handles the server side management of a game. It manipulates the game state in
accordance with the logic of the game flow and generally manages the whole game playing process.
<p> The game manager extends the place manager because games are implicitly played in a
location, the players of the game implicitly bodies in that location.
<P>
<P>
<HR>
<P>
<!-- ======== NESTED CLASS SUMMARY ======== -->
<A NAME="nested_class_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Nested Class Summary</B></FONT></TH>
</TR>
</TABLE>
&nbsp;<A NAME="nested_classes_inherited_from_class_com.threerings.crowd.server.PlaceManager"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Nested classes/interfaces inherited from class com.threerings.crowd.server.PlaceManager</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>com.threerings.crowd.server.PlaceManager.DelegateOp, com.threerings.crowd.server.PlaceManager.MessageHandler</CODE></TD>
</TR>
</TABLE>
&nbsp;
<!-- =========== FIELD SUMMARY =========== -->
<A NAME="field_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Field Summary</B></FONT></TH>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_com.threerings.parlor.data.ParlorCodes"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from interface com.threerings.parlor.data.<A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html" title="interface in com.threerings.parlor.data">ParlorCodes</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html#ALREADY_AT_TABLE">ALREADY_AT_TABLE</A>, <A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html#BANNED_FROM_TABLE">BANNED_FROM_TABLE</A>, <A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html#GAME_ALREADY_STARTED">GAME_ALREADY_STARTED</A>, <A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html#INVALID_TABLE_POSITION">INVALID_TABLE_POSITION</A>, <A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html#INVITATION_ACCEPTED">INVITATION_ACCEPTED</A>, <A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html#INVITATION_COUNTERED">INVITATION_COUNTERED</A>, <A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html#INVITATION_REFUSED">INVITATION_REFUSED</A>, <A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html#INVITEE_NOT_ONLINE">INVITEE_NOT_ONLINE</A>, <A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html#MUST_BE_CREATOR">MUST_BE_CREATOR</A>, <A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html#NO_SELF_BOOT">NO_SELF_BOOT</A>, <A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html#NO_SUCH_TABLE">NO_SUCH_TABLE</A>, <A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html#NOT_AT_TABLE">NOT_AT_TABLE</A>, <A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html#PARLOR_GROUP">PARLOR_GROUP</A>, <A HREF="../../../../../com/threerings/parlor/data/ParlorCodes.html#TABLE_POSITION_OCCUPIED">TABLE_POSITION_OCCUPIED</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_com.threerings.parlor.game.data.GameCodes"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from interface com.threerings.parlor.game.data.<A HREF="../../../../../com/threerings/parlor/game/data/GameCodes.html" title="interface in com.threerings.parlor.game.data">GameCodes</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="../../../../../com/threerings/parlor/game/data/GameCodes.html#GAME_CHAT_TYPE">GAME_CHAT_TYPE</A>, <A HREF="../../../../../com/threerings/parlor/game/data/GameCodes.html#GAME_MESSAGE_BUNDLE">GAME_MESSAGE_BUNDLE</A>, <A HREF="../../../../../com/threerings/parlor/game/data/GameCodes.html#PLAYER_KNOCKED_OUT">PLAYER_KNOCKED_OUT</A>, <A HREF="../../../../../com/threerings/parlor/game/data/GameCodes.html#WINNERS_AND_LOSERS">WINNERS_AND_LOSERS</A></CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="fields_inherited_from_class_com.threerings.presents.data.InvocationCodes"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Fields inherited from interface com.threerings.presents.data.InvocationCodes</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>ACCESS_DENIED, E_ACCESS_DENIED, E_INTERNAL_ERROR, GLOBAL_GROUP, INTERNAL_ERROR</CODE></TD>
</TR>
</TABLE>
&nbsp;
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<A NAME="constructor_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Constructor Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#GameManager()">GameManager</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</TD>
</TR>
</TABLE>
&nbsp;
<!-- ========== METHOD SUMMARY =========== -->
<A NAME="method_summary"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="2"><FONT SIZE="+2">
<B>Method Summary</B></FONT></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#addPlayer(com.threerings.util.Name)">addPlayer</A></B>(com.threerings.util.Name&nbsp;player)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds the given player to the game at the first available player index.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#addPlayerAt(com.threerings.util.Name, int)">addPlayerAt</A></B>(com.threerings.util.Name&nbsp;player,
int&nbsp;pidx)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Adds the given player to the game at the specified player index.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#allPlayersReady()">allPlayersReady</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if all (non-AI) players have delivered their <A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#playerReady(com.threerings.crowd.data.BodyObject)"><CODE>playerReady(com.threerings.crowd.data.BodyObject)</CODE></A>
notifications, false if they have not.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#cancelGame()">cancelGame</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the state of the game to <A HREF="../../../../../com/threerings/parlor/game/data/GameObject.html#CANCELLED"><CODE>GameObject.CANCELLED</CODE></A>.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;com.threerings.crowd.data.BodyObject</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#checkWritePermission(com.threerings.presents.data.ClientObject, int)">checkWritePermission</A></B>(com.threerings.presents.data.ClientObject&nbsp;client,
int&nbsp;playerId)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Make sure that the given caller is a player or an agent and can write to the data
of the given playerId.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#endGame()">endGame</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called when the game is known to be over.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#endPlayerGame(int)">endPlayerGame</A></B>(int&nbsp;pidx)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Ends the game for the given player.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;<A HREF="../../../../../com/threerings/parlor/game/data/GameConfig.html" title="class in com.threerings.parlor.game.data">GameConfig</A></CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#getGameConfig()">getGameConfig</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the configuration object for the game being managed by this manager.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#getGameId()">getGameId</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the unique numeric identifier for our managed game.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#getMatchType()">getMatchType</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;A convenience method for getting the game type.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;com.threerings.crowd.data.BodyObject</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#getPlayer(int)">getPlayer</A></B>(int&nbsp;playerIdx)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the user object for the player with the specified index or null if the player at
that index is not online.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#getPlayerCount()">getPlayerCount</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of players in the game.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;com.threerings.util.Name</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#getPlayerDisplayName(int)">getPlayerDisplayName</A></B>(int&nbsp;index)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the name that should be shown in the client for the player with the specified index
or null if no player exists at that index.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#getPlayerIndex(com.threerings.util.Name)">getPlayerIndex</A></B>(com.threerings.util.Name&nbsp;username)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the player index of the given user in the game, or <code>-1</code> if the player is
not involved in the game.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;com.threerings.util.Name</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#getPlayerName(int)">getPlayerName</A></B>(int&nbsp;index)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the name of the player with the specified index or null if no player exists at that
index.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#getPlayerOid(int)">getPlayerOid</A></B>(int&nbsp;index)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the user object oid of the player with the specified index.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#getPlayerPersistentId(com.threerings.crowd.data.BodyObject)">getPlayerPersistentId</A></B>(com.threerings.crowd.data.BodyObject&nbsp;body)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Convenience for getting the persistent id from a body.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#getPlayerPersistentId(com.threerings.util.Name)">getPlayerPersistentId</A></B>(com.threerings.util.Name&nbsp;name)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the persistent user id for the supplied player name.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#getPlayerSlots()">getPlayerSlots</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the number of players allowed in this game.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#getPresentPlayerIndex(int)">getPresentPlayerIndex</A></B>(int&nbsp;bodyOid)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Get the player index of the specified oid, or -1 if the oid is not a player or is a player
that is not presently in the game.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;int</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#getSessionId()">getSessionId</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns the unique session identifier for this game session.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#isActivePlayer(int)">isActivePlayer</A></B>(int&nbsp;pidx)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether the player at the specified player index is actively playing the game</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#isAgent(com.threerings.presents.data.ClientObject)">isAgent</A></B>(com.threerings.presents.data.ClientObject&nbsp;client)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return true if the given client is a server-side agent in this place.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#isAI(int)">isAI</A></B>(int&nbsp;pidx)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether the player at the specified player index is an AI.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#isPlayer(com.threerings.presents.data.ClientObject)">isPlayer</A></B>(com.threerings.presents.data.ClientObject&nbsp;client)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Return true if the given client is a player in this place.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#occupantInRoom(com.threerings.crowd.data.BodyObject)">occupantInRoom</A></B>(com.threerings.crowd.data.BodyObject&nbsp;caller)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called by the client when an occupant has arrived in the game room and has loaded their
bits.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#playerIsReady(int)">playerIsReady</A></B>(int&nbsp;pidx)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns true if the player at the specified slot is ready (or if there is meant to be no
player in that slot), false if there is meant to be a player in the specified slot and they
have not yet reported that they are ready.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#playerReady(com.threerings.crowd.data.BodyObject)">playerReady</A></B>(com.threerings.crowd.data.BodyObject&nbsp;caller)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called by the client when the player is ready for the game to start.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#removePlayer(com.threerings.util.Name)">removePlayer</A></B>(com.threerings.util.Name&nbsp;player)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Removes the given player from the game.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#replacePlayer(int, com.threerings.util.Name)">replacePlayer</A></B>(int&nbsp;pidx,
com.threerings.util.Name&nbsp;player)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Replaces the player at the specified index and calls <A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#playerWasReplaced(int, com.threerings.util.Name, com.threerings.util.Name)"><CODE>playerWasReplaced(int, com.threerings.util.Name, com.threerings.util.Name)</CODE></A> to let
derived classes and delegates know what's going on.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#resetGame()">resetGame</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Called when the game is to be reset to its starting state in preparation for a new game
without actually ending the current game.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#setAI(int, com.threerings.parlor.game.data.GameAI)">setAI</A></B>(int&nbsp;pidx,
<A HREF="../../../../../com/threerings/parlor/game/data/GameAI.html" title="class in com.threerings.parlor.game.data">GameAI</A>&nbsp;ai)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sets the specified player as an AI with the specified configuration.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#shouldConcludeGame()">shouldConcludeGame</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Returns whether game conclusion antics such as rating updates should be performed when an
in-play game is ended.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;boolean</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#startGame()">startGame</A></B>()</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;This is called when the game is ready to start (all players involved have delivered their
"am ready" notifications).</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#systemMessage(java.lang.String, java.lang.String)">systemMessage</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;msgbundle,
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;msg)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sends a system message to the players in the game room.</TD>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD ALIGN="right" VALIGN="top" WIDTH="1%"><FONT SIZE="-1">
<CODE>&nbsp;void</CODE></FONT></TD>
<TD><CODE><B><A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#systemMessage(java.lang.String, java.lang.String, boolean)">systemMessage</A></B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;msgbundle,
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;msg,
boolean&nbsp;waitForStart)</CODE>
<BR>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Sends a system message to the players in the game room.</TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_com.threerings.crowd.server.PlaceManager"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class com.threerings.crowd.server.PlaceManager</B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE>addDelegate, applyToDelegates, applyToOccupants, bodyWillEnter, bodyWillLeave, checkPermissions, getConfig, getLocation, getPlaceObject, init, isValidSpeaker, messageReceived, ratifyBodyEntry, registerMessageHandler, shutdown, startup, toString, updateOccupantInfo, where</CODE></TD>
</TR>
</TABLE>
&nbsp;<A NAME="methods_inherited_from_class_java.lang.Object"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#EEEEFF" CLASS="TableSubHeadingColor">
<TH ALIGN="left"><B>Methods inherited from class java.lang.<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</A></B></TH>
</TR>
<TR BGCOLOR="white" CLASS="TableRowColor">
<TD><CODE><A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#equals(java.lang.Object)" title="class or interface in java.lang">equals</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#getClass()" title="class or interface in java.lang">getClass</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#hashCode()" title="class or interface in java.lang">hashCode</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#notify()" title="class or interface in java.lang">notify</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#notifyAll()" title="class or interface in java.lang">notifyAll</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait()" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long)" title="class or interface in java.lang">wait</A>, <A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/Object.html?is-external=true#wait(long, int)" title="class or interface in java.lang">wait</A></CODE></TD>
</TR>
</TABLE>
&nbsp;
<P>
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<A NAME="constructor_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Constructor Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="GameManager()"><!-- --></A><H3>
GameManager</H3>
<PRE>
public <B>GameManager</B>()</PRE>
<DL>
</DL>
<!-- ============ METHOD DETAIL ========== -->
<A NAME="method_detail"><!-- --></A>
<TABLE BORDER="1" WIDTH="100%" CELLPADDING="3" CELLSPACING="0" SUMMARY="">
<TR BGCOLOR="#CCCCFF" CLASS="TableHeadingColor">
<TH ALIGN="left" COLSPAN="1"><FONT SIZE="+2">
<B>Method Detail</B></FONT></TH>
</TR>
</TABLE>
<A NAME="getGameConfig()"><!-- --></A><H3>
getGameConfig</H3>
<PRE>
public <A HREF="../../../../../com/threerings/parlor/game/data/GameConfig.html" title="class in com.threerings.parlor.game.data">GameConfig</A> <B>getGameConfig</B>()</PRE>
<DL>
<DD>Returns the configuration object for the game being managed by this manager.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getGameId()"><!-- --></A><H3>
getGameId</H3>
<PRE>
public int <B>getGameId</B>()</PRE>
<DL>
<DD>Returns the unique numeric identifier for our managed game. See <A HREF="../../../../../com/threerings/parlor/game/data/GameConfig.html#getGameId()"><CODE>GameConfig.getGameId()</CODE></A>.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getMatchType()"><!-- --></A><H3>
getMatchType</H3>
<PRE>
public int <B>getMatchType</B>()</PRE>
<DL>
<DD>A convenience method for getting the game type.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="addPlayer(com.threerings.util.Name)"><!-- --></A><H3>
addPlayer</H3>
<PRE>
public int <B>addPlayer</B>(com.threerings.util.Name&nbsp;player)</PRE>
<DL>
<DD>Adds the given player to the game at the first available player index. This should only be
called before the game is started, and is most likely to be used to add players to party
games.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>player</CODE> - the username of the player to add to this game.
<DT><B>Returns:</B><DD>the player index at which the player was added, or <code>-1</code> if the player
could not be added to the game.</DL>
</DD>
</DL>
<HR>
<A NAME="addPlayerAt(com.threerings.util.Name, int)"><!-- --></A><H3>
addPlayerAt</H3>
<PRE>
public boolean <B>addPlayerAt</B>(com.threerings.util.Name&nbsp;player,
int&nbsp;pidx)</PRE>
<DL>
<DD>Adds the given player to the game at the specified player index. This should only be called
before the game is started, and is most likely to be used to add players to party games.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>player</CODE> - the username of the player to add to this game.<DD><CODE>pidx</CODE> - the player index at which the player is to be added.
<DT><B>Returns:</B><DD>true if the player was added successfully, false if not.</DL>
</DD>
</DL>
<HR>
<A NAME="removePlayer(com.threerings.util.Name)"><!-- --></A><H3>
removePlayer</H3>
<PRE>
public boolean <B>removePlayer</B>(com.threerings.util.Name&nbsp;player)</PRE>
<DL>
<DD>Removes the given player from the game. This is most likely to be used to allow players
involved in a party game to leave the game early-on if they realize they'd rather not play
for some reason.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>player</CODE> - the username of the player to remove from this game.
<DT><B>Returns:</B><DD>true if the player was successfully removed, false if not.</DL>
</DD>
</DL>
<HR>
<A NAME="replacePlayer(int, com.threerings.util.Name)"><!-- --></A><H3>
replacePlayer</H3>
<PRE>
public void <B>replacePlayer</B>(int&nbsp;pidx,
com.threerings.util.Name&nbsp;player)</PRE>
<DL>
<DD>Replaces the player at the specified index and calls <A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#playerWasReplaced(int, com.threerings.util.Name, com.threerings.util.Name)"><CODE>playerWasReplaced(int, com.threerings.util.Name, com.threerings.util.Name)</CODE></A> to let
derived classes and delegates know what's going on.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getPlayer(int)"><!-- --></A><H3>
getPlayer</H3>
<PRE>
public com.threerings.crowd.data.BodyObject <B>getPlayer</B>(int&nbsp;playerIdx)</PRE>
<DL>
<DD>Returns the user object for the player with the specified index or null if the player at
that index is not online.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="setAI(int, com.threerings.parlor.game.data.GameAI)"><!-- --></A><H3>
setAI</H3>
<PRE>
public void <B>setAI</B>(int&nbsp;pidx,
<A HREF="../../../../../com/threerings/parlor/game/data/GameAI.html" title="class in com.threerings.parlor.game.data">GameAI</A>&nbsp;ai)</PRE>
<DL>
<DD>Sets the specified player as an AI with the specified configuration. It is assumed that this
will be set soon after the player names for all AIs present in the game. (It should be done
before human players start trickling into the game.)
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>pidx</CODE> - the player index of the AI.<DD><CODE>ai</CODE> - the AI configuration.</DL>
</DD>
</DL>
<HR>
<A NAME="getPlayerName(int)"><!-- --></A><H3>
getPlayerName</H3>
<PRE>
public com.threerings.util.Name <B>getPlayerName</B>(int&nbsp;index)</PRE>
<DL>
<DD>Returns the name of the player with the specified index or null if no player exists at that
index.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getPlayerDisplayName(int)"><!-- --></A><H3>
getPlayerDisplayName</H3>
<PRE>
public com.threerings.util.Name <B>getPlayerDisplayName</B>(int&nbsp;index)</PRE>
<DL>
<DD>Returns the name that should be shown in the client for the player with the specified index
or null if no player exists at that index. This may be different than their username as
returned by <A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#getPlayerName(int)"><CODE>getPlayerName(int)</CODE></A>, which is the player's unique name in the server.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getPlayerIndex(com.threerings.util.Name)"><!-- --></A><H3>
getPlayerIndex</H3>
<PRE>
public int <B>getPlayerIndex</B>(com.threerings.util.Name&nbsp;username)</PRE>
<DL>
<DD>Returns the player index of the given user in the game, or <code>-1</code> if the player is
not involved in the game.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getPresentPlayerIndex(int)"><!-- --></A><H3>
getPresentPlayerIndex</H3>
<PRE>
public int <B>getPresentPlayerIndex</B>(int&nbsp;bodyOid)</PRE>
<DL>
<DD>Get the player index of the specified oid, or -1 if the oid is not a player or is a player
that is not presently in the game.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getPlayerOid(int)"><!-- --></A><H3>
getPlayerOid</H3>
<PRE>
public int <B>getPlayerOid</B>(int&nbsp;index)</PRE>
<DL>
<DD>Returns the user object oid of the player with the specified index.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getPlayerPersistentId(com.threerings.util.Name)"><!-- --></A><H3>
getPlayerPersistentId</H3>
<PRE>
public int <B>getPlayerPersistentId</B>(com.threerings.util.Name&nbsp;name)</PRE>
<DL>
<DD>Returns the persistent user id for the supplied player name.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getPlayerPersistentId(com.threerings.crowd.data.BodyObject)"><!-- --></A><H3>
getPlayerPersistentId</H3>
<PRE>
public int <B>getPlayerPersistentId</B>(com.threerings.crowd.data.BodyObject&nbsp;body)</PRE>
<DL>
<DD>Convenience for getting the persistent id from a body.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getPlayerCount()"><!-- --></A><H3>
getPlayerCount</H3>
<PRE>
public int <B>getPlayerCount</B>()</PRE>
<DL>
<DD>Returns the number of players in the game.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getPlayerSlots()"><!-- --></A><H3>
getPlayerSlots</H3>
<PRE>
public int <B>getPlayerSlots</B>()</PRE>
<DL>
<DD>Returns the number of players allowed in this game.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="isAI(int)"><!-- --></A><H3>
isAI</H3>
<PRE>
public boolean <B>isAI</B>(int&nbsp;pidx)</PRE>
<DL>
<DD>Returns whether the player at the specified player index is an AI.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="isActivePlayer(int)"><!-- --></A><H3>
isActivePlayer</H3>
<PRE>
public boolean <B>isActivePlayer</B>(int&nbsp;pidx)</PRE>
<DL>
<DD>Returns whether the player at the specified player index is actively playing the game
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="getSessionId()"><!-- --></A><H3>
getSessionId</H3>
<PRE>
public int <B>getSessionId</B>()</PRE>
<DL>
<DD>Returns the unique session identifier for this game session.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="systemMessage(java.lang.String, java.lang.String)"><!-- --></A><H3>
systemMessage</H3>
<PRE>
public void <B>systemMessage</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;msgbundle,
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;msg)</PRE>
<DL>
<DD>Sends a system message to the players in the game room.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="systemMessage(java.lang.String, java.lang.String, boolean)"><!-- --></A><H3>
systemMessage</H3>
<PRE>
public void <B>systemMessage</B>(<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;msgbundle,
<A HREF="http://java.sun.com/j2se/1.5.0/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</A>&nbsp;msg,
boolean&nbsp;waitForStart)</PRE>
<DL>
<DD>Sends a system message to the players in the game room.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Parameters:</B><DD><CODE>waitForStart</CODE> - if true, the message will not be sent until the game has started.</DL>
</DD>
</DL>
<HR>
<A NAME="startGame()"><!-- --></A><H3>
startGame</H3>
<PRE>
public boolean <B>startGame</B>()</PRE>
<DL>
<DD>This is called when the game is ready to start (all players involved have delivered their
"am ready" notifications). It calls <A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#gameWillStart()"><CODE>gameWillStart()</CODE></A>, sets the necessary wheels in
motion and then calls <A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#gameDidStart()"><CODE>gameDidStart()</CODE></A>. Derived classes should override one or both of
the calldown functions (rather than this function) if they need to do things before or after
the game starts.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>true if the game was started, false if it could not be started because it was
already in play or because all players have not yet reported in.</DL>
</DD>
</DL>
<HR>
<A NAME="endPlayerGame(int)"><!-- --></A><H3>
endPlayerGame</H3>
<PRE>
public void <B>endPlayerGame</B>(int&nbsp;pidx)</PRE>
<DL>
<DD>Ends the game for the given player.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="endGame()"><!-- --></A><H3>
endGame</H3>
<PRE>
public void <B>endGame</B>()</PRE>
<DL>
<DD>Called when the game is known to be over. This will call some calldown functions to
determine the winner of the game and then transition the game to the <A HREF="../../../../../com/threerings/parlor/game/data/GameObject.html#GAME_OVER"><CODE>GameObject.GAME_OVER</CODE></A> state.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="cancelGame()"><!-- --></A><H3>
cancelGame</H3>
<PRE>
public boolean <B>cancelGame</B>()</PRE>
<DL>
<DD>Sets the state of the game to <A HREF="../../../../../com/threerings/parlor/game/data/GameObject.html#CANCELLED"><CODE>GameObject.CANCELLED</CODE></A>.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>true if the game was cancelled, false if it was already over or cancelled.</DL>
</DD>
</DL>
<HR>
<A NAME="shouldConcludeGame()"><!-- --></A><H3>
shouldConcludeGame</H3>
<PRE>
public boolean <B>shouldConcludeGame</B>()</PRE>
<DL>
<DD>Returns whether game conclusion antics such as rating updates should be performed when an
in-play game is ended. Derived classes may wish to override this method to customize the
conditions under which the game is concluded.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="resetGame()"><!-- --></A><H3>
resetGame</H3>
<PRE>
public void <B>resetGame</B>()</PRE>
<DL>
<DD>Called when the game is to be reset to its starting state in preparation for a new game
without actually ending the current game. It calls <A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#gameWillReset()"><CODE>gameWillReset()</CODE></A> followed by the
standard game start processing (<A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#gameWillStart()"><CODE>gameWillStart()</CODE></A> and <A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#gameDidStart()"><CODE>gameDidStart()</CODE></A>). Derived
classes should override these calldown functions (rather than this function) if they need to
do things before or after the game resets.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="occupantInRoom(com.threerings.crowd.data.BodyObject)"><!-- --></A><H3>
occupantInRoom</H3>
<PRE>
public void <B>occupantInRoom</B>(com.threerings.crowd.data.BodyObject&nbsp;caller)</PRE>
<DL>
<DD>Called by the client when an occupant has arrived in the game room and has loaded their
bits. Most games will simply call <A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#playerReady(com.threerings.crowd.data.BodyObject)"><CODE>playerReady(com.threerings.crowd.data.BodyObject)</CODE></A> but games that wish to delay their
actual start until players take some action must report ASAP with a call to <A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#occupantInRoom(com.threerings.crowd.data.BodyObject)"><CODE>occupantInRoom(com.threerings.crowd.data.BodyObject)</CODE></A> to let the server know that they have arrived and will later be calling
<A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#playerReady(com.threerings.crowd.data.BodyObject)"><CODE>playerReady(com.threerings.crowd.data.BodyObject)</CODE></A> when they are ready for the game to actually start.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="playerReady(com.threerings.crowd.data.BodyObject)"><!-- --></A><H3>
playerReady</H3>
<PRE>
public void <B>playerReady</B>(com.threerings.crowd.data.BodyObject&nbsp;caller)</PRE>
<DL>
<DD>Called by the client when the player is ready for the game to start. This method is
dispatched dynamically by <CODE>PlaceManager.messageReceived(com.threerings.presents.dobj.MessageEvent)</CODE>.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="allPlayersReady()"><!-- --></A><H3>
allPlayersReady</H3>
<PRE>
public boolean <B>allPlayersReady</B>()</PRE>
<DL>
<DD>Returns true if all (non-AI) players have delivered their <A HREF="../../../../../com/threerings/parlor/game/server/GameManager.html#playerReady(com.threerings.crowd.data.BodyObject)"><CODE>playerReady(com.threerings.crowd.data.BodyObject)</CODE></A>
notifications, false if they have not.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="playerIsReady(int)"><!-- --></A><H3>
playerIsReady</H3>
<PRE>
public boolean <B>playerIsReady</B>(int&nbsp;pidx)</PRE>
<DL>
<DD>Returns true if the player at the specified slot is ready (or if there is meant to be no
player in that slot), false if there is meant to be a player in the specified slot and they
have not yet reported that they are ready.
<P>
<DD><DL>
</DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="isPlayer(com.threerings.presents.data.ClientObject)"><!-- --></A><H3>
isPlayer</H3>
<PRE>
public boolean <B>isPlayer</B>(com.threerings.presents.data.ClientObject&nbsp;client)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/threerings/parlor/server/PlayManager.html#isPlayer(com.threerings.presents.data.ClientObject)">PlayManager</A></CODE></B></DD>
<DD>Return true if the given client is a player in this place.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/threerings/parlor/server/PlayManager.html#isPlayer(com.threerings.presents.data.ClientObject)">isPlayer</A></CODE> in interface <CODE><A HREF="../../../../../com/threerings/parlor/server/PlayManager.html" title="interface in com.threerings.parlor.server">PlayManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="isAgent(com.threerings.presents.data.ClientObject)"><!-- --></A><H3>
isAgent</H3>
<PRE>
public boolean <B>isAgent</B>(com.threerings.presents.data.ClientObject&nbsp;client)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/threerings/parlor/server/PlayManager.html#isAgent(com.threerings.presents.data.ClientObject)">PlayManager</A></CODE></B></DD>
<DD>Return true if the given client is a server-side agent in this place.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/threerings/parlor/server/PlayManager.html#isAgent(com.threerings.presents.data.ClientObject)">isAgent</A></CODE> in interface <CODE><A HREF="../../../../../com/threerings/parlor/server/PlayManager.html" title="interface in com.threerings.parlor.server">PlayManager</A></CODE></DL>
</DD>
<DD><DL>
</DL>
</DD>
</DL>
<HR>
<A NAME="checkWritePermission(com.threerings.presents.data.ClientObject, int)"><!-- --></A><H3>
checkWritePermission</H3>
<PRE>
public com.threerings.crowd.data.BodyObject <B>checkWritePermission</B>(com.threerings.presents.data.ClientObject&nbsp;client,
int&nbsp;playerId)</PRE>
<DL>
<DD><B>Description copied from interface: <CODE><A HREF="../../../../../com/threerings/parlor/server/PlayManager.html#checkWritePermission(com.threerings.presents.data.ClientObject, int)">PlayManager</A></CODE></B></DD>
<DD>Make sure that the given caller is a player or an agent and can write to the data
of the given playerId.
<P>
<DD><DL>
<DT><B>Specified by:</B><DD><CODE><A HREF="../../../../../com/threerings/parlor/server/PlayManager.html#checkWritePermission(com.threerings.presents.data.ClientObject, int)">checkWritePermission</A></CODE> in interface <CODE><A HREF="../../../../../com/threerings/parlor/server/PlayManager.html" title="interface in com.threerings.parlor.server">PlayManager</A></CODE></DL>
</DD>
<DD><DL>
<DT><B>Returns:</B><DD>the resolved player object to write to</DL>
</DD>
</DL>
<!-- ========= END OF CLASS DATA ========= -->
<HR>
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<A NAME="navbar_bottom"><!-- --></A>
<A HREF="#skip-navbar_bottom" title="Skip navigation links"></A>
<TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0" SUMMARY="">
<TR>
<TD COLSPAN=2 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3" SUMMARY="">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../overview-summary.html"><FONT CLASS="NavBarFont1"><B>Overview</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-summary.html"><FONT CLASS="NavBarFont1"><B>Package</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> &nbsp;<FONT CLASS="NavBarFont1Rev"><B>Class</B></FONT>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="class-use/GameManager.html"><FONT CLASS="NavBarFont1"><B>Use</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../index-all.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A>&nbsp;</TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="../../../../../help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A>&nbsp;</TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
</EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
&nbsp;PREV CLASS&nbsp;
&nbsp;<A HREF="../../../../../com/threerings/parlor/game/server/GameManagerDelegate.html" title="class in com.threerings.parlor.game.server"><B>NEXT CLASS</B></A></FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="../../../../../index.html?com/threerings/parlor/game/server/GameManager.html" target="_top"><B>FRAMES</B></A> &nbsp;
&nbsp;<A HREF="GameManager.html" target="_top"><B>NO FRAMES</B></A> &nbsp;
&nbsp;<SCRIPT type="text/javascript">
<!--
if(window==top) {
document.writeln('<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>');
}
//-->
</SCRIPT>
<NOSCRIPT>
<A HREF="../../../../../allclasses-noframe.html"><B>All Classes</B></A>
</NOSCRIPT>
</FONT></TD>
</TR>
<TR>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
SUMMARY:&nbsp;<A HREF="#nested_classes_inherited_from_class_com.threerings.crowd.server.PlaceManager">NESTED</A>&nbsp;|&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_summary">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_summary">METHOD</A></FONT></TD>
<TD VALIGN="top" CLASS="NavBarCell3"><FONT SIZE="-2">
DETAIL:&nbsp;FIELD&nbsp;|&nbsp;<A HREF="#constructor_detail">CONSTR</A>&nbsp;|&nbsp;<A HREF="#method_detail">METHOD</A></FONT></TD>
</TR>
</TABLE>
<A NAME="skip-navbar_bottom"></A>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<HR>
Copyright &#169; 2011. All Rights Reserved.
</BODY>
</HTML>