/* * Copyright 2016 MovingBlocks * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package org.terasology.launcher.settings; import java.io.File; import java.io.IOException; import java.util.Collections; import java.util.Locale; import java.util.Map; import org.terasology.launcher.game.GameJob; import org.terasology.launcher.util.JavaHeapSize; import org.terasology.launcher.util.LogLevel; /** * Created by Skaldarnar on 30.01.2016. */ public class LauncherSettingsDecorator extends LauncherSettings { private LauncherSettings settings; protected Locale locale; protected GameJob gameJob; protected Map<GameJob, Integer> buildVersionMap; protected Map<GameJob, Integer> lastBuildNumberMap; protected JavaHeapSize maxHeapSize; protected JavaHeapSize initialHeapSize; protected String userJavaParameters; protected String userGameParameters; protected LogLevel logLevel; protected File gameDirectory; protected File gameDataDirectory; protected Boolean searchForLauncherUpdates; protected Boolean keepDownloadedFiles; protected Boolean closeLauncherAfterGameStart; public LauncherSettingsDecorator(LauncherSettings settings) { this.settings = settings; this.buildVersionMap = Collections.emptyMap(); this.lastBuildNumberMap = Collections.emptyMap(); } @Override public void load() throws IOException { settings.load(); } @Override public void store() throws IOException { settings.store(); } // --------------------------------------------------------------------- // // INIT // --------------------------------------------------------------------- // @Override protected void initInitialHeapSize() { } @Override protected void initSearchForLauncherUpdates() { } @Override protected void initCloseLauncherAfterGameStart() { } @Override protected void initSaveDownloadedFiles() { } @Override protected void initGameDirectory() { } @Override protected void initGameDataDirectory() { } @Override protected void initUserJavaParameters() { } @Override protected void initUserGameParameters() { } @Override protected void initLogLevel() { } @Override protected void initMaxHeapSize() { } @Override protected void initLastBuildNumber() { } @Override protected void initLocale() { } @Override protected void initJob() { } @Override protected void initBuildVersion() { } // --------------------------------------------------------------------- // // GETTERS // --------------------------------------------------------------------- // @Override public Locale getLocale() { return (locale != null) ? locale : settings.getLocale(); } @Override public GameJob getJob() { return (gameJob != null) ? gameJob : settings.getJob(); } @Override public Integer getBuildVersion(GameJob job) { return buildVersionMap.containsKey(job) ? buildVersionMap.get(job) : settings.getBuildVersion(job); } @Override public Integer getLastBuildNumber(GameJob job) { return lastBuildNumberMap.containsKey(job) ? lastBuildNumberMap.get(job) : settings.getLastBuildNumber(job); } @Override public JavaHeapSize getMaxHeapSize() { return (maxHeapSize != null) ? maxHeapSize : settings.getMaxHeapSize(); } @Override public JavaHeapSize getInitialHeapSize() { return (initialHeapSize != null) ? initialHeapSize : settings.getInitialHeapSize(); } @Override public String getUserJavaParameters() { // TODO: merge/prepend the additional arguments return (userJavaParameters != null) ? userJavaParameters : settings.getUserJavaParameters() ; } @Override public String getUserGameParameters() { // TODO: merge/prepend the additional arguments return (userGameParameters != null) ? userGameParameters : settings.getUserGameParameters() ; } @Override public LogLevel getLogLevel() { return (logLevel != null) ? logLevel : settings.getLogLevel(); } @Override public File getGameDirectory() { return (gameDirectory != null) ? gameDirectory : settings.getGameDirectory(); } @Override public File getGameDataDirectory() { return (gameDataDirectory != null) ? gameDataDirectory : settings.getGameDataDirectory(); } @Override public boolean isSearchForLauncherUpdates() { return (searchForLauncherUpdates != null) ? searchForLauncherUpdates : settings.isSearchForLauncherUpdates(); } @Override public boolean isKeepDownloadedFiles() { return (keepDownloadedFiles != null) ? keepDownloadedFiles : settings.isKeepDownloadedFiles(); } @Override public boolean isCloseLauncherAfterGameStart() { return (closeLauncherAfterGameStart != null) ? closeLauncherAfterGameStart : settings.isCloseLauncherAfterGameStart(); } // --------------------------------------------------------------------- // // SETTERS // --------------------------------------------------------------------- // @Override public void setLocale(Locale locale) { this.locale = locale; } @Override public void setJob(GameJob job) { this.gameJob = job; } @Override public void setBuildVersion(int version, GameJob job) { this.buildVersionMap.put(job, version); } @Override public void setLastBuildNumber(Integer lastBuildNumber, GameJob job) { this.lastBuildNumberMap.put(job, lastBuildNumber); } @Override public void setMaxHeapSize(JavaHeapSize maxHeapSize) { this.maxHeapSize = maxHeapSize; } @Override public void setInitialHeapSize(JavaHeapSize initialHeapSize) { this.initialHeapSize = initialHeapSize; } @Override public void setUserJavaParameters(String userJavaParameters) { this.userJavaParameters = userJavaParameters; } @Override public void setUserGameParameters(String userGameParameters) { this.userGameParameters = userGameParameters; } @Override public void setLogLevel(LogLevel logLevel) { this.logLevel = logLevel; } @Override public void setGameDirectory(File gameDirectory) { this.gameDirectory = gameDirectory; } @Override public void setGameDataDirectory(File gameDataDirectory) { this.gameDataDirectory = gameDataDirectory; } @Override public void setSearchForLauncherUpdates(boolean searchForLauncherUpdates) { this.searchForLauncherUpdates = searchForLauncherUpdates; } @Override public void setCloseLauncherAfterGameStart(boolean closeLauncherAfterGameStart) { this.closeLauncherAfterGameStart = closeLauncherAfterGameStart; } @Override public void setKeepDownloadedFiles(boolean keepDownloadedFiles) { this.keepDownloadedFiles = keepDownloadedFiles; } }