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)