Search in sources :

Example 16 with Prefab

use of org.terasology.entitySystem.prefab.Prefab in project Terasology by MovingBlocks.

the class PrefabTest method testPrefabHasDefinedComponents.

@Test
public void testPrefabHasDefinedComponents() {
    Prefab prefab = prefabManager.getPrefab("unittest:withComponent");
    assertTrue(prefab.hasComponent(StringComponent.class));
}
Also used : StringComponent(org.terasology.entitySystem.stubs.StringComponent) Prefab(org.terasology.entitySystem.prefab.Prefab) PojoPrefab(org.terasology.entitySystem.prefab.internal.PojoPrefab) Test(org.junit.Test)

Example 17 with Prefab

use of org.terasology.entitySystem.prefab.Prefab in project Terasology by MovingBlocks.

the class PrefabTest method testPrefabWithCollectionOfMappedContainers.

@Test
public void testPrefabWithCollectionOfMappedContainers() {
    Prefab prefab = prefabManager.getPrefab("unittest:withCollectionOfMappedContainers");
    MappedContainerComponent mappedContainer = prefab.getComponent(MappedContainerComponent.class);
    assertNotNull(mappedContainer);
    assertNotNull(mappedContainer.containers);
    assertEquals(1, mappedContainer.containers.size());
    MappedContainerComponent.Cont cont = mappedContainer.containers.iterator().next();
    assertNotNull(cont);
    assertEquals("a", cont.value);
}
Also used : MappedContainerComponent(org.terasology.entitySystem.stubs.MappedContainerComponent) Prefab(org.terasology.entitySystem.prefab.Prefab) PojoPrefab(org.terasology.entitySystem.prefab.internal.PojoPrefab) Test(org.junit.Test)

Example 18 with Prefab

use of org.terasology.entitySystem.prefab.Prefab in project Terasology by MovingBlocks.

the class PrefabTest method setup.

@Before
public void setup() throws Exception {
    ContextImpl context = new ContextImpl();
    CoreRegistry.setContext(context);
    ModuleManager moduleManager = ModuleManagerFactory.create();
    context.put(ModuleManager.class, moduleManager);
    EntitySystemSetupUtil.addReflectionBasedLibraries(context);
    ModuleAwareAssetTypeManager assetTypeManager = new ModuleAwareAssetTypeManager();
    assetTypeManager.registerCoreAssetType(Prefab.class, (AssetFactory<Prefab, PrefabData>) PojoPrefab::new, "prefabs");
    ComponentLibrary componentLibrary = context.get(ComponentLibrary.class);
    TypeSerializationLibrary typeSerializationLibrary = context.get(TypeSerializationLibrary.class);
    PrefabFormat prefabFormat = new PrefabFormat(componentLibrary, typeSerializationLibrary);
    assetTypeManager.registerCoreFormat(Prefab.class, prefabFormat);
    assetTypeManager.switchEnvironment(moduleManager.getEnvironment());
    context.put(AssetManager.class, assetTypeManager.getAssetManager());
    NetworkSystem networkSystem = mock(NetworkSystem.class);
    when(networkSystem.getMode()).thenReturn(NetworkMode.NONE);
    context.put(NetworkSystem.class, networkSystem);
    EntitySystemSetupUtil.addEntityManagementRelatedClasses(context);
    prefabManager = new PojoPrefabManager(context);
}
Also used : PojoPrefabManager(org.terasology.entitySystem.prefab.internal.PojoPrefabManager) PrefabData(org.terasology.entitySystem.prefab.PrefabData) ModuleAwareAssetTypeManager(org.terasology.assets.module.ModuleAwareAssetTypeManager) NetworkSystem(org.terasology.network.NetworkSystem) ComponentLibrary(org.terasology.entitySystem.metadata.ComponentLibrary) PrefabFormat(org.terasology.entitySystem.prefab.internal.PrefabFormat) TypeSerializationLibrary(org.terasology.persistence.typeHandling.TypeSerializationLibrary) ContextImpl(org.terasology.context.internal.ContextImpl) ModuleManager(org.terasology.engine.module.ModuleManager) Prefab(org.terasology.entitySystem.prefab.Prefab) PojoPrefab(org.terasology.entitySystem.prefab.internal.PojoPrefab) Before(org.junit.Before)

Example 19 with Prefab

use of org.terasology.entitySystem.prefab.Prefab in project Terasology by MovingBlocks.

the class PrefabTest method testPrefabWithListOfMappedContainers.

@Test
public void testPrefabWithListOfMappedContainers() {
    Prefab prefab = prefabManager.getPrefab("unittest:withListContainer");
    ListOfObjectComponent mappedContainer = prefab.getComponent(ListOfObjectComponent.class);
    assertEquals(2, mappedContainer.elements.size());
    assertEquals("returnHome", mappedContainer.elements.get(1).id);
}
Also used : ListOfObjectComponent(org.terasology.entitySystem.stubs.ListOfObjectComponent) Prefab(org.terasology.entitySystem.prefab.Prefab) PojoPrefab(org.terasology.entitySystem.prefab.internal.PojoPrefab) Test(org.junit.Test)

Example 20 with Prefab

use of org.terasology.entitySystem.prefab.Prefab in project Terasology by MovingBlocks.

the class BlockPrefabManager method updateBlock.

private void updateBlock(Block block) {
    Optional<Prefab> prefab = block.getPrefab();
    boolean keepActive = block.isKeepActive();
    boolean requiresLifecycleEvents = false;
    if (prefab.isPresent()) {
        for (Component comp : prefab.get().iterateComponents()) {
            ComponentMetadata<?> metadata = entityManager.getComponentLibrary().getMetadata(comp.getClass());
            if (metadata.isForceBlockActive()) {
                keepActive = true;
                break;
            }
            if (metadata.isBlockLifecycleEventsRequired()) {
                requiresLifecycleEvents = true;
            }
        }
    }
    block.setKeepActive(keepActive);
    block.setLifecycleEventsRequired(requiresLifecycleEvents && !keepActive);
}
Also used : Component(org.terasology.entitySystem.Component) Prefab(org.terasology.entitySystem.prefab.Prefab)

Aggregations

Prefab (org.terasology.entitySystem.prefab.Prefab)49 PojoPrefab (org.terasology.entitySystem.prefab.internal.PojoPrefab)20 PrefabData (org.terasology.entitySystem.prefab.PrefabData)13 Test (org.junit.Test)11 ResourceUrn (org.terasology.assets.ResourceUrn)9 Component (org.terasology.entitySystem.Component)9 EntityRef (org.terasology.entitySystem.entity.EntityRef)9 ModuleAwareAssetTypeManager (org.terasology.assets.module.ModuleAwareAssetTypeManager)7 ContextImpl (org.terasology.context.internal.ContextImpl)6 ModuleManager (org.terasology.engine.module.ModuleManager)6 StringComponent (org.terasology.entitySystem.stubs.StringComponent)6 Command (org.terasology.logic.console.commandSystem.annotations.Command)6 ClientComponent (org.terasology.network.ClientComponent)6 Before (org.junit.Before)5 EntityBuilder (org.terasology.entitySystem.entity.EntityBuilder)5 NetworkComponent (org.terasology.network.NetworkComponent)5 BeforeClass (org.junit.BeforeClass)4 NetworkSystem (org.terasology.network.NetworkSystem)4 EngineEntityManager (org.terasology.entitySystem.entity.internal.EngineEntityManager)3 AssetManager (org.terasology.assets.management.AssetManager)2