Exemplo n.º 1
0
 def start(self):
     if self.__running:
         unschedule(self.update)
         self.__running = False
     else:
         schedule_interval(self.update, self.speed)
         self.__running = True
Exemplo n.º 2
0
 def stopRepeat(self):
     if self.delay_timer is not None:
         self.delay_timer.cancel()
         self.delay_timer = None
     if self.repeating:
         clock.unschedule(self.repeat)
     self.repeating = False
Exemplo n.º 3
0
 def visible(self, visible):
     self._visible = visible
     clock.unschedule(self._blink)
     if visible and self._active and self.PERIOD:
         clock.schedule_interval(self._blink, self.PERIOD)
         self._blink_visible = False  # flipped immediately by next blink
     self._blink(0)
Exemplo n.º 4
0
    def leave(self):
        # get the end time
        self.end_time = now()
        
        # update the parent state time to actual elapsed time if necessary
        if self.duration < 0:
            if isinstance(self, ParentState):
                # advance the duration the children moved the this parent
                duration = self.state_time-self.start_time
            else:
                # advance the duration of this state
                duration = self.end_time-self.start_time
            self.advance_parent_state_time(duration)

        # remove the callback from the schedule
        clock.unschedule(self.callback)

        # notify the parent that we're done
        self.active = False
        self.done = True
        if self.parent:
            self.parent.check = True

        # call custom leave code
        self._leave()

        # write log to the state log
        #print self.get_log()
        if self.save_log:
            dump([self.get_log()],self.get_log_stream())
        pass
Exemplo n.º 5
0
Arquivo: Game.py Projeto: varnie/snake
    def game_exit_callback(self, *args):
        if self._overlay:
            unschedule(self._overlay.update)
            self._overlay = None

        self.win.pop_handlers()
        self.win.close()
Exemplo n.º 6
0
 def pause(self):
     if not self.playing: return
     clock.unschedule(self.update)
     self.player.pause()
     self.control.play.setVisible(True)
     self.control.pause.setVisible(False)
     self.playing = False
Exemplo n.º 7
0
Arquivo: Game.py Projeto: varnie/snake
        def on_rerun_menu():
            unschedule(func=self.update)

            #reset current handler
            self.win.pop_handlers()
            #and setup update handler
            self.win.push_handlers(self.menu)
            self.menu.start_bgrn_animation()
Exemplo n.º 8
0
def village_scene(dt):
    clock.unschedule(spawn_troll)
    s.Narration("This time")
    s.Narration("They will say")
    s.Title("You are the Villain")
    clock.schedule_interval(village_callback, 5)
    for i in range(counter + 4):
        s.Villager(on_death = decrement_counter)
Exemplo n.º 9
0
 def _update_schedule(self):
     clock.unschedule(self.dispatch_events)
     if self._playing and self._sources:
         interval = 1000.0
         if self._sources[0].video_format:
             interval = min(interval, 1 / 24.0)
         if self._audio:
             interval = min(interval, self._audio.UPDATE_PERIOD)
         clock.schedule_interval_soft(self.dispatch_events, interval)
Exemplo n.º 10
0
    def in_transition(self):
        for index, transition in enumerate(self.queue):
            if transition["phase"] == 0:
                del self.queue[index]

        if len(self.queue) <= 0:
            clock.unschedule(self.tick)

        return len(self.queue) > 0
Exemplo n.º 11
0
def scene2(dt):
    print "scene2"
    s.Narration('Why me?')
    s.Narration('Alone')
    s.Narration('Why me?')
    s.Narration('Alone')
    s.Narration('This is not fair')
    clock.unschedule(spawn_troll)
    clock.schedule_interval(spawn_troll, 3)
    clock.schedule_once(scene3, 20)
