Package pacManReloaded.server

## Class Server

- java.lang.Object
- - pacManReloaded.server.Server

- All Implemented Interfaces:
    `java.lang.Runnable`

      public class Server
      extends java.lang.Object
      implements java.lang.Runnable

- - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `Server​(int port)` | Constructor of the server, opens a new socket

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `void` | `broadcast​(ServerThread thread, ChatMessage chatMessage)` | handles the broadcast of a message in the server, sends the message to all clients connected to the server
    `Lobby` | `findLobby​(ServerThread thread)` | method to find a lobby
    `java.lang.String` | `getAndSetName​(ServerThread thread, java.lang.String myName, java.lang.String suffix)` | Gets the Nickname that should be used.
    `java.lang.String` | `getClientInfoString()` | get the names of the connected clients in a string
    `java.lang.String` | `getHighScoreString()` | method which makes the highscore of the file to a readable string
    `java.lang.String` | `getLobbyInfoString()` | "getter" for the info of the lobby
    `java.lang.String` | `getManualText()` | "getter" for the manual text as string
    `java.lang.String` | `getToReadableTime​(long timeInms)` | Getter for the function toReadableTime.
    `void` | `handleChatWithAddress​(ServerThread thread, ChatWithAddress msg)` | handles private messages "NotInLobby" is reserved as keyword
    `JoinLobbyResult` | `joinLobby​(ServerThread thread, java.lang.String lobbyName)` | method which handles the accession into a lobby
    `void` | `playerWon​(java.lang.String playerName, int score)` | includes the player who won into the highscore txt file
    `void` | `remove​(ServerThread threadToTerminate)` | method which handles the removal of a client,
    `void` | `run()` | when the run method starts, the server is accepting connection at it's socket, then starts a ClientThread, which handles the Client and afterwards accepts new connections

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### Server

          public Server​(int port)

      Constructor of the server, opens a new socket
      Parameters:
        `port` - - port of the server

  - ### Method Detail

    - #### run

          public void run()

      when the run method starts, the server is accepting connection at it's socket, then starts a ClientThread, which handles the Client and afterwards accepts new connections
      Specified by:
        `run` in interface `java.lang.Runnable`

    - #### remove

          public void remove​(ServerThread threadToTerminate)

      method which handles the removal of a client,
      Parameters:
        `threadToTerminate` - - thread which will be removed/terminated

    - #### getAndSetName

          public java.lang.String getAndSetName​(ServerThread thread,
                                                java.lang.String myName,
                                                java.lang.String suffix)

      Gets the Nickname that should be used. Checks the uniqueness of it and sets the unique Nickname of the Client.
      Parameters:
        `thread` - - Thread of the Server.
        `myName` - - The Nickname that should be set.
        `suffix` - - The suffix for the Nickname.
      Returns:
        the set Nickname of the Client.

    - #### getHighScoreString

          public java.lang.String getHighScoreString()

      method which makes the highscore of the file to a readable string
      Returns:
        the highscore as a readable string

    - #### getLobbyInfoString

          public java.lang.String getLobbyInfoString()

      "getter" for the info of the lobby
      Returns:
        - info of the lobby

    - #### getClientInfoString

          public java.lang.String getClientInfoString()

      get the names of the connected clients in a string
      Returns:
        the connected users

    - #### getManualText

          public java.lang.String getManualText()

      "getter" for the manual text as string
      Returns:
        the manual as a string

    - #### broadcast

          public void broadcast​(ServerThread thread,
                                ChatMessage chatMessage)

      handles the broadcast of a message in the server, sends the message to all clients connected to the server
      Parameters:
        `thread` - - thread of the server
        `chatMessage` - - message which has to be broadcasted

    - #### handleChatWithAddress

          public void handleChatWithAddress​(ServerThread thread,
                                            ChatWithAddress msg)

      handles private messages "NotInLobby" is reserved as keyword
      Parameters:
        `thread` - - thread of the server
        `msg` - - the private message

    - #### getToReadableTime

          public java.lang.String getToReadableTime​(long timeInms)

      Getter for the function toReadableTime.
      Parameters:
        `timeInms` - - the time that should be brought in a Readable time format in Milli-seconds.
      Returns:
        the Return value of the function toReadableTime in the wished time format.

    - #### joinLobby

          public JoinLobbyResult joinLobby​(ServerThread thread,
                                           java.lang.String lobbyName)

      method which handles the accession into a lobby
      Parameters:
        `thread` - - thread of the server
        `lobbyName` - - name of the lobby
      Returns:
        - state of the accession result

    - #### findLobby

          public Lobby findLobby​(ServerThread thread)

      method to find a lobby
      Parameters:
        `thread` - - thread of the server
      Returns:
        - the lobby

    - #### playerWon

          public void playerWon​(java.lang.String playerName,
                                int score)

      includes the player who won into the highscore txt file
      Parameters:
        `playerName` - the name of the plasyer who won the game