Package net.sf.colossus.webcommon
Class GameInfo
- java.lang.Object
-
- net.sf.colossus.webcommon.GameInfo
-
public class GameInfo extends java.lang.Object
One object of this this class represents a game for which players/users have enrolled to play it together. It starts in state "PROPOSED" as type either instantly or scheduled. Then its state will change along the sequence of states PROPOSED, DUE, ACTIVATED, STARTING, READY_TO_CONNECT, RUNNING, ENDING as denoted in the GameState enum. The actual running/starting of the game will be handled by different classes, namely GameOnServer and (to be done) GameOnClient. The same class is also used at client side, but only part of the data is used there (e.g. the user has only a name, not a socket).- Author:
- Clemens Katzer
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
GameInfo.GameState
Enum for the possible states of a game:static class
GameInfo.GameType
Enum for the possible TYPES of a game (scheduled or instant, perhaps later also template?)
-
Field Summary
Fields Modifier and Type Field Description private boolean
autosave
private boolean
balancedTowers
private int
duration
private int
enrolledPlayers
private java.lang.String
eventExpiring
private java.lang.String
gameId
private IGameRunner
gameRunner
private java.lang.String
hostingHost
private java.lang.String
initiator
private static java.util.logging.Logger
LOGGER
private int
max
private int
min
private static int
nextFreeGameId
private GameInfo.GameState
oldState
temporary backup during startingAttemptprivate int
onlineCount
private java.util.ArrayList<User>
players
private int
portNr
private User
startingUser
private long
startTime
private GameInfo.GameState
state
private java.lang.String
summary
private int
target
private GameInfo.GameType
type
private boolean
unlimitedMulligans
private java.lang.String
variant
private java.lang.String
viewmode
-
Constructor Summary
Constructors Modifier Constructor Description GameInfo(java.lang.String gameId, boolean onServer)
GameInfo(java.lang.String initiator, java.lang.String variant, java.lang.String viewmode, long startTime, int duration, java.lang.String summary, java.lang.String expire, boolean unlimitedMulligans, boolean balancedTowers, int min, int target, int max)
private
GameInfo(GameInfo.GameType type)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description boolean
allEnrolledOnline()
Have enough players enrolled (at least "min")void
cancelStarting()
boolean
enoughPlayersEnrolled()
java.lang.String
enroll(User user)
static GameInfo
fromString(java.lang.String[] tokens, java.util.HashMap<java.lang.String,GameInfo> games, boolean fromFile)
boolean
getAutosave()
boolean
getBalancedTowers()
java.lang.Integer
getDuration()
java.lang.Integer
getEnrolledCount()
java.lang.String
getEventExpiring()
java.lang.String
getGameId()
IGameRunner
getGameRunner()
GameInfo.GameState
getGameState()
java.lang.String
getHostingHost()
java.lang.String
getInitiator()
java.lang.Integer
getMax()
java.lang.Integer
getMin()
private static int
getNextFreeGameId()
int
getOnlineCount()
java.lang.String
getPlayerListAsString()
java.util.ArrayList<User>
getPlayers()
int
getPort()
User
getStartingUser()
java.lang.Long
getStartTime()
java.lang.String
getStateString()
java.lang.String
getSummary()
int
getTarget()
java.lang.Integer
getTargetInteger()
boolean
getUnlimitedMulligans()
java.lang.String
getVariant()
java.lang.String
getViewmode()
boolean
hasEnoughPlayers()
Have enough players enrolled (at least "min")boolean
isDue()
Has the scheduled time come?boolean
isEnrolled(java.lang.String searchName)
boolean
isFirstInEnrolledList(java.lang.String name)
boolean
isRunning()
boolean
isScheduledGame()
boolean
isStartable()
boolean
isStarting()
private static GameInfo.GameType
makeTypeFromStarttime(long startTime)
void
markStarting(User starter)
boolean
reEnrollIfNecessary(User newUser)
boolean
relevantForSaving()
boolean
removeIfEnrolled(java.lang.String newName)
TODO remove overlap with isEnrolled If user with name "newName" is found, remove it from game, so that it can be safely enrolled again.void
setBalancedTowers(boolean val)
void
setDuration(java.lang.String val)
void
setEnrolledCount(java.lang.Integer val)
void
setEventExpiring(java.lang.String val)
void
setGameId(java.lang.String val)
void
setGameRunner(IGameRunner gr)
void
setHostingHost(java.lang.String host)
void
setInitiator(java.lang.String val)
void
setMax(java.lang.Integer val)
void
setMin(java.lang.Integer val)
static void
setNextFreeGameId(int id)
Server calls this to set it high enough that existing directories in games work directory are not overwrittenvoid
setOnlineCount(int count)
void
setPlayerList(java.util.ArrayList<User> playerlist)
void
setPort(int nr)
void
setStartTime(java.lang.String val)
void
setState(GameInfo.GameState state)
void
setSummary(java.lang.String val)
void
setTarget(java.lang.Integer val)
void
setUnlimitedMulligans(boolean val)
void
setVariant(java.lang.String val)
void
setViewmode(java.lang.String val)
void
storeToOptionsObject(Options gameOptions, java.lang.String localPlayerName, boolean noAIs)
java.lang.String
toString(java.lang.String sep)
java.lang.String
unenroll(User user)
boolean
updateOnlineCount(int newCount)
boolean
wasAlreadyStarted()
static boolean
wouldBeInstantGame(long startTime)
-
-
-
Field Detail
-
LOGGER
private static final java.util.logging.Logger LOGGER
-
nextFreeGameId
private static int nextFreeGameId
-
gameId
private java.lang.String gameId
-
type
private GameInfo.GameType type
-
state
private GameInfo.GameState state
-
oldState
private GameInfo.GameState oldState
temporary backup during startingAttempt
-
startingUser
private User startingUser
-
portNr
private int portNr
-
hostingHost
private java.lang.String hostingHost
-
gameRunner
private IGameRunner gameRunner
-
initiator
private java.lang.String initiator
-
variant
private java.lang.String variant
-
viewmode
private java.lang.String viewmode
-
autosave
private final boolean autosave
- See Also:
- Constant Field Values
-
eventExpiring
private java.lang.String eventExpiring
-
unlimitedMulligans
private boolean unlimitedMulligans
-
balancedTowers
private boolean balancedTowers
-
min
private int min
-
target
private int target
-
max
private int max
-
onlineCount
private int onlineCount
-
startTime
private long startTime
-
duration
private int duration
-
summary
private java.lang.String summary
-
enrolledPlayers
private int enrolledPlayers
-
players
private java.util.ArrayList<User> players
-
-
Constructor Detail
-
GameInfo
private GameInfo(GameInfo.GameType type)
-
GameInfo
public GameInfo(java.lang.String initiator, java.lang.String variant, java.lang.String viewmode, long startTime, int duration, java.lang.String summary, java.lang.String expire, boolean unlimitedMulligans, boolean balancedTowers, int min, int target, int max)
-
GameInfo
public GameInfo(java.lang.String gameId, boolean onServer)
-
-
Method Detail
-
setNextFreeGameId
public static void setNextFreeGameId(int id)
Server calls this to set it high enough that existing directories in games work directory are not overwritten- Parameters:
id
- Next games should have higher number than given id
-
getNextFreeGameId
private static int getNextFreeGameId()
-
wouldBeInstantGame
public static boolean wouldBeInstantGame(long startTime)
-
makeTypeFromStarttime
private static GameInfo.GameType makeTypeFromStarttime(long startTime)
-
fromString
public static GameInfo fromString(java.lang.String[] tokens, java.util.HashMap<java.lang.String,GameInfo> games, boolean fromFile)
-
toString
public java.lang.String toString(java.lang.String sep)
-
setState
public void setState(GameInfo.GameState state)
-
getGameState
public GameInfo.GameState getGameState()
-
isScheduledGame
public boolean isScheduledGame()
-
getStateString
public java.lang.String getStateString()
-
getGameId
public java.lang.String getGameId()
-
setGameId
public void setGameId(java.lang.String val)
-
setGameRunner
public void setGameRunner(IGameRunner gr)
-
getGameRunner
public IGameRunner getGameRunner()
-
getPort
public int getPort()
-
setPort
public void setPort(int nr)
-
setHostingHost
public void setHostingHost(java.lang.String host)
-
getHostingHost
public java.lang.String getHostingHost()
-
getInitiator
public java.lang.String getInitiator()
-
setInitiator
public void setInitiator(java.lang.String val)
-
getStartTime
public java.lang.Long getStartTime()
-
setStartTime
public void setStartTime(java.lang.String val)
-
getDuration
public java.lang.Integer getDuration()
-
setDuration
public void setDuration(java.lang.String val)
-
getSummary
public java.lang.String getSummary()
-
setSummary
public void setSummary(java.lang.String val)
-
getVariant
public java.lang.String getVariant()
-
setVariant
public void setVariant(java.lang.String val)
-
getViewmode
public java.lang.String getViewmode()
-
getAutosave
public boolean getAutosave()
-
setViewmode
public void setViewmode(java.lang.String val)
-
getEventExpiring
public java.lang.String getEventExpiring()
-
setEventExpiring
public void setEventExpiring(java.lang.String val)
-
getUnlimitedMulligans
public boolean getUnlimitedMulligans()
-
setUnlimitedMulligans
public void setUnlimitedMulligans(boolean val)
-
getBalancedTowers
public boolean getBalancedTowers()
-
setBalancedTowers
public void setBalancedTowers(boolean val)
-
hasEnoughPlayers
public boolean hasEnoughPlayers()
Have enough players enrolled (at least "min")- Returns:
- true or false whether enough (at least 'min') players are already enrolled to this game
-
allEnrolledOnline
public boolean allEnrolledOnline()
Have enough players enrolled (at least "min")- Returns:
- true or false whether all enrolled players are online
-
isDue
public boolean isDue()
Has the scheduled time come?- Returns:
- true if the game can be started according to schedule
-
getMin
public java.lang.Integer getMin()
-
setMin
public void setMin(java.lang.Integer val)
-
getTargetInteger
public java.lang.Integer getTargetInteger()
-
getTarget
public int getTarget()
-
setTarget
public void setTarget(java.lang.Integer val)
-
getMax
public java.lang.Integer getMax()
-
setMax
public void setMax(java.lang.Integer val)
-
getEnrolledCount
public java.lang.Integer getEnrolledCount()
-
enoughPlayersEnrolled
public boolean enoughPlayersEnrolled()
-
getOnlineCount
public int getOnlineCount()
-
setOnlineCount
public void setOnlineCount(int count)
-
setEnrolledCount
public void setEnrolledCount(java.lang.Integer val)
-
getPlayers
public java.util.ArrayList<User> getPlayers()
-
getPlayerListAsString
public java.lang.String getPlayerListAsString()
-
isFirstInEnrolledList
public boolean isFirstInEnrolledList(java.lang.String name)
-
reEnrollIfNecessary
public boolean reEnrollIfNecessary(User newUser)
-
removeIfEnrolled
public boolean removeIfEnrolled(java.lang.String newName)
TODO remove overlap with isEnrolled If user with name "newName" is found, remove it from game, so that it can be safely enrolled again. E.g. after user reconnected or accidental double click to enroll button- Parameters:
newName
-- Returns:
- Whether user was found
-
isEnrolled
public boolean isEnrolled(java.lang.String searchName)
-
setPlayerList
public void setPlayerList(java.util.ArrayList<User> playerlist)
-
updateOnlineCount
public boolean updateOnlineCount(int newCount)
-
enroll
public java.lang.String enroll(User user)
-
unenroll
public java.lang.String unenroll(User user)
-
storeToOptionsObject
public void storeToOptionsObject(Options gameOptions, java.lang.String localPlayerName, boolean noAIs)
-
relevantForSaving
public boolean relevantForSaving()
-
isStartable
public boolean isStartable()
-
isRunning
public boolean isRunning()
-
wasAlreadyStarted
public boolean wasAlreadyStarted()
-
markStarting
public void markStarting(User starter)
-
isStarting
public boolean isStarting()
-
cancelStarting
public void cancelStarting()
-
getStartingUser
public User getStartingUser()
-
-