/*
* Copyright (C) 2010, 2011 IsmAvatar <IsmAvatar@gmail.com>
* Copyright (C) 2007, 2008 Clam <clamisgood@gmail.com>
*
* This file is part of LateralGM.
* LateralGM is free software and comes with ABSOLUTELY NO WARRANTY.
* See LICENSE for details.
*/
package org.lateralgm.resources;
import java.awt.Color;
import java.util.EnumMap;
import org.lateralgm.file.ProjectFile;
import org.lateralgm.util.PropertyMap;
public class GameSettings extends Resource<GameSettings,GameSettings.PGameSettings>
{
public Constants constants = new Constants();
public enum ColorDepth
{
NO_CHANGE,BIT_16,BIT_32
}
public enum Resolution
{
NO_CHANGE,RES_320X240,RES_640X480,RES_800X600,RES_1024X768,RES_1280X1024,RES_1600X1200
}
public enum Frequency
{
NO_CHANGE,FREQ_60,FREQ_70,FREQ_85,FREQ_100,FREQ_120
}
public enum Priority
{
NORMAL,HIGH,HIGHEST
}
public enum ProgressBar
{
NONE,DEFAULT,CUSTOM
}
//FIXME: Includes information moved
public enum IncludeFolder
{
MAIN,TEMP
}
public enum PGameSettings
{
GAME_ID,GAME_GUID,START_FULLSCREEN,INTERPOLATE,FORCE_SOFTWARE_VERTEX_PROCESSING,
DONT_DRAW_BORDER,DISPLAY_CURSOR,SCALING,ALLOW_WINDOW_RESIZE,ALWAYS_ON_TOP,COLOR_OUTSIDE_ROOM,/**/
SET_RESOLUTION,COLOR_DEPTH,RESOLUTION,FREQUENCY,/**/
DONT_SHOW_BUTTONS,USE_SYNCHRONIZATION,DISABLE_SCREENSAVERS,LET_F4_SWITCH_FULLSCREEN,
LET_F1_SHOW_GAME_INFO,LET_ESC_END_GAME,LET_F5_SAVE_F6_LOAD,LET_F9_SCREENSHOT,
TREAT_CLOSE_AS_ESCAPE,GAME_PRIORITY,/**/
FREEZE_ON_LOSE_FOCUS,LOAD_BAR_MODE,FRONT_LOAD_BAR,BACK_LOAD_BAR,SHOW_CUSTOM_LOAD_IMAGE,
LOADING_IMAGE,IMAGE_PARTIALLY_TRANSPARENTY,LOAD_IMAGE_ALPHA,SCALE_PROGRESS_BAR,/**/
DISPLAY_ERRORS,WRITE_TO_LOG,ABORT_ON_ERROR,TREAT_UNINIT_AS_0,ERROR_ON_ARGS,AUTHOR,VERSION,
LAST_CHANGED,INFORMATION,/**/
INCLUDE_FOLDER,OVERWRITE_EXISTING,REMOVE_AT_GAME_END,VERSION_MAJOR,VERSION_MINOR,
VERSION_RELEASE,VERSION_BUILD,COMPANY,PRODUCT,COPYRIGHT,DESCRIPTION,GAME_ICON
}
//GAME_ID and DPLAY_GUID randomized in GmFile constructor
private static final EnumMap<PGameSettings,Object> DEFS = PropertyMap.makeDefaultMap(
PGameSettings.class,-1,new byte[16],false,false,false,false,true,-1,false,false,Color.BLACK,/**/
false,ColorDepth.NO_CHANGE,Resolution.NO_CHANGE,Frequency.NO_CHANGE,/**/
false,false,true,true,true,true,false,false,true,Priority.NORMAL,/**/
true,ProgressBar.DEFAULT,null,null,false,null,false,255,true,/**/
true,false,false,false,true,
"","100",ProjectFile.longTimeToGmTime(System.currentTimeMillis()),"",/**///$NON-NLS-1$ //$NON-NLS-3$
IncludeFolder.MAIN,false,false,1,0,0,0,"","","","",null); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
@Override
public GameSettings makeInstance(ResourceReference<GameSettings> ref)
{
return new GameSettings();
}
@Override
protected PropertyMap<PGameSettings> makePropertyMap()
{
return new PropertyMap<PGameSettings>(PGameSettings.class,this,DEFS);
}
@Override
protected void postCopy(GameSettings dest)
{ //Nothing else to copy
}
public Object validate(PGameSettings k, Object v)
{
return v;
}
public void put(PGameSettings key, Object value)
{
properties.put(key,value);
}
public <V>V get(PGameSettings key)
{
return properties.get(key);
}
public Double getLastChanged()
{
return (Double) properties.get(PGameSettings.LAST_CHANGED);
}
}