JavaQuest.Server
Class CGame

java.lang.Object
  |
  +--JavaQuest.Server.CGame
All Implemented Interfaces:
java.io.Serializable

public class CGame
extends java.lang.Object
implements java.io.Serializable

Zentrale Klasse des Spieles mit Spieleinitialisierung, Rundenlogik, An- und Abmeldung

See Also:
CMap, CCmdFactory, CPlayer, CClientThread, CTimerThread, CUtils, CServerProxy, Serialized Form

Field Summary
private static boolean m_bRunning
          Running-Flag, true solange der Server laeuft
private static boolean m_bTurn
          Wenn true, dann ist ein Spieler am Zug
private static java.util.Hashtable m_hClientThread
          Clients die connected sind, mit Namen und Referenz
private static int m_iCmdLineID
          Kommando-ID der Kommandozeilensteuerung
private  int m_iMaxClients
          Maxiamale Anzahl an Clients die Connecten koennen
private static int m_iTurnTime
          Rundenzeit, Zeit die der Client an der Reihe sein darf
private  CClientListener m_oClientListener
          Listener fuer login und logout
private  CCmdFactory m_oCmdFactory
          Factory zum erzeugen und verwalten der Kommandos
private static CClientThread m_oCurrentClientThread
          Thread, der gerade an der Reihe ist
private static CPlayer m_oCurrentPlayer
          Spieler, der gerade an der Reihe ist
private static CMap m_oMap
          Map des Spiels
private static CServerProxy m_oServerProxy
          Serverproxy, fuer CGame-Funktionalitaet ohne CGame-Referenz
private static CTimerThread m_oTimer
          Steuert m_bTurn
(package private) static CUtils m_oUtil
          Objekt fuer allg.
private  java.lang.String m_sConfigFile
          Name des Konfigfiles
private  java.lang.String m_sHostname
          Hostname des Servers
private  java.lang.String m_sMapFile
          Name des Mapfiles
private static java.util.Vector m_voPlayers
          Liste der Spieler die am Spiel teilnehmen
 
Constructor Summary
CGame(java.lang.String _sConfigFile)
          Konstruktor mit ConfigFiles, von Kommandozeile gelesen
 
Method Summary
private  boolean chkLoginData(java.lang.String _sName)
          Uebpruefen der Login-Daten
static void endTurn()
          EndTurn fuer die Kommandozeile
 void endTurn(CPlayer _oPlayer)
          der Spieler beendet seine Spielrunde vorzeitig
 void endTurnFlag()
          Runde beenden, wird vom TimerThread gesteuert
 void execCommandLine(int i)
          Kommandozeilen Befehlsauswahl
 boolean execute(int _iCmdIndex)
          Spieler fuehrt das Kommando mit dem Index _iCmdIndex aus der Kommandoliste aus
dannach wird ein Maprefresh() angestossen
 CClientListener getClientListener()
          Gibt Referenz auf den ClientListener zurueck
ueber den Listener werden Login und Logout realisiert
 CMap getMap()
          Gibt Referenz auf Map zurueck
 CPlayer getPlayer(java.lang.String _sName)
          Ermittelt anhand des Names die Referenz auf den Spieler
 java.util.Vector getPossibleCommands(CField _oField, CPlayer _oPlayer)
          Moegliche Kommandos erzeugen und dem Client geben, Funktion in Kommandofactory
Aufruf wird an CCmdFactory weitergeleitet
 CMap login(java.lang.String _sName, java.lang.String _sIP)
          Client loggt sich am Server ein
 void logout(java.lang.String _sName)
          Logout fuer Notfaelle
wird nur Ausgerufen wenn es eine Exception im VerbindungsThread (CClientThread) gegeben hat
static void main(java.lang.String[] args)
          MAIN
static void printClientList()
          Gibt die Namen aller eingeloggten Spieler am Bildschirm aus
 void ServerShutDown()
          Server beenden, dadurch werden alle Clients disconnected
static void showthreads()
          Zeigt die Namen aller eingeloggten ClientThread und gibt sie am Bildschirm aus
 void startTurn()
          Runde starten, wird vom TimerThread gesteuert
 
Methods inherited from class java.lang.Object
, clone, equals, finalize, getClass, hashCode, notify, notifyAll, registerNatives, toString, wait, wait, wait
 

Field Detail

m_oClientListener

private CClientListener m_oClientListener
Listener fuer login und logout

m_hClientThread

private static java.util.Hashtable m_hClientThread
Clients die connected sind, mit Namen und Referenz

m_oMap

private static CMap m_oMap
Map des Spiels

m_voPlayers

private static java.util.Vector m_voPlayers
Liste der Spieler die am Spiel teilnehmen

m_sConfigFile

private java.lang.String m_sConfigFile
Name des Konfigfiles

m_sMapFile

private java.lang.String m_sMapFile
Name des Mapfiles

m_sHostname

private java.lang.String m_sHostname
Hostname des Servers

m_oCmdFactory

private CCmdFactory m_oCmdFactory
Factory zum erzeugen und verwalten der Kommandos

m_bTurn

private static boolean m_bTurn
Wenn true, dann ist ein Spieler am Zug

