Search in sources :

Example 16 with Module

use of org.terasology.module.Module in project Terasology by MovingBlocks.

the class ModulesMetric method updateModules.

private void updateModules() {
    ModuleManager moduleManager = context.get(ModuleManager.class);
    ModuleEnvironment moduleEnvironment = moduleManager.getEnvironment();
    modules.clear();
    Iterator<Module> iterator = moduleEnvironment.iterator();
    while (iterator.hasNext()) {
        Module next = iterator.next();
        modules.add(next);
    }
}
Also used : ModuleEnvironment(org.terasology.module.ModuleEnvironment) ModuleManager(org.terasology.engine.module.ModuleManager) Module(org.terasology.module.Module)

Example 17 with Module

use of org.terasology.module.Module in project Terasology by MovingBlocks.

the class CreateGameScreen method recursivelyAddModuleDependencies.

private void recursivelyAddModuleDependencies(Set<Name> modules, Name moduleName) {
    Module module = moduleManager.getRegistry().getLatestModuleVersion(moduleName);
    if (module != null) {
        for (DependencyInfo dependencyInfo : module.getMetadata().getDependencies()) {
            modules.add(dependencyInfo.getId());
            recursivelyAddModuleDependencies(modules, dependencyInfo.getId());
        }
    }
}
Also used : Module(org.terasology.module.Module) DependencyInfo(org.terasology.module.DependencyInfo)

Example 18 with Module

use of org.terasology.module.Module in project Terasology by MovingBlocks.

the class CreateGameScreen method onOpened.

@Override
public void onOpened() {
    super.onOpened();
    final UIText worldName = find("worldName", UIText.class);
    setGameName(worldName);
    final UIDropdown<Module> gameplay = find("gameplay", UIDropdown.class);
    String configDefaultModuleName = config.getDefaultModSelection().getDefaultGameplayModuleName();
    String useThisModuleName = "";
    // Otherwise, default to DEFAULT_GAME_TEMPLATE_NAME.
    if ("".equalsIgnoreCase(configDefaultModuleName) || DEFAULT_GAME_TEMPLATE_NAME.equalsIgnoreCase(configDefaultModuleName)) {
        useThisModuleName = DEFAULT_GAME_TEMPLATE_NAME;
    } else {
        useThisModuleName = configDefaultModuleName;
    }
    Name defaultGameplayModuleName = new Name(useThisModuleName);
    Module defaultGameplayModule = moduleManager.getRegistry().getLatestModuleVersion(defaultGameplayModuleName);
    if (defaultGameplayModule != null) {
        gameplay.setSelection(defaultGameplayModule);
        if (configDefaultModuleName.equalsIgnoreCase(DEFAULT_GAME_TEMPLATE_NAME)) {
            setDefaultGeneratorOfGameplayModule(defaultGameplayModule);
        }
    } else {
        // Find the first gameplay module that is available.
        for (Module module : moduleManager.getRegistry()) {
            // Module is null if it is no longer present.
            if (module != null && StandardModuleExtension.isGameplayModule(module)) {
                gameplay.setSelection(module);
                break;
            }
        }
    }
}
Also used : UIText(org.terasology.rendering.nui.widgets.UIText) Module(org.terasology.module.Module) Name(org.terasology.naming.Name)

Example 19 with Module

use of org.terasology.module.Module in project Terasology by MovingBlocks.

the class InputSettingsScreen method initialise.