Exemplo n.º 12
0
    def delete(self):
        """Force immediate removal of the sprite from video memory.

        This is often necessary when using batches, as the Python garbage
        collector will not necessarily call the finalizer as soon as the
        sprite is garbage.
        """
        if self._animation:
            clock.unschedule(self._animate)
        self._vertex_list.delete()
        self._vertex_list = None
Exemplo n.º 13
0
    def test_unschedule(self):
        clock.set_default(clock.Clock())
        clock.schedule(self.callback)

        result = clock.tick()
        self.assertTrue(result == self.callback_dt)
        self.callback_dt = None
        time.sleep(1)
        clock.unschedule(self.callback)

        result = clock.tick()
        self.assertTrue(self.callback_dt == None)
Exemplo n.º 14
0
    def test_schedule_multiple(self):
        clock.set_default(clock.Clock())
        clock.schedule(self.callback)
        clock.schedule(self.callback)
        self.callback_count = 0

        clock.tick()
        self.assertTrue(self.callback_count == 2)
        clock.unschedule(self.callback)

        clock.tick()
        self.assertTrue(self.callback_count == 2)
Exemplo n.º 15
0
    def update(self, dt):
        self._total_time += dt
        alpha = self._total_time / float(self._duration) 

        self._label.begin_update()
        self._label.x = alpha * (self._x1 - self._x0) + self._x0
        self._label.y = alpha * (self._y1 - self._y0) + self._y0
        self._label.font_size = alpha * (self._end_font_size - self._init_font_size) + self._init_font_size
        self._label.end_update()

        if self._total_time > self._duration:
            self.window.remove_handlers(self)
            clock.unschedule(self.update)
Exemplo n.º 16
0
    def _set_image(self, img):
        if self._animation is not None:
            clock.unschedule(self._animate)
            self._animation = None

        if isinstance(img, image.Animation):
            self._animation = img
            self._frame_index = 0
            self._set_texture(img.frames[0].image.get_texture())
            self._next_dt = img.frames[0].duration
            clock.schedule_once(self._animate, self._next_dt)
        else:
            self._set_texture(img.get_texture())
        self._update_position()
Exemplo n.º 17
0
    def delete(self):
        """Force immediate removal of the sprite from video memory.

        This is often necessary when using batches, as the Python garbage
        collector will not necessarily call the finalizer as soon as the
        sprite is garbage.
        """
        if self._animation:
            clock.unschedule(self._animate)
        self._vertex_list.delete()
        self._vertex_list = None
        self._texture = None

        # Easy way to break circular reference, speeds up GC
        self._group = None
Exemplo n.º 18
0
    def callborg(dt):
        global ANS, NBSEC
        if ANS:
            c = ANS.pop()
            console.write(c)
            console._caret.position = len(console._document.text)

        elif ANS==[]:
            console.write (' ',attributes={'color': (255, 255, 255, 255)})
            console.write ('\n')
            console.prompt()
            #console._document.delete_text(0, len(console._document.text)-1)
            #console._prompt_end = 0
            ANS = None
            clock.unschedule(callborg)
        else: ANS=None
Exemplo n.º 19
0
Arquivo: Game.py Projeto: varnie/snake
    def run_snake(self, *args):
        if self._overlay:
            unschedule(self._overlay.update)
            self._overlay = None

        #reset current handlers
        self.win.pop_handlers()

        self.gameInfo.pause = False
        self.gameField.reset()

        #setup new handlers
        self.win.push_handlers(self.gameField)

        #and setup update handler
        self._update_interval = Game.INITIAL_UPDATE_INTERVAL
        schedule_interval(func=self.update,interval=self._update_interval)
