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) :
27 envLogger
.info('winwii log format version : %s', LOG_FORMAT_VERSION
)
28 self
.wiimoteSupport
= wiimoteSupport
32 self
.screenResolution
= (1024,768)
33 envLogger
.info('résolution écran : %s', self
.screenResolution
)
38 def initWiimotes(self
) :
39 if self
.wiimoteSupport
:
40 from pywiiuse
import pygame_wiimouse
41 pygame_wiimouse
.init(4, 5, self
.screenResolution
) # look for 4, wait 5 seconds
42 self
.nwiimotes
= nwiimotes
= pygame_wiimouse
.get_count()
43 console
.debug('wiimotes found : %d', nwiimotes
)
44 self
.WT
= WT
= pygame_wiimouse
.WT
50 "séquençage de l'affichage des écrans"
52 pygame
.display
.set_mode(self
.screenResolution
)
53 pygame
.display
.set_caption('MinWii')
58 exit
, songFile
, playMode
, selectedWiimoteIndex
= self
.selectSongAndOptions()
61 WT
.selectWiimote(selectedWiimoteIndex
)
64 instrumentDescription
= self
.selectInstrument()
65 if not instrumentDescription
:
69 self
.runPlayingScreen(songFile
, playMode
, instrumentDescription
)
74 def selectSongAndOptions(self
) :
75 """ lance l'écran de paramétrage et retourne un tuple comportant :
76 - drapeau de sortie de l'application (booléen)
77 - chemin du fichier de la chanson
79 - wiimote sélectionnée (entier)
81 home
= Home(songPath
=SONG_FILE_PATH
,
82 nwiimotes
=self
.nwiimotes
)
84 home
.connect(QUIT
, app
.quit
)
90 console
.debug("sortie de l'application")
92 actual_wiimotes
= self
.WT
.get_count()
94 self
.firstSong
= False
96 envLogger
.info('NEW_LOG_FILE')
97 console
.info('chanson : %s', home
.songFile
)
98 console
.info('mode : %s', home
.modeSelect
.value
)
99 if actual_wiimotes
is None :
100 console
.info('HID : souris')
101 elif actual_wiimotes
== 0 :
102 console
.info('HID : souris (pas de wiimote trouvée)')
104 console
.info('HID : wiimote %d', home
.selectedWiimote
.value
+ 1)
107 return (home
.exitApp
,
109 home
.modeSelect
.value
,
110 home
.selectedWiimote
.value
)
112 def selectInstrument(self
) :
113 """ lance l'écran de sélection de l'instrument et retourne
114 un dictionnaire comportant la description de l'instrument
116 selector
= InstrumentSelector()
120 EventDispatcher
.reset()
121 instru
= selector
.selectedInstrument
123 console
.info('instrument : %s', instru
['name'])
124 console
.info('preset : %d', instru
['preset'])
125 console
.info('bank : %d', instru
['bank'])
126 console
.info('ajustement octave : %d', instru
['octave'])
129 def runPlayingScreen(self
, songFile
, playMode
, instrumentDescription
) :
130 """ Lance l'écran de jeu principal avec la chanson 'songFile' dans le mode 'playMode'
131 avec l'instrument midi 'instrumentDescription'.
133 playMode
= PLAYING_MODES_DICT
[playMode
]
134 song
= musicXml2Song(songFile
)
135 bank
, preset
= instrumentDescription
['bank'], instrumentDescription
['preset']
136 octave
= instrumentDescription
['octave']
137 self
.synth
.adjust_octave(0, octave
)
138 self
.synth
.program_select(0, bank
, preset
)
139 playingScreen
= SongPlayingScreen(self
.synth
, song
, mode
=playMode
)
142 EventDispatcher
.reset()
146 """ Classe utilitaire pour singer l'api
147 de pygame_wiimouse en cas d'abscence de wiimote.
149 selectWimoteIndex
= 0
154 def selectWiimote(self
, i
):
156 def get_count(self
) :