1 # -*- coding: utf-8 -*-
10 from pgu
.gui
import Desktop
11 from pgu
.gui
import QUIT
12 from minwii
.widgets
.launch
import LaunchScreen
13 from minwii
.widgets
.home
import Home
14 from minwii
.widgets
.playingscreen
import SongPlayingScreen
, PlayingScreen
15 from minwii
.widgets
.instrumentselector
import InstrumentSelector
16 from minwii
.synth
import Synth
17 from minwii
.eventutils
import EventDispatcher
18 from minwii
.musicxml
import musicXml2Song
19 from minwii
.config
import SONG_FILE_PATH
20 from minwii
.globals import PLAYING_MODES_DICT
21 from minwii
.log
import console
, LOG_FORMAT_VERSION
, envLogger
26 def __init__(self
, wiimoteSupport
=True, fullscreen
=False) :
27 envLogger
.info('winwii log format version : %s', LOG_FORMAT_VERSION
)
28 self
.wiimoteSupport
= wiimoteSupport
29 self
.fullscreen
= fullscreen
33 self
.screenResolution
= (1024,768)
34 envLogger
.info('résolution écran : %s', self
.screenResolution
)
39 def initWiimotes(self
) :
40 if self
.wiimoteSupport
:
41 from pywiiuse
import pygame_wiimouse
42 from minwii
.config
import IR_POSITION
43 pygame_wiimouse
.init(4, 5, self
.screenResolution
, IR_POSITION
) # look for 4, wait 5 seconds
44 self
.nwiimotes
= nwiimotes
= pygame_wiimouse
.get_count()
45 console
.debug('wiimotes found : %d', nwiimotes
)
46 self
.WT
= WT
= pygame_wiimouse
.WT
52 "séquençage de l'affichage des écrans"
55 displayFlags
= displayFlags | pygame
.FULLSCREEN
56 pygame
.display
.set_mode(self
.screenResolution
, displayFlags
)
57 pygame
.display
.set_caption('MINWii')
62 exit
, songFile
, playMode
, selectedWiimoteIndex
= self
.selectSongAndOptions()
65 WT
.selectWiimote(selectedWiimoteIndex
)
68 instrumentDescription
= self
.selectInstrument()
69 if not instrumentDescription
:
73 self
.runPlayingScreen(songFile
, playMode
, instrumentDescription
)
78 def selectSongAndOptions(self
) :
79 """ lance l'écran de paramétrage et retourne un tuple comportant :
80 - drapeau de sortie de l'application (booléen)
81 - chemin du fichier de la chanson
83 - wiimote sélectionnée (entier)
85 home
= Home(songPath
=SONG_FILE_PATH
,
86 nwiimotes
=self
.nwiimotes
)
88 home
.connect(QUIT
, app
.quit
)
94 console
.debug("sortie de l'application")
96 actual_wiimotes
= self
.WT
.get_count()
98 self
.firstSong
= False
100 envLogger
.info('NEW_LOG_FILE')
101 console
.info('chanson : %s', home
.songFile
)
102 console
.info('mode : %s', home
.modeSelect
.value
)
103 if actual_wiimotes
is None :
104 console
.info('HID : souris')
105 elif actual_wiimotes
== 0 :
106 console
.info('HID : souris (pas de wiimote trouvée)')
108 console
.info('HID : wiimote %d', home
.selectedWiimote
.value
+ 1)
111 return (home
.exitApp
,
113 home
.modeSelect
.value
,
114 home
.selectedWiimote
.value
)
116 def selectInstrument(self
) :
117 """ lance l'écran de sélection de l'instrument et retourne
118 un dictionnaire comportant la description de l'instrument
120 selector
= InstrumentSelector()
124 EventDispatcher
.reset()
125 instru
= selector
.selectedInstrument
127 console
.info('instrument : %s', instru
['name'])
128 console
.info('preset : %d', instru
['preset'])
129 console
.info('bank : %d', instru
['bank'])
130 console
.info('ajustement octave : %d', instru
['octave'])
133 def runPlayingScreen(self
, songFile
, playMode
, instrumentDescription
) :
134 """ Lance l'écran de jeu principal avec la chanson 'songFile' dans le mode 'playMode'
135 avec l'instrument midi 'instrumentDescription'.
137 playMode
= PLAYING_MODES_DICT
[playMode
]
138 song
= musicXml2Song(songFile
)
139 bank
, preset
= instrumentDescription
['bank'], instrumentDescription
['preset']
140 octave
= instrumentDescription
['octave']
141 self
.synth
.adjust_octave(0, octave
)
142 self
.synth
.program_select(0, bank
, preset
)
143 playingScreen
= SongPlayingScreen(self
.synth
, song
, mode
=playMode
)
146 EventDispatcher
.reset()
150 """ Classe utilitaire pour singer l'api
151 de pygame_wiimouse en cas d'abscence de wiimote.
153 selectWimoteIndex
= 0
158 def selectWiimote(self
, i
):
160 def get_count(self
) :