def createTractorBeamEvent(self) -> FutureEvent: # noinspection SpellCheckingInspection """ ```java schedule(FTBEAM, tk.expran(1.5 * (game.intime / game.state.remcom))); ``` """ inTime: float = self._gameState.inTime remainingCommanders: int = self._gameState.remainingCommanders if remainingCommanders == 0: futureEvent: FutureEvent = FutureEvent( type=FutureEventType.TRACTOR_BEAM, starDate=0.0, quadrantCoordinates=Coordinates(x=-1, y=-1)) futureEvent.schedulable = False else: elapsedStarDates: float = self._intelligence.exponentialRandom( 2.5 * (inTime / remainingCommanders)) eventStarDate: float = self._gameState.starDate + elapsedStarDates coordinates: Coordinates = self._gameState.currentQuadrantCoordinates futureEvent = FutureEvent(type=FutureEventType.TRACTOR_BEAM, starDate=eventStarDate, quadrantCoordinates=coordinates) futureEvent.callback = EventCallback( self._futureEventHandlers.tractorBeamEventHandler) return futureEvent
def _fireEvent(self, eventToFire: FutureEvent): self.logger.info(f'{eventToFire=}') if eventToFire.callback is not None: eventToFire.callback(eventToFire)