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 pygame_wiimouse
.init(4, 5, self
.screenResolution
) # look for 4, wait 5 seconds
43 self
.nwiimotes
= nwiimotes
= pygame_wiimouse
.get_count()
44 console
.debug('wiimotes found : %d', nwiimotes
)
45 self
.WT
= WT
= pygame_wiimouse
.WT
51 "séquençage de l'affichage des écrans"
54 displayFlags
= displayFlags | pygame
.FULLSCREEN
55 pygame
.display
.set_mode(self
.screenResolution
, displayFlags
)
56 pygame
.display
.set_caption('MINWii')
61 exit
, songFile
, playMode
, selectedWiimoteIndex
= self
.selectSongAndOptions()
64 WT
.selectWiimote(selectedWiimoteIndex
)
67 instrumentDescription
= self
.selectInstrument()
68 if not instrumentDescription
:
72 self
.runPlayingScreen(songFile
, playMode
, instrumentDescription
)
77 def selectSongAndOptions(self
) :
78 """ lance l'écran de paramétrage et retourne un tuple comportant :
79 - drapeau de sortie de l'application (booléen)
80 - chemin du fichier de la chanson
82 - wiimote sélectionnée (entier)
84 home
= Home(songPath
=SONG_FILE_PATH
,
85 nwiimotes
=self
.nwiimotes
)
87 home
.connect(QUIT
, app
.quit
)
93 console
.debug("sortie de l'application")
95 actual_wiimotes
= self
.WT
.get_count()
97 self
.firstSong
= False
99 envLogger
.info('NEW_LOG_FILE')
100 console
.info('chanson : %s', home
.songFile
)
101 console
.info('mode : %s', home
.modeSelect
.value
)
102 if actual_wiimotes
is None :
103 console
.info('HID : souris')
104 elif actual_wiimotes
== 0 :
105 console
.info('HID : souris (pas de wiimote trouvée)')
107 console
.info('HID : wiimote %d', home
.selectedWiimote
.value
+ 1)
110 return (home
.exitApp
,
112 home
.modeSelect
.value
,
113 home
.selectedWiimote
.value
)
115 def selectInstrument(self
) :
116 """ lance l'écran de sélection de l'instrument et retourne
117 un dictionnaire comportant la description de l'instrument
119 selector
= InstrumentSelector()
123 EventDispatcher
.reset()
124 instru
= selector
.selectedInstrument
126 console
.info('instrument : %s', instru
['name'])
127 console
.info('preset : %d', instru
['preset'])
128 console
.info('bank : %d', instru
['bank'])
129 console
.info('ajustement octave : %d', instru
['octave'])
132 def runPlayingScreen(self
, songFile
, playMode
, instrumentDescription
) :
133 """ Lance l'écran de jeu principal avec la chanson 'songFile' dans le mode 'playMode'
134 avec l'instrument midi 'instrumentDescription'.
136 playMode
= PLAYING_MODES_DICT
[playMode
]
137 song
= musicXml2Song(songFile
)
138 bank
, preset
= instrumentDescription
['bank'], instrumentDescription
['preset']
139 octave
= instrumentDescription
['octave']
140 self
.synth
.adjust_octave(0, octave
)
141 self
.synth
.program_select(0, bank
, preset
)
142 playingScreen
= SongPlayingScreen(self
.synth
, song
, mode
=playMode
)
145 EventDispatcher
.reset()
149 """ Classe utilitaire pour singer l'api
150 de pygame_wiimouse en cas d'abscence de wiimote.
152 selectWimoteIndex
= 0
157 def selectWiimote(self
, i
):
159 def get_count(self
) :