class MainMenu (object): def __init__(self, pos=Point3(6.1, 0.0, 1.9)): self.choices = { 1: 'new game', 2: 'tutorial', 3: 'fullscreen', 4: 'about', 5: 'quit' } self.choice = 1 self.pos = pos self.attaboy = MsgQueue() self.title = VectorString("genome hero", (3,0,2.0), 0.3) self.labels = self.build_labels() self.labels[0].unpause() def build_labels(self): tl = [] x, y, z = self.pos[:] for c in self.choices.keys(): lx, lz = x, (z + (c*-0.7))# + -0.6 l = self.attaboy.pulse(self.choices[c], 0.16, 1, (lx,0,lz)) l.pause() tl.append(l) return tl def on_key_press(self, k, args): labels = self.labels if k == key.UP: if self.choice == 1: labels[self.choice-1].pause(1) self.choice = len(self.choices) labels[self.choice-1].unpause() else: labels[self.choice-1].pause(1) self.choice -= 1 labels[self.choice-1].unpause() elif k == key.DOWN: if self.choice == len(self.choices): labels[self.choice-1].pause(1) self.choice = 1 labels[self.choice-1].unpause() else: labels[self.choice-1].pause(1) self.choice += 1 labels[self.choice-1].unpause() else: return True def update(self, dt): self.attaboy.update(dt)
class Pause(State): def __init__(self, window, *args, **kwargs): print "++++ new pause state" State.__init__(self, window, "pause", *args, **kwargs) audio.attenuate_music() self.menuloc = (-0.9, 1.0) self.choices = {1: "resume", 2: "quit"} self.choice = 1 self.old_state_batch = args[0] self.build_scene() def build_labels(self): tl = [] x, z = self.menuloc for c in self.choices.keys(): lx, lz = x, (z + (c * -0.4)) # + -0.6 l = self.attaboy.pulse(self.choices[c], 0.11, 1, (lx, -1, lz)) l.pause() tl.append(l) return tl def build_scene(self): self.camera = Camera((0.0, -8.0, 1.0), (0, 0, 1.0)) self.camera.subtle_motion = True self.camera.subtle_range = (3.5, -3.5) self.camera.subtle_speed = 0.04 self.attaboy = MsgQueue() self.attaboy.pulse("pause", 0.25, 1, (-1.0, -1, 1)).pause(1) self.labels = self.build_labels() self.labels[0].unpause() def destroy_scene(self): pass def on_draw(self): set3D(self.window) self.window.clear() glLoadIdentity() self.camera.focus() batch.get_batch(self.old_state_batch).draw() self.batch.draw() set2D(self.window) return pyglet.event.EVENT_HANDLED def on_lose_focus(self): pyglet.clock.unschedule(self.on_update) self.destroy_scene() return pyglet.event.EVENT_HANDLED def on_gain_focus(self): pyglet.clock.schedule_interval(self.on_update, 1.0 / 60.0) return pyglet.event.EVENT_HANDLED def on_update(self, dt): self.camera.update(dt) self.attaboy.update(dt) def on_key_press(self, k, mod): labels = self.labels if k == key.UP: if self.choice == 1: labels[self.choice - 1].pause(1) self.choice = len(self.choices) labels[self.choice - 1].unpause() else: labels[self.choice - 1].pause(1) self.choice -= 1 labels[self.choice - 1].unpause() elif k == key.DOWN: if self.choice == len(self.choices): labels[self.choice - 1].pause(1) self.choice = 1 labels[self.choice - 1].unpause() else: labels[self.choice - 1].pause(1) self.choice += 1 labels[self.choice - 1].unpause() elif k == key.ENTER: if self.choice == 1: audio.unattenuate_music() self.destroy_scene() self.window.pop_state() elif self.choice == 2: self.destroy_scene() audio.play_music_fade("intro") self.window.pop_state() self.window.pop_state() self.window.pop_state() elif k == key.F11: if self.window.fullscreen: self.window.set_fullscreen(False) else: self.window.set_fullscreen(True) elif k == key.ESCAPE: audio.unattenuate_music() self.destroy_scene() self.window.pop_state() # self.window.pop_state() return pyglet.event.EVENT_HANDLED