-Mise à jour du TODO

-Ajout des icônes qui définissent les conditions de victoire des niveaux dans le menu principal
-Modification de la classe arect pour une gestion de différents modes d'affichage et des couches
-Suspension de la musique en mode édition pour fluidifier
-Retirer le smoothing des lignes afin de fluidifier l'affichage
-Affichage du descriptif des niveaux
This commit is contained in:
Le_dahut 2014-06-13 16:54:42 +02:00
parent eee0cd6aab
commit 1a0b6f9987
2 changed files with 59 additions and 33 deletions

24
TODO.md
View File

@ -37,16 +37,11 @@ achats et récapituler la situation.
en évidence avec un icone biohazard. Il est impossible d'enregistrer et en évidence avec un icone biohazard. Il est impossible d'enregistrer et
le temps est limité. le temps est limité.
#### STRUCTURE/PROGRAMMATION #### DEVELOPPEMENT
* Modifier la méthode d'accès aux variables "dat" & "art". * Finir la version avec_class qui comporte les batchs, des classes, et
* Optimiser le code pour rendre l'usage d'OpenGL plus efficient en la gestion objet. Modifier le tutoriel en l'orientant objet.
utilisant les vertex list et les batch graphic.
* Repenser le mode simulation de façon orienté objet.
* Ajouter un makefile pour automatiser la construction du programme.
* Creer un gestionnaire de zones sensibles pour gérer le menu de
selection des labos et les bulles d'aide.
#### STATISTIQUES #### STATISTIQUES
* Gérer le stockage des statistiques de victoire dans la base de donnée * Gérer le stockage des statistiques de victoire dans la base de donnée
@ -60,15 +55,10 @@ selection des labos et les bulles d'aide.
#### CONCEPTION #### CONCEPTION
* Finir la conception du labo N°2. * Finir la conception du labo N°2.
* Créer le tutoriel pour chaque niveau du monde hydrogène.
#### FONCTIONNALITES #### FONCTIONNALITES
* Ajouter un mode création de niveau qui faciliterait l'ajout
et la configuration.
* Finir la fenêtre des préférences du jeu. * Finir la fenêtre des préférences du jeu.
* Changer la forme du curseur lors de certaines actions.
* Utiliser la molette de la souris dans le jeu.
* Mettre en évidence les raccourcis clavier dans les bulles d'aide. * Mettre en évidence les raccourcis clavier dans les bulles d'aide.
#### BOGUES #### BOGUES
@ -87,7 +77,3 @@ selection des labos et les bulles d'aide.
* Ajouter des bruitages de jeu pour rendre les simulations plus immers- * Ajouter des bruitages de jeu pour rendre les simulations plus immers-
ives. ives.
#### DOCUMENTATION/COMMUNICATION
* Améliorer les textes des documentations.

View File

