Пример #1
0
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)
Пример #2
0
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