import pygame
import thread
from fx import *
import event
class MainMenu:
fx = None
fxlock = None
period = 428
circuitlist = [[(590,0), (550,40), (200,40), (170,70), (170,310)],
[(570,0), (540,30), (190,30), (160,60), (20,60), (20,220), (50,250), (50,420), (90,460), (610,460)],
[(0,220), (40,260), (40,480)],
[(180,0), (180,20), (150,50), (20,50), (20,0)]]
menuitems = [("play","fileselect"), ("quit","quit")]
subtitle = "holy shit parallax!!!11!1"
version = 1e-99
def __init__(self):
self.fxlock = thread.allocate_lock()
self.fx = []
self.menufx = []
self.position = 0
self.bar = PulseLine([(0,0),(130,0)],(200,200,255),self.period,5)
thread.start_new_thread(self.fxloader,())
def fxloader(self):
self.fxlock.acquire()
self.fx.append(Blank())
for l in self.circuitlist:
o = PulseLine(l,(255,30,30),self.period)
self.fx.append(o)
self.fxlock.release()
o = Image('gfx/title.png',(200,40))
self.fxlock.acquire()
self.fx.append(o)
self.fxlock.release()
n = 0
for l in self.menuitems:
o = Text(l[0],'font/Nano.ttf',18,(30,70 + 20*n), (255,30,30))
self.fxlock.acquire()
self.fx.append(o)
self.menufx.append(o)
self.fxlock.release()
n += 1
o = Text(self.subtitle,'font/Nano.ttf',15,(600,100),(255,30,30))
o.align = ALIGN_RIGHT
self.fxlock.acquire()
self.fx.append(o)
self.fxlock.release()
o = Text("version " + str(self.version),'font/Nano.ttf',14,(610,440),(255,30,30))
o.align = ALIGN_RIGHT
self.fxlock.acquire()
self.fx.append(o)
self.fxlock.release()
o = PlaneScroll('gfx/chips_layer1.jpg',(-0.12,0.06),2.0,0.75)
self.fxlock.acquire()
self.fx.insert(1,o)
self.fxlock.release()
o = PlaneScroll('gfx/chips_layer2.jpg',(-0.06,0.03))
self.fxlock.acquire()
self.fx.remove(self.fx[0])
self.fx.insert(0,o)
self.fxlock.release()
def draw(self,t):
self.fxlock.acquire()
for f in self.fx:
f.draw(t)
self.fxlock.release()
self.bar.location = (30, 68 + 20*self.position)
self.bar.draw(t)
self.bar.location = (30, 68 + 20*self.position + 20)
self.bar.draw(t)
def run(self):
screen = pygame.display.get_surface()
decided = 0
pygame.mixer.music.load('snd/0x00.ogg')
pygame.mixer.music.set_volume(0.75)
pygame.mixer.music.play(-1)
stab = pygame.mixer.Sound('snd/stab.ogg')
stab.set_volume(0.25)
start_t = pygame.time.get_ticks()
while decided == 0:
t = pygame.time.get_ticks() - start_t
for e in pygame.event.get():
act = event.parseevent(e)
if act == event.CANCEL:
decided = 'quit'
elif act == event.DOWN:
self.position += 1
elif act == event.UP:
self.position -= 1
elif act == event.OK:
decided = self.menuitems[self.position][1]
self.position = self.position % len(self.menuitems)
self.draw(t)
pygame.display.flip()
pygame.mixer.music.fadeout(1500)
stab.play()
start_t2 = pygame.time.get_ticks()
dt = 0
blanksurf = pygame.surface.Surface((640,480)).convert()
blanksurf.fill( (0,0,0) )
while dt < 1500:
dt = pygame.time.get_ticks() - start_t2
if dt < 1000:
self.draw(pygame.time.get_ticks() - start_t)
blanksurf.set_alpha(int(dt / 1000.0 * 255.0))
screen.blit(blanksurf,(0,0))
else:
screen.fill( (0,0,0) )
self.menufx[self.position].draw(0)
if dt >= 1000:
blanksurf.set_alpha(int((dt-1000) / 500.0 * 255.0))
screen.blit(blanksurf,(0,0))
pygame.display.flip()
return [decided]