Exemplo n.º 20
0
def play(level):
    view = FlatView.from_window(w, layers=[level, effectlayer, rocketlayer])

    # set rocket start
    for col in level.cells:
        for cell in col:
            if 'player-start' in cell.properties:
                rocket.midtop = cell.midtop

    clock.schedule(rocket.update)
    rocket.properties.update(dict(dx=0, dy=0, done=0))

    # run game
    while not (w.has_exit or rocket.properties['done']):
        dt = clock.tick()
        w.dispatch_events()
        view.fx, view.fy = rocket.center
        view.clear((.2, .2, .2, .2))
        view.draw()
        fps.draw()
        w.flip()

    # put up a message
    done = rocket.properties['done']
    if not done:
        return
    if done == 1:
        text = 'YAY YOU LANDED!'
    if done == 2:
        text = 'BOO YOU CRASHED!'
    text += '  (press [escape] to continue)'
    sprite = TextSprite(font, text, color=(1., 1., 1., 1.))
    sprite.x, sprite.y = w.width / 2 - sprite.width / \
        2, w.height / 2 - sprite.height / 2
    w.has_exit = False
    while not w.has_exit:
        dt = clock.tick()
        w.dispatch_events()
        view.clear((.2, .2, .2, .2))
        view.draw()
        sprite.draw()
        w.flip()

    clock.unschedule(rocket.update)
    if boom in effectlayer.sprites:
        effectlayer.sprites.remove(boom)
Exemplo n.º 21
0
    def update(self, dt):
        p = self.properties
        p['dx'] += (keyboard[key.RIGHT] - keyboard[key.LEFT]) * 25 * dt
        p['dx'] = min(300, max(-300, p['dx']))
        if keyboard[key.SPACE]:
            if flame not in effectlayer.sprites:
                effectlayer.sprites.append(flame)
            p['dy'] += 50 * dt
        elif flame in effectlayer.sprites:
            effectlayer.sprites.remove(flame)
        p['dy'] = min(300, max(-300, p['dy']))

        gravity = 25
        # don't need topleft or topright until I get a ceiling
        for point in (self.bottomleft, self.bottomright):
            cell = r['level1'].get(*list(map(int, point)))
            if cell is None or cell.tile is None:
                continue
            if 'pad' in cell.tile.properties:
                p['done'] = 1
                gravity = 0
                if p['dy'] < 0:
                    p['dy'] = 0
                p['dx'] = 0
                self.bottom = cell.top - 1
            elif 'open' not in cell.tile.properties:
                p['done'] = 2
                clock.unschedule(self.update)
                if flame in effectlayer.sprites:
                    effectlayer.sprites.remove(flame)
                boom.center = self.midbottom
                if boom not in effectlayer.sprites:
                    effectlayer.sprites.append(boom)

        p['dy'] -= gravity * dt

        self.y += p['dy']
        self.x += p['dx']
        flame.midtop = self.midbottom
Exemplo n.º 22
0
def reschedule_once(callback, interval, *args, **kwargs):
    clock.unschedule(callback)
    clock.schedule_once(callback, interval, *args, **kwargs)
Exemplo n.º 23
0
 def exit(self):
     clock.unschedule(self._update_characters)
Exemplo n.º 24
0
 def on_key_release(self, symbol, modifiers):
     clock.unschedule(self.key_press)
Exemplo n.º 25
0
 def on_deactivate(self):
     clock.unschedule(self.step)
Exemplo n.º 26
0
 def _leave(self):
     # unschedule the various callbacks
     clock.unschedule(self.update_callback)
     clock.unschedule(self.draw_callback)
