Ejemplo n.º 1
0
def test_compute_player_motion_mount_and_active_floor():
    elevator = Movable(
        type=EntityDBEntry(id=EntityType.ACTIVEFLOOR_ELEVATOR),
        position_x=0.5,
        position_y=0.7,
        velocity_x=-0.1,
        velocity_y=-0.3,
    )
    poly_elevator = PolyPointer(101, elevator, MemContext())
    # Turkey on an elevator
    mount = Mount(
        type=EntityDBEntry(id=EntityType.MOUNT_TURKEY),
        position_x=18,
        position_y=13,
        velocity_x=-2,
        velocity_y=-7,
        overlay=poly_elevator,
    )
    poly_mount = PolyPointer(102, mount, MemContext())
    player = Player(position_x=5,
                    position_y=7,
                    velocity_x=-1,
                    velocity_y=-3,
                    overlay=poly_mount)
    expected_motion = PlayerMotion(position_x=18.5,
                                   position_y=13.7,
                                   velocity_x=-2.1,
                                   velocity_y=-7.3)
    run_state = RunState()
    assert run_state.compute_player_motion(player) == expected_motion
Ejemplo n.º 2
0
def test_could_tp_mount(mount_type, expected_could_tp):
    mount = Mount(type=EntityDBEntry(id=mount_type))
    poly_mount = PolyPointer(101, mount, MemContext())
    player = Player(overlay=poly_mount)

    run_state = RunState()
    assert run_state.could_tp(player, set(), set()) == expected_could_tp
Ejemplo n.º 3
0
def make_player_with_hh_type(entity_map: EntityMapBuilder,
                             hh_type: EntityType):
    hh_entity_db = EntityDBEntry(id=hh_type)
    hh_entity = Player(type=hh_entity_db)
    hh_id = entity_map.add_entity(hh_entity)

    return Player(linked_companion_child=hh_id)
Ejemplo n.º 4
0
def test_has_mounted_tame(chain_status, theme, mount_type, mount_tamed,
                          expected_low):
    mount = Mount(type=EntityDBEntry(id=mount_type), is_tamed=mount_tamed)
    poly_mount = PolyPointer(101, mount, MemContext())

    run_state = RunState()
    run_state.sunken_chain_status = chain_status
    run_state.update_has_mounted_tame(theme, poly_mount)

    is_low = Label.LOW in run_state.run_label._set
    assert is_low == expected_low
Ejemplo n.º 5
0
def test_rope_deployed(new_entity_types, theme, expected_no):
    run_state = RunState()
    run_state.new_entities = [
        poly_pointer_no_mem(Entity(type=EntityDBEntry(id=t)))
        for t in new_entity_types
    ]

    run_state.update_rope_deployed(theme)

    is_no = Label.NO in run_state.run_label._set
    assert is_no == expected_no
Ejemplo n.º 6
0
def test_compute_player_motion_mount():
    mount = Mount(
        type=EntityDBEntry(id=EntityType.MOUNT_TURKEY),
        position_x=18,
        position_y=13,
        velocity_x=-2,
        velocity_y=-7,
    )
    poly_mount = PolyPointer(101, mount, MemContext())
    player = Player(position_x=5,
                    position_y=7,
                    velocity_x=-1,
                    velocity_y=-3,
                    overlay=poly_mount)
    expected_motion = PlayerMotion(position_x=18,
                                   position_y=13,
                                   velocity_x=-2,
                                   velocity_y=-7)
    run_state = RunState()
    assert run_state.compute_player_motion(player) == expected_motion
Ejemplo n.º 7
0
def test_compute_player_motion_active_floor():
    elevator = Movable(
        type=EntityDBEntry(id=EntityType.ACTIVEFLOOR_ELEVATOR),
        position_x=0.5,
        position_y=0.7,
        velocity_x=-0.1,
        velocity_y=-0.3,
    )
    poly_elevator = PolyPointer(101, elevator, MemContext())
    player = Player(position_x=5,
                    position_y=7,
                    velocity_x=-1,
                    velocity_y=-3,
                    overlay=poly_elevator)
    expected_motion = PlayerMotion(position_x=5.5,
                                   position_y=7.7,
                                   velocity_x=-1.1,
                                   velocity_y=-3.3)
    run_state = RunState()
    assert run_state.compute_player_motion(player) == expected_motion
Ejemplo n.º 8
0
def test_no_tp(
    player_x,
    player_y,
    player_vx,
    player_vy,
    idle_counter,
    shadow_x,
    shadow_y,
    expected_no_tp,
):
    fx_shadow_type = EntityDBEntry(id=EntityType.FX_TELEPORTSHADOW)
    new_entities = []
    src_shadow = LightEmitter(type=fx_shadow_type,
                              idle_counter=idle_counter,
                              emitted_light=Illumination())
    new_entities.append(poly_pointer_no_mem(src_shadow))

    dest_illumination = Illumination(light_pos_x=shadow_x,
                                     light_pos_y=shadow_y)
    dest_shadow = LightEmitter(type=fx_shadow_type,
                               idle_counter=idle_counter,
                               emitted_light=dest_illumination)
    new_entities.append(poly_pointer_no_mem(dest_shadow))

    player = Player(
        position_x=player_x,
        position_y=player_y,
        velocity_x=player_vx,
        velocity_y=player_vy,
    )
    item_set = {EntityType.ITEM_TELEPORTER_BACKPACK}
    prev_item_set = set()

    run_state = RunState()
    run_state.new_entities = new_entities
    run_state.update_no_tp(player, item_set, prev_item_set)

    is_no_tp = Label.NO_TELEPORTER in run_state.run_label._set
    assert is_no_tp == expected_no_tp
Ejemplo n.º 9
0
def test_new_entities(screen, level_started, entity_types,
                      expected_entity_types):
    run_state = RunState()
    run_state.level_started = level_started

    fake_entity_db = {}
    for entity_type in entity_types:
        if entity_type not in fake_entity_db:
            fake_entity_db[entity_type] = EntityDBEntry(id=entity_type)

    entity_map = EntityMapBuilder()
    run_state.prev_next_uid = entity_map.next_uid
    entity_map.add_trivial_entities(entity_types)

    game_state = State(
        screen=screen,
        next_entity_uid=entity_map.next_uid,
        instance_id_to_pointer=entity_map.build(),
    )
    run_state.update_new_entities(game_state)

    got_types = [e.value.type.id for e in run_state.new_entities]
    assert got_types == expected_entity_types
Ejemplo n.º 10
0
 def add_trivial_entity(self, entity_type: EntityType) -> int:
     entity = Entity(type=EntityDBEntry(entity_type))
     return self.add_entity(entity)