def __init__(self): self.window = Window(name="ACTV Delta", icon=False, width=240, height=184, texture="") self.cursor = Value(False) self.session = Value(-1) self.performance = Value(0) self.spline = Value(0) self.laptime = Value(0) self.TimeLeftUpdate = Value(0) self.referenceLap = [] self.referenceLapTime = Value(0) self.lastLapTime = Value(0) self.lapCount = 0 self.lastLapIsValid = True self.currentLap = [] self.deltaLoaded = False self.thread_save = False self.highlight_end = 0 self.rowHeight = Value(-1) self.lbl_delta = ( Label(self.window.app, "+0.000") .setSize(150, 36) .setPos(0, 60) .setFontSize(26) .setAlign("right") .setVisible(1) ) self.lbl_lap = ( Label(self.window.app, "0.000") .setSize(150, 32) .setPos(0, 86) .setFontSize(17) .setAlign("right") .setVisible(1) ) self.btn_reset = ( Button(self.window.app, self.onResetPress) .setPos(90, 68) .setSize(60, 20) .setText("Reset") .setAlign("center") .setBgColor(rgb([255, 12, 12], bg=True)) .setVisible(0) ) self.spin_row_height = ac.addSpinner(self.window.app, "") ac.setRange(self.spin_row_height, 20, 48) ac.setPosition(self.spin_row_height, 20, 28) ac.setValue(self.spin_row_height, self.__class__.ui_row_height) ac.addOnValueChangeListener(self.spin_row_height, self.onSpinRowHeightChanged) ac.setVisible(self.spin_row_height, 0) fontName = "Segoe UI" if ac.initFont(0, fontName, 0, 0) > 0: self.lbl_delta.setFont(fontName, 0, 1) self.cfg = Config("apps/python/prunn/", "config.ini") self.loadCFG()
def init_finish(self): self.lbl_session_info.setVisible(0) self.lbl_session_title.setVisible(0) self.lbl_session_border.setVisible(0) self.lbl_session_single.setVisible(1) self.lbl_session_single.setText("").setBgColor(rgb([255, 255, 255], bg = True)).setBgOpacity(0.76).setVisible(1) if len(self.finish_labels) > 0: for label in self.finish_labels: label.setVisible(1) else: height=self.rowHeight/3 for i in range(0,3): for j in range(0,8): if i % 2 == 1 and j < 7: self.finish_labels.append(Label(self.window.app).setSize(height, height).setPos(height + j*height*2, i*height).setBgColor(rgb([0, 0, 0], bg = True)).setBgOpacity(0.8).setVisible(1)) elif i % 2 == 0: self.finish_labels.append(Label(self.window.app).setSize(height, height).setPos(j*height*2, i*height).setBgColor(rgb([0, 0, 0], bg = True)).setBgOpacity(0.8).setVisible(1)) self.finish_initialised = True
def colorFromCar(car): if car.find("bmw")>=0: return Colors.bmw() if car.find("ford")>=0 or car.find("shelby")>=0: return Colors.ford() if car.find("merc")>=0 or car.find("mazda")>=0: return Colors.mercedes() if car.find("ruf")>=0 or car.find("corvette")>=0 or car.find("lotus")>=0 or car.find("porsche")>=0: return Colors.corvette() if car.find("lamborghini")>=0 or car.find("pagani")>=0: return Colors.lamborghini() if car.find("ktm")>=0 or car.find("mclaren")>=0: return Colors.ktm() if car.find("nissan")>=0: return Colors.nissan() if car.find("alfa")>=0: return Colors.alfa() if car.find("honda")>=0: return rgb([214, 112, 157], bg = True) #if car.find("glickenhaus")>=0 or car.find("p4-5_2011")>=0: # return rgb([0, 0, 0], bg = True) return Colors.default()
def white(bg = False): return rgb([255, 255, 255], bg = bg)
def default(): return rgb([191, 0, 0], bg = True)
def pitColor(bg = False): return rgb([225, 225, 225], bg = bg)
def grey(bg = False): return rgb([112, 112, 112], bg = bg)
def green(bg = False): return rgb([32, 192, 31], bg = bg)
def mercedes(): return rgb([191, 191, 191], bg = True)
def ford(): #return rgb([0, 165, 255], bg = True) return rgb([62, 121, 218], bg = True)
def bmw(): #return rgb([42, 101, 198], bg = True) return rgb([40, 152, 211], bg = True)
def __init__(self): self.rowHeight=36 self.lastLapInPit = 0 self.lastLapInvalidated = 0 self.situation = 0 self.carsCount=0 self.lbl_timing_height = 0 self.lbl_position_height = 0 self.lbl_position_text=Value("") self.currentVehicule=Value(-1) self.ui_row_height = Value(-1) self.cursor=Value(False) self.fastestLap=Value(0) self.fastestLap2=Value(0) self.fastestPos=1 self.lastLap=0 self.lastLapStart=10000 self.sector_delay = 5000 self.lastTimeInPit=0 self.visible_end = 0 self.lastLapTime = 0 self.nameOffset=0 self.nameOffsetValue=Value(0) self.lapCanBeInvalidated=True self.fastestLapBorderActive = False self.firstLapStarted=False self.minLapCount=1 self.sectorCount=-1 self.lapTimesArray = [] self.driversLap = [] track=ac.getTrackName(0) config=ac.getTrackConfiguration(0) if track.find("ks_nordschleife")>=0 and config.find("touristenfahrten")>=0: self.minLapCount=0 self.lastLapInvalidated = -1 elif track.find("drag1000")>=0 or track.find("drag400")>=0: self.minLapCount=0 self.lastLapInvalidated = -1 self.fastestLapSectors = [0,0,0,0,0,0] self.session=Value(-1) #self.session.setValue() self.window = Window(name="ACTV Info", icon=False, width=332, height=self.rowHeight*2, texture="") self.lbl_driver_name=Label(self.window.app,"").setSize(284, self.rowHeight).setPos(0, 0).setBgColor(rgb([20, 20, 20], bg = True)).setBgOpacity(0.8).setVisible(0) self.lbl_driver_name2=Label(self.window.app,"Loading").setSize(284, self.rowHeight).setPos(14, 0).setFontSize(26).setAlign("left").setVisible(0) self.lbl_driver_name_visible=Value() self.lbl_driver_name_visible_fin=Value(0) self.lbl_driver_name_text=Value("") self.lbl_position_visible=Value(0) self.lbl_timing_text=Value() self.race_fastest_lap=Value(0) #self.race_fastest_lap.setValue(0) self.race_fastest_lap_driver=Value() self.lbl_timing_visible=Value(0) self.lbl_timing=Label(self.window.app,"Loading").setSize(284, self.rowHeight).setPos(0, self.rowHeight).setFontSize(26).setAlign("left").setBgColor(rgb([55, 55, 55], bg = True)).setBgOpacity(0.64).setVisible(0) self.lbl_split=Label(self.window.app,"Loading").setSize(220, self.rowHeight).setPos(10, self.rowHeight).setFontSize(26).setAlign("right").setVisible(0) self.lbl_fastest_split=Label(self.window.app,"Loading").setSize(220, self.rowHeight).setPos(48, self.rowHeight).setFontSize(26).setAlign("right").setVisible(0) self.info_position=Label(self.window.app,"0").setSize(self.rowHeight, self.rowHeight).setPos(0, 0).setFontSize(26).setAlign("center").setBgColor(Colors.red(bg = True)).setBgOpacity(1).setVisible(0) self.info_position_lead=Label(self.window.app,"1").setSize(self.rowHeight, self.rowHeight).setPos(246, self.rowHeight).setFontSize(26).setAlign("center").setBgColor(Colors.red(bg = True)).setBgOpacity(1).setVisible(0) car = ac.getCarName(0) self.lbl_border=Label(self.window.app,"").setSize(284, 1).setPos(0, self.rowHeight).setBgColor(Colors.colorFromCar(car)).setBgOpacity(0.7).setVisible(0) self.loadCFG() self.info_position.setAnimationSpeed("o", 0.1) self.info_position_lead.setAnimationSpeed("o", 0.1) self.lbl_split.setAnimationSpeed("a", 0.1) self.lbl_fastest_split.setAnimationSpeed("a", 0.1)
def onUpdate(self, sim_info): self.session_draw.setValue(sim_info.graphics.session) self.manageWindow() sim_info_status=sim_info.graphics.status if sim_info_status == 2: #LIVE if self.replay_initialised: self.lbl_session_single.setColor(rgb([255,255,255])) self.session.setValue(self.session_draw.value) sessionTimeLeft = sim_info.graphics.sessionTimeLeft if self.session.value < 2 : #0 to -5000 show finish if sessionTimeLeft < 0 and sessionTimeLeft > -5000: if not self.finish_initialised: self.init_finish() else: if sessionTimeLeft < 0: sessionTimeLeft = 0 if self.finish_initialised: self.destoy_finish() self.lbl_session_info.setVisible(1) self.lbl_session_title.setVisible(1) self.lbl_session_single.setVisible(0) self.lbl_session_border.setVisible(1) if self.session.hasChanged(): self.lbl_session_title.setSize(self.rowHeight, self.rowHeight) self.lbl_session_info.setSize(self.rowHeight*4, self.rowHeight).setPos(self.rowHeight, 0) if self.session.value == 1 : self.lbl_session_title.setText("Q") else: self.lbl_session_title.setText("P") self.lbl_session_info.setText(self.time_splitting(sessionTimeLeft)) if not self.finish_initialised: if sim_info.graphics.flag == 2: self.lbl_session_info.setBgColor(Colors.yellow(True)) self.lbl_session_info.setColor(Colors.black(),True) self.lbl_session_border.setBgColor(Colors.black(bg = True),True) self.lbl_session_title.setBgColor(Colors.black(bg = True),True) else: self.lbl_session_info.setBgColor(rgb([55, 55, 55], bg = True)) self.lbl_session_info.setColor(Colors.white(),True) self.lbl_session_border.setBgColor(Colors.red(bg = True),True) self.lbl_session_title.setBgColor(Colors.red(bg = True),True) self.lbl_session_border.animate() self.lbl_session_info.animate() self.lbl_session_title.animate() elif self.session.value == 2 : completed=0 for x in range(ac.getCarsCount()): c = ac.getCarState(x,acsys.CS.LapCount) if c > completed: completed=c completed+=1 if self.numberOfLaps==0: self.numberOfLaps=sim_info.graphics.numberOfLaps if sessionTimeLeft > 1800000 or (sim_info.graphics.iCurrentTime == 0 and sim_info.graphics.completedLaps == 0): if self.finish_initialised: self.destoy_finish() self.lbl_session_info.setVisible(0) self.lbl_session_title.setVisible(0) self.lbl_session_single.setVisible(1) self.lbl_session_border.setVisible(1) self.lbl_session_single.setText(self.trackName) elif completed > self.numberOfLaps: if not self.finish_initialised: self.init_finish() elif completed == self.numberOfLaps: if self.finish_initialised: self.destoy_finish() self.lbl_session_info.setVisible(0) self.lbl_session_title.setVisible(0) self.lbl_session_single.setVisible(1) self.lbl_session_border.setVisible(1) self.lbl_session_single.setText("Final lap") else: if self.finish_initialised: self.destoy_finish() self.lbl_session_info.setVisible(0) self.lbl_session_title.setVisible(0) self.lbl_session_single.setVisible(1) self.lbl_session_border.setVisible(1) if self.session.hasChanged(): self.lbl_session_info.setSize(self.rowHeight*4, self.rowHeight).setPos(self.rowHeight, 0) self.lbl_session_title.setSize(self.rowHeight, self.rowHeight) self.lbl_session_title.setText("Lap") self.lbl_session_single.setText("{0} / {1}".format(completed,self.numberOfLaps)) if not self.finish_initialised: if sim_info.graphics.flag == 2: self.lbl_session_single.setBgColor(Colors.yellow(True),True) self.lbl_session_single.setColor(Colors.black(),True) self.lbl_session_border.setBgColor(Colors.black(bg = True),True) else: self.lbl_session_single.setBgColor(rgb([55, 55, 55], bg = True),True) self.lbl_session_single.setColor(Colors.white(),True) self.lbl_session_border.setBgColor(Colors.red(bg = True),True) self.lbl_session_border.animate() self.lbl_session_single.animate() else: self.lbl_session_info.setVisible(0) self.lbl_session_title.setVisible(0) self.lbl_session_single.setVisible(0) self.lbl_session_border.setVisible(0) elif sim_info_status == 1: replayTimeMultiplier=sim_info.graphics.replayTimeMultiplier if self.finish_initialised: self.destoy_finish() self.lbl_session_info.setVisible(0) self.lbl_session_title.setVisible(0) self.lbl_session_border.setVisible(1) self.lbl_session_single.setVisible(1) self.replay_initialised=True self.lbl_session_single.setColor(rgb([self.replay_rgb,self.replay_rgb,self.replay_rgb])) if self.replay_asc and replayTimeMultiplier > 0: self.replay_rgb += 2 elif replayTimeMultiplier > 0: self.replay_rgb -= 2 if self.replay_rgb < 100: self.replay_asc=True elif self.replay_rgb >= 246: self.replay_rgb=246 self.replay_asc=False self.lbl_session_single.setText("REPLAY")
def destoy_finish(self): #Destroy self.lbl_session_single.setBgColor(rgb([55, 55, 55], bg = True)).setBgOpacity(0.64).setVisible(0) for label in self.finish_labels: label.setVisible(0) self.finish_initialised = False
def __init__(self): self.finish_labels = [] self.finish_initialised = False self.replay_initialised = False self.replay_asc = False self.replay_rgb=255 self.session=Value() self.cursor=Value() self.cursor.setValue(False) self.session_draw=Value() self.session_draw.setValue(-1) self.ui_row_height = Value(-1) self.numberOfLaps=0 self.rowHeight=36 self.window = Window(name="ACTV Timer", icon=False, width=228, height=42, texture="") self.lbl_session_info=Label(self.window.app,"Loading").setSize(154, self.rowHeight).setPos(self.rowHeight, 0).setFontSize(26).setAlign("center").setBgColor(rgb([55, 55, 55], bg = True)).setBgOpacity(0.64) self.lbl_session_title=Label(self.window.app,"P").setSize(self.rowHeight, self.rowHeight).setPos(0, 0).setFontSize(26).setAlign("center").setBgColor(Colors.red(bg = True)).setBgOpacity(0.64) self.lbl_session_single=Label(self.window.app,"Loading").setSize(190, self.rowHeight).setPos(0, 0).setFontSize(26).setAlign("center").setBgColor(rgb([55, 55, 55], bg = True)).setBgOpacity(0.64).setColor(Colors.white()).setVisible(0) self.lbl_session_border=Label(self.window.app,"").setSize(154+self.rowHeight, 1).setPos(0, self.rowHeight+1).setBgColor(Colors.red(bg = True)).setBgOpacity(0.7).setVisible(1) trackFilePath = "content/tracks/"+ ac.getTrackName(0) + "/ui/" if ac.getTrackConfiguration(0) != "": trackFilePath += ac.getTrackConfiguration(0) + "/ui_track.json" else: trackFilePath += "ui_track.json" if os.path.exists(trackFilePath): with open(trackFilePath) as data_file: data = json.load(data_file) self.trackName = data["name"] if len(self.trackName) > 12: if self.trackName[12] == " " or self.trackName[12] == "-": self.trackName = self.trackName[:12] else: self.trackName = self.trackName[:12] #cut multiword space = self.trackName.rfind(" ") dash = self.trackName.rfind("-") if space > 0: self.trackName = self.trackName[:space] elif dash > 0: self.trackName = self.trackName[:dash] else: self.trackName = ac.getTrackName(0) if len(self.trackName) > 12: self.trackName = self.trackName[:12] self.loadCFG()
def black(bg = False): if bg: return rgb([0, 0, 0], bg = bg) return rgb([12, 12, 12], bg = bg)
def red(bg = False): return rgb([191, 0, 0], bg = bg)
def corvette(): return rgb([240, 171, 1], bg = True)
def yellow(bg = False): return rgb([240, 171, 1], bg = bg)
def lamborghini(): return rgb([150, 191, 13], bg = True)
def purple(bg = False): return rgb([135, 31, 144], bg = bg)
def ktm(): return rgb([250, 88, 0], bg = True)
def orange(bg = False): return rgb([250, 88, 0], bg = bg)
def nissan(): return rgb([175, 71, 169], bg = True)
def __init__(self): self.rowHeight=36 self.lastLapInPit = 0 self.lastLapInvalidated = 0 self.lastLapShown = 0 self.SpeedKMH=Value() self.SpeedMPH=Value() self.topSpeed=Value() self.userTopSpeed=Value() self.curTopSpeed=Value() self.curTopSpeedMPH=Value() self.currentVehicule=Value() self.currentVehicule.setValue(0) self.session=Value() self.session.setValue(-1) self.speedText="" self.trap=0 self.userTrap=0 self.time_end=0 self.carsCount=0 self.lapCanBeInvalidated=True self.relyOnEveryOne=True self.widget_visible=Value() self.cursor=Value() self.cursor.setValue(False) self.ui_row_height = Value(-1) self.window = Window(name="ACTV Speed Trap", icon=False, width=250, height=42, texture="") self.lbl_title = Label(self.window.app,"").setSize(self.rowHeight, self.rowHeight).setPos(0, 0).setFontSize(26).setAlign("center").setBgColor(rgb([12, 12, 12], bg = True)).setBgOpacity(0.72).setVisible(0) self.lbl_time = Label(self.window.app,"").setSize(172, self.rowHeight).setPos(38, 0).setFontSize(26).setAlign("center").setBgColor(rgb([55, 55, 55], bg = True)).setBgOpacity(0.64).setVisible(0) self.lbl_border = Label(self.window.app,"").setSize(210, 1).setPos(0, 39).setBgColor(Colors.red(bg = True)).setBgOpacity(0.7).setVisible(0) self.useMPH = False user_path = os.path.join(os.path.expanduser("~"), "Documents","Assetto Corsa","cfg") if os.path.exists(user_path + "/gameplay.ini"): self.checkMPH(user_path) else: user_path = "cfg" if os.path.exists(user_path + "/gameplay.ini"): self.checkMPH(user_path) self.loadCFG()
def alfa(): #return rgb([0, 154, 100], bg = True) return rgb([54, 172, 68], bg = True)