f65d8e5b12f8f8ab8522bb7d4ee4330f0c8ddd68
[minwii.git] / src / app / widgets / playingscreen.py
1 # -*- coding: utf-8 -*-
2 """
3 Écran de jeu MinWii :
4 bandes arc-en-ciel représentant un clavier.
5
6 $Id$
7 $URL$
8 """
9 import pygame
10 # TODO : positionner cette constance en fonction de la résolution d'affichage
11 BORDER = 5 # 5px
12
13 class _PlayingScreenBase(object) :
14 def __init__(self, distinctNotes=[]) :
15 """
16 distinctNotes : notes disctinctes présentes dans la chanson
17 triées du plus grave au plus aigu.
18 """
19 self.distinctNotes = distinctNotes
20 self.keyboardRects = []
21 self._initRects()
22 self.drawColumns()
23
24
25 def _initRects(self) :
26 """ création des espaces réservés pour
27 afficher les colonnes.
28 """
29 ambitus = self.distinctNotes[-1].midi - self.distinctNotes[0].midi
30 if ambitus <= 12 :
31 keyboardLength = 8
32 else :
33 keyboardLength = 11
34
35 screen = pygame.display.get_surface()
36
37 # taille de la zone d'affichage utile (bordure autour)
38 dispWidth = screen.get_width() - 2 * BORDER
39 dispHeight = screen.get_height() - 2 * BORDER
40
41 columnWidth = int(round(float(dispWidth) / keyboardLength))
42
43 rects = []
44 for i in range(keyboardLength) :
45 upperLeftCorner = (i*columnWidth + BORDER, BORDER)
46 rect = pygame.Rect(upperLeftCorner, (columnWidth, dispHeight))
47 rects.append(rect)
48
49 self.keyboardRects = rects
50
51
52 def drawColumns(self) :
53 pass
54
55 def highLightColumn(self) :
56 pass
57
58
59 class SongPlayingScreen(_PlayingScreenBase) :
60
61 def __init__(self, song) :
62 super(SongPlayingScreen, self).__init__(song.)
63 self.song = song
64
65
66
67 class Column(pygame.sprite.Sprite) :
68
69 def __init__(self, color) :
70 pass