Exemplo n.º 27
0
def run(xml_file):
    gui = GUI(window)
    loadxml.fromFile(gui, xml_file)
    if '--dump' in sys.argv:
        print('-' * 75)
        gui.dump()
        print('-' * 75)

    window.push_handlers(gui)

    gui.push_handlers(dragndrop.DragHandler('.draggable'))

    @gui.select('#press-me')
    def on_click(widget, *args):
        print('on_click', widget)
        return event.EVENT_HANDLED

    @gui.select('#enable-other')
    def on_click(widget, *args):
        w = gui.get('#press-me')
        w.setEnabled(not w.isEnabled())
        return event.EVENT_HANDLED

    @gui.select('button, text-button')
    def on_click(widget, *args):
        print('DEBUG', widget, 'PRESSED')
        return event.EVENT_UNHANDLED

    @gui.select('.show-value')
    def on_change(widget, value):
        print('DEBUG', widget, 'VALUE CHANGED', repr(value))
        return event.EVENT_UNHANDLED

    @gui.select('frame#menu-test', 'on_click')
    def on_menu(w, x, y, button, modifiers, click_count):
        if not widgets.PopupMenu.isActivatingClick(button, modifiers):
            return event.EVENT_UNHANDLED
        gui.get('#test-menu').expose((x, y))
        return event.EVENT_HANDLED

    @gui.select('.hover')
    def on_element_enter(widget, *args):
        print('ENTER ELEMENT', widget.id)
        return event.EVENT_HANDLED

    @gui.select('.hover')
    def on_element_leave(widget, *args):
        print('LEAVE ELEMENT', widget.id)
        return event.EVENT_HANDLED

    @gui.select('.drawer-control')
    def on_click(widget, *args):
        id = widget.id.replace('drawer-control', 'test-drawer')
        gui.get('#' + id).toggle_state()
        return event.EVENT_HANDLED

    @gui.select('#question-dialog-test')
    def on_click(widget, *args):
        def f(*args):
            print('DIALOG SAYS', args)

        dialogs.Question(widget.getGUI(), 'Did this appear correctly?',
                         callback=f).run()
        return event.EVENT_HANDLED

    @gui.select('#message-dialog-test')
    def on_click(widget, *args):
        def f(*args):
            print('DIALOG SAYS', args)

        dialogs.Message(widget.getGUI(), 'Hello, World!', callback=f).run()
        return event.EVENT_HANDLED

    @gui.select('#music-test')
    def on_click(widget, x, y, button, modifiers, click_count):
        if not button & mouse.RIGHT:
            return event.EVENT_UNHANDLED

        def load_music(file=None):
            if not file:
                return
            gui.get('#music-test').delete()
            m = widgets.Music(gui, file, id='music-test', playing=True)
            m.gainFocus()

        dialogs.FileOpen(gui, callback=load_music).run()
        return event.EVENT_HANDLED

    @gui.select('#movie-test')
    def on_click(widget, x, y, button, modifiers, click_count):
        if not button & mouse.RIGHT:
            return event.EVENT_UNHANDLED

        def load_movie(file=None):
            print('DIALOG SELECTION:', file)
            if not file:
                return
            gui.get('#movie-test').delete()
            m = widgets.Movie(gui, file, id='movie-test', playing=True)
            m.gainFocus()

        dialogs.FileOpen(gui, callback=load_movie).run()
        return event.EVENT_HANDLED

    @gui.select('#movie-test')
    def on_text(widget, text):
        if text == 'f':
            gui.get('#movie-test').video.pause()
            anim.Delayed(gui.get('#movie-test').video.play, duration=10)
            window.set_fullscreen()
        return event.EVENT_HANDLED

    @gui.select('.droppable')
    def on_drop(widget, x, y, button, modifiers, element):
        element.reparent(widget)
        widget.bgcolor = (1, 1, 1, 1)
        return event.EVENT_HANDLED

    @gui.select('.droppable')
    def on_drag_enter(widget, x, y, element):
        widget.bgcolor = (.8, 1, .8, 1)
        return event.EVENT_HANDLED

    @gui.select('.droppable')
    def on_drag_leave(widget, x, y, element):
        widget.bgcolor = (1, 1, 1, 1)
        return event.EVENT_HANDLED

    try:
        sample = gui.get('#xhtml-sample')
    except KeyError:
        sample = None
    if sample:
        @layout.select('#click-me')
        def on_mouse_press(element, x, y, button, modifiers):
            print('CLICK ON', element)
            return event.EVENT_HANDLED

        sample.label.push_handlers(on_mouse_press)

    if gui.has('.progress-me'):
        class Progress:
            progress = 0
            direction = 1

            def animate(self, dt):
                self.progress += dt * self.direction
                if self.progress > 5:
                    self.progress = 5
                    self.direction = -1
                elif self.progress < 0:
                    self.progress = 0
                    self.direction = 1
                for e in gui.get('.progress-me'):
                    e.value = self.progress / 5.

        animate_progress = Progress().animate
        clock.schedule(animate_progress)

    my_escape.has_exit = False
    while not (window.has_exit or my_escape.has_exit):
        clock.tick()
        window.dispatch_events()
        media.dispatch_events()

        glClearColor(.2, .2, .2, 1)
        glClear(GL_COLOR_BUFFER_BIT)
        gui.draw()
        fps.draw()
        window.flip()
        if '--once' in sys.argv:
            window.close()
            sys.exit()

    if '--dump' in sys.argv:
        print('-' * 75)
        gui.dump()
        print('-' * 75)

    if gui.has('.progress-me'):
        clock.unschedule(animate_progress)

    # reset everything
    window.pop_handlers()
    gui.delete()
    window.set_size(800, 600)

    return window.has_exit
