use of org.terasology.engine.core.SimpleUri in project Terasology by MovingBlocks.
the class BindsSubsystem method registerAxisBinds.
private void registerAxisBinds(ModuleEnvironment environment) {
Iterable<Class<?>> classes = environment.getTypesAnnotatedWith(RegisterBindAxis.class);
for (Class<?> registerBindClass : classes) {
RegisterBindAxis info = registerBindClass.getAnnotation(RegisterBindAxis.class);
Name moduleId = environment.getModuleProviding(registerBindClass);
SimpleUri id = new SimpleUri(moduleId, info.id());
if (BindAxisEvent.class.isAssignableFrom(registerBindClass)) {
BindableButton positiveButton = getBindButton(new SimpleUri(info.positiveButton()));
BindableButton negativeButton = getBindButton(new SimpleUri(info.negativeButton()));
if (positiveButton == null) {
logger.warn("Failed to register axis \"{}\", missing positive button \"{}\"", id, info.positiveButton());
continue;
}
if (negativeButton == null) {
logger.warn("Failed to register axis \"{}\", missing negative button \"{}\"", id, info.negativeButton());
continue;
}
try {
BindableAxis bindAxis = registerBindAxis(id.toString(), (BindAxisEvent) registerBindClass.newInstance(), positiveButton, negativeButton);
bindAxis.setSendEventMode(info.eventMode());
logger.debug("Registered axis bind: {}", id);
} catch (InstantiationException | IllegalAccessException e) {
logger.error("Failed to register axis bind \"{}\"", id, e);
}
} else {
logger.error("Failed to register axis bind \"{}\", does not extend BindAxisEvent", id);
}
}
}
use of org.terasology.engine.core.SimpleUri in project Terasology by MovingBlocks.
the class BindsSubsystem method registerRealAxisBinds.
private void registerRealAxisBinds(ModuleEnvironment environment) {
Iterable<Class<?>> classes = environment.getTypesAnnotatedWith(RegisterRealBindAxis.class);
for (Class<?> registerBindClass : classes) {
RegisterRealBindAxis info = registerBindClass.getAnnotation(RegisterRealBindAxis.class);
Name moduleId = environment.getModuleProviding(registerBindClass);
SimpleUri id = new SimpleUri(moduleId, info.id());
if (BindAxisEvent.class.isAssignableFrom(registerBindClass)) {
try {
BindAxisEvent instance = (BindAxisEvent) registerBindClass.newInstance();
BindableAxis bindAxis = registerRealBindAxis(id.toString(), instance);
bindAxis.setSendEventMode(info.eventMode());
for (Input input : bindsConfiguration.getBinds(id)) {
linkAxisToInput(input, id);
}
logger.debug("Registered axis bind: {}", id);
} catch (InstantiationException | IllegalAccessException e) {
logger.error("Failed to register axis bind \"{}\"", id, e);
}
} else {
logger.error("Failed to register axis bind \"{}\", does not extend BindAxisEvent", id);
}
}
}
use of org.terasology.engine.core.SimpleUri in project Terasology by MovingBlocks.
the class StateHeadlessSetup method createGameManifest.
public GameManifest createGameManifest() {
GameManifest gameManifest = new GameManifest();
Config config = context.get(Config.class);
ModuleManager moduleManager = context.get(ModuleManager.class);
for (Name moduleName : config.getDefaultModSelection().listModules()) {
Module module = moduleManager.getRegistry().getLatestModuleVersion(moduleName);
if (module != null) {
gameManifest.addModule(module.getId(), module.getVersion());
} else {
logger.warn("ModuleRegistry has no latest version for module {}", moduleName);
}
}
WorldGenerationConfig worldGenConfig = config.getWorldGeneration();
// If no valid default world generator set then try to find one - no option to pick one manually in headless
if (!worldGenConfig.getDefaultGenerator().isValid()) {
// find the first gameplay module that is available, it should have a preferred world gen
for (Name moduleName : config.getDefaultModSelection().listModules()) {
Module module = moduleManager.getRegistry().getLatestModuleVersion(moduleName);
if (StandardModuleExtension.isGameplayModule(module)) {
SimpleUri defaultWorldGenerator = StandardModuleExtension.getDefaultWorldGenerator(module);
worldGenConfig.setDefaultGenerator(defaultWorldGenerator);
break;
}
}
}
SimpleUri worldGeneratorUri = worldGenConfig.getDefaultGenerator();
gameManifest.setTitle(worldGenConfig.getWorldTitle());
gameManifest.setSeed(worldGenConfig.getDefaultSeed());
WorldInfo worldInfo = new WorldInfo(TerasologyConstants.MAIN_WORLD, worldGenConfig.getWorldTitle(), gameManifest.getSeed(), (long) (WorldTime.DAY_LENGTH * WorldTime.NOON_OFFSET), worldGeneratorUri);
gameManifest.addWorld(worldInfo);
return gameManifest;
}
use of org.terasology.engine.core.SimpleUri in project Terasology by MovingBlocks.
the class BehaviorNodeFactory method determineAnimationPoolUris.
private List<ComponentFieldUri> determineAnimationPoolUris() {
final List<ComponentFieldUri> animationSetUris = Lists.newArrayList();
for (ComponentMetadata<?> componentMetadata : componentLibrary.iterateComponentMetadata()) {
SimpleUri uri = new SimpleUri(componentMetadata.getId().toString());
for (FieldMetadata<?, ?> fieldMetadata : componentMetadata.getFields()) {
if (fieldMetadata.getType().isAssignableFrom(List.class)) {
Type fieldType = fieldMetadata.getField().getGenericType();
if (fieldType instanceof ParameterizedType) {
ParameterizedType parameterizedType = (ParameterizedType) fieldType;
Type[] typeArguments = parameterizedType.getActualTypeArguments();
if (typeArguments.length == 1) {
Class<?> typeClass = ReflectionUtil.getRawType(typeArguments[0]);
if (typeClass.isAssignableFrom(MeshAnimation.class)) {
animationSetUris.add(new ComponentFieldUri(uri, fieldMetadata.getName()));
}
}
}
}
}
}
return animationSetUris;
}
use of org.terasology.engine.core.SimpleUri in project Terasology by MovingBlocks.
the class BindsSubsystemTest method testRegisterBinds.
@Test
public void testRegisterBinds() {
registerBindButtonClasses.add(TestEventButton.class);
bindsSubsystem.updateConfigWithDefaultBinds();
bindsSubsystem.registerBinds();
BindableButton button = bindsSubsystem.getKeyBinds().get(KeyId.T);
assertNotNull(button);
assertEquals(button.getId(), new SimpleUri(TEST_MODULE, "testEvent"));
assertEquals(button.getDisplayName(), "${engine-tests:menu#theTestEvent}");
}
Aggregations