@ -189,26 +189,32 @@ init()
''' '''
#Classe d'un rectangle #Classe d'un rectangle
class arect(object): class arect(object):
def __init__(self, window, x1, y1, x2, y2, color): def __init__(self, window, x1, y1, x2, y2, atype, color, level):
self.window = window self.window = window
self.vertex_list = window.batch.add(4, pyglet.gl.GL_QUADS, None, ('v2i', [x1, y1, x2, y1, x2, y2, x1, y2]), if atype==1 or atype==2:
self.vertex_list = window.batch.add(4, pyglet.gl.GL_QUADS, level, ('v2i', [x1, y1, x2, y1, x2, y2, x1, y2]),
('c4B', color * 4)) ('c4B', color * 4))
if atype==0 or atype==2:
self.vertex_list2 = window.batch.add(4, pyglet.gl.GL_LINE_LOOP, level, ('v2i', [x1, y1, x2, y1, x2, y2, x1, y2]),
('c3B', [color[0],color[1],color[2]] * 4))
#Classe d'un texte editable #Classe d'un texte editable
class atext(object): class atext(object):
def __init__(self, window, text, x, y, width, color, font, size): def __init__(self, window, text, x, y, width, height, font, size):
self.x = x self.x = x
self.y = y self.y = y
self.loaded = '' self.loaded = ''
self.text = text self.text = text
self.color = color self.color = (180, 180, 180, 255)
self.document = pyglet.text.document.UnformattedDocument(text) self.height=height
self.document = pyglet.text.document.FormattedDocument(text)
self.document.set_style(0, len(self.document.text), self.document.set_style(0, len(self.document.text),
dict(font_name=font, font_size=size, color=color, align="center", dict(font_name=font, font_size=size, color=self.color, align="center",
background_color=(200, 200, 200, 0))) background_color=(200, 200, 200, 0)))
font = self.document.get_font() if height==0:
height = font.ascent - font.descent font = self.document.get_font(0)
height = font.ascent - font.descent
self.window = window self.window = window
self.layout = pyglet.text.layout.IncrementalTextLayout(self.document, width, height, multiline=True, self.layout = pyglet.text.layout.IncrementalTextLayout(self.document, width, height, multiline=True,
batch=self.window.batch, group=self.window.p3) batch=self.window.batch, group=self.window.p3)
@ -492,6 +498,18 @@ class menu(pyglet.window.Window):
self.clocks = [clock.schedule(self.draw), clock.schedule_interval(self.movefond, 0.03)] self.clocks = [clock.schedule(self.draw), clock.schedule_interval(self.movefond, 0.03)]
self.loc = [0, 0, 1, 1] self.loc = [0, 0, 1, 1]
self.selected = -1 self.selected = -1
self.icons=[abutton(self, 'icon_1', 740, 110, 0, 0, True, False, False, False,
pyglet.image.load('picture/cout.png'), 'test', 'icon', '', ''),
abutton(self, 'icon_2', 740, 65, 0, 0, True, False, False, False,
pyglet.image.load('picture/cycle.png'), 'test', 'icon', '', ''),
abutton(self, 'icon_3', 940, 110, 0, 0, True, False, False, False,
pyglet.image.load('picture/tech.png'), 'test', 'icon', '', ''),
abutton(self, 'icon_4', 940, 65, 0, 0, True, False, False, False,
pyglet.image.load('picture/rayon.png'), 'test', 'icon', '', ''),
abutton(self, 'icon_5', 850, 110, 0, 0, True, False, False, False,
pyglet.image.load('picture/temp.png'), 'test', 'icon', '', ''),
abutton(self, 'icon_6', 850, 65, 0, 0, True, False, False, False,
pyglet.image.load('picture/nrj.png'), 'test', 'icon', '', '')]
self.images = [pyglet.image.load('picture/leveler0.png'), pyglet.image.load('picture/leveler1.png'), self.images = [pyglet.image.load('picture/leveler0.png'), pyglet.image.load('picture/leveler1.png'),
pyglet.image.load('picture/leveler2.png'), pyglet.image.load('picture/leveler3.png'), pyglet.image.load('picture/leveler2.png'), pyglet.image.load('picture/leveler3.png'),
pyglet.image.load('picture/leveler4.png')] pyglet.image.load('picture/leveler4.png')]
@ -501,6 +519,8 @@ class menu(pyglet.window.Window):
self.labels = [pyglet.text.Label("", font_name='vademecum', font_size=380, x=0, y=0, bold=False, italic=False, self.labels = [pyglet.text.Label("", font_name='vademecum', font_size=380, x=0, y=0, bold=False, italic=False,
batch=self.batch, group=self.p0, color=(255, 80, 80, 230))] batch=self.batch, group=self.p0, color=(255, 80, 80, 230))]
self.fond = image.load("picture/fond.png") self.fond = image.load("picture/fond.png")
self.rects = [arect(self,740,148,1016,8,1,[40,40,40,255],self.p1),
arect(self,8,8,1017,149,2,[90,90,90,170],self.p0)]
self.buttons = [ self.buttons = [
abutton(self, 'logo', 185, 'self.window.height-200', 0, 0, True, False, True, False, abutton(self, 'logo', 185, 'self.window.height-200', 0, 0, True, False, True, False,
pyglet.image.load('picture/logo.png'), 'test', 'icon', '', ''), pyglet.image.load('picture/logo.png'), 'test', 'icon', '', ''),
@ -513,6 +533,13 @@ class menu(pyglet.window.Window):
abutton(self, 'menu_2', 940, 'self.window.height-100', 0, 0, True, False, True, False, abutton(self, 'menu_2', 940, 'self.window.height-100', 0, 0, True, False, True, False,
pyglet.image.load('picture/exit2.png'), 'test', 'icon', '', '') pyglet.image.load('picture/exit2.png'), 'test', 'icon', '', '')
] ]
self.infos = [atext(self, "c un test", 12, 8, 730, 140, 'OpenDyslexicAlta', 15)]
self.infos[0].layout.begin_update()
self.infos[0].color=(255,255,255,255)
self.infos[0].layout.document.set_style(0, len(self.infos[0].layout.document.text), dict(align="left"))
self.infos[0].layout.end_update()
self.infos[0].text=" "
self.infos[0].update()
self.levels = [ self.levels = [
abutton(self, 'level_0', -250, 0, 0, 0, True, False, True, False, self.images[level], 'test', 'icon', '', abutton(self, 'level_0', -250, 0, 0, 0, True, False, True, False, self.images[level], 'test', 'icon', '',
''), ''),
@ -537,9 +564,9 @@ class menu(pyglet.window.Window):
abutton(self, 'level_10', -250, 0, 0, 0, True, False, True, False, self.images[level], 'test', 'icon', '', abutton(self, 'level_10', -250, 0, 0, 0, True, False, True, False, self.images[level], 'test', 'icon', '',
'') '')
] ]
self.untitled2 = [atext(self, "text", -300, -300, 300, (255, 255, 255, 255), 'Fluoxetine', 18) for i in self.untitled2 = [atext(self, "text", -300, -300, 300, 0, 'Fluoxetine', 18) for i in
range(10)] range(10)]
self.untitled = [atext(self, "text", -300, -300, 60, (180, 180, 180, 255), 'Vademecum', 23) for i in range(10)] self.untitled = [atext(self, "text", -300, -300, 60, 0, 'Vademecum', 23) for i in range(10)]
self.special = pyglet.sprite.Sprite(pyglet.image.load('picture/boss.png'), batch=self.batch, group=self.p4, self.special = pyglet.sprite.Sprite(pyglet.image.load('picture/boss.png'), batch=self.batch, group=self.p4,
x=-300, y=-300) x=-300, y=-300)
self.lock = [ self.lock = [
@ -725,10 +752,12 @@ class menu(pyglet.window.Window):
global debug global debug
if debug == 1: if debug == 1:
debug = 2 debug = 2
ambiance.pause()
self.buttons[0].setselected([255, 0, 0]) self.buttons[0].setselected([255, 0, 0])
elif debug == 2: elif debug == 2:
debug = 1 debug = 1
self.buttons[0].setselected(False) self.buttons[0].setselected(False)
ambiance.play()
self.update() self.update()
def on_mouse_press_menu_2(self, state): def on_mouse_press_menu_2(self, state):
@ -801,16 +830,27 @@ class menu(pyglet.window.Window):
self.buttons[2 + n].setselected(False) self.buttons[2 + n].setselected(False)
def on_mouse_enter_level(self, n, state): def on_mouse_enter_level(self, n, state):
global world global world,worlds
self.levels[n].setselected([255, 0, 0]) self.levels[n].setselected([255, 0, 0])
self.untitled2[n].color = (255, 0, 0, 255) self.untitled2[n].color = (255, 0, 0, 255)
self.untitled2[n].update() self.untitled2[n].update()
self.infos[0].text=worlds[world][n]['description'].decode('utf-8')
self.infos[0].update()
if worlds[world][n]['cout']>0: self.icons[0].show()
if worlds[world][n]['maxcycle']<90000: self.icons[1].show()
if worlds[world][n]['tech']>0: self.icons[2].show()
if worlds[world][n]['maxrayon']<90000: self.icons[3].show()
if worlds[world][n]['maxtemp']<90000: self.icons[4].show()
if worlds[world][n]['maxnrj']<90000: self.icons[5].show()
def on_mouse_leave_level(self, n, state): def on_mouse_leave_level(self, n, state):
self.levels[n].setselected( self.levels[n].setselected(
[255, 120 + int(self.levels[n].x / 1024.0 * 135), 155 + int(self.levels[n].x / 1024.0 * 100)]) [255, 120 + int(self.levels[n].x / 1024.0 * 135), 155 + int(self.levels[n].x / 1024.0 * 100)])
self.untitled2[n].color = (255, 255, 255, 255) self.untitled2[n].color = (255, 255, 255, 255)
self.untitled2[n].update() self.untitled2[n].update()
self.infos[0].text=" "
self.infos[0].update()
for theicon in self.icons: theicon.hide()
def on_mouse_press_level(self, n, state): def on_mouse_press_level(self, n, state):
if debug == 2: if debug == 2:
@ -966,9 +1006,9 @@ ambiance.play()
menu_principal = menu() menu_principal = menu()
menu_principal.set_minimum_size(1024, 768) menu_principal.set_minimum_size(1024, 768)
glEnable(GL_BLEND); glEnable(GL_BLEND);
glEnable(GL_STENCIL_TEST); #glEnable(GL_STENCIL_TEST);
glEnable(GL_LINE_SMOOTH); #glEnable(GL_LINE_SMOOTH);
glHint(GL_LINE_SMOOTH_HINT, GL_NICEST); #glHint(GL_LINE_SMOOTH_HINT, GL_FASTEST);
glEnable(GL_LINE_STIPPLE) glEnable(GL_LINE_STIPPLE)
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
pyglet.app.run() pyglet.app.run()