/* * 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.Arrays; import java.util.List; import java.util.Locale; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.terasology.launcher.game.GameJob; import org.terasology.launcher.game.GameSettings; import org.terasology.launcher.util.JavaHeapSize; import org.terasology.launcher.util.LogLevel; /** * Created by Skaldarnar on 30.01.2016. */ public abstract class LauncherSettings implements GameSettings { private static final Logger logger = LoggerFactory.getLogger(LauncherSettings.class); public abstract void load() throws IOException; public abstract void store() throws IOException; public synchronized void init() { logger.trace("Init launcher settings ..."); initLocale(); initJob(); initBuildVersion(); initLastBuildNumber(); initMaxHeapSize(); initInitialHeapSize(); initSearchForLauncherUpdates(); initCloseLauncherAfterGameStart(); initSaveDownloadedFiles(); initGameDirectory(); initGameDataDirectory(); initUserJavaParameters(); initUserGameParameters(); initLogLevel(); } // --------------------------------------------------------------------- // // INIT // --------------------------------------------------------------------- // protected abstract void initInitialHeapSize(); protected abstract void initSearchForLauncherUpdates(); protected abstract void initCloseLauncherAfterGameStart(); protected abstract void initSaveDownloadedFiles(); protected abstract void initGameDirectory(); protected abstract void initGameDataDirectory(); protected abstract void initUserJavaParameters(); protected abstract void initUserGameParameters(); protected abstract void initLogLevel(); protected abstract void initMaxHeapSize(); protected abstract void initLastBuildNumber(); protected abstract void initLocale(); protected abstract void initJob(); protected abstract void initBuildVersion(); // --------------------------------------------------------------------- // // GETTERS // --------------------------------------------------------------------- // public abstract Locale getLocale(); public abstract GameJob getJob(); public abstract Integer getBuildVersion(GameJob job); public abstract Integer getLastBuildNumber(GameJob job); public abstract JavaHeapSize getMaxHeapSize(); public abstract JavaHeapSize getInitialHeapSize(); public abstract String getUserJavaParameters(); public synchronized List<String> getUserJavaParameterList() { return Arrays.asList(getUserJavaParameters().split("\\s+")); } public abstract String getUserGameParameters(); public synchronized List<String> getUserGameParameterList() { return Arrays.asList(getUserGameParameters().split("\\s+")); } public abstract LogLevel getLogLevel(); public abstract File getGameDirectory(); public abstract File getGameDataDirectory(); public abstract boolean isSearchForLauncherUpdates(); public abstract boolean isCloseLauncherAfterGameStart(); public abstract boolean isKeepDownloadedFiles(); // --------------------------------------------------------------------- // // SETTERS // --------------------------------------------------------------------- // public abstract void setLocale(Locale locale); public abstract void setJob(GameJob job); public abstract void setBuildVersion(int version, GameJob job); public abstract void setLastBuildNumber(Integer lastBuildNumber, GameJob job); public abstract void setMaxHeapSize(JavaHeapSize maxHeapSize); public abstract void setInitialHeapSize(JavaHeapSize initialHeapSize); public abstract void setUserJavaParameters(String userJavaParameters); public abstract void setUserGameParameters(String userGameParameters); public abstract void setLogLevel(LogLevel logLevel); public abstract void setSearchForLauncherUpdates(boolean searchForLauncherUpdates); public abstract void setCloseLauncherAfterGameStart(boolean closeLauncherAfterGameStart); public abstract void setKeepDownloadedFiles(boolean keepDownloadedFiles); public abstract void setGameDirectory(File gameDirectory); public abstract void setGameDataDirectory(File gameDataDirectory); }