X-Git-Url: https://scm.cri.ensmp.fr/git/minwii.git/blobdiff_plain/ce0df18443db4c43ba336f802eca6143be832093..46f3ffd7fdde386f41020171b5733e55a8e64a85:/src/app/widgets/playingscreen.py?ds=sidebyside diff --git a/src/app/widgets/playingscreen.py b/src/app/widgets/playingscreen.py deleted file mode 100755 index 7944204..0000000 --- a/src/app/widgets/playingscreen.py +++ /dev/null @@ -1,161 +0,0 @@ -# -*- coding: utf-8 -*- -""" -Écran de jeu MinWii : -bandes arc-en-ciel représentant un clavier. - -$Id$ -$URL$ -""" -import pygame -from colorsys import hls_to_rgb -from gradients import gradients -from math import floor -# TODO : positionner cette constance en fonction de la résolution d'affichage -# externaliser la conf. -BORDER = 5 # 5px -FIRST_HUE = 0.6 -OFF_LUMINANCE = 0.1 -OFF_SATURATION = 1 -ON_TOP_LUMINANCE = 0.6 -ON_BOTTOM_LUMINANCE = 0.9 -ON_SATURATION = 1 - -class _PlayingScreenBase(pygame.sprite.OrderedUpdates) : - def __init__(self, distinctNotes=[]) : - """ - distinctNotes : notes disctinctes présentes dans la chanson - triées du plus grave au plus aigu. - """ - super(_PlayingScreenBase, self).__init__() - self.distinctNotes = distinctNotes - self.keyboardLength = 0 - self.keyboardRects = [] - self._initRects() - self._initColumns() - - - - def _initRects(self) : - """ création des espaces réservés pour - afficher les colonnes. - """ - ambitus = self.distinctNotes[-1].midi - self.distinctNotes[0].midi - if ambitus <= 12 : - self.keyboardLength = 8 - else : - self.keyboardLength = 11 - - screen = pygame.display.get_surface() - - # taille de la zone d'affichage utile (bordure autour) - dispWidth = screen.get_width() - 2 * BORDER - dispHeight = screen.get_height() - 2 * BORDER - - columnWidth = int(round(float(dispWidth) / self.keyboardLength)) - - rects = [] - for i in range(self.keyboardLength) : - upperLeftCorner = (i*columnWidth + BORDER, BORDER) - rect = pygame.Rect(upperLeftCorner, (columnWidth, dispHeight)) - rects.append(rect) - - self.keyboardRects = rects - - def _initColumns(self) : - - hueStep = FIRST_HUE / (self.keyboardLength - 1) - for i, rect in enumerate(self.keyboardRects) : - hue = FIRST_HUE - hueStep * i - c = Column(hue, rect) - self.add(c) - - - def highlightColumn(self, index) : - for i, sprite in enumerate(self.sprites()) : - sprite.update(i==index) - self.draw(pygame.display.get_surface()) - - - -class SongPlayingScreen(_PlayingScreenBase) : - - def __init__(self, song) : - super(SongPlayingScreen, self).__init__(song.distinctNotes) - self.song = song - -class SongPlayingScreenTest(_PlayingScreenBase) : - def __init__(self) : - class C:pass - o = C() - o.midi=1 - super(SongPlayingScreenTest, self).__init__([o]) - self.__running = True - #pygame.display.flip() - #raw_input('allez ?') - - def run(self): - while self.__running : - pygame.display.flip() - events = pygame.event.get() - for event in events: - self.input(event) - - def input(self, event) : - if event.type == pygame.KEYDOWN: - if event.key == pygame.K_q: - self.__running = False - uni = event.unicode - if uni.isdigit() and int(uni) <=8 : - self.highlightColumn(int(uni)) - - - # if event.key == pygame.K_i: - # self.backToInstrumentChoice = True - # self.done = True - # - # if event.key == pygame.K_w: - # self.nextLevel = 0 - # self.done = True - # - # if event.key == pygame.K_e: - # self.nextLevel = 1 - # self.done = True - # - # if event.key == pygame.K_r: - # self.nextLevel = 2 - # self.done = True - # - # if event.key == pygame.K_t: - # self.nextLevel = 3 - # self.done = True - - -class Column(pygame.sprite.Sprite) : - - def __init__(self, hue, rect) : - pygame.sprite.Sprite.__init__(self) - sur = pygame.surface.Surface(rect.size) - rgba = hls_to_rgba_8bits(hue, OFF_LUMINANCE, OFF_SATURATION) - sur.fill(rgba) - self.stateOff = sur - - topRgba = hls_to_rgba_8bits(hue, ON_TOP_LUMINANCE, ON_SATURATION) - bottomRgba = hls_to_rgba_8bits(hue, ON_BOTTOM_LUMINANCE, ON_SATURATION) - size = rect.inflate(2*rect.width,0).size - print rect.size, size - self.stateOn = gradients.vertical(size, topRgba, bottomRgba) - - self.image = self.stateOff - self.rect = rect - - def update(self, state) : - if state : - self.image = self.stateOn - else : - self.image = self.stateOff - -def hls_to_rgba_8bits(h, l, s) : - #convert to rgb ranging from 0 to 255 - rgba = [floor(255 * i) for i in hls_to_rgb(h, l, s) + (1,)] - return tuple(rgba) - \ No newline at end of file