示例#1
0
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)
示例#2
0
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)
示例#3
0
文件: mover.py 项目: ghostonline/ld24
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)
示例#4
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)
示例#5
0
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)
示例#6
0
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)
示例#7
0
文件: text.py 项目: ghostonline/ld24
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)