Exemplo n.º 1
0
def getTrackLength():
    try:
        trackLengthFloat = ac.getTrackLength(0)

        return trackLengthFloat
    except Exception as e:
        ac.console(APP_NAME + ": Error in getTrackLength: %s" % e)
        ac.log(APP_NAME + ": Error in getTrackLength: %s" % e)
        return 0
Exemplo n.º 2
0
def onRender(*args):
    global antManagerExecutable, antManagerState, uiElements
    try:
        stateFound = antManagerState.updateFromMemory()
        if stateFound:
            if not workoutInProgress():
                ac.setText(uiElements.btn1, "load workout")
            else:
                ac.setText(uiElements.btn1, "stop workout")
                ac.console("Workout message : " +
                           repr(antManagerState.WorkoutMessage))
        elif not stateFound and ac.getText(uiElements.btn1) != "starting...":
            ac.setText(uiElements.btn1, "start")
    except Exception as e:
        ac.console(repr(e))

    antManagerState.TrackLength = ac.getTrackLength(0) / 1000
    antManagerState.LapPosition = ac.getCarState(
        0, acsys.CS.NormalizedSplinePosition) * ac.getTrackLength(0) / 1000
    uiElements.update(antManagerState)
    workoutUi.update(antManagerState)
    RaceState().updateToMemory()
Exemplo n.º 3
0
def startTelemetry():
    global logPrefix, telemetrySession

    telemetrySession = TelemetrySession()

    trackName = ac.getTrackName(0)
    trackConfig = ac.getTrackConfiguration(0)
    trackLength = ac.getTrackLength(0)
    carName = ac.getCarName(0)

    telemetrySession.start(carName=carName,
                           trackName=trackName,
                           trackConfig=trackConfig,
                           trackLength=trackLength)
Exemplo n.º 4
0
    def refresh(self, x, dt, interpolation, main_file):
        try:
            if not self.init:
                self.init = True
                try:
                    self.load(main_file, "init")
                except Exception:
                    pass

            for self.i in range(32): #max_cars
                if ac.isConnected(self.i) == 1:
                    self.update_custom_car_info(interpolation, dt, self.i)

            self.prev_active_cam = self.active_cam
            for self.i in range( self.get_n_cameras() ):
                if not self.mode[self.active_mode][self.i].camera_pit:
                    if x * ac.getTrackLength() < self.get_camera_in(self.i):
                        self.active_cam = self.get_prev_camera(self.i)
                        break
                    else:
                        self.active_cam = self.get_last_camera()

            #pit cameras
            if self.car_is_in_pitline[ac.getFocusedCar()]:
                for self.i in range( self.get_n_cameras() ):
                    if self.mode[self.active_mode][self.i].camera_pit:
                        if x * ac.getTrackLength() < self.get_camera_in(self.i):
                            self.active_cam = self.get_prev_camera(self.i, "pit")
                            break
                        else:
                            self.active_cam = self.get_last_camera("pit")


        except Exception as e:
            debug(e)
            self.active_cam = 0
