def process_events(): dead_enemies = enemies.intersection(health.killed) for entity_id in dead_enemies: score.award(entity_id) position = spatial.get_position(entity_id) explosions.create(position) manager.destroy_entity(entity_id)
def update(dt): destroy_me = [] for entity_id, state in enemies.iteritems(): position = spatial.get_position(entity_id) direction = state.direction if state.state == STATE_HORIZONTAL: relevant_axis = position[0] relevant_movement = state.horizontal_movement move_direction = [direction, 0] next_state = STATE_VERTICAL next_nextdirection = direction * -1 elif state.state == STATE_VERTICAL: relevant_axis = position[1] relevant_movement = state.vertical_movement move_direction = [0, direction] next_state = STATE_HORIZONTAL next_nextdirection = -1 target = state.target if target is None: target = relevant_axis + relevant_movement * direction distance = (target - relevant_axis) * direction jetengine.move(entity_id, move_direction) if distance < 0: target = None state.state = next_state state.next_direction, state.direction = next_nextdirection, state.next_direction if position[1] < DESTROY_THRESHOLD_Y: destroy_me.append(entity_id) state.target = target for entity_id in destroy_me: manager.destroy_entity(entity_id)
def update(dt): for entity_id, state in movers.iteritems(): position = spatial.get_position(entity_id) if not state.target: state.target = position[1] - state.distance position_y = position[1] - state.speed * dt if position_y < state.target: position_y += state.distance spatial.set_position_and_angle(entity_id, (position[0], position_y), 0)
def process_events(): missile_ids = set(missiles) left_world = missile_ids.intersection(collider.world_events) for entity_id in left_world: manager.destroy_entity(entity_id) struck_target = missile_ids.intersection(collider.collide_events) for entity_id in struck_target: if entity_id not in missiles: continue target_ids = collider.collide_events_data[entity_id] owner_id = missiles[entity_id][1] target_ids = [id_ for id_ in target_ids if id_ != owner_id] if target_ids: position = spatial.get_position(entity_id) spawn_missilesplash(position) manager.destroy_entity(entity_id)
def process_events(): enemy_ids = set(enemies) left_world = enemy_ids.intersection(collider.world_events) for entity_id in left_world: state = enemies[entity_id] amount = state.attempts if amount: state.state = IDLE else: score.award(entity_id) manager.destroy_entity(entity_id) state.attempts = amount - 1 player_hit = enemy_ids.intersection(collider.collide_events) for entity_id in player_hit: health.apply_damage(player.player_id, DAMAGE) position = spatial.get_position(entity_id) explosions.create(position, big=False) manager.destroy_entity(entity_id)
def process_events(): bullet_ids = set(bullets) left_world = bullet_ids.intersection(collider.world_events) for entity_id in left_world: manager.destroy_entity(entity_id) global hit, hit_data hit = set() hit_data = collections.Counter() struck_target = bullet_ids.intersection(collider.collide_events) for entity_id in struck_target: if entity_id not in bullets: continue target_ids = collider.collide_events_data[entity_id] owner_id = bullets[entity_id][1] target_ids = [id_ for id_ in target_ids if id_ != owner_id] if target_ids: map(hit.add, target_ids) hit_data.update(target_ids) position = spatial.get_position(entity_id) explosions.create(position, big=False) manager.destroy_entity(entity_id)
def update(dt): for entity_id, label in texts.iteritems(): position = spatial.get_position(entity_id) label.x, label.y = int(position[0] * 2), int(position[1] * 2)