def setup(self): self.exploding = False self.exploded = False ground = TiledSprite("ground", self.size[0] / 32, 1) self.main_layer.add(ground) ground.move_to(0, self.size[1] - ground.rect.height) hills = Sprite("65000000bc/hills_1") self.bg_layer.add(hills) hills.move_to(0, ground.rect.top - hills.rect.height) # Volcano self.volcano = Volcano() self.volcano.add_to(self) self.volcano.move_to(1400, ground.rect.top - self.volcano.rect.height + 1) blocker = Box(150, self.size[1] - self.volcano.rect.height - 20, (0, 0, 0, 0)) self.main_layer.add(blocker) blocker.move_to(self.volcano.lava_pool.rect.right - 100, 0) # Left-side lava pool lava_pool = TiledSprite("65000000bc/lava_pool", 5, 1) lava_pool.lethal = True self.main_layer.add(lava_pool) lava_pool.move_to(self.volcano.rect.left - lava_pool.rect.width - 100, ground.rect.top - 18) # Platforms platform = FloatingSprite("65000000bc/platform") self.main_layer.add(platform) platform.move_to(lava_pool.rect.left + 250, lava_pool.rect.top - 10) platform = FloatingSprite("65000000bc/platform") self.main_layer.add(platform) platform.move_to(lava_pool.rect.left + 500, lava_pool.rect.top - 8) platform = FloatingSprite("65000000bc/platform") self.main_layer.add(platform) platform.move_to(lava_pool.rect.left + 750, lava_pool.rect.top - 12) # Right-side lava pool lava_pool = TiledSprite("65000000bc/lava_pool", 3, 1) lava_pool.lethal = True self.main_layer.add(lava_pool) lava_pool.move_to(self.volcano.rect.right + 200, ground.rect.top - 18) # Dynamite explosion trigger explosion_box = EventBox(self) explosion_box.rects.append( pygame.Rect( self.volcano.lava_puddle.rect.x, self.volcano.lava_puddle.rect.bottom - 5, self.volcano.lava_puddle.rect.width, 5, ) ) explosion_box.watch_object_moves(self.level.dynamite) explosion_box.object_entered.connect(self.on_dynamite_placed) # Artifact self.level.add_artifact(self, lava_pool.rect.right + 200, ground.rect.top)
def setup(self): self.exploding = False self.exploded = False ground = TiledSprite('ground', self.size[0] / 32, 1) self.main_layer.add(ground) ground.move_to(0, self.size[1] - ground.rect.height) hills = Sprite('65000000bc/hills_1') self.bg_layer.add(hills) hills.move_to(0, ground.rect.top - hills.rect.height) # Volcano self.volcano = Volcano() self.volcano.add_to(self) self.volcano.move_to( 1400, ground.rect.top - self.volcano.rect.height + 1) blocker = Box(150, self.size[1] - self.volcano.rect.height - 20, (0, 0, 0, 0)) self.main_layer.add(blocker) blocker.move_to(self.volcano.lava_pool.rect.right - 100, 0) # Left-side lava pool lava_pool = TiledSprite('65000000bc/lava_pool', 5, 1) lava_pool.lethal = True self.main_layer.add(lava_pool) lava_pool.move_to(self.volcano.rect.left - lava_pool.rect.width - 100, ground.rect.top - 18) # Platforms platform = FloatingSprite('65000000bc/platform') self.main_layer.add(platform) platform.move_to(lava_pool.rect.left + 250, lava_pool.rect.top - 10) platform = FloatingSprite('65000000bc/platform') self.main_layer.add(platform) platform.move_to(lava_pool.rect.left + 500, lava_pool.rect.top - 8) platform = FloatingSprite('65000000bc/platform') self.main_layer.add(platform) platform.move_to(lava_pool.rect.left + 750, lava_pool.rect.top - 12) # Right-side lava pool lava_pool = TiledSprite('65000000bc/lava_pool', 3, 1) lava_pool.lethal = True self.main_layer.add(lava_pool) lava_pool.move_to(self.volcano.rect.right + 200, ground.rect.top - 18) # Dynamite explosion trigger explosion_box = EventBox(self) explosion_box.rects.append( pygame.Rect(self.volcano.lava_puddle.rect.x, self.volcano.lava_puddle.rect.bottom - 5, self.volcano.lava_puddle.rect.width, 5)) explosion_box.watch_object_moves(self.level.dynamite) explosion_box.object_entered.connect(self.on_dynamite_placed) # Artifact self.level.add_artifact(self, lava_pool.rect.right + 200, ground.rect.top)
class Outside65000000BC(Level1Area): def draw_bg(self, surface): surface.fill((0, 0, 0)) def setup(self): self.exploding = False self.exploded = False ground = TiledSprite("ground", self.size[0] / 32, 1) self.main_layer.add(ground) ground.move_to(0, self.size[1] - ground.rect.height) hills = Sprite("65000000bc/hills_1") self.bg_layer.add(hills) hills.move_to(0, ground.rect.top - hills.rect.height) # Volcano self.volcano = Volcano() self.volcano.add_to(self) self.volcano.move_to(1400, ground.rect.top - self.volcano.rect.height + 1) blocker = Box(150, self.size[1] - self.volcano.rect.height - 20, (0, 0, 0, 0)) self.main_layer.add(blocker) blocker.move_to(self.volcano.lava_pool.rect.right - 100, 0) # Left-side lava pool lava_pool = TiledSprite("65000000bc/lava_pool", 5, 1) lava_pool.lethal = True self.main_layer.add(lava_pool) lava_pool.move_to(self.volcano.rect.left - lava_pool.rect.width - 100, ground.rect.top - 18) # Platforms platform = FloatingSprite("65000000bc/platform") self.main_layer.add(platform) platform.move_to(lava_pool.rect.left + 250, lava_pool.rect.top - 10) platform = FloatingSprite("65000000bc/platform") self.main_layer.add(platform) platform.move_to(lava_pool.rect.left + 500, lava_pool.rect.top - 8) platform = FloatingSprite("65000000bc/platform") self.main_layer.add(platform) platform.move_to(lava_pool.rect.left + 750, lava_pool.rect.top - 12) # Right-side lava pool lava_pool = TiledSprite("65000000bc/lava_pool", 3, 1) lava_pool.lethal = True self.main_layer.add(lava_pool) lava_pool.move_to(self.volcano.rect.right + 200, ground.rect.top - 18) # Dynamite explosion trigger explosion_box = EventBox(self) explosion_box.rects.append( pygame.Rect( self.volcano.lava_puddle.rect.x, self.volcano.lava_puddle.rect.bottom - 5, self.volcano.lava_puddle.rect.width, 5, ) ) explosion_box.watch_object_moves(self.level.dynamite) explosion_box.object_entered.connect(self.on_dynamite_placed) # Artifact self.level.add_artifact(self, lava_pool.rect.right + 200, ground.rect.top) 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 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 on_explosion_done(self): self.explosion_timer.stop() self.explosion_timer = None self.exploding = False self.exploded = True self.volcano.clear_passage()
class Outside65000000BC(Level1Area): def draw_bg(self, surface): surface.fill((0, 0, 0)) def setup(self): self.exploding = False self.exploded = False ground = TiledSprite('ground', self.size[0] / 32, 1) self.main_layer.add(ground) ground.move_to(0, self.size[1] - ground.rect.height) hills = Sprite('65000000bc/hills_1') self.bg_layer.add(hills) hills.move_to(0, ground.rect.top - hills.rect.height) # Volcano self.volcano = Volcano() self.volcano.add_to(self) self.volcano.move_to( 1400, ground.rect.top - self.volcano.rect.height + 1) blocker = Box(150, self.size[1] - self.volcano.rect.height - 20, (0, 0, 0, 0)) self.main_layer.add(blocker) blocker.move_to(self.volcano.lava_pool.rect.right - 100, 0) # Left-side lava pool lava_pool = TiledSprite('65000000bc/lava_pool', 5, 1) lava_pool.lethal = True self.main_layer.add(lava_pool) lava_pool.move_to(self.volcano.rect.left - lava_pool.rect.width - 100, ground.rect.top - 18) # Platforms platform = FloatingSprite('65000000bc/platform') self.main_layer.add(platform) platform.move_to(lava_pool.rect.left + 250, lava_pool.rect.top - 10) platform = FloatingSprite('65000000bc/platform') self.main_layer.add(platform) platform.move_to(lava_pool.rect.left + 500, lava_pool.rect.top - 8) platform = FloatingSprite('65000000bc/platform') self.main_layer.add(platform) platform.move_to(lava_pool.rect.left + 750, lava_pool.rect.top - 12) # Right-side lava pool lava_pool = TiledSprite('65000000bc/lava_pool', 3, 1) lava_pool.lethal = True self.main_layer.add(lava_pool) lava_pool.move_to(self.volcano.rect.right + 200, ground.rect.top - 18) # Dynamite explosion trigger explosion_box = EventBox(self) explosion_box.rects.append( pygame.Rect(self.volcano.lava_puddle.rect.x, self.volcano.lava_puddle.rect.bottom - 5, self.volcano.lava_puddle.rect.width, 5)) explosion_box.watch_object_moves(self.level.dynamite) explosion_box.object_entered.connect(self.on_dynamite_placed) # Artifact self.level.add_artifact(self, lava_pool.rect.right + 200, ground.rect.top) 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 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 on_explosion_done(self): self.explosion_timer.stop() self.explosion_timer = None self.exploding = False self.exploded = True self.volcano.clear_passage()