Act Handler komponent

Späť na analýzu hráča Uva Trilearn

Trieda ActHandler sa používa na posielanie správ Soccer serveru. Obsahuje rad, do ktorého sa vysielané správy postupne zaradzujú. Ked príde signál (v závislosti od objektu SenseHandler) tak správy sa konvertuju na text a odosielajú serveru. Poslané spravy sa synchronizujú s objektom WorldModel, tak aby odzrkadloval skutočný stav na základe realizovaných akcií. V každom kroku je možné poslať viac správ naraz, ale niektoré správy môžu byť poslané (podla pravidiel) iba raz (kopni, beh, pohni sa, chyť, otčc sa). Preto sú interne definované rôzne rady so správami. Prvý rad obsahuje iba jednu správu - posledný zadaný priamy príkaz, ktorý je reprezentovaný príkazom bez použitia pola. Druhý rad obsahuje správy na zmenu pohladu (change_view), kedže sa musia synchrónne posielať v daných intervaloch. Tretí rad obsahuje všetky ostatné správy. Druhý a tretí rad sú spoločne ukladané v statickom poli príkazov. Zakaždým ako sa do radu pridá správa, ktorá tam už je, tak sa príkaz nahradí touto novou správou. správy je možné posielať priamo serveru, využíva sa to v 2 situáciách:

  • pri inicializácii
  • ked vieme, že správa, ktorú posielame je definitívna (že sa už nebude meniť), pretože žiadna ktorá by sa poslala nebude lepšia.

Jednotlivé správy sú reprezentované inštanciami triedi SoccerCommand (opísana nižšie). Okrem toho ActHandler obsahuje odkaz na spojenie so serverom Connection) a odkaz na WorldModel.

Trieda ActHandler obsahuje nasledovné funkcie na prácu s radmi:

  • bool putCommandInQueue( SoccerCommand command)

Pridá jednu správu do radu správ (interne sa uloží do jedného z opísaných radov)

  • void emptyQueue() - vyprázdni obsah jednotlivých radov
  • bool isQueueEmpty() - príznak, či je rad prázdny
  • bool sendCommands() - odošle správy v rade(och)
  • SoccerCommand getPrimaryCommand() - vráti priamy prikaz

Trieda ActHandler obsahuje nasledovné funkcie na prácu so správami:

  • bool sendCommand(SoccerCommand soc) - pošle správu SoccerCommand
  • bool sendMessage(char *str) - pošle správu priamo ako reťazec

Späť na hlavnú stránku | Aktuálna verzia na našom Wiki