de.torfu.kabayellow.common
Class AutoTurnFinisher

java.lang.Object
  |
  +--de.torfu.kabayellow.common.AutoTurnFinisher
All Implemented Interfaces:
IGameObserver, java.lang.Runnable

public class AutoTurnFinisher
extends java.lang.Object
implements IGameObserver, java.lang.Runnable

Utility-Klasse, die einen Turn automatisch kurz vor dem Timeout beendet. Kann in Verbindung mit dem BufferedGame verwendet werden, um sicher zu stellen, dass der Turn vor dem Timeout abgeschickt wird.


Constructor Summary
AutoTurnFinisher(Game game, java.lang.String playerName, int securityInterval)
          Erzeugt einen neuen AutoTurnFinisher.
 
Method Summary
 void actionPerformed(Action action)
          Wird aufgerufen, wenn ein beliebiger Spieler eine Action ausgeführt hat.
 void executeEndTurn()
          Beendet den Zug des Spielers.
 void gameOver(Player winner)
          Wird aufgerufen, wenn das Spiel vorbei ist.
 void gameStarted()
          Wird einmalig aufgerufen, wenn alle Spieler sich angemeldet haben.
 void gameStatusChanged()
          Wird nach jeder Änderung des Spielstatus aufgerufen, z.B. wenn der nächste Spieler dran ist, oder wenn ein beliebiger Spieler eine Aktion ausgeführt hat.
 boolean hasFinishedTurn()
          Gibt zurück, ob der AutoTurnFinisher den aktuellen Zug beendet hat.
 void newPlayer(java.lang.String name, int age)
          Wird aufgerufen, wenn sich ein weiterer Spieler anmeldet.
 void nextPhase()
          Wird aufgerufen, nachdem eine Phase zu Ende ist.
 void nextPlayer()
          Wird aufgerufen, nachdem ein Spieler seinen Zug beendet hat.
 void nextRound()
          Wird aufgerufen, nachdem eine Runde zu Ende ist.
 void receiveChatMessage(int playerID, java.lang.String message)
          Wird aufgerufen, wenn ein beliebiger Spieler eine Chat-Nachricht verschickt hat.
 void run()
           
 void setSecurityInterval(int milliseconds)
          Stellt ein, wieviele Millisekunden vor dem Timeout der Zug automatisch beendet werden soll.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AutoTurnFinisher

public AutoTurnFinisher(Game game,
                        java.lang.String playerName,
                        int securityInterval)
Erzeugt einen neuen AutoTurnFinisher.

Parameters:
game - Game-Objekt, auf dem die Turns kurz vor dem Timeout automatisch beendet werden sollen
playerName - Name des Spielers, dessen Turns automatisch beendet werden sollen
securityInterval - Der Zug wird so viele Millisekunden vor dem Timeout automatisch beendet. Kann nachträglich mit {#setSecurityInterval} noch verändert werden.
Method Detail

hasFinishedTurn

public boolean hasFinishedTurn()
Gibt zurück, ob der AutoTurnFinisher den aktuellen Zug beendet hat. Sollte geprüft werden, bevor man die Beendigung des Turns auf normalem Wege erlaubt.


executeEndTurn

public void executeEndTurn()
Beendet den Zug des Spielers. Kann vom Aufrufer anstelle des normalen ActionEndTurn verwendet werden, um den Zug zu beenden. Die Methode enthält eine Sicherheitsabfrage, um doppeltes Verschicken des Turn-Endes zu verhindern.


setSecurityInterval

public void setSecurityInterval(int milliseconds)
Stellt ein, wieviele Millisekunden vor dem Timeout der Zug automatisch beendet werden soll.


run

public void run()
Specified by:
run in interface java.lang.Runnable

nextPlayer

public void nextPlayer()
Description copied from interface: IGameObserver
Wird aufgerufen, nachdem ein Spieler seinen Zug beendet hat. Dabei ist es egal, ob es dieser Spieler, oder ein anderer Spieler war, der seinen Zug beendet hat. Die Methode wird auch aufgerufen, wenn der gleiche Spieler danach noch einmal dran ist, z.B. wenn er eine reguläre Runde beendet hat und danach selbst den König versetzen darf.

Specified by:
nextPlayer in interface IGameObserver

newPlayer

public void newPlayer(java.lang.String name,
                      int age)
Description copied from interface: IGameObserver
Wird aufgerufen, wenn sich ein weiterer Spieler anmeldet.

Specified by:
newPlayer in interface IGameObserver

gameStarted

public void gameStarted()
Description copied from interface: IGameObserver
Wird einmalig aufgerufen, wenn alle Spieler sich angemeldet haben.

Specified by:
gameStarted in interface IGameObserver

gameStatusChanged

public void gameStatusChanged()
Description copied from interface: IGameObserver
Wird nach jeder Änderung des Spielstatus aufgerufen, z.B. wenn der nächste Spieler dran ist, oder wenn ein beliebiger Spieler eine Aktion ausgeführt hat. Der AbstractPlayer kann diese Methode überschreiben, um z.B. eine GUI-Darstellung des Spielstatus neu zu zeichnen.

Wenn der AbstractPlayer Informationen darüber haben will, was genau sich geändert hat, muss er statt dieser Methode z.B. nextPlayer() oder actionPerformed() überschreiben.

Specified by:
gameStatusChanged in interface IGameObserver

nextRound

public void nextRound()
Description copied from interface: IGameObserver
Wird aufgerufen, nachdem eine Runde zu Ende ist. Dies ist der Fall, immer nachdem

Specified by:
nextRound in interface IGameObserver

nextPhase

public void nextPhase()
Description copied from interface: IGameObserver
Wird aufgerufen, nachdem eine Phase zu Ende ist. Jede Phase beginnt mit dem Versetzen des Königs, und endet mit dem Aufaddieren der Punkte. Die "nullte" Phase beginnt mit dem Spielanfang und endet, nachdem alle Spieler ihren Startritter gesetzt haben.

Specified by:
nextPhase in interface IGameObserver

actionPerformed

public void actionPerformed(Action action)
Description copied from interface: IGameObserver
Wird aufgerufen, wenn ein beliebiger Spieler eine Action ausgeführt hat. Das entsprechende Action-Objekt wird als Parameter übergeben. Auch von diesem AbstractPlayer selbst ausgeführte Aktionen werden ihm auf diese Weise noch einmal übermittelt.

Specified by:
actionPerformed in interface IGameObserver

receiveChatMessage

public void receiveChatMessage(int playerID,
                               java.lang.String message)
Description copied from interface: IGameObserver
Wird aufgerufen, wenn ein beliebiger Spieler eine Chat-Nachricht verschickt hat. Auch die eigenen Nachrichten werden einem auf diese Weise noch einmal übermittelt.

Specified by:
receiveChatMessage in interface IGameObserver
Parameters:
playerID - die ID des abschickenden Spielers, 0-3
message - der Text der Nachricht

gameOver

public void gameOver(Player winner)
Description copied from interface: IGameObserver
Wird aufgerufen, wenn das Spiel vorbei ist.

Specified by:
gameOver in interface IGameObserver
Parameters:
winner - Der Player, welcher das Spiel gewonnen hat.