use of org.terasology.gestalt.module.Module in project Terasology by MovingBlocks.
the class AdvancedGameSetupScreen method advancedModuleFilter.
private void advancedModuleFilter() {
Iterator<ModuleSelectionInfo> iter = sortedModules.iterator();
while (iter.hasNext()) {
ModuleSelectionInfo m = iter.next();
Module module;
if (m.isPresent()) {
module = moduleManager.getRegistry().getLatestModuleVersion(m.getMetadata().getId());
} else {
module = (m.getOnlineVersion() == null) ? m.getLatestVersion() : m.getOnlineVersion();
}
boolean matches = false;
Collection<StandardModuleExtension> selectedStandardModuleExtensions = selectModulesConfig.getSelectedStandardModuleExtensions();
for (StandardModuleExtension standardModuleExtension : selectedStandardModuleExtensions) {
if (standardModuleExtension != null && standardModuleExtension.isProvidedBy(module)) {
matches = true;
break;
}
}
if (!matches) {
iter.remove();
}
}
}
use of org.terasology.gestalt.module.Module in project Terasology by MovingBlocks.
the class NewGameScreen method initialise.
@Override
public void initialise() {
setAnimationSystem(MenuAnimationSystems.createDefaultSwipeAnimation());
UILabel gameTypeTitle = find("gameTypeTitle", UILabel.class);
if (gameTypeTitle != null) {
gameTypeTitle.bindText(new ReadOnlyBinding<String>() {
@Override
public String get() {
if (isLoadingAsServer()) {
return translationSystem.translate("${engine:menu#select-multiplayer-game-sub-title}");
} else {
return translationSystem.translate("${engine:menu#select-singleplayer-game-sub-title}");
}
}
});
}
final UIText gameName = find("gameName", UIText.class);
setGameName(gameName);
final UIDropdownScrollable<Module> gameplay = find("gameplay", UIDropdownScrollable.class);
gameplay.setOptions(getGameplayModules());
gameplay.setVisibleOptions(5);
gameplay.bindSelection(new Binding<Module>() {
Module selected;
@Override
public Module get() {
return selected;
}
@Override
public void set(Module value) {
setSelectedGameplayModule(value);
selected = value;
}
});
gameplay.setOptionRenderer(new StringTextRenderer<Module>() {
@Override
public String getString(Module value) {
return value.getMetadata().getDisplayName().value();
}
@Override
public void draw(Module value, Canvas canvas) {
canvas.getCurrentStyle().setTextColor(validateModuleDependencies(value.getId()) ? Color.WHITE : Color.RED);
super.draw(value, canvas);
canvas.getCurrentStyle().setTextColor(Color.WHITE);
}
});
UILabel gameplayDescription = find("gameplayDescription", UILabel.class);
gameplayDescription.bindText(new ReadOnlyBinding<String>() {
@Override
public String get() {
Module selectedModule = gameplay.getSelection();
if (selectedModule != null) {
return selectedModule.getMetadata().getDescription().value();
} else {
return "";
}
}
});
AdvancedGameSetupScreen advancedSetupGameScreen = getManager().createScreen(AdvancedGameSetupScreen.ASSET_URI, AdvancedGameSetupScreen.class);
WidgetUtil.trySubscribe(this, "advancedSetup", button -> {
universeWrapper.setGameName(gameName.getText());
advancedSetupGameScreen.setUniverseWrapper(universeWrapper);
triggerForwardAnimation(advancedSetupGameScreen);
});
WidgetUtil.trySubscribe(this, "play", button -> {
if (gameName.getText().isEmpty()) {
universeWrapper.setGameName(GameProvider.getNextGameName());
}
universeWrapper.setGameName(GameProvider.getNextGameName(gameName.getText()));
if (gameplay.getOptions().isEmpty()) {
logger.error("No gameplay modules present");
MessagePopup errorPopup = getManager().pushScreen(MessagePopup.ASSET_URI, MessagePopup.class);
errorPopup.setMessage("Error", "Can't create new game without modules!");
}
GameManifest gameManifest = GameManifestProvider.createGameManifest(universeWrapper, moduleManager, config);
if (gameManifest != null) {
gameEngine.changeState(new StateLoading(gameManifest, (isLoadingAsServer()) ? NetworkMode.DEDICATED_SERVER : NetworkMode.NONE));
} else {
MessagePopup errorPopup = getManager().createScreen(MessagePopup.ASSET_URI, MessagePopup.class);
errorPopup.setMessage("Error", "Can't create new game!");
}
});
WidgetUtil.trySubscribe(this, "close", button -> {
if (GameProvider.isSavesFolderEmpty()) {
// skip selectGameScreen and get back directly to main screen
getManager().pushScreen("engine:mainMenuScreen");
} else {
triggerBackAnimation();
}
});
WidgetUtil.trySubscribe(this, "mainMenu", button -> {
getManager().pushScreen("engine:mainMenuScreen");
});
}
use of org.terasology.gestalt.module.Module in project Terasology by MovingBlocks.
the class NewGameScreen method getGameplayModules.
private List<Module> getGameplayModules() {
List<Module> gameplayModules = Lists.newArrayList();
for (Name moduleId : moduleManager.getRegistry().getModuleIds()) {
Module latestVersion = moduleManager.getRegistry().getLatestModuleVersion(moduleId);
if (StandardModuleExtension.isGameplayModule(latestVersion)) {
gameplayModules.add(latestVersion);
}
}
gameplayModules.sort(Comparator.comparing(o -> o.getMetadata().getDisplayName().value()));
return gameplayModules;
}
use of org.terasology.gestalt.module.Module in project Terasology by MovingBlocks.
the class ModuleDetailsScreen method updateOpenInBrowserButton.
private void updateOpenInBrowserButton() {
openInBrowser.setEnabled(false);
final Module module = moduleInfoBinding.get();
if (module == null) {
return;
}
final String moduleOrigin = getOriginModuleUrl(moduleManager.getRegistry().getLatestModuleVersion(module.getMetadata().getId()));
if (StringUtils.isNotBlank(moduleOrigin)) {
openInBrowser.setEnabled(true);
openInBrowser.setUrl(moduleOrigin).setNuiManager(getManager()).setTranslationSystem(translationSystem);
}
}
use of org.terasology.gestalt.module.Module in project Terasology by MovingBlocks.
the class ModulesMetric method createTelemetryFieldToValue.
@Override
public Map<String, ?> createTelemetryFieldToValue() {
updateModules();
telemetryFieldToValue = new HashMap();
for (Module module : modules) {
telemetryFieldToValue.put(module.getId().toString(), module.getVersion().toString());
}
return telemetryFieldToValue;
}
Aggregations