m_oCurrentPlayer

private static CPlayer m_oCurrentPlayer
Spieler, der gerade an der Reihe ist

m_oCurrentClientThread

private static CClientThread m_oCurrentClientThread
Thread, der gerade an der Reihe ist

m_oTimer

private static CTimerThread m_oTimer
Steuert m_bTurn

m_oUtil

static CUtils m_oUtil
Objekt fuer allg. Hilfsfunktionen (z.B. GetSetting)

m_bRunning

private static boolean m_bRunning
Running-Flag, true solange der Server laeuft

m_iTurnTime

private static int m_iTurnTime
Rundenzeit, Zeit die der Client an der Reihe sein darf

m_oServerProxy

private static CServerProxy m_oServerProxy
Serverproxy, fuer CGame-Funktionalitaet ohne CGame-Referenz

m_iMaxClients

private int m_iMaxClients
Maxiamale Anzahl an Clients die Connecten koennen

m_iCmdLineID

private static int m_iCmdLineID
Kommando-ID der Kommandozeilensteuerung
Constructor Detail

CGame

public CGame(java.lang.String _sConfigFile)
Konstruktor mit ConfigFiles, von Kommandozeile gelesen
Method Detail

main

public static void main(java.lang.String[] args)
MAIN

getMap

public CMap getMap()
Gibt Referenz auf Map zurueck
Returns:
Map-Objekt, wird als Kopie dem Client zurueckgeliefert
See Also:
CMap

getPossibleCommands

public java.util.Vector getPossibleCommands(CField _oField,
                                            CPlayer _oPlayer)
                                     throws java.rmi.RemoteException
Moegliche Kommandos erzeugen und dem Client geben, Funktion in Kommandofactory
Aufruf wird an CCmdFactory weitergeleitet
Parameters:
_oField - Feld fuer das die moeglichen Kommandos erzeugt werden sollen
_oPlayer - Spieler der die Kommandos anfordert
Returns:
Liste mit allen ausfuehrbaren Kommandos fuer das Feld
See Also:
CField, CPlayer

getPlayer

public CPlayer getPlayer(java.lang.String _sName)
Ermittelt anhand des Names die Referenz auf den Spieler
Parameters:
_sName - Name des Spielers dessen Referenz ermittelt werden soll
Returns:
Referenz auf den Spieler mit dem Namen '_sName'
See Also:
CPlayer

endTurnFlag

public void endTurnFlag()
Runde beenden, wird vom TimerThread gesteuert

startTurn

public void startTurn()
Runde starten, wird vom TimerThread gesteuert

endTurn

public void endTurn(CPlayer _oPlayer)
der Spieler beendet seine Spielrunde vorzeitig
Parameters:
_oPlayer - Spieler der die Runde beendet
See Also:
CPlayer

endTurn

public static void endTurn()
EndTurn fuer die Kommandozeile

getClientListener

public CClientListener getClientListener()
Gibt Referenz auf den ClientListener zurueck
ueber den Listener werden Login und Logout realisiert
Returns:
ClientListener fuer Login und Logout
See Also:
CClientListener

logout

public void logout(java.lang.String _sName)
Logout fuer Notfaelle
wird nur Ausgerufen wenn es eine Exception im VerbindungsThread (CClientThread) gegeben hat
Parameters:
_sName - Name des Spielers der ausgelogged werden soll

ServerShutDown

public void ServerShutDown()
Server beenden, dadurch werden alle Clients disconnected

execCommandLine

public void execCommandLine(int i)
Kommandozeilen Befehlsauswahl
Parameters:
i - Index des Kommandos, das ausgefuehrt werden soll

printClientList

public static void printClientList()
Gibt die Namen aller eingeloggten Spieler am Bildschirm aus

showthreads

public static void showthreads()
Zeigt die Namen aller eingeloggten ClientThread und gibt sie am Bildschirm aus

execute

public boolean execute(int _iCmdIndex)
                throws java.rmi.RemoteException
Spieler fuehrt das Kommando mit dem Index _iCmdIndex aus der Kommandoliste aus
dannach wird ein Maprefresh() angestossen
Parameters:
_iCmdIndex - Index des Kommandos aus der Liste die per getPossibleCommands angefordert wurde
Returns:
ob das Ausfuehren erfolgreich verlief
See Also:
CCmd

login

public CMap login(java.lang.String _sName,
                  java.lang.String _sIP)
           throws java.rmi.RemoteException
Client loggt sich am Server ein
Parameters:
_sName - Name des Spieler der sich einlogged
_sIP - IP des Hosts der sich einlogged
Returns:
Map-Objekt, wird als Kopie dem Client zurueckgeliefert
See Also:
CMap

chkLoginData

private boolean chkLoginData(java.lang.String _sName)
                      throws java.rmi.RemoteException
Uebpruefen der Login-Daten
Parameters:
_sName - Name des Spielers der sich einlogen will
Returns:
ein boolean der anzeigt, oder das Pruefen der Logindaten erfolgreich verlief
Throws:
CGenerelException - Die Pruefung der Logindaten schlug fehl weil:
- der Name bereits verwendet wird
- die maximale Anzahl der Clients bereits erreicht ist