Class 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
    • Field Detail

      • LOGGER

        private static final java.util.logging.Logger LOGGER
      • nextFreeGameId

        private static int nextFreeGameId
      • gameId

        private java.lang.String gameId
      • startingUser

        private User startingUser
      • portNr

        private int portNr
      • hostingHost

        private java.lang.String hostingHost
      • initiator

        private java.lang.String initiator
      • variant

        private java.lang.String variant
      • viewmode

        private java.lang.String viewmode
      • 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

        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)
      • 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)
      • 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()