import pygame
from keygraph import *
from keyhandler import *
from rotowidget import *
from fx import *
from constants import *
red = (255,30,30)
offwhite = (245,245,245)
blue = (30,30,255)
green = (30,255,30)
black = (0,0,0)
darkgray = (20,20,20)
ggray = (200,255,200)
class IIDXFormat:
keyfile = None
keystyle = [(1.75,red,black,ggray), (1,offwhite,darkgray,blue),
(0.8,blue,black,green), (1,offwhite,darkgray,blue),
(0.8,blue,black,green), (1,offwhite,darkgray,blue),
(0.8,blue,black,green), (1,offwhite,darkgray,blue)]
def __init__(self,keyfile):
self.keyfile = keyfile
self.kg = (KeyGraph(keyfile,self.keystyle,1,pygame.Rect(0,0,192,400)),
KeyGraph(keyfile,self.keystyle,2,pygame.Rect(448,0,192,400)) )
self.animpic = None
self.screen = pygame.display.get_surface()
self.roto = RotoWidget((30,430),25,1.0)
self.songlength = keyfile.length()
self.groove = 20.0
self.groovetext = GlyphText((60,415))
self.accuracy = 0
self.nacc = 0
def setproperties(self,properties):
if properties.has_key('judgement'):
j = properties['judgement']
if j == JUDGE_FGREAT:
self.groove += 1.0
elif j == JUDGE_GREAT:
self.groove += 0.7
elif j == JUDGE_GOOD:
self.groove += 0.2
elif j == JUDGE_BAD:
self.groove -= 2.0
elif j == JUDGE_POOR:
self.groove -= 6.0
if self.groove > 100.0:
self.groove = 100.0
elif self.groove < 0.0:
self.groove = 0.0
if 'accuracy' in properties:
self.accuracy += properties['accuracy']
self.nacc += 1
print "accuracy:", self.accuracy / float(self.nacc)
self.kg[0].setproperties(properties)
def draw(self, t, bmelist):
b = self.keyfile.eval_beatfunc(t)
for bme in bmelist:
if bme.type == BME_BGA and bme.dataref in self.keyfile.bmps:
self.animpic = self.keyfile.bmps[bme.dataref]
self.screen.fill( (20,20,20) )
for k in self.kg:
k.t = t
k.draw()
if self.animpic:
self.screen.fill((0,0,0),(192,112,256,256))
self.screen.blit(self.animpic,(192,112))
self.roto.pulsev = self.groove
self.roto.arcv = (float(t) / self.songlength) * 100
self.roto.draw(b)
self.groovetext.settext("%02d" % self.groove)
self.groovetext.draw(t)
pygame.display.update()
lightgray = (230,230,230)
graybg = (30,30,30)
yellow = (230,230,0)
yellowbg = (30,30,0)
green = (30,255,30)
greenbg = (0,30,0)
blue = (0,0,230)
bluebg = (0,0,30)
redbg = (30,0,0)
class PopnFormat:
keyfile = None
keystyle = [(1,lightgray,graybg), (0.7,yellow,yellowbg),
(1,green,greenbg), (0.7,blue,bluebg), (1,red,redbg),
(0.7,blue,bluebg), (1,green,greenbg), (0.7,yellow,yellowbg),
(1,lightgray,graybg)]
def __init__(self,keyfile):
self.keyfile = keyfile
self.kg = KeyGraph(keyfile,self.keystyle,1,pygame.Rect(256,0,384,400))
self.kg.bordercolor = black
self.animpic = None
self.screen = pygame.display.get_surface()
def draw(self, t, bmelist):
for bme in bmelist:
if bme.type == BME_BGA:
self.animpic = self.keyfile.bmps[bme.dataref]
self.screen.fill( (20,20,20) )
self.kg.t = t
self.kg.draw()
if self.animpic:
self.screen.fill((0,0,0),(0,112,256,256))
self.screen.blit(self.animpic,(0,112))
pygame.display.update()