/** * @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); } }
/** * @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); } }