-'''\r
-Created on 12 nov. 2009\r
-\r
-@author: Samuel Benveniste\r
-'''\r
-from logging.FamiliarizerLog import FamiliarizerLog\r
-\r
-import os\r
-import sys\r
-import subprocess\r
-\r
-import pygame\r
-import pygame.midi\r
-import pickle\r
-\r
-from pygame.locals import *\r
-\r
-from pgu import gui\r
-\r
-from StaticFamiliarizer import StaticFamiliarizer\r
-from SongFamiliarizer import SongFamiliarizer\r
-from instruments.Instrument import Instrument\r
-from cursor.WarpingCursor import *\r
-from controllers.Wiimote import Wiimote\r
-from logging.FamiliarizerLog import FamiliarizerLog\r
-from songs.Song import Song\r
-from constants import *\r
-from SongPlayingScreen import SongPlayingScreen\r
-from DummyInstrumentChoice import DummyInstrumentChoice\r
-\r
-class FamiliarizerPGUConfiguration(gui.Desktop):\r
- '''\r
- classdocs\r
- '''\r
-\r
-\r
- def __init__(self,window,defaultParams = False):\r
- '''\r
- Constructor\r
- '''\r
- gui.Desktop.__init__(self)\r
- self.done = False\r
- self.level = 0\r
- self.scale = scaleDict["majorScale"]\r
- self.fileName = fileName\r
- self.log = None\r
- self.activeWiimotes = [False for i in range(4)] \r
- \r
- pygame.font.init()\r
-\r
- self.titleFont = pygame.font.Font(None,100)\r
- self.font = pygame.font.Font(None,70)\r
- self.spaceSize = (100,100)\r
- \r
- self.goButton = gui.Button(self.createLabel("Go"))\r
- self.goButton.connect(gui.CLICK,self.goButtonClicked,None)\r
- \r
- self.quitButton = gui.Button(self.createLabel("Fin"))\r
- self.quitButton.connect(gui.CLICK,self.quitButtonClicked,None)\r
- \r
- self.levelSelect = gui.Select()\r
- for i in range(3) :\r
- self.levelSelect.add(self.createLabel(str(i+1)),i)\r
- self.levelSelect.connect(gui.CHANGE,self.levelSelectChanged,None)\r
- \r
- self.activeWiimoteSwitches = [gui.Switch(False) for i in range(4)]\r
- for i in range(len(self.activeWiimoteSwitches)) :\r
- self.activeWiimoteSwitches[i].connect(gui.CHANGE,self.activeWiimoteSwitchesChanged,i) \r
- \r
- self.connect(gui.QUIT,self.quit,None)\r
- \r
- self.window = window\r
- \r
- ##The table code is entered much like HTML.\r
- ##::\r
- mainContainer = gui.Table() \r
- \r
- c = gui.Table()\r
- \r
-# c.tr()\r
-# c.td(self.createLabel("MINWii",self.titleFont),colspan = 4)\r
- \r
- c.tr()\r
- c.td(gui.Spacer(*self.spaceSize))\r
- \r
- c.tr()\r
- c.td(self.createLabel("Niveau :"))\r
- c.td(self.levelSelect,colspan=3)\r
- \r
- c.tr()\r
- c.td(gui.Spacer(*self.spaceSize))\r
- \r
- c.tr()\r
- c.td(self.createLabel("Joueurs :", self.font))\r
- playerTable = gui.Table()\r
- for i in range(len(self.activeWiimoteSwitches)):\r
- playerTable.td(self.createLabel(" " + str(i+1)+" ", self.font))\r
- playerTable.td(self.activeWiimoteSwitches[i])\r
- c.td(playerTable,colspan = 3)\r
- \r
- c.tr()\r
- c.td(gui.Spacer(*self.spaceSize))\r
- \r
- c.tr()\r
- c.td(self.goButton)\r
- c.td(self.quitButton,colspan=3) \r
- \r
- c.tr()\r
- c.td(gui.Spacer(500,500))\r
- \r
- mainContainer.add(c,0,0)\r
- \r
- if defaultParams :\r
- self.goButtonClicked()\r
- else :\r
- self.run(mainContainer)\r
- \r
- def open_file_browser(self,data=None):\r
- d = gui.FileDialog()\r
- d.connect(gui.CHANGE, self.handle_file_browser_closed, d)\r
- d.open()\r
- \r
-\r
- def handle_file_browser_closed(self,dlg):\r
- if dlg.value:\r
- self.file = dlg.value\r
- \r
- def createLabel(self,text,font = None):\r
- if font == None :\r
- font = self.font\r
- w,h = self.font.size(text)\r
- label = gui.Label(text,width=w,height=h,font = font)\r
- return(label)\r
- \r
- def levelSelectChanged(self,data=None):\r
- self.level = self.levelSelect.value\r
- \r
- def quitButtonClicked(self,data = None):\r
- self.done = True\r
- self.quit()\r
- \r
- def activeWiimoteSwitchesChanged(self,data = None):\r
- if self.activeWiimoteSwitches[data].value :\r
- for i in range(len(self.activeWiimoteSwitches)) :\r
- if self.activeWiimoteSwitches[i].value and data != i :\r
- self.activeWiimoteSwitches[i].click() \r
- for i in range(len(self.activeWiimoteSwitches)) :\r
- self.activeWiimotes[i] = self.activeWiimoteSwitches[i].value\r
- \r
- def hasActiveWiimote(self):\r
- hasActive = False\r
- for active in self.activeWiimotes :\r
- if active :\r
- hasActive = True\r
- break\r
- return(hasActive)\r
- \r
-\r
- \r
- \r
- def goButtonClicked(self,data = None): \r
- \r
- pygame.midi.init()\r
- instruments = [Instrument(self.scale, i + 1, "".join(["../instruments/instrumentImages/", instrumentImagePathList[i], ".jpg"]), octaves[i]) for i in range(9)]\r
- \r
- joys = [[id,pygame.joystick.Joystick(id).get_name()] for id in range(pygame.joystick.get_count())]\r
- for joy in joys:\r
- if joy[1] in joyNames:\r
- pygame.joystick.Joystick(joy[0]).init() \r
- \r
- ports = [pygame.midi.get_device_info(id)[1] for id in range(pygame.midi.get_count())]\r
- portOffset = ports.index(portNames[0])\r
- print(portOffset)\r
- \r
- screen = pygame.display.get_surface()\r
- clock = pygame.time.Clock() \r
- cursorImages=[['../cursor/cursorImages/black/10.png'],['../cursor/cursorImages/red/10.png'],['../cursor/cursorImages/blue/10.png'],['../cursor/cursorImages/green/10.png']]\r
- durations = [75 for i in range(len(cursorImages))]\r
- \r
- extsc = True\r
- casc = False\r
- easyMode = True\r
- \r
- song = Song(scaleDict["majorScale"],[3,9,6,4,1,8,5,7,2,10],True)\r
-\r
- wiimoteCount = 4\r
- \r
- cursors = [WarpingCursor(None, cursorImages[i], durations, (300 * i, 300 * i),'../cursor/cursorImages/black/flash.png') for i in range(wiimoteCount)]\r
- wiimotes = [Wiimote(i, i + portOffset, None, instruments[0], cursors[i]) for i in range(wiimoteCount)]\r
- dummyInstrumentChoice = DummyInstrumentChoice(wiimotes, self.window, screen, clock, joys, portOffset, self.activeWiimotes)\r
- if not self.hasActiveWiimote():\r
- self.activeWiimotes[0] = True\r
- if self.level < 2 :\r
- familiarize = StaticFamiliarizer(wiimotes, self.window, screen, clock, joys, portOffset,self.activeWiimotes,level = self.level)\r
- elif familiarize.nextLevel == 2 :\r
- familiarize = SongFamiliarizer(wiimotes, self.window, screen, clock, joys, portOffset,song,self.activeWiimotes,casc,extsc,easyMode)\r
- else :\r
- familiarize = SongPlayingScreen(dummyInstrumentChoice,songDict["clairdelalune"],easyMode = True)\r
- \r
- while familiarize.nextLevel != None :\r
- if familiarize.nextLevel < 2 :\r
- familiarize = StaticFamiliarizer(wiimotes, self.window, screen, clock, joys, portOffset,self.activeWiimotes,level = familiarize.nextLevel,eventLog = familiarize.eventLog)\r
- elif familiarize.nextLevel == 2 :\r
- familiarize = SongFamiliarizer(wiimotes, self.window, screen, clock, joys, portOffset,song,self.activeWiimotes,casc,extsc,easyMode,eventLog = familiarize.eventLog)\r
- else :\r
- familiarize = SongPlayingScreen(dummyInstrumentChoice,songDict["clairdelalune"],easyMode = True,eventLog = familiarize.eventLog)\r
- \r
- for wiimote in wiimotes:\r
- del wiimote.port \r
- \r
- pygame.midi.quit()\r
- \r
- i = 1 \r
- filePath = "".join([self.fileName,str(i),".fmwi"]) \r
- while os.path.exists(filePath):\r
- i += 1\r
- filePath = "".join([self.fileName,str(i),".fmwi"])\r
- \r
- f = file(filePath, 'w')\r
- self.log = FamiliarizerLog(familiarize.eventLog,self.level,self.activeWiimotes)\r
- pickler = pickle.Pickler(f)\r
- pickler.dump(self.log)\r
- \r
- f.close()\r
- \r
- self.repaint()\r
- \r
-if __name__ == "__main__" :\r
- pygame.init()\r
- modeResolution = (1024,768)\r
- window = pygame.display.set_mode(modeResolution,pygame.FULLSCREEN)\r
- familiarizer = FamiliarizerPGUConfiguration(window)\r
- pygame.quit() \r
- \r
- \r
- \r
-
\ No newline at end of file