def __init__(self, vGain=50, thetaGain=20, desiredV=25, laneId=0, num=1, radiu=500, headway=20): self.vGain = vGain self.thetaGain = thetaGain self.desiredV = desiredV self.safeHeadway = headway self.traj = [[0, 0]] self.numSurrounding = num # number of surrounding vehicles self.h = 2 self.dmin = 10 self.ts = 1.00 / 15 self.targetLane = laneId self.changeFlag = 0 self.phiFlag = 0 self.frontObs = 0 self.radiu = radiu self.Range = 15 self.alpha = 50 self.ita = 2 self.changeThres = 1.3 self.previousInput = [0, 0] self.timeStep = 0 safetyCommand = file('safetyCommand.txt', 'w') vProf = file('velocity.txt', 'w') dProf = file('distance.txt', 'w')
def init(self, name='Sol'): log.debug("Loading Solar System Bodies") stream = file("solarsystem.yaml", "r") solarDB = yaml.load(stream) stream.close() self.bodies = [] self.solarSystemRoot = NodePath(name) for bodyName, bodyDB in solarDB[name].items(): self.generateNode(bodyName, bodyDB, self.solarSystemRoot)
def init(self, name="Sol"): log.debug("Loading Solar System Bodies") stream = file("solarsystem.yaml", "r") self.bodies = [] solarDB = yaml.load(stream) stream.close() # self.sphere = shapeGenerator.Sphere(1, 128) # self.solarSystemRoot = NodePath(name) for bodyName, bodyDB in solarDB[name].items(): self.generateNode(bodyName, bodyDB, universals.solarSystemRoot)
def init(self, name='Sol'): log.debug("Loading Solar System Bodies") stream = file("solarsystem.yaml", "r") self.bodies = [] solarDB = yaml.load(stream) stream.close() #self.sphere = shapeGenerator.Sphere(1, 128) #self.solarSystemRoot = NodePath(name) for bodyName, bodyDB in solarDB[name].items(): self.generateNode(bodyName, bodyDB, universals.solarSystemRoot)
def file_md5(path: str, blocksize: int = 1024) -> object: """ Returns a files md5 hash from its path """ m = md5() if path_exists(path): fh = file(path, 'rb') data = [1] accumulated = 0 while len(data) > 0: data = fh.read(blocksize) accumulated += len(data) m.update(data) fh.close() else: __file_notify.warning( 'Failed to compute MD5 has for %s. File does not exist' % path) return m.digest()
def opt_action(self, act): self.lst_gui["option_frame"][-3]["state"] = DGG.DISABLED self.lst_gui["option_frame"][-2]["state"] = DGG.DISABLED if self.opt_var["chg"][0]: if act == 0: self.app.main_config["fullscreen"] = self.opt_var[ "fullscreen"][0] elif act == 1: self.opt_var["fullscreen"][0] = self.app.main_config[ "fullscreen"] self.lst_gui["option_frame"][1]["indicatorValue"] = ( 0 if self.opt_var["fullscreen"][0] else 1) self.lst_gui["option_frame"][2]["indicatorValue"] = ( 1 if self.opt_var["fullscreen"][0] else 0) if self.opt_var["chg"][1]: if act == 0: self.app.main_config["size_chx"] = self.opt_var["size_chx"] elif act == 1: self.opt_var["size_chx"] = self.app.main_config["size_chx"] self.lst_gui["option_frame"][4].set(self.opt_var["size_chx"]) if self.opt_var["chg"][2]: if act == 0: self.app.main_config["lang_chx"] = self.opt_var["lang_chx"] self.app.langtab = self.app.main_config["lang"][ self.app.main_config["lang_chx"]] self.app.lang = json.loads("".join([ line.rstrip().lstrip() for line in file( "misc/lang/" + self.app.langtab[0] + ".json", "rb") ])) self.app.voile[3]["text"] = self.app.lang["main_dialog"][ "valid"] self.app.voile[4]["text"] = self.app.lang["main_dialog"][ "cancel"] self.lst_gui["main_frame"][0]["text"] = self.app.lang[ "main_menu"]["campaign"] self.lst_gui["main_frame"][1]["text"] = self.app.lang[ "main_menu"]["mission"] self.lst_gui["main_frame"][2]["text"] = self.app.lang[ "main_menu"]["options"] self.lst_gui["main_frame"][3]["text"] = self.app.lang[ "main_menu"]["quit"] self.lst_gui["camp_frame"][0]["text"] = self.app.lang[ "camp_menu"]["stitre"] self.lst_gui["camp_frame"][1]["text"] = self.app.lang[ "camp_menu"]["new_unit"] self.lst_gui["camp_frame"][3]["text"] = self.app.lang[ "camp_menu"]["crea_unit"] self.lst_gui["camp_frame"][4]["text"] = self.app.lang[ "camp_menu"]["used_name"] self.lst_gui["camp_frame"][5]["text"] = self.app.lang[ "camp_menu"]["sel_lab"] self.lst_gui["camp_frame"][6]["text"] = self.app.lang[ "camp_menu"]["launch"] self.lst_gui["camp_frame"][7]["text"] = self.app.lang[ "camp_menu"]["supp_unit"] self.lst_gui["camp_frame"][8]["text"] = self.app.lang[ "camp_menu"]["no_unit"] self.lst_gui["camp_frame"][9]["text"] = self.app.lang[ "aux_menu"]["return_btn"] # #TODO : ajout de la traduction pour le sous menu "missions" # # self.lst_gui["mission_frame"][0]["text"] = self.app.lang[ "mission_menu"]["stitre"] #self.lst_gui["mission_frame"][0]["text"] = # # self.lst_gui["option_frame"][0]["text"] = self.app.lang[ "option_menu"]["stitre"] self.lst_gui["option_frame"][1]["text"] = self.app.lang[ "option_menu"]["windowed"] self.lst_gui["option_frame"][2]["text"] = self.app.lang[ "option_menu"]["fullscreen"] self.lst_gui["option_frame"][3]["text"] = self.app.lang[ "option_menu"]["res_chx"] self.lst_gui["option_frame"][5]["text"] = self.app.lang[ "option_menu"]["lang_chx"] self.lst_gui["option_frame"][7]["text"] = self.app.lang[ "option_menu"]["btn_valid"] self.lst_gui["option_frame"][8]["text"] = self.app.lang[ "option_menu"]["btn_reset"] self.lst_gui["option_frame"][9]["text"] = self.app.lang[ "aux_menu"]["return_btn"] elif act == 1: self.opt_var["lang_chx"] = self.app.main_config["lang_chx"] self.lst_gui["option_frame"][6].set(self.opt_var["lang_chx"]) if act == 0 and not self.opt_var["chg"] == [False, False, False]: conf = open(self.app.curdir + "/config.json", "w") conf.write(json.dumps(self.app.main_config)) conf.close() if not self.opt_var["chg"] == [False, False, False]: self.opt_var["chg"] = [False, False, False]
def valid_main_menu(self): self.nomove = False self.app.change_cursor(0) taskMgr.doMethodLater(1, self.main_aux_arcs_task, "anim aux arcs task") self.app.ignore("escape") self.app.ignore("mouse1") self.app.ignore("wheel_up") self.app.ignore("wheel_down") self.app.ignore("arrow_up") self.app.ignore("arrow_down") self.app.ignore("enter") self.app.lst_arrows[0]["status"] = 0 self.app.lst_arrows[1]["status"] = 0 self.app.lst_arrows[0]["node"].hide() self.app.lst_arrows[1]["node"].hide() self.nb_saves = 0 self.lst_saves = [] self.gui_saves = [] if self.lst_menus[1] == 0 or self.lst_menus[1] == 1: if exists(self.app.curdir + "/saves"): self.lst_saves = os.listdir(self.app.curdir + "/saves") self.nb_saves = len(self.lst_saves) if self.nb_saves > 0: for it, elt in enumerate(self.lst_saves): date_save = elt[:-5].split("_") date_save[1] = date_save[1].replace("-", ":") date_save = " ".join(date_save) cur_save = json.loads("".join([ line.rstrip().lstrip() for line in file(self.app.curdir + "/saves/" + elt, "rb") ])) time_txt = "" if cur_save["time"] < 100: time_txt = str(cur_save["time"]) + " s" elif cur_save["time"] < 6000: s = cur_save["time"] % 60 m = (cur_save["time"] - s) / 60 time_txt = str(m) + ":" + str(s) else: s = cur_save["time"] % 60 tm = (cur_save["time"] - s) / 60 m = tm % 60 h = (tm - m) / 60 time_txt = str(h) + ":" + str(m) + ":" + str(s) self.gui_saves.append( [cur_save["nom"], date_save, time_txt, it, None]) else: os.makedirs(self.app.curdir + "/saves") if self.lst_menus[1] == 0: if len(self.lst_gui["camp_frame"]) > 12: for it in range(12, len(self.lst_gui["camp_frame"])): self.lst_gui["camp_frame"][12].removeNode() del self.lst_gui["camp_frame"][12] for elt in self.gui_saves: save_lab = arcLabel(elt[0], (0.5, 0, -0.68), 0.05) save_lab.reparentTo(self.lst_gui["frames"][1]) save_lab.hide() self.lst_gui["camp_frame"].append(save_lab) elt[4] = save_lab elif self.lst_menus[1] == 1: # #TODO : action à faire lors de l'activation du sous menu "missions" # # pass elif self.lst_menus[1] == 3: sys.exit(0) self.app.lst_arrows[0]["node"].hide() self.app.lst_arrows[1]["node"].hide() self.lst_gui["frames"][0].hide() movePara = Parallel(name="main_to_aux") movePara.append(camera.posInterval(2, Point3(-4, -1, 7))) movePara.append(camera.hprInterval(2, Point3(-90, -10, 0))) movePara.start() taskMgr.doMethodLater(2.5, self.aux_affmenu_task, "main aff aux menu task") self.lst_menus[0] = 1
def __init__(self): #basic init start base.disableMouse() self.wp = WindowProperties() self.wp.setCursorHidden(True) base.win.requestProperties(self.wp) cm = CardMaker("cursor") cm.setFrame(0, 0.1, -0.13, 0) self.cust_mouse = render.attachNewNode(cm.generate()) self.cust_mouse_tex = [] self.cust_mouse_tex.append( loader.loadTexture("models/cursors/blank_cursor.png")) self.cust_mouse_tex.append( loader.loadTexture("models/cursors/main_cursor.png")) self.cust_mouse.setTexture(self.cust_mouse_tex[0]) self.cust_mouse.setTransparency(TransparencyAttrib.MAlpha) self.cust_mouse.reparentTo(render2d) self.cust_mouse.setBin("gui-popup", 100) base.mouseWatcherNode.setGeometry(self.cust_mouse.node()) #text and background textVersion = OnscreenText(text="v0.0", font=arcFont, pos=(1.15, -0.95), fg=(0, 0, 0, 1), bg=(1, 1, 1, 0.8)) base.setBackgroundColor(1, 1, 1) self.curdir = (appRunner.p3dFilename.getDirname() if appRunner else "..") self.main_config = json.loads("".join([ line.rstrip().lstrip() for line in file(self.curdir + "/config.json", "rb") ])) #arrows (GENERAL) self.arrow = loader.loadModel("models/static/arrow") self.lst_arrows = [] self.c_arr = CardMaker("arrow_hide") self.c_arr.setFrame(-1, 1, -0.8, 0.6) #light ramp self.rampnode = NodePath(PandaNode("temp node")) self.rampnode.setAttrib(LightRampAttrib.makeSingleThreshold(0.1, 0.7)) self.rampnode.setShaderAuto() base.cam.node().setInitialState(self.rampnode.getState()) #ink filter self.filters = CommonFilters(base.win, base.cam) self.filterok = self.filters.setCartoonInk(separation=1) #keyboard inputs self.accept("escape", sys.exit, [0]) #lights self.lst_lghts = [] #ambient light (permanent) self.alghtnode = AmbientLight("amb light") self.alghtnode.setColor(Vec4(0.4, 0.4, 0.4, 1)) self.alght = render.attachNewNode(self.alghtnode) render.setLight(self.alght) #language recup self.langtab = self.main_config["lang"][self.main_config["lang_chx"]] self.lang = json.loads("".join([ line.rstrip().lstrip() for line in file("misc/lang/" + self.langtab[0] + ".json", "rb") ])) #common gui elements self.voile = [] self.voile.append( DirectFrame(frameSize=(-2, 2, -2, 2), frameColor=(0, 0, 0, 0.8))) self.voile[0].setBin("gui-popup", 1) self.voile[0].hide() self.voile.append(arcLabel("", (0, 0, 0.3), txtalgn=TextNode.ACenter)) self.voile[1].setBin("gui-popup", 1) self.voile[1].reparentTo(self.voile[0]) self.voile.append(arcLabel("", (0, 0, 0.17), txtalgn=TextNode.ACenter)) self.voile[2].setBin("gui-popup", 1) self.voile[2].reparentTo(self.voile[0]) self.voile.append( arcButton(self.lang["main_dialog"]["valid"], (-0.2, 0, 0), None, txtalgn=TextNode.ACenter)) self.voile[3].setBin("gui-popup", 1) self.voile[3].reparentTo(self.voile[0]) self.voile.append( arcButton(self.lang["main_dialog"]["cancel"], (0.2, 0, 0), None, txtalgn=TextNode.ACenter)) self.voile[4].setBin("gui-popup", 1) self.voile[4].reparentTo(self.voile[0]) #mouse handler self.mouse_trav = CollisionTraverser() self.mouse_hand = CollisionHandlerQueue() self.pickerNode = CollisionNode('mouseRay') self.pickerNP = camera.attachNewNode(self.pickerNode) self.pickerNode.setFromCollideMask(BitMask32.bit(1)) self.pickerRay = CollisionRay() self.pickerNode.addSolid(self.pickerRay) self.mouse_trav.addCollider(self.pickerNP, self.mouse_hand) self.pickly_node = render.attachNewNode("pickly_node") #init main scene self.scene = mainScene(self)