@Override
public void initialise() {
    setAnimationSystem(MenuAnimationSystems.createDefaultSwipeAnimation());
    ColumnLayout mainLayout = new ColumnLayout();
    mainLayout.setHorizontalSpacing(8);
    mainLayout.setVerticalSpacing(8);
    mainLayout.setFamily("option-grid");
    UISlider mouseSensitivity = new UISlider("mouseSensitivity");
    mouseSensitivity.bindValue(BindHelper.bindBeanProperty("mouseSensitivity", inputDeviceConfiguration, Float.TYPE));
    mouseSensitivity.setIncrement(0.025f);
    mouseSensitivity.setPrecision(3);
    UICheckbox mouseInverted = new UICheckbox("mouseYAxisInverted");
    mouseInverted.bindChecked(BindHelper.bindBeanProperty("mouseYAxisInverted", inputDeviceConfiguration, Boolean.TYPE));
    mainLayout.addWidget(new UILabel("mouseLabel", "subheading", translationSystem.translate("${engine:menu#category-mouse}")));
    mainLayout.addWidget(new RowLayout(new UILabel(translationSystem.translate("${engine:menu#mouse-sensitivity}") + ":"), mouseSensitivity).setColumnRatios(0.4f).setHorizontalSpacing(horizontalSpacing));
    mainLayout.addWidget(new RowLayout(new UILabel(translationSystem.translate("${engine:menu#invert-mouse}") + ":"), mouseInverted).setColumnRatios(0.4f).setHorizontalSpacing(horizontalSpacing));
    Map<String, InputCategory> inputCategories = Maps.newHashMap();
    Map<SimpleUri, RegisterBindButton> inputsById = Maps.newHashMap();
    DependencyResolver resolver = new DependencyResolver(moduleManager.getRegistry());
    for (Name moduleId : moduleManager.getRegistry().getModuleIds()) {
        Module module = moduleManager.getRegistry().getLatestModuleVersion(moduleId);
        if (module.isCodeModule()) {
            ResolutionResult result = resolver.resolve(moduleId);
            if (result.isSuccess()) {
                try (ModuleEnvironment environment = moduleManager.loadEnvironment(result.getModules(), false)) {
                    for (Class<?> holdingType : environment.getTypesAnnotatedWith(InputCategory.class, new FromModule(environment, moduleId))) {
                        InputCategory inputCategory = holdingType.getAnnotation(InputCategory.class);
                        inputCategories.put(module.getId() + ":" + inputCategory.id(), inputCategory);
                    }
                    for (Class<?> bindEvent : environment.getTypesAnnotatedWith(RegisterBindButton.class, new FromModule(environment, moduleId))) {
                        if (BindButtonEvent.class.isAssignableFrom(bindEvent)) {
                            RegisterBindButton bindRegister = bindEvent.getAnnotation(RegisterBindButton.class);
                            inputsById.put(new SimpleUri(module.getId(), bindRegister.id()), bindRegister);
                        }
                    }
                }
            }
        }
    }
    addInputSection(inputCategories.remove("engine:movement"), mainLayout, inputsById);
    addInputSection(inputCategories.remove("engine:interaction"), mainLayout, inputsById);
    addInputSection(inputCategories.remove("engine:inventory"), mainLayout, inputsById);
    addInputSection(inputCategories.remove("engine:general"), mainLayout, inputsById);
    for (InputCategory category : inputCategories.values()) {
        addInputSection(category, mainLayout, inputsById);
    }
    mainLayout.addWidget(new UISpace(new Vector2i(1, 16)));
    List<String> controllers = inputSystem.getControllerDevice().getControllers();
    for (String name : controllers) {
        ControllerInfo cfg = inputDeviceConfiguration.getController(name);
        addInputSection(mainLayout, name, cfg);
    }
    ScrollableArea area = find("area", ScrollableArea.class);
    area.setContent(mainLayout);
    WidgetUtil.trySubscribe(this, "reset", button -> {
        inputDeviceConfiguration.reset();
        bindsManager.getBindsConfig().setBinds(bindsManager.getDefaultBindsConfig());
    });
    WidgetUtil.trySubscribe(this, "back", button -> triggerBackAnimation());
}
Also used : UILabel(org.terasology.rendering.nui.widgets.UILabel) UISlider(org.terasology.rendering.nui.widgets.UISlider) RegisterBindButton(org.terasology.input.RegisterBindButton) ResolutionResult(org.terasology.module.ResolutionResult) SimpleUri(org.terasology.engine.SimpleUri) UICheckbox(org.terasology.rendering.nui.widgets.UICheckbox) DependencyResolver(org.terasology.module.DependencyResolver) Name(org.terasology.naming.Name) ModuleEnvironment(org.terasology.module.ModuleEnvironment) ScrollableArea(org.terasology.rendering.nui.layouts.ScrollableArea) ColumnLayout(org.terasology.rendering.nui.layouts.ColumnLayout) RowLayout(org.terasology.rendering.nui.layouts.RowLayout) InputCategory(org.terasology.input.InputCategory) UISpace(org.terasology.rendering.nui.widgets.UISpace) Vector2i(org.terasology.math.geom.Vector2i) FromModule(org.terasology.module.predicates.FromModule) Module(org.terasology.module.Module) FromModule(org.terasology.module.predicates.FromModule) ControllerInfo(org.terasology.config.ControllerConfig.ControllerInfo)

Example 20 with Module

use of org.terasology.module.Module in project Terasology by MovingBlocks.

the class SelectModulesScreen method startDownloadingNewestModulesRequiredFor.

private void startDownloadingNewestModulesRequiredFor(ModuleSelectionInfo moduleMetadata) {
    Set<Module> modulesToDownload;
    try {
        modulesToDownload = moduleManager.getInstallManager().getAllModulesToDownloadFor(moduleMetadata.getMetadata().getId());
    } catch (DependencyResolutionFailedException ex) {
        MessagePopup messagePopup = getManager().pushScreen(MessagePopup.ASSET_URI, MessagePopup.class);
        messagePopup.setMessage("Error", ex.getMessage());
        return;
    }
    ConfirmPopup confirmPopup = getManager().pushScreen(ConfirmPopup.ASSET_URI, ConfirmPopup.class);
    confirmPopup.setMessage("Confirm Download", modulesToDownload.size() + " modules will be downloaded");
    confirmPopup.setOkHandler(() -> downloadModules(modulesToDownload));
}
Also used : ConfirmPopup(org.terasology.rendering.nui.layers.mainMenu.ConfirmPopup) DependencyResolutionFailedException(org.terasology.engine.module.DependencyResolutionFailedException) MessagePopup(org.terasology.rendering.nui.layers.mainMenu.MessagePopup) Module(org.terasology.module.Module)

Aggregations

Module (org.terasology.module.Module)32 Name (org.terasology.naming.Name)15 ModuleManager (org.terasology.engine.module.ModuleManager)11 DependencyResolver (org.terasology.module.DependencyResolver)11 ModuleEnvironment (org.terasology.module.ModuleEnvironment)9 ResolutionResult (org.terasology.module.ResolutionResult)8 Path (java.nio.file.Path)4 ArrayList (java.util.ArrayList)4 List (java.util.List)4 ModuleMetadata (org.terasology.module.ModuleMetadata)4 IOException (java.io.IOException)3 URL (java.net.URL)3 HashMap (java.util.HashMap)3 Map (java.util.Map)3 Set (java.util.Set)3 SimpleUri (org.terasology.engine.SimpleUri)3 GameManifest (org.terasology.game.GameManifest)3 Vector2i (org.terasology.math.geom.Vector2i)3 DependencyInfo (org.terasology.module.DependencyInfo)3 ModuleRegistry (org.terasology.module.ModuleRegistry)3