diff --git a/WireChem.py b/WireChem.py index 4d966ea..ed01d3c 100644 --- a/WireChem.py +++ b/WireChem.py @@ -93,7 +93,7 @@ def loadpic(d): d[j][k]['icon'][n]=image.load(d[j][k]['icon'][n]) def initgrid(): - global savenames,menus,users,art,Uworlds,statedvar,stat_var,seestat,adirection,worlds,finished,allcout,selected,world,level,over,sizex,sizey,world_old,world_new,world_art,dat,direction,zoom,play,stat,cycle,cout,thecout,rayon,debug,temp,decx,decy,nrj,tech,victory,current,maxnrj,maxrayon,maxcycle,maxtemp,nom,descriptif,element + global msg,rect,tuto,savenames,menus,users,art,Uworlds,statedvar,stat_var,seestat,adirection,worlds,finished,allcout,selected,world,level,over,sizex,sizey,world_old,world_new,world_art,dat,direction,zoom,play,stat,cycle,cout,thecout,rayon,debug,temp,decx,decy,nrj,tech,victory,current,maxnrj,maxrayon,maxcycle,maxtemp,nom,descriptif,element ''' Directions des electrons en fonction de la position de la queue ''' direction = {} @@ -126,7 +126,8 @@ def initgrid(): allcout=[0,0,0] sizex=sizey=1 seestat=thecout=world=over=play=cycle=rayon=temp=cout=decx=decy=nrj=0 - debug=0 + debug=rect=0 + msg=tuto='' tech=selected=level=-1 statedvar=[stat[0],stat[1],stat[2],stat[3],stat[4],stat[5],stat[6],stat[7],stat[8],nrj,temp,rayon,current[7],current[8],current[9],current[10],current[11],current[12]] if len(stat_var)==0: @@ -175,7 +176,7 @@ def readlevel(w,l,user): infos() def savelevel(w,l): - global users,worlds,Uworlds,nom,descriptif,video,link,tech,cout,victory,current,cycle,nrj,rayon,temp,maxcycle,maxnrj,maxrayon,maxtemp,world_new,world_art + global tuto,users,worlds,Uworlds,nom,descriptif,video,link,tech,cout,victory,current,cycle,nrj,rayon,temp,maxcycle,maxnrj,maxrayon,maxtemp,world_new,world_art while len(Uworlds)<=w: Uworlds.append(0) Uworlds[w]=[] @@ -184,6 +185,7 @@ def savelevel(w,l): Uworlds[w][l]={'nom':nom, 'element':element, 'users':users, +'tuto':tuto, 'description':descriptif, '_xx':worlds[world][level]['_xx'], '_yy':worlds[world][level]['_yy'], @@ -865,9 +867,19 @@ def drawmenu(themenus): placex+=themenus[i][j]['size'] return - +def drawtuto(): + global tuto,rect,msg,menus + drawsquare(win.width-384,menus[0][0]['size'],win.width,menus[0][0]['size']+200,2,[40,40,40,200]) + if type(rect) is list: + drawsquare(rect[0]*win.width/1024,rect[1]*win.height/768,rect[2]*win.width/1024,rect[3]*win.height/768,2,[255,0,0,20]) + txt_message.x=win.width-384 + txt_message.y=menus[0][0]['size'] + document=pyglet.text.decode_attributed("{font_name 'OpenDyslexicAlta'}{font_size 18}{color (255, 255, 255, 255)}"+msg.decode('utf-8')+"}".encode('utf8')) + txt_message.document=document + txt_message.draw() + def drawgrid(zoom): - global temp,debug,over,allcout,play,element,seestat,art,users,menus + global temp,debug,over,allcout,play,element,seestat,art,users,menus,tuto glLineWidth(3) if play>0: drawsquare(decx-1+zoom,decy-1+zoom,decx+zoom*(sizex-1)+1,decy+zoom*(sizey-1)+2,0,[255,0,0]) @@ -902,11 +914,11 @@ def drawgrid(zoom): glVertex2i(x*zoom+decx,(y+1)*zoom+decy) glEnd() drawitem(x*zoom+decx,y*zoom+decy,art[wart(x,y)],zoom,getactive(x,y)) - drawmenu(menus) if seestat>=1: drawbigstat(seestat) if over>0: drawgameover() if over<0: drawvictory() + if tuto!='' and menus[0][12]['choose']==1: drawtuto() if allcout[2]>0: drawpopup() return @@ -1352,6 +1364,7 @@ document=pyglet.text.decode_attributed("test") txt_description=pyglet.text.layout.TextLayout(document,dpi=72,multiline=True,width=732,height=140) txt_description.x=8 txt_description.y=8 +txt_message=pyglet.text.layout.TextLayout(document,dpi=72,multiline=True,width=384,height=200) txt_cout2=pyglet.text.Label("",font_name='Mechanihan',font_size=20,x=780,y=120,bold=False,italic=False,color=(180, 180, 180,255)) txt_maxcycle2=pyglet.text.Label("",font_name='Mechanihan',font_size=20,x=780,y=75,bold=False,italic=False,color=(180, 180, 180,255)) txt_tech2=pyglet.text.Label("",font_name='Mechanihan',font_size=20,x=980,y=120,bold=False,italic=False,color=(180, 180, 180,255)) @@ -1617,7 +1630,53 @@ def testgrid(themenus,x,y,dx,dy,buttons,modifiers): if themenus[i][0]['visible'] and themenus[i][0]['selectable'] and themenus[i][0].has_key('mouse'): if buttons>0: launch(x,y,dx,dy,i,themenus[i][0]['mouse'][buttons-1],buttons,modifiers,False) + +''' *********************************************************************************************** ''' +''' Fonctions tutoriel + ''' +def compiler(): + global tuto + tutoexec=tuto.splitlines(False) + result=[] + for line in tutoexec: + clock.tick() + if line=='': continue + cmd=line.split(" ")[0].lower() + arg=line[len(cmd):].lstrip().split(',') + for i in range(len(arg)): + arg[i]=arg[i].lstrip().rstrip() + result.append((cmd,arg)) + tuto=[result,0] + +def execute(dt): + global tuto,rect,tech,msg,menus + if tuto[1]>=len(tuto[0]): return + cmd,arg=tuto[0][tuto[1]] + print cmd,arg + if cmd=='rect': + rect=[int(arg[0]),int(arg[1]),int(arg[2]),int(arg[3])] + elif cmd=='wait': + if int(arg[0])>0: dt=int(arg[0]) + elif cmd=='next': + nextgrid() + elif cmd=='del': + rect=0 + msg='' + elif cmd=='tech': + tech= int(arg[0]) + elif cmd=='msg': + msg= str(arg[0]) + elif cmd=='select': + if menus[int(arg[0])][0].has_key('mouse'): + menus[int(arg[0])][0]['mouse'][int(arg[2])]=int(arg[1]) + elif cmd=='set': + menus[int(arg[0])][int(arg[1])]['squarred']=True + elif cmd=='unset': + menus[int(arg[0])][int(arg[1])]['squarred']=False + tuto[1]+=1 + clock.schedule_once(execute,dt) + ''' *********************************************************************************************** ''' ''' Fonctions evenementielles ''' @@ -1684,7 +1743,7 @@ def on_mouse_drag(x, y, dx, dy, buttons, modifiers): @win.event def on_mouse_press(x, y, button, modifiers): - global zoom,over,level,selected,world,users,world_new,world_art,menus + global zoom,over,level,selected,world,users,world_new,world_art,menus,tuto if player.source and player.source.video_format: player.next() ambiance.play() @@ -1705,12 +1764,16 @@ def on_mouse_press(x, y, button, modifiers): elif selected==-1: return else: - readlevel(selected['world'],selected['level'],True) - if selected['video']: + '''readlevel(selected['world'],selected['level'],True)''' + readlevel(selected['world'],selected['level'],False) + if video: player.queue(pyglet.resource.media('movie/level'+str(world)+"-"+str(level)+".mp4")) player.play() ambiance.pause() selected=-1 + if type(tuto) is str and tuto!='': + compiler() + execute(0.1) return if not testmenu(menus,x,y,0,0,[mouse.LEFT,mouse.MIDDLE,mouse.RIGHT].index(button)+1,modifiers): testgrid(menus,x,y,0,0,[mouse.LEFT,mouse.MIDDLE,mouse.RIGHT].index(button)+1, modifiers) diff --git a/dbdata b/dbdata index 6128d46..4dfbbab 100644 Binary files a/dbdata and b/dbdata differ diff --git a/dbsrc b/dbsrc index 5c4fb57..13664a0 100644 --- a/dbsrc +++ b/dbsrc @@ -41,6 +41,28 @@ worlds=[[{'nom': 'Introduction', [0, 0, 0, 0, 0], [0, 0, 196637, 0, 0], [0, 0, 0, 0, 0]], +'tuto':''' +mSG CECI EST LE TUTO ;) +waIT 2 +next +wait 1 +rEct 90 ,90 ,200 , 200 +next +next +tech 8 +select 0,2,2 +set 0, 6 +wait 2 +MSg cool non ? +tech -1 +wait 4 +del +unset 0, 6 +''', + + + + 'description': "Prise en main de l'interface de WireChem{#169} et amener l'\xc3\xa9lectron neutre sur le senseur.", 'temp': 0, 'nrj': 0, @@ -1048,7 +1070,7 @@ menus=[ {'motion':'motion_popup','click': 'click_menu', 'tech':-1, 'value':'Laboratoires', 'size':45,'icon': 'picture/levels.png','variable':False,'visible':True,'separe':False,'squarred':False,'active': True}, {'motion':'motion_popup','click': ['click_fullscreen','click_windowed'], 'tech':-1, 'value':['Plein ecran','Fenetre'], 'size':45,'icon': ['picture/screen.png','picture/windows.png'], 'choose': 0,'variable':False,'visible':'win.width>1450','separe':False,'squarred':False,'active': True}, {'motion':'motion_popup','click': ['click_sound','click_nosound'], 'tech':-1, 'value':['Activer son','Desactiver son'], 'size':45, 'icon': ['picture/sound.png','picture/nosound.png'], 'choose': 0,'variable':False,'visible':'win.width>1450','separe':False,'squarred':False,'active': True}, -{'motion':'motion_popup','click': ['click_tutoriel','click_popup','click_simple'], 'tech':-1, 'value':['Activer Tutoriel','Activer Aide','Sans Aide/Tutoriel',], 'size':45,'icon': ['picture/tuto.png','picture/popup.png','picture/nothing.png'], 'choose': 2,'variable':False,'visible':True,'separe':False,'squarred':False,'active': True}, +{'motion':'motion_popup','click': ['click_tutoriel','click_popup','click_simple'], 'tech':-1, 'value':['Activer Tutoriel','Activer Aide','Sans Aide/Tutoriel',], 'size':45,'icon': ['picture/tuto.png','picture/popup.png','picture/nothing.png'], 'choose': 1,'variable':False,'visible':True,'separe':False,'squarred':False,'active': True}, {'motion':'motion_popup','click': 'click_settings', 'tech':-1, 'value':'Options...', 'size':45,'icon': 'picture/settings.png','variable':False,'visible':True,'separe':False,'squarred':False,'active': True}, {'motion':'motion_popup','click': 'click_exit', 'tech':-1, 'value':'Quitter', 'size':45,'icon': 'picture/exits.png','variable':False,'visible':True,'separe':True,'squarred':False,'active': True}, {'motion':'motion_popup','click': 'click_drag_copper', 'drag': 'click_drag_copper' ,'tech':0, 'value':'Cuivre', 'size':45,'icon': [240, 100, 38],'variable':False,'visible':True,'separe':False,'squarred':False,'active': True},