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
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()
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
def manager(self, systems): sm = SystemManager(sentinel.entity_manager) for system in systems: sm.add_system(system, priority=random.randrange(4)) return sm