def spreader_cannon(entity_id, state): offset = state.offset player_only = state.player_only pos_x, pos_y, angle = spatial.get_position_and_angle(entity_id) bullet.create((pos_x, pos_y), angle, BULLET_SPEED, BULLET_IMAGE, entity_id, player_only=player_only) bullet.create((pos_x, pos_y), angle - offset, BULLET_SPEED, BULLET_IMAGE, entity_id, player_only=player_only) bullet.create((pos_x, pos_y), angle + offset, BULLET_SPEED, BULLET_IMAGE, entity_id, player_only=player_only)
def update(dt): # Swap finished queue buffer global _finished_image_queue, finished _finished_image_queue, finished = set(), _finished_image_queue for entity_id, state in renderables.iteritems(): x, y, angle = spatial.get_position_and_angle(entity_id) offset = state.offset.rotated(-angle) x -= offset.x y -= offset.y sprite = state.sprite sprite.x = x sprite.y = y sprite.rotation = angle
def update(dt): for entity_id, state in launchers.iteritems(): hot = state.hot if hot: hot -= min(hot, dt) elif trigger.is_down(entity_id): hot = state.cooldown offset = state.offset player_only = state.player_only pos_x, pos_y, angle = spatial.get_position_and_angle(entity_id) bullet.create_missile((pos_x + offset, pos_y), angle, SPEED, IMAGE, entity_id, player_only=player_only) state.offset = -offset state.hot = hot state.trigger = False