Пример #1
0
 /**
  * @param ArrowEvent               $arrowIncomingEvent
  * @param string                   $name
  * @param EventDispatcherInterface $dispatcher
  */
 public function onIncomingArrow(ArrowEvent $arrowIncomingEvent, $name, EventDispatcherInterface $dispatcher)
 {
     //        $this->log('onIncomingArrow');
     $incomingArrow = $arrowIncomingEvent->getArrow();
     $arrow = $this->handleArrow(clone $incomingArrow);
     if (null === $arrow) {
         throw new \RuntimeException('LegGears::handleArrow(...) must return an arrow');
     }
     if (null === $arrow->getNumber()) {
         throw new \RuntimeException('handleArrow must set arrow-number!');
     }
     $arrowRegisteredEvent = new ArrowEvent();
     $arrowRegisteredEvent->setArrow($arrow);
     $dispatcher->dispatch(EngineEvents::ARROW_REGISTERED, $arrowRegisteredEvent);
     if (null !== $this->turnCompleted) {
         $turnCompletedEvent = new TurnEvent();
         $turnCompletedEvent->setTurn($this->turnCompleted);
         $dispatcher->dispatch(EngineEvents::TURN_COMPLETED, $turnCompletedEvent);
     }
     if (null !== $this->legCompleted) {
         $legCompletedEvent = new LegEvent();
         $legCompletedEvent->setLeg($this->legCompleted);
         $dispatcher->dispatch(EngineEvents::LEG_COMPLETED, $legCompletedEvent);
     }
 }
Пример #2
0
 /**
  * @param LegEvent                 $legCompletedEvent
  * @param string                   $name
  * @param EventDispatcherInterface $dispatcher
  */
 public function onLegCompleted(LegEvent $legCompletedEvent, $name, EventDispatcherInterface $dispatcher)
 {
     //        $this->log('onLegCompleted');
     $leg = $legCompletedEvent->getLeg();
     if ($leg->getGame()->getId() != $this->getGame()->getId()) {
         //            $this->log('onLegCompleted, not my game - bailing');
         return;
     }
     //        $this->log('onLegCompleted, proceed - forward event to implementing class');
     $this->handleLegCompleted($leg);
     if (null !== $this->gameCompleted) {
         $gameCompletedEvent = new GameEvent();
         $gameCompletedEvent->setGame($this->gameCompleted);
         $dispatcher->dispatch(EngineEvents::GAME_COMPLETED, $gameCompletedEvent);
     }
 }