Example #1
0
            def test_system_and_entity_managers_not_changed(
                    self, manager, systems):
                manager2 = SystemManager(sentinel.entity_manager)
                with raises(SystemAlreadyAddedToManagerError):
                    manager2.add_system(systems[0])

                assert systems[0].entity_manager == sentinel.entity_manager
                assert systems[0].system_manager == manager
Example #2
0
 def test_raises_error(self, manager, systems):
     manager2 = SystemManager(sentinel.entity_manager)
     with raises(SystemAlreadyAddedToManagerError) as exc_info:
         manager2.add_system(systems[0])
     # It's going to format a memory address for each class. We
     # don't care about that.
     assert re.match(
         "System `.*' which belongs to system manager `.*'"
         "attempted to be added to system manager `.*'$",
         str(exc_info.value))
def scanner_test():
    w = sf.RenderWindow(sf.VideoMode(400, 400), "Scanner Test")
    clock = sf.Clock()

    em = MyEntityManager()
    sm = SystemManager(em)

    car1 = em.create_entity()
    em.add_component(car1, PositionComponent(0, 0, 0))
    em.add_component(car1, VelocityComponent(0, 0, 0))
    car1_circle = sf.CircleShape()
    car1_circle.radius = 10
    car1_circle.fill_color = sf.Color.RED
    em.add_component(car1, DrawableComponent(car1_circle))
    em.add_component(car1, MovementControlComponent())
    em.add_component(car1,
                     ScanSoundComponent("engine_idle_freesound_loop.wav"))
    car1_engine_sound = PositionSoundComponent(
        "engine_idle_freesound_loop.wav")
    car1_engine_sound.sound.loop = True
    em.add_component(car1, car1_engine_sound)

    player = em.create_entity()
    em.add_component(player, PositionComponent(100, 100, 0))
    em.add_component(player, VelocityComponent(0, 0, 0))
    em.add_component(player, DirectionComponent(radians(180)))
    player_circle = sf.CircleShape()
    player_circle.radius = 10
    player_circle.fill_color = sf.Color.WHITE
    em.add_component(player, DrawableComponent(player_circle))
    #em.add_component(player, MovementControlComponent())
    em.add_component(player, AudioListenerComponent())
    em.add_component(player, HydrophoneComponent(radians(0)))

    sm.add_system(InputSystem(w))
    sm.add_system(PhysicsSystem())
    sm.add_system(AudioSystem())
    sm.add_system(RenderSystem(w))

    while w.is_open:
        sm.update(clock.restart())

        for event in w.events:
            if type(event) is sf.CloseEvent:
                w.close()

        #
        w.display()
Example #4
0
def game_loop(con):
    '''The main game loop.'''
    tdl.event.set_key_repeat(500, 100)
    game_map = eldmapgen.new_map()
    ent_mgr = EntityManager()

    player_coords = eldmap.random_unoccupied(ent_mgr, game_map,
                                             eldmapgen.DEFAULT_MAP_SEED)
    player = ents.new_player(ent_mgr, game_map, player_coords)
    torch_coords = eldmap.random_unoccupied(ent_mgr, game_map,
                                            eldmapgen.DEFAULT_MAP_SEED)
    client_list = []
    for _ in range(random.randint(1, MAX_CLIENTS)):
        for client_coords in utils.adjacent8(player_coords):
            if eldmap.passable(ent_mgr, game_map, client_coords):
                client_list.append(
                    (ents.new_client(ent_mgr, game_map,
                                     client_coords), client_coords))
                break

    ents.new_torch(ent_mgr, game_map, torch_coords)
    # ents.new_client(ent_mgr, game_map, (8, 3))
    main_display = tdl.Window(con, 0, 0, 25, 15)
    ents.new_tracking_camera(ent_mgr, game_map, main_display, player)

    sys_mgr = SystemManager(ent_mgr)
    sys_mgr.add_system(systems.UpdateWorldSys())
    sys_mgr.add_system(systems.LightingSys(game_map))
    sys_mgr.add_system(systems.FOVSys())
    sys_mgr.add_system(systems.FOWSys())
    fog_sys = systems.FogSys((main_display.width, main_display.height))
    sys_mgr.add_system(fog_sys)

    event_sys = systems.EventSys(CONSOLE_WIDTH, CONSOLE_HEIGHT)
    sys_mgr.add_system(event_sys)
    sys_mgr.add_system(systems.AISys())
    sys_mgr.add_system(systems.ActorSys())
    sys_mgr.add_system(systems.FollowEntitySys())
    sys_mgr.add_system(systems.RenderDisplaySys(fog_sys.get_fogmap))
    start_time = utils.cur_time_ms()
    prev_time = start_time
    cur_time = prev_time
    while not event_sys.game_ended:
        cur_time = utils.cur_time_ms()
        sys_mgr.update(cur_time - prev_time)  # 0 is a placeholder value
        prev_time = cur_time
Example #5
0
 def manager(self, systems):
     sm = SystemManager(sentinel.entity_manager)
     for system in systems:
         sm.add_system(system, priority=random.randrange(4))
     return sm