def melt(self, x, y): self.explosion = FlameThrowerParticleSystem(self.layer.area) self.explosion.start(x, y) self.explosion.repeat = True self.timer = Timer(60, self.on_melt_timer) self.melting = True
def __init__(self, area): # Settings self.particle_filename = None self.min_particles = 0 self.max_particles = 0 self.min_initial_speed = 0 self.max_initial_speed = 0 self.min_acceleration = 0 self.max_acceleration = 0 self.min_lifetime = 0 self.max_lifetime = 0 self.min_scale = 0 self.max_scale = 0 self.min_rotation_speed = 0 self.max_rotation_speed = 0 self.min_angle = 0 self.max_angle = 2 * math.pi self.repeat = False # State self.area = area self.image = None self.particles = [] self.free_particles = [] self.pos = None self.timer = Timer(60, self.on_particle_update)
def on_artifact_grabbed(self): if self.artifact.grabbed: player = self.engine.player player.block_events = True player.velocity = (0, 0) player.fall() timer = Timer(1000, self.engine.next_level, one_shot=True) timer.start()
def game_over(self): def on_timeout(): widget.close() self._setup_game() #sys.exit(0) widget = self.ui_manager.show_textbox('Game Over') self.paused = True timer = Timer(2000, on_timeout, one_shot=True)
def on_platforms_button_pressed(self): if self.platforms_on: return for platform in self.platforms: platform.power_on() self.platforms_on = True self.platforms_timer = Timer(self.PLATFORM_DELAY_TIME, self.next_platform)
def on_dynamite_placed(self, obj): assert obj == self.level.dynamite if self.exploding or self.exploded: return self.level.dynamite.light() self.exploding = True self.detonate_timer = Timer(1000, self.start_explosion)
def dead(self): def on_timeout(): widget.close() self.restart_level() widget = self.ui_manager.show_textbox([ "It's okay! You had another guy!", "%s lives left." % self.player.lives ]) self.paused = True timer = Timer(2000, on_timeout, one_shot=True)
def start_explosion(self): self.detonate_timer.stop() self.detonate_timer = None self.level.dynamite.remove() self.level.dynamite = None self.explosion = ExplosionParticleSystem(self) self.explosion.start(2040, 1500) self.explosion_timer = Timer(350, self.on_explosion_done) self.explosion_timer.start()
def next_level(self): def on_timeout(): widget.close() unload_images() self.switch_level(next_level) next_level = self.levels.index(self.active_level) + 1 widget = self.ui_manager.show_textbox([ 'You got the artifact! %s left to go.' % (len(self.levels) - next_level), ]) timer = Timer(2000, on_timeout, one_shot=True) timer.start()
def on_tick(self): if not self.engine.paused and self.engine.active_level == self: self.active_area.tick() if (len(self.time_periods) > 1 and len(self.crossovers) + len(self.pending_crossovers) < self.MAX_CROSSOVERS): crossover_id = self.next_crossover_id self.next_crossover_id += 1 timer = Timer( random.randint(*self.CROSSOVER_TIME_INTERVAL), lambda: self.show_crossover(crossover_id), one_shot=True) self.pending_crossovers[crossover_id] = timer
def show_level(self, level): timeline_attrs = { 'font': self.small_font, 'padding_top': 20, } widget = self.show_textbox([({ 'padding_top': 10 }, level.name), [(timeline_attrs, time_period.name) for time_period in level.time_periods]], line_spacing=0) timer = Timer(2000, lambda: self.close(widget), one_shot=True) timer.start() return widget
def show_crossover(self, crossover_id): def hide_crossover(): crossover_sprite.remove() self.crossovers.remove((crossover_sprite, timer)) self.pending_crossovers[crossover_id].stop() del self.pending_crossovers[crossover_id] key = self.active_area.key time_periods = [ time_period.areas[key] for time_period in self.time_periods if (time_period != self.active_time_period and key in time_period.areas) ] if len(time_periods) - 1 <= 0: return i = random.randint(0, len(time_periods) - 1) crossover_sprite = Crossover(time_periods[i]) crossover_sprite.rect = self.engine.camera.rect if random.randint(0, 5) <= 3: layer = self.active_area.bg_layer else: layer = self.active_area.main_layer layer.add(crossover_sprite) timer = Timer(500, hide_crossover, one_shot=True) timer.start() self.crossovers.append((crossover_sprite, timer))
def start(self): assert not self.timer self.pre_start() self.timer = Timer(self.timer_ms, self.on_tick) self.timer.start() self.started.emit()
def start(self): self.timer = Timer(self.delay_ms, self.stop, one_shot=True)
def close(self): self.name = self.platform_closing_name self.update_image() timer = Timer(self.CLOSING_TIME, self.on_close_timeout, one_shot=True) timer.start()
def open(self): self.name = self.platform_opening_name self.update_image() timer = Timer(self.OPENING_TIME, self.on_open_timeout, one_shot=True) timer.start()