From 7684f46b39470a911541af67445918a5463c1313 Mon Sep 17 00:00:00 2001 From: Le_dahut Date: Sun, 8 Jun 2014 22:06:19 +0200 Subject: [PATCH] =?UTF-8?q?Ajout=20d'un=20mode=20d'=C3=A9dition=20disponib?= =?UTF-8?q?le=20depuis=20le=20mode=20debug=20en=20cliquant=20sur=20le=20lo?= =?UTF-8?q?go?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Il est possible de créer des liens entre les niveaux ou de les défaire et de bouger les niveaux ainsi que les suprimer et en créer de nouveaux (limite 10). --- WireChem.py | 159 +++++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 140 insertions(+), 19 deletions(-) diff --git a/WireChem.py b/WireChem.py index 1824882..a1764cd 100644 --- a/WireChem.py +++ b/WireChem.py @@ -159,8 +159,6 @@ def init(): reference(Uworlds,['world','level']) if len(sys.argv)>1 and sys.argv[1]=='debug': debug=1 - elif len(sys.argv)>1 and sys.argv[1]=='edit' : - debug=2 else: debug=0 @@ -237,6 +235,7 @@ class abutton(object): def __init__(self, window, name, x, y, width, height , active, hilite, visible, selected, content, hint, typeof, text, text2): self.name=name + self.time=0 self.index=0 self.enter=0 self.x=x @@ -264,13 +263,12 @@ class abutton(object): del self self=None - def launch(self,state): global debug name=self.name.split('_') if len(name)>1 and hasattr(self.window, "on_mouse_"+state['event']+"_"+name[0]) and callable(eval("self.window.on_mouse_"+state['event']+"_"+name[0])): eval("self.window.on_mouse_"+state['event']+"_"+name[0]+"("+str(name[1])+","+str(state)+")") - if debug>0: print state + if debug>0: print state,self.name if hasattr(self.window, "on_mouse_"+state['event']+"_"+self.name) and callable(eval("self.window.on_mouse_"+state['event']+"_"+self.name)): if self.typeof=='multicon': self.index+=1 @@ -278,10 +276,14 @@ class abutton(object): self.index=0 self.update(0) eval("self.window.on_mouse_"+state['event']+"_"+self.name+"("+str(state)+")") - if debug>0: print state + if debug>0: print state,self.name def on_mouse_press(self, x, y, button, modifiers): if x>self.x and y>self.y and x=len(worlds[world]): + self.levels[l].x=-150 + self.untitled[l].x=-150 + self.untitled2[l].x=-150 + self.lock[l].x=-150 + continue ele=worlds[world][l] - self.levels[l].active=(world,l) in finished + self.levels[l].active=(world,l) in finished or debug==2 self.levels[l].x=ele['_xx'] self.levels[l].y=ele['_yy']/768.0*self.height self.levels[l].setselected([255,120+int(ele['_xx']/1024.0*135),155+int(ele['_xx']/1024.0*100)]) @@ -467,30 +477,59 @@ class menu(pyglet.window.Window): self.untitled2[l].text=ele['nom'].decode('utf-8') self.untitled2[l].x=ele['_xx']-(self.untitled2[l].content_width-self.images[world].width)/2 self.untitled2[l].y=ele['_yy']/768.0*self.height-15 - if (world,l) in finished: + if (world,l) in finished or debug==2: self.untitled2[l].color=(255,255,255,255) else: self.untitled2[l].color=(90,90,90,255) - self.lock[l].visible=(world,l) not in finished + self.lock[l].visible=(world,l) not in finished and not debug==2 self.lock[l].x=ele['_xx']+10 self.lock[l].y=ele['_yy']/768.0*self.height+50 if ele['nom']==obj['nom']: self.special.x=ele['_xx'] self.special.y=ele['_yy'] + + def drawLaser(self,x1,y1,x2,y2,width,power,color,randomize): + while(width > 0): + if randomize!=0: glLineStipple(random.randint(0,randomize),random.randint(0,65535)) + glLineWidth(width) + glBegin(GL_LINES) + glColor3ub(min(color[0]+power*width,255),min(color[1]+power*width,255),min(color[2]+power*width,255)) + glVertex2i(x1,y1) + glVertex2i(x2,y2) + width=width-1 + glEnd() + glLineStipple(1,65535) def draw(self,dt): - global loc - glClearColor(0,0,0,255) - self.clear() + global loc,world,worlds + glClear(GL_COLOR_BUFFER_BIT); #self.fond.anchor_x=self.loc[0] #self.fond.anchor_y=self.loc[1] + glColor4ub(255,255,255,160) self.fond.blit(self.loc[0],self.loc[1]) self.fond.blit(self.loc[0]-1024,self.loc[1]) self.fond.blit(self.loc[0]-1024,self.loc[1]-768) self.fond.blit(self.loc[0],self.loc[1]-768) #self.fond.blit_tiled(0, 0, 0, self.width, self.height) + '''for ele in worlds[world]: + for n in ele['link']: + if n!="" and n[0]==world: + if n in finished: + self.drawLaser(ele['_xx']+50,int(ele['_yy']/768.0*self.height+50),worlds[n[0]][n[1]]['_xx']+50,int(worlds[n[0]][n[1]]['_yy']/768.0*self.height+50),random.randint(0,8),20,self.colors[world],12) + else: + self.drawLaser(ele['_xx']+50,int(ele['_yy']/768.0*self.height+50),worlds[n[0]][n[1]]['_xx']+50,int(worlds[n[0]][n[1]]['_yy']/768.0*self.height+50),2,20,[40,40,40],0) ''' self.batch.draw() + def on_mouse_press_logo(self, state): + global debug + if debug==1: + debug=2 + self.buttons[0].setselected([255,0,0]) + elif debug==2: + debug=1 + self.buttons[0].setselected(False) + self.update() + def on_mouse_press_menu_2(self, state): pyglet.app.exit() @@ -507,6 +546,53 @@ class menu(pyglet.window.Window): def on_mouse_enter_menu(self, n, state): self.buttons[2+n].setselected([255,0,0]) + def on_mouse_double_level(self, n, state): + if debug<2: + return + for ele in worlds[world]: + try: + del ele['special'] + except: + dummy=0 + worlds[world][n]["special"]=True + self.update() + + def on_mouse_drag_level(self, n, state): + global worlds,world + if debug<2: + return + if state['buttons']==2: + worlds[world][n]["_xx"]+=state['dx'] + worlds[world][n]["_yy"]+=state['dy'] + self.update() + elif (state['buttons']==1 or state['buttons']==4) and self.selected==-1: + self.selected=n + + def on_mouse_release_level(self, n, state): + global worlds,world + if debug<2: + return + if state['buttons']==1 and self.selected>-1 and n!=self.selected: + try: + worlds[world][n]["link"].index((world,self.selected))==-1 + except: + try: + worlds[world][self.selected]["link"].index((world,n))==-1 + except: + worlds[world][n]["link"].append((world,self.selected)) + self.selected=-1 + elif state['buttons']==4 and self.selected>-1 and n!=self.selected: + try: + worlds[world][n]["link"].remove((world,self.selected)) + except: + dummy=0 + try: + worlds[world][self.selected]["link"].remove((world,n)) + except: + dummy=0 + else: + self.selected=-1 + def on_mouse_leave_menu(self, n, state): self.buttons[2+n].setselected(False) @@ -520,8 +606,42 @@ class menu(pyglet.window.Window): self.untitled2[n].color=(255,255,255,255) def on_mouse_press_level(self, n, state): - print "level "+str(n) - + if debug==2: + self.selected=-1 + if state['modifiers']==17: + del worlds[world][n] + self.update() + return + + def on_mouse_press(self, x, y, button, modifiers): + if debug<2: + return + if modifiers==18 and len(worlds[world])<10: + worlds[world].append({'nom': 'nouveau', + 'description': "niveau tout neuf.", + 'element': 'x', + 'current': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 'victory': [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + 'cout': 0, + 'tech': 0, + 'cycle': 0, + 'maxcycle': 99999, + 'nrj': 0, + 'maxnrj': 99999, + 'rayon': 0, + 'maxrayon': 99999, + 'temp': 0, + 'maxtemp': 99999, + '_xx': x, + '_yy': y, + 'link': [], + 'video': False, + 'special': False, + 'world_art': [[0,0,0],[0,0,0],[0,0,0]], + 'world_new': [[0,0,0],[0,0,0],[0,0,0]]}) + self.update() + + ''' *********************************************************************************************** ''' ''' Lancement du menu principal ''' @@ -533,6 +653,7 @@ pyglet.font.add_file('font/LiberationMono-Regular.ttf') menu_principal = menu() menu_principal.set_minimum_size(1024, 768) glEnable(GL_BLEND); +glEnable(GL_STENCIL_TEST); glEnable(GL_LINE_SMOOTH); glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); glEnable(GL_LINE_STIPPLE)