from eventutils import event_handler, EventDispatcher, EventHandlerMixin
from cursors import WarpingCursor
from config import FRAMERATE
+from config import INSTRUMENTS
from globals import BACKGROUND_LAYER
from globals import FOREGROUND_LAYER
from globals import CURSOR_LAYER
rows = 3
cols = 3
- instruments = ['accordeon', 'celesta', 'flute', 'guitare', 'orgue', 'piano', 'tuba', 'violon', 'violoncelle']
+ instruments = INSTRUMENTS
def __init__(self) :
super(InstrumentSelector, self).__init__()
tileHeight = int(round(float(screen.get_height()) / self.rows))
self.tiles = []
- instrus = self.instruments[:]
+ instrus = list(self.instruments[:])
for y in range(self.cols) :
for x in range(self.rows) :
upperLeftCorner = (x * tileWidth, y * tileHeight)
rect = pygame.Rect(upperLeftCorner, (tileWidth, tileHeight))
+ # !!! s'il y avait plus de 3x3 tuiles !!!, il faudrait alors
+ # changer le tuple (x,y) qui concerne le point d'application de l'homotétie.
+ # Cf. InstrumentTile.inflate
tile = InstrumentTile(instrus.pop(0), self, rect, (x,y))
self.add(tile, layer=BACKGROUND_LAYER)
self.tiles.append(tile)
self.stop()
@event_handler(pygame.MOUSEMOTION)
- #@event_handler(pygame.MOUSEBUTTONDOWN)
def onMouseMove(self, event) :
for tile in reversed(self.sprites()[:-1]) :
if tile.rect.collidepoint(*event.pos) :
self._inflatedTile = tile
+ @event_handler(pygame.MOUSEBUTTONDOWN)
+ def selectInstrument(self, event) :
+ for tile in reversed(self.sprites()[:-1]) :
+ if tile.rect.collidepoint(*event.pos) :
+ self.selectedInstrument = tile.instrumentDescription
+ self.stop()
+ break
BORDER = 10
INFLATE_ZOOM = 0.4
- def __init__(self, name, group, rect, coords) :
+ def __init__(self, instrumentDescription, group, rect, coords) :
pygame.sprite.DirtySprite.__init__(self, group)
self.inflated = False
- self.name = name
+ self.instrumentDescription = instrumentDescription
self.rect = rect
self._baseRect = rect.copy()
self.coords = coords
- imagePath = InstrumentTile._get_instrument_image(name)
+ imagePath = InstrumentTile._get_instrument_image(instrumentDescription['name'])
self._img = pygame.image.load(imagePath)
self.update()
innerSize = innerWidth, innerHeight
border = pygame.Surface(self.rect.size)
- border.fill((0,0,0,255))
+ border.fill((0xdd,0xdd,0xdd,255))
bg = pygame.Surface(innerSize)
bg.fill((255,255,255,255))