+'''\r
+Created on 28 aout 2009\r
+\r
+@author: Samuel Benveniste\r
+'''\r
+\r
+import os\r
+import sys\r
+import subprocess\r
+import re\r
+\r
+import pygame\r
+import pygame.midi\r
+import pickle\r
+\r
+from gui.constants import *\r
+\r
+from gui.PlayingScreen import PlayingScreen\r
+from gui.SongPlayingScreen import SongPlayingScreen\r
+from gui.InstrumentChoice import InstrumentChoice\r
+from instruments.Instrument import Instrument\r
+from cursor.WarpingCursor import *\r
+from controllers.Wiimote import Wiimote\r
+from songs.Song import Song\r
+\r
+\r
+class Log:\r
+ '''\r
+ classdocs\r
+ '''\r
+\r
+\r
+ def __init__(self,eventLog,scale,extendedScale,cascade,song,mode,activeWiimotes,easyMode = True):\r
+ '''\r
+ Constructor\r
+ '''\r
+ self.eventLog = eventLog\r
+ self.scale = scale\r
+ self.extendedScale = extendedScale\r
+ self.cascade = cascade\r
+ self.song = song\r
+ self.activeWiimotes = activeWiimotes\r
+ self.mode = mode \r
+ \r
+if __name__ == '__main__':\r
+ \r
+ f = file('../../saves/4-12-2009-B1-v50-1.mwi', 'r')\r
+ unpickler = pickle.Unpickler(f)\r
+ log = unpickler.load()\r
+ f.close()\r
+ \r
+ pygame.init()\r
+ pygame.midi.init()\r
+ instruments = [Instrument(scaleDict["majorScale"], 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
+ modeResolution = (1024,768)\r
+ window = pygame.display.set_mode(modeResolution,pygame.FULLSCREEN)\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[0]))]\r
+ \r
+ wiimoteCount = 4\r
+ cursors = [WarpingCursor(None, cursorImages[i], durations, (300 * i, 300 * i),flashImage = '../cursor/cursorImages/black/flash.png' ) for i in range(wiimoteCount)]\r
+ wiimotes = [Wiimote(i, i + portOffset, None, None, cursors[i]) for i in range(wiimoteCount)]\r
+ \r
+ if log.song != None :\r
+ \r
+ if log.mode == 0 :\r
+ log.extendedScale = log.song.requiresExtendedScale\r
+ log.cascade = True\r
+ log.easyMode = True\r
+ elif log.mode == 1 :\r
+ log.extendedScale = log.song.requiresExtendedScale\r
+ log.cascade = True\r
+ log.easyMode = True\r
+ elif log.mode == 2:\r
+ log.extendedScale = log.song.requiresExtendedScale\r
+ log.cascade = False\r
+ log.easyMode = True\r
+ elif log.mode == 3:\r
+ log.extendedScale = True\r
+ log.cascade = False\r
+ log.easyMode = False\r
+ \r
+ choice = InstrumentChoice(instruments, wiimotes, window, screen, clock, joys, portOffset,log.activeWiimotes, eventLog = log.eventLog,scaleFactor = songScaleFactor,replay = True)\r
+ play = SongPlayingScreen(choice, log.song,log.cascade, log.extendedScale,log.easyMode)\r
+ \r
+ else:\r
+ \r
+ if log.mode == 0 :\r
+ log.extendedScale = False\r
+ log.cascade = False\r
+ elif log.mode == 1 :\r
+ log.extendedScale = True\r
+ log.cascade = False\r
+ elif log.mode == 2:\r
+ log.extendedScale = False\r
+ log.cascade = True\r
+ elif log.mode == 3:\r
+ log.extendedScale = True\r
+ log.cascade = True\r
+ \r
+ choice = InstrumentChoice(instruments, wiimotes, window, screen, clock, joys, portOffset,log.activeWiimotes,eventLog = log.eventLog,replay = True)\r
+ play = PlayingScreen(choice, None,log.cascade, log.extendedScale) \r
+ \r
+ while play.backToInstrumentChoice == True :\r
+ \r
+ for wiimote in wiimotes:\r
+ del wiimote.port\r
+ \r
+ wiimotes = [Wiimote(i, i + portOffset, None, None, cursors[i]) for i in range(wiimoteCount)]\r
+ previousEventLog = play.eventLog\r
+\r
+ if log.song != None :\r
+ choice = InstrumentChoice(instruments, wiimotes,window, screen, clock, joys, portOffset, log.activeWiimotes,eventLog = previousEventLog, replay = True, scaleFactor = songScaleFactor)\r
+ play = SongPlayingScreen(choice, log.song, False, log.extendedScale,log.easyMode)\r
+ else:\r
+ choice = InstrumentChoice(instruments, wiimotes, log.window, screen, clock, joys, portOffset,log.activeWiimotes, eventLog = previousEventLog, replay = True)\r
+ play = PlayingScreen(choice, None, log.cascade, log.extendedScale)\r
+ \r
+ for wiimote in wiimotes:\r
+ del wiimote.port\r
+ \r
+ pygame.midi.quit()\r
+ pygame.quit()
\ No newline at end of file