Exemplo n.º 28
0
 def remove_from_batch(self, batch):
     self.titleLabel.delete()
     self.titleLabel = None
     self.pressAnyKeyLabel.delete()
     self.pressAnyKeyLabel = None
     clock.unschedule(self.blink)
Exemplo n.º 29
0
    # collision detection
    for shot in list(enemies[0].bullets):
        shot.y -= 200 * dt
        if shot.overlaps(player):
            print('YOU LOST!')
            dead = True
            break
        if shot.y < 0:
            enemies[0].bullets.remove(shot)
            view.sprites.remove(shot)
    for shot in list(player.bullets):
        shot.y += 200 * dt
        for enemy in list(enemies):
            if shot.overlaps(enemy):
                view.sprites.remove(enemy)
                enemies.remove(enemy)
                clock.unschedule(enemy.update)
        if shot.y > 512:
            player.bullets.remove(shot)
            view.sprites.remove(shot)

    # end game
    if not enemies:
        print('YOU WON!')
        break

    view.clear()
    view.draw()
    w.flip()
w.close()
Exemplo n.º 30
0
 def stop(self):
     if self.running:
         clock.unschedule(self.tick)
         self.running = False
 def set_fps(self, fps):
     self.fps = max(fps, 5)
     clock.unschedule(self.update)
     clock.schedule_interval(self.update, 1.0 / self.fps)
Exemplo n.º 32
0
 def on_scene_leave(self):
     #glDisable(GL_POINT_SMOOTH)
     #glDisable(GL_TEXTURE_2D)
     clock.unschedule(self.update)
Exemplo n.º 33
0
 def on_scene_leave(self):
     clock.unschedule(self.update)
Exemplo n.º 34
0
 def __del__(self):
     clock.unschedule(self._spawn)
Exemplo n.º 35
0
 def remove_from_batch(self, batch):
     HudMessage.remove_from_batch(self, batch)
     clock.unschedule(self.next_text)
Exemplo n.º 36
0
 def stop(self):
     self._timestamp = 0.0
     clock.unschedule(self.dispatch_events)
     managed_players.remove(self)
Exemplo n.º 37
0
def scene3(dt):
    print "scene3"
    clock.unschedule(spawn_troll)
    clock.schedule_interval(spawn_troll, 2)
    s.Choice("I had enough", on_select=pre_village)
Exemplo n.º 38
0
def reschedule_once(callback, interval, *args, **kwargs):
    clock.unschedule(callback)
    clock.schedule_once(callback, interval, *args, **kwargs)
Exemplo n.º 39
0
    def go_to_state(self, state_id):
        unschedule(self.current_state.on_update)

        self.current_state_index = state_id
        self.update_current_state()
Exemplo n.º 40
0
 def stop_move(self):
     clock.unschedule(self.move)