示例#1
0
    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
示例#2
0
    def _fireEvent(self, eventToFire: FutureEvent):

        self.logger.info(f'{eventToFire=}')
        if eventToFire.callback is not None:
            eventToFire.callback(eventToFire)