class Effectors

Handlungsausfuehrende Komponente

Public Classes

class EffectorsException: public Exception
Interne Fehlerklasse
class NothingToSendException: public Exception
Interne Fehlerklasse

Public Methods

void clearQueue()
Loescht alle in der Queue befindlichen Aktionen
Effectors( Communicator* aCommunicator )
Erzeugt ein neues Effectors-Objekt
void enterField( const String& aTeamName, bool goalie = NO )
Betritt das Spielfeld zur ersten Halbzeit auf der Seite des Teams aTeamName
bool isActionLeft()
Meldet ob sich im Plan noch eine Aktion befindet
void leaveField()
Veranlasst das Verlassen des Feldes
void performAction( const Action& anAction )
Fuehrt eine Aktion sofort aus, ohne sie in die Warteschlange zu haengen
void performMainAction( const BodyInfos& aBodyInfo )
Fuehrt die naechste Hauptaktion (mainAction) des gegenwaertigen Planes aus
void performSubAction()
Fuehrt die naechste Aktion, des gegenwaertigen Planes aus, wenn diese eine Nebenaktion (subAction) ist
void queueAction( const Action& anAction )
Haengt eine einzelne Aktion hinten an die Warteschlange der auszufuehrenden Aktionen
void queuePlan( const Plan& aPlan )
Fuegt alle Aktionen eines Plans hinten an die Warteschlange der auszufuehrenden Aktionen an
void reEnterField( const String& aTeamName, int aPlayerNumber )
Betritt das Spielfeld zur zweiten Halbzeit auf der Seite des Teams aTeamName
void setPlan( const Plan& aPlan )
Die Warteschlange der auszufuehrenden Aktionen wird gesetzt
String toString()
Beschreibung als String fuer die Ausgabe auf einem Terminal

Private Fields

bool hasEnteredField
Ist das Feld betreten? Die Menge der erlaubten Aktionen ist davon abhaengig
int indexOfCurrentAction
Der Index der gegenwaertig aktuellen Aktion
Communicator* theCommunicator
Pointer auf den Communicator des Agenten
Array <Action> theQueue
Die Aktionsqueue

Documentation

Handlungsausfuehrende Komponente. Die Basisaktionen, die der Server zur Verfuegung stellt, sind hier gekapselt. Effectors uebernimmt ausserdem das Queueing der Kommandos und das Benachrichtigen des Weltmodells ueber tatsaechlich abgeschickte Aktionen.

Alle Aktionen, zu denen es Action-Objekte gibt, koennen mit queueAction ausgefuehrt werden. Ausserdem koennen Plaene, also Abfolgen von Aktionen mit queuePlan in die Warteschlange gehaengt werden.

Die Aktionen enterField, reEnterField und leaveField muessen direkt ueber den Aufruf der gleichnamigen Methode ausgeloest werden.

Von der Klasse wird nur ein Objekt erzeugt. Die Klasse ist nicht zur Vererbung geeignet.

Quelltext

[Header | [Implementierung]

CVS Informationen zum Interface

  **************************************************
  *
  * Aktueller Stand
  *
  *   $RCSfile: Effectors.h,v $
  *   $Revision: 1.22 $
  *   $Date: 1998/08/14 13:20:27 $
  *   $Author: myritz $ 
  *
  **************************************************
  
class EffectorsException: public Exception
Interne Fehlerklasse

class NothingToSendException: public Exception
Interne Fehlerklasse. Wird aufgerufen, wenn beim Wunsch Kommandos zu senden keine Kommandos mehr in der Queue sind.

Effectors( Communicator* aCommunicator )
Erzeugt ein neues Effectors-Objekt.
Parameters:
aCommunicator - Der Communicator, ueber den Effectors die Aktionen verschickt.

void enterField( const String& aTeamName, bool goalie = NO )
Betritt das Spielfeld zur ersten Halbzeit auf der Seite des Teams aTeamName. Ist das nicht moeglich, wird eine EffectorsException erzeugt. Im Weltmodell werden eingetragen: Das Weltmodell muss also vor Aufruf dieser Methode bereits initialisiert sein.

void reEnterField( const String& aTeamName, int aPlayerNumber )
Betritt das Spielfeld zur zweiten Halbzeit auf der Seite des Teams aTeamName. Ist das nicht moeglich, wird eine EffectorsException erzeugt. Im Weltmodell werden eingetragen:

Das Weltmodell muss also vor Aufruf dieser Methode bereits initialisiert sein.

void leaveField()
Veranlasst das Verlassen des Feldes

void queueAction( const Action& anAction )
Haengt eine einzelne Aktion hinten an die Warteschlange der auszufuehrenden Aktionen

void queuePlan( const Plan& aPlan )
Fuegt alle Aktionen eines Plans hinten an die Warteschlange der auszufuehrenden Aktionen an

void clearQueue()
Loescht alle in der Queue befindlichen Aktionen

void setPlan( const Plan& aPlan )
Die Warteschlange der auszufuehrenden Aktionen wird gesetzt. Dazu wird der alte Plan geloescht und der neue angefuegt. Diese Methode sollte wenn moeglich den Methoden queuePlan und queueAction vorgezogen werden.

void performAction( const Action& anAction )
Fuehrt eine Aktion sofort aus, ohne sie in die Warteschlange zu haengen. Die Erstellung des korrekten Strings fuer den Server liegt in der Verantwortung der Aktion. Es findet keinerlei Fehlerueberpruefung des Strings statt. Die Aktion wird allerdings vorher gefragt, ob sie meint, einen gueltigen CommandString erzeugen zu koennen. Wenn ja, wird er gesendet, wenn nicht, wird eine EffectorsException ausgeloest.

void performMainAction( const BodyInfos& aBodyInfo )
Fuehrt die naechste Hauptaktion (mainAction) des gegenwaertigen Planes aus. Die eventuell vor der Hauptaktion liegenden Nebenaktionen (subActions) werden verworfen. Die Hauptaktion wird mittels performAction abgeschickt.
Throws:
NothingToSendException wenn es keine Hauptaktion mehr im Plan gibt.

void performSubAction()
Fuehrt die naechste Aktion, des gegenwaertigen Planes aus, wenn diese eine Nebenaktion (subAction) ist. Ist die naechste Aktion eine Hauptaktion (MainAction) wird eine NothingToSendException erzeugt. Die Nebenaktion wird mittels performAction abgeschickt.
Throws:
NothingToSendException wenn es bis zur n"achsten Hauptkation oder bis zum Ende des Planes keine Nebenaktion mehr gibt.

bool isActionLeft()
Meldet ob sich im Plan noch eine Aktion befindet. Wenn dies der Fall ist wird YES zurueckgegeben , ansonsten NO.

String toString()
Beschreibung als String fuer die Ausgabe auf einem Terminal

Communicator* theCommunicator
Pointer auf den Communicator des Agenten

bool hasEnteredField
Ist das Feld betreten? Die Menge der erlaubten Aktionen ist davon abhaengig

Array <Action> theQueue
Die Aktionsqueue

int indexOfCurrentAction
Der Index der gegenwaertig aktuellen Aktion


This class has no child classes.

alphabetic index hierarchy of classes


Hauptseite

Einleitung | Architektur | Dynamische Zusammenhänge | Referenzhandbuch | FAQ | Anhang A | Anhang B

generated by doc++