def acMain(ac_version):
    # VARIABLES
    global totalDrivers
    global drivers

    global leaderboardWindow, driverWidget, driverComparisonWidget, fastest_lap_banner
    # LABELS
    global leaderboard
    global lapCountTimerLabel, leaderboardBaseLabel, leaderboardInfoBackgroundLabel, leaderboardBackgroundLabel
    global flagLabel

    totalDrivers = ac.getCarsCount()
    n_splits = ac.getTrackLength(0) / FC.TRACK_SECTION_LENGTH
    drivers = [Driver(i, n_splits) for i in range(totalDrivers)] # driver positions and update times

    ac.initFont(0, FC.FONT_NAME, 0, 0)

    leaderboardWindow = ac.newApp(FC.APP_NAME)
    ac.setTitle(leaderboardWindow, "")
    ac.drawBorder(leaderboardWindow, 0)
    ac.setIconPosition(leaderboardWindow, 0, -10000)
    ac.setSize(leaderboardWindow, 200, 200)
    ac.setBackgroundOpacity(leaderboardWindow, 0)

    # ===============================
    # Leaderboard Background
    leaderboardBaseLabel = ac.addLabel(leaderboardWindow, "")
    ac.setPosition(leaderboardBaseLabel, 0, 0)
    w, h = get_image_size(FC.LEADERBOARD_BASE_RACE)
    ac.setSize(leaderboardBaseLabel, w, h)
    ac.setBackgroundTexture(leaderboardBaseLabel, FC.LEADERBOARD_BASE_RACE)

    leaderboardBackgroundLabel = ac.addLabel(leaderboardWindow, "")
    ac.setPosition(leaderboardBackgroundLabel, 0, h)
    ac.setSize(leaderboardBackgroundLabel, w, totalDrivers*LeaderboardRow.ROW_HEIGHT + 2)
    ac.setBackgroundTexture(leaderboardBackgroundLabel, FC.LEADERBOARD_BACKGROUND);
    
    # ===============================
    # Lap Counter / Time
    lapCountTimerLabel = ac.addLabel(leaderboardWindow, "")
    ac.setPosition(lapCountTimerLabel, 74, 52)
    ac.setFontSize(lapCountTimerLabel, 22)
    ac.setCustomFont(lapCountTimerLabel, FC.FONT_NAME, 0, 1)
    ac.setFontAlignment(lapCountTimerLabel, "center")
    ac.setFontColor(lapCountTimerLabel, 0.86, 0.86, 0.86, 1)

    # ===============================
    # Flags
    flagLabel = ac.addLabel(leaderboardWindow, "")
    ac.setPosition(flagLabel, w, 8)
    ac.setSize(flagLabel, 110, h-8)
    ac.setVisible(flagLabel, 0)

    # ===============================
    # Info Background
    leaderboardInfoBackgroundLabel = ac.addLabel(leaderboardWindow, "")
    ac.setPosition(leaderboardInfoBackgroundLabel, w, h)
    ac.setSize(leaderboardInfoBackgroundLabel, 110, totalDrivers*LeaderboardRow.ROW_HEIGHT + 2)
    ac.setBackgroundTexture(leaderboardInfoBackgroundLabel, FC.LEADERBOARD_INFO_BACKGROUNG)

    info_button = ac.addButton(leaderboardWindow, "")
    ac.setPosition(info_button, w, h)
    ac.setSize(info_button, 110, totalDrivers*LeaderboardRow.ROW_HEIGHT + 2)
    ac.addOnClickedListener(info_button, on_click_info)
    ac.setBackgroundOpacity(info_button, 0)
    ac.drawBorder(info_button, 0)

    # ===============================
    # Driver Widget
    driverWidget = DriverWidget(FC.APP_NAME+" Driver")

    # ===============================
    # Driver Comparison Widget
    driverComparisonWidget = DriverComparisonWidget(FC.APP_NAME+" Driver Comparison")

    # ===============================
    # FastestLap Banner
    fastest_lap_banner = FastestLapBanner(FC.APP_NAME+" Top Banner")
    fastest_lap_banner.hide()

    leaderboard = [None] * totalDrivers
    for i in range(totalDrivers):
        leaderboard[i] = LeaderboardRow(leaderboardWindow, i)

    return FC.APP_NAME
Exemplo n.º 6
0
 def getTrackLength():
     return ac.getTrackLength(0)
Exemplo n.º 7
0
 def set_camera_in(self, camera, value):
     self.mode[self.active_mode][camera].camera_in = float(value) / ac.getTrackLength()
Exemplo n.º 8
0
 def get_camera_in(self, active_cam = -1):
     self.cam_id = self.sanitize_active_cam(active_cam)
     return self.mode[self.active_mode][self.cam_id].camera_in * ac.getTrackLength()
Exemplo n.º 9
0
def acMain(ac_version):
    global appWindow, l_sockstat
    global ego_stat, env_stat, s, ai_lane, fileDest
    global sct, mon_select, monitor
    global csvfile, writer, starttime

    appWindow = ac.newApp(appName)
    ac.setTitle(appWindow, appName)
    ac.setSize(appWindow, width, height)

    global trackName
    trackName = ac.getTrackName(0)

    global trackConfig
    trackConfig = ac.getTrackConfiguration(0)

    global trackLength
    trackLength = ac.getTrackLength(0)
    ac.console(str(trackLength))
    ego_stat = {
        'trackName': trackName,
        'trackConfig': trackConfig,
        'gas': None,
        'brake': None,
        'steerAngle': None,
        'velocity': [None, None, None],
        'accG': [None, None, None],
        'wheelSlip': [None, None, None, None],
        'wheelLoad': [None, None, None, None],
        'heading': None,
        'pitch': None,
        'roll': None,
        'localAngularVel': [None, None, None],
        'localVelocity': [None, None, None],
        'normalizedCarPosition': None,
        'carCoordinates': [None, None, None],
        'surfaceGrip': None,
        'env_stat': {},
        'time': 0,
        'numCars': None
    }
    env_stat = {
        'velocity': [None, None, None],
        'normalizedCarPosition': None,
        'carCoordinates': [None, None, None]
    }

    fileDest = os.path.join(os.getcwd(), 'content', 'tracks', trackName, 'ai',
                            'fast_lane.ai')
    if not trackConfig == "" and os.path.isdir("content/tracks/%s/%s/ai" %
                                               (trackName, trackConfig)):
        fileDest = os.path.join(os.getcwd(), 'content', 'tracks', trackName,
                                trackConfig, 'ai', 'fast_lane.ai')

    csvfile = open('apps/python/aclab_py/log.csv', 'w')
    writer = csv.DictWriter(csvfile, fieldnames=list(ego_stat.keys()))
    writer.writeheader()
    # ai_lane = acParse(fileDest)
    ac.console(fileDest)

    l_sockstat = ac.addLabel(appWindow, "waiting for client...")
    ac.setPosition(l_sockstat, 0, 30)

    sct = mss.mss()
    monitor = sct.monitors[mon_select]  # get data of monitor desired
    monitor = sct.adj_monitor(monitor)

    return appName