X-Git-Url: https://scm.cri.ensmp.fr/git/minwii.git/blobdiff_plain/e7854ed82aa375273bfbf772493739f875817061..46f3ffd7fdde386f41020171b5733e55a8e64a85:/src/app/minwii.py diff --git a/src/app/minwii.py b/src/app/minwii.py deleted file mode 100755 index 55ea722..0000000 --- a/src/app/minwii.py +++ /dev/null @@ -1,157 +0,0 @@ -# -*- coding: utf-8 -*- -""" -l'application winwii - -$Id$ -$URL$ -""" - -import pygame -from pgu.gui import Desktop -from pgu.gui import QUIT -from widgets.launch import LaunchScreen -from widgets.home import Home -from widgets.playingscreen import SongPlayingScreen, PlayingScreen -from widgets.instrumentselector import InstrumentSelector -from synth import Synth -from eventutils import EventDispatcher -from musicxml import musicXml2Song -from config import SONG_FILE_PATH -from globals import PLAYING_MODES_DICT -from log import console, LOG_FORMAT_VERSION, envLogger - - -class MinWii(object): - - def __init__(self, wiimoteSupport=True) : - envLogger.info('winwii log format version : %s', LOG_FORMAT_VERSION) - self.wiimoteSupport = wiimoteSupport - LaunchScreen() - self.app = Desktop() - self.synth = Synth() - self.screenResolution = (1024,768) - envLogger.info('résolution écran : %s', self.screenResolution) - self.nwiimotes = 0 - self.initWiimotes() - self.firstSong = True - - def initWiimotes(self) : - if self.wiimoteSupport : - from pywiiuse import pygame_wiimouse - pygame_wiimouse.init(4, 5, self.screenResolution) # look for 4, wait 5 seconds - self.nwiimotes = nwiimotes = pygame_wiimouse.get_count() - console.debug('wiimotes found : %d', nwiimotes) - self.WT = WT = pygame_wiimouse.WT - WT.pause() - else : - self.WT = _WTFacade() - - def run(self) : - "séquençage de l'affichage des écrans" - - pygame.display.set_mode(self.screenResolution) - pygame.display.set_caption('MinWii') - WT = self.WT - - while True : - - exit, songFile, playMode, selectedWiimoteIndex = self.selectSongAndOptions() - if exit : break - - WT.selectWiimote(selectedWiimoteIndex) - WT.resume() - - instrumentDescription = self.selectInstrument() - if not instrumentDescription : - WT.pause() - continue - - self.runPlayingScreen(songFile, playMode, instrumentDescription) - - WT.pause() - - - def selectSongAndOptions(self) : - """ lance l'écran de paramétrage et retourne un tuple comportant : - - drapeau de sortie de l'application (booléen) - - chemin du fichier de la chanson - - mode (entier) - - wiimote sélectionnée (entier) - """ - home = Home(songPath=SONG_FILE_PATH, - nwiimotes=self.nwiimotes) - app = self.app - home.connect(QUIT, app.quit) - app.run(home) - app.close(home) - - #logging - if home.exitApp : - console.debug("sortie de l'application") - else : - actual_wiimotes = self.WT.get_count() - if self.firstSong : - self.firstSong = False - else : - envLogger.info('NEW_LOG_FILE') - console.info('chanson : %s', home.songFile) - console.info('mode : %s', home.modeSelect.value) - if actual_wiimotes is None : - console.info('HID : souris') - elif actual_wiimotes == 0 : - console.info('HID : souris (pas de wiimote trouvée)') - else : - console.info('HID : wiimote %d', home.selectedWiimote.value + 1) - #--- - - return (home.exitApp, - home.songFile, - home.modeSelect.value, - home.selectedWiimote.value) - - def selectInstrument(self) : - """ lance l'écran de sélection de l'instrument et retourne - un dictionnaire comportant la description de l'instrument - """ - selector = InstrumentSelector() - selector.run() - selector.stop() - pygame.event.clear() - EventDispatcher.reset() - instru = selector.selectedInstrument - if instru : - console.info('instrument : %s', instru['name']) - console.info('preset : %d', instru['preset']) - console.info('bank : %d', instru['bank']) - console.info('ajustement octave : %d', instru['octave']) - return instru - - def runPlayingScreen(self, songFile, playMode, instrumentDescription) : - """ Lance l'écran de jeu principal avec la chanson 'songFile' dans le mode 'playMode' - avec l'instrument midi 'instrumentDescription'. - """ - playMode = PLAYING_MODES_DICT[playMode] - song = musicXml2Song(songFile) - bank, preset = instrumentDescription['bank'], instrumentDescription['preset'] - octave = instrumentDescription['octave'] - self.synth.adjust_octave(0, octave) - self.synth.program_select(0, bank, preset) - playingScreen = SongPlayingScreen(self.synth, song, mode=playMode) - playingScreen.run() - pygame.event.clear() - EventDispatcher.reset() - - -class _WTFacade : - """ Classe utilitaire pour singer l'api - de pygame_wiimouse en cas d'abscence de wiimote. - """ - selectWimoteIndex = 0 - def pause(self): - pass - def resume(self): - pass - def selectWiimote(self, i): - pass - def get_count(self) : - return None