parent
baee0883b6
commit
09d0d34c51
@ -0,0 +1,54 @@ |
|||||||
|
package mightypork.gamecore; |
||||||
|
|
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
|
||||||
|
import mightypork.gamecore.util.files.config.PropertyManager; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Static application config file accessor |
||||||
|
* |
||||||
|
* @author MightyPork |
||||||
|
*/ |
||||||
|
public class Config { |
||||||
|
|
||||||
|
private static PropertyManager cfg; |
||||||
|
|
||||||
|
|
||||||
|
public static void init(File file, String comment) |
||||||
|
{ |
||||||
|
cfg = new PropertyManager(file, comment); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static PropertyManager getProp() |
||||||
|
{ |
||||||
|
return cfg; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static void load() |
||||||
|
{ |
||||||
|
cfg.load(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static void save() |
||||||
|
{ |
||||||
|
cfg.save(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static <T> T get(String key) |
||||||
|
{ |
||||||
|
return cfg.getValue(key); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static <T> void set(String key, T value) |
||||||
|
{ |
||||||
|
cfg.setValue(key, value); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,10 @@ |
|||||||
|
package mightypork.gamecore; |
||||||
|
|
||||||
|
|
||||||
|
import mightypork.gamecore.util.files.config.PropertyManager; |
||||||
|
|
||||||
|
|
||||||
|
public interface ConfigSetup { |
||||||
|
|
||||||
|
void addOptions(PropertyManager prop); |
||||||
|
} |
@ -0,0 +1,64 @@ |
|||||||
|
package mightypork.gamecore; |
||||||
|
|
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
|
||||||
|
import mightypork.gamecore.logging.Log; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Static application workdir accessor. |
||||||
|
* |
||||||
|
* @author MightyPork |
||||||
|
*/ |
||||||
|
public class WorkDir { |
||||||
|
|
||||||
|
private static File workdir; |
||||||
|
|
||||||
|
|
||||||
|
public static void init(File workdir) |
||||||
|
{ |
||||||
|
WorkDir.workdir = workdir; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Get workdir folder, create if not exists. |
||||||
|
* |
||||||
|
* @param path dir path relative to workdir |
||||||
|
* @return dir file |
||||||
|
*/ |
||||||
|
public static File getDir(String path) |
||||||
|
{ |
||||||
|
final File f = new File(workdir, path); |
||||||
|
if (!f.exists() && !f.mkdirs()) { |
||||||
|
Log.w("Could not create a directory: " + f); |
||||||
|
} |
||||||
|
|
||||||
|
return f; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Get workdir file, create parent if not exists. |
||||||
|
* |
||||||
|
* @param path dir path relative to workdir |
||||||
|
* @return dir file |
||||||
|
*/ |
||||||
|
public static File getFile(String path) |
||||||
|
{ |
||||||
|
final File f = new File(workdir, path); |
||||||
|
|
||||||
|
// create the parent dir
|
||||||
|
getDir(f.getParent()); |
||||||
|
|
||||||
|
return f; |
||||||
|
|
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static File getWorkDir() |
||||||
|
{ |
||||||
|
return workdir; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,114 @@ |
|||||||
|
package mightypork.gamecore.input; |
||||||
|
|
||||||
|
|
||||||
|
import java.util.HashMap; |
||||||
|
import java.util.Map; |
||||||
|
|
||||||
|
import mightypork.gamecore.ConfigSetup; |
||||||
|
import mightypork.gamecore.util.files.config.Property; |
||||||
|
import mightypork.gamecore.util.files.config.PropertyManager; |
||||||
|
|
||||||
|
|
||||||
|
public class KeyConfig implements ConfigSetup { |
||||||
|
|
||||||
|
private static KeyConfig inst = new KeyConfig(); |
||||||
|
|
||||||
|
/** |
||||||
|
* Key property.<br> |
||||||
|
* The stored value must be invariant ({@link KeyStroke} is mutable). |
||||||
|
* |
||||||
|
* @author MightyPork |
||||||
|
*/ |
||||||
|
private static class KeyProperty extends Property<KeyStroke> { |
||||||
|
|
||||||
|
public KeyProperty(String key, KeyStroke defaultValue, String comment) |
||||||
|
{ |
||||||
|
super(key, defaultValue, comment); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public KeyStroke decode(String string, KeyStroke defval) |
||||||
|
{ |
||||||
|
if (string != null) { |
||||||
|
// keep it invariant
|
||||||
|
|
||||||
|
final int backup_key = getValue().getKey(); |
||||||
|
final int backup_mod = getValue().getMod(); |
||||||
|
|
||||||
|
getValue().fromDataString(string); |
||||||
|
if (getValue().getKey() == Keys.NONE) { |
||||||
|
getValue().setTo(backup_key, backup_mod); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
return getValue(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public String encode(KeyStroke value) |
||||||
|
{ |
||||||
|
return value.toDataString(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public void setValue(Object value) |
||||||
|
{ |
||||||
|
// keep it invariant
|
||||||
|
getValue().setTo(((KeyStroke) value).getKey(), ((KeyStroke) value).getMod()); |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
private static Map<String, KeyProperty> strokes = new HashMap<>(); |
||||||
|
private static PropertyManager prop; |
||||||
|
|
||||||
|
|
||||||
|
public static void addKeyLayout(KeySetup layout) |
||||||
|
{ |
||||||
|
layout.addKeys(inst); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public void addOptions(PropertyManager prop) |
||||||
|
{ |
||||||
|
for (final KeyProperty kp : strokes.values()) { |
||||||
|
prop.putProperty(kp); |
||||||
|
} |
||||||
|
|
||||||
|
this.prop = prop; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public void add(String cfgKey, String dataString) |
||||||
|
{ |
||||||
|
strokes.put(cfgKey, new KeyProperty(cfgKey, KeyStroke.createFromDataString(dataString), null)); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static KeyStroke get(String cfgKey) |
||||||
|
{ |
||||||
|
final KeyProperty kp = strokes.get(cfgKey); |
||||||
|
if (kp == null) throw new IllegalArgumentException("No such stroke: " + cfgKey); |
||||||
|
return kp.getValue(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static void set(String cfgKey, int key, int mod) |
||||||
|
{ |
||||||
|
final KeyProperty kp = strokes.get(cfgKey); |
||||||
|
if (kp == null) throw new IllegalArgumentException("No such stroke: " + cfgKey); |
||||||
|
|
||||||
|
kp.getValue().setTo(key, mod); |
||||||
|
prop.save(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static KeyConfig inst() |
||||||
|
{ |
||||||
|
return inst; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
package mightypork.gamecore.input; |
||||||
|
|
||||||
|
|
||||||
|
public interface KeySetup { |
||||||
|
|
||||||
|
public void addKeys(KeyConfig keys); |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
package mightypork.gamecore.input.events; |
||||||
|
|
||||||
|
|
||||||
|
import mightypork.gamecore.eventbus.BusEvent; |
||||||
|
|
||||||
|
|
||||||
|
public class InputReadyEvent extends BusEvent<InputReadyListener> { |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void handleBy(InputReadyListener handler) |
||||||
|
{ |
||||||
|
handler.onInputReady(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
package mightypork.gamecore.input.events; |
||||||
|
|
||||||
|
|
||||||
|
public interface InputReadyListener { |
||||||
|
|
||||||
|
void onInputReady(); |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
package mightypork.gamecore.render; |
||||||
|
|
||||||
|
|
||||||
|
import mightypork.gamecore.eventbus.BusEvent; |
||||||
|
|
||||||
|
|
||||||
|
public class DisplayReadyEvent extends BusEvent<DisplayReadyListener> { |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void handleBy(DisplayReadyListener handler) |
||||||
|
{ |
||||||
|
handler.onDisplayReady(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
package mightypork.gamecore.render; |
||||||
|
|
||||||
|
|
||||||
|
public interface DisplayReadyListener { |
||||||
|
|
||||||
|
void onDisplayReady(); |
||||||
|
} |
@ -1,4 +1,4 @@ |
|||||||
package mightypork.gamecore.resources.loading; |
package mightypork.gamecore.resources; |
||||||
|
|
||||||
|
|
||||||
import java.lang.annotation.*; |
import java.lang.annotation.*; |
@ -0,0 +1,101 @@ |
|||||||
|
package mightypork.gamecore.resources; |
||||||
|
|
||||||
|
|
||||||
|
import mightypork.gamecore.app.AppAccess; |
||||||
|
import mightypork.gamecore.resources.audio.SoundBank; |
||||||
|
import mightypork.gamecore.resources.audio.players.EffectPlayer; |
||||||
|
import mightypork.gamecore.resources.audio.players.LoopPlayer; |
||||||
|
import mightypork.gamecore.resources.fonts.FontBank; |
||||||
|
import mightypork.gamecore.resources.fonts.GLFont; |
||||||
|
import mightypork.gamecore.resources.textures.GLTexture; |
||||||
|
import mightypork.gamecore.resources.textures.TextureBank; |
||||||
|
import mightypork.gamecore.resources.textures.TxQuad; |
||||||
|
import mightypork.gamecore.resources.textures.TxSheet; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Static resource repository |
||||||
|
* |
||||||
|
* @author MightyPork |
||||||
|
*/ |
||||||
|
public final class Res { |
||||||
|
|
||||||
|
private static TextureBank textures; |
||||||
|
private static SoundBank sounds; |
||||||
|
private static FontBank fonts; |
||||||
|
|
||||||
|
private static boolean initialized = false; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Load on behalf of given base app |
||||||
|
* |
||||||
|
* @param app app access |
||||||
|
*/ |
||||||
|
public static void init(AppAccess app) |
||||||
|
{ |
||||||
|
if (initialized) return; |
||||||
|
initialized = true; |
||||||
|
|
||||||
|
textures = new TextureBank(app); |
||||||
|
sounds = new SoundBank(app); |
||||||
|
fonts = new FontBank(app); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static GLTexture getTexture(String key) |
||||||
|
{ |
||||||
|
return textures.getTexture(key); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Get a texture sheet by key |
||||||
|
* |
||||||
|
* @param key |
||||||
|
* @return sheet |
||||||
|
*/ |
||||||
|
public static TxSheet getTxSheet(String key) |
||||||
|
{ |
||||||
|
return textures.getSheet(key); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Get a texture quad by key |
||||||
|
* |
||||||
|
* @param key |
||||||
|
* @return quad |
||||||
|
*/ |
||||||
|
public static TxQuad getTxQuad(String key) |
||||||
|
{ |
||||||
|
return textures.getQuad(key); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static LoopPlayer getSoundLoop(String key) |
||||||
|
{ |
||||||
|
return sounds.getLoop(key); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static EffectPlayer getSoundEffect(String key) |
||||||
|
{ |
||||||
|
return sounds.getEffect(key); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static GLFont getFont(String key) |
||||||
|
{ |
||||||
|
return fonts.getFont(key); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public static void load(ResourceSetup binder) |
||||||
|
{ |
||||||
|
binder.addFonts(fonts); |
||||||
|
binder.addSounds(sounds); |
||||||
|
binder.addTextures(textures); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,29 @@ |
|||||||
|
package mightypork.gamecore.resources; |
||||||
|
|
||||||
|
|
||||||
|
import mightypork.gamecore.eventbus.BusAccess; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* {@link ResourceLoadRequest} listener |
||||||
|
* |
||||||
|
* @author MightyPork |
||||||
|
*/ |
||||||
|
public interface ResourceLoader { |
||||||
|
|
||||||
|
/** |
||||||
|
* Load a resource |
||||||
|
* |
||||||
|
* @param resource |
||||||
|
*/ |
||||||
|
void loadResource(DeferredResource resource); |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Initialize the loader (async loader may start a stread) |
||||||
|
* |
||||||
|
* @param app app the loader works for. The event bus must already be |
||||||
|
* initialized. |
||||||
|
*/ |
||||||
|
void init(BusAccess app); |
||||||
|
} |
@ -0,0 +1,38 @@ |
|||||||
|
package mightypork.gamecore.resources; |
||||||
|
|
||||||
|
|
||||||
|
import mightypork.gamecore.resources.audio.SoundBank; |
||||||
|
import mightypork.gamecore.resources.fonts.FontBank; |
||||||
|
import mightypork.gamecore.resources.textures.TextureBank; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Resource binder; used by apps to specify what resources are to be loaded. |
||||||
|
* |
||||||
|
* @author MightyPork |
||||||
|
*/ |
||||||
|
public interface ResourceSetup { |
||||||
|
|
||||||
|
/** |
||||||
|
* Add fonts to load. |
||||||
|
* |
||||||
|
* @param fonts font registry |
||||||
|
*/ |
||||||
|
void addFonts(FontBank fonts); |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Add sounds to load. |
||||||
|
* |
||||||
|
* @param sounds sound registry |
||||||
|
*/ |
||||||
|
void addSounds(SoundBank sounds); |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Add textures to load |
||||||
|
* |
||||||
|
* @param textures texture registry |
||||||
|
*/ |
||||||
|
void addTextures(TextureBank textures); |
||||||
|
} |
@ -0,0 +1,15 @@ |
|||||||
|
package mightypork.gamecore.resources.audio; |
||||||
|
|
||||||
|
|
||||||
|
import mightypork.gamecore.eventbus.BusEvent; |
||||||
|
|
||||||
|
|
||||||
|
public class AudioReadyEvent extends BusEvent<AudioReadyListener> { |
||||||
|
|
||||||
|
@Override |
||||||
|
protected void handleBy(AudioReadyListener handler) |
||||||
|
{ |
||||||
|
handler.onInputReady(); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,7 @@ |
|||||||
|
package mightypork.gamecore.resources.audio; |
||||||
|
|
||||||
|
|
||||||
|
public interface AudioReadyListener { |
||||||
|
|
||||||
|
void onInputReady(); |
||||||
|
} |
@ -1,20 +0,0 @@ |
|||||||
package mightypork.gamecore.resources.events; |
|
||||||
|
|
||||||
|
|
||||||
import mightypork.gamecore.resources.loading.Deferred; |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* {@link ResourceLoadRequest} listener |
|
||||||
* |
|
||||||
* @author MightyPork |
|
||||||
*/ |
|
||||||
public interface ResourceLoadRequestListener { |
|
||||||
|
|
||||||
/** |
|
||||||
* Load a resource |
|
||||||
* |
|
||||||
* @param resource |
|
||||||
*/ |
|
||||||
void loadResource(Deferred resource); |
|
||||||
} |
|
@ -0,0 +1,71 @@ |
|||||||
|
package mightypork.gamecore.util.files.config; |
||||||
|
|
||||||
|
|
||||||
|
import mightypork.gamecore.util.objects.Convert; |
||||||
|
|
||||||
|
|
||||||
|
public abstract class Property<T extends Object> { |
||||||
|
|
||||||
|
private final String comment; |
||||||
|
private final String key; |
||||||
|
|
||||||
|
private T value; |
||||||
|
private final T defaultValue; |
||||||
|
|
||||||
|
|
||||||
|
public Property(String key, T defaultValue, String comment) |
||||||
|
{ |
||||||
|
super(); |
||||||
|
this.comment = comment; |
||||||
|
this.key = key; |
||||||
|
this.value = defaultValue; |
||||||
|
this.defaultValue = defaultValue; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public final void parse(String string) |
||||||
|
{ |
||||||
|
setValue(decode(string, defaultValue)); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public abstract T decode(String string, T defval); |
||||||
|
|
||||||
|
|
||||||
|
public String encode(T value) |
||||||
|
{ |
||||||
|
return Convert.toString(value, Convert.toString(defaultValue)); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public final String toString() |
||||||
|
{ |
||||||
|
return encode(value); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public T getValue() |
||||||
|
{ |
||||||
|
return value; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@SuppressWarnings("unchecked") |
||||||
|
public void setValue(Object value) |
||||||
|
{ |
||||||
|
this.value = (T) value; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public String getComment() |
||||||
|
{ |
||||||
|
return comment; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
public String getKey() |
||||||
|
{ |
||||||
|
return key; |
||||||
|
} |
||||||
|
} |
@ -0,0 +1,52 @@ |
|||||||
|
package mightypork.gamecore.util.objects; |
||||||
|
|
||||||
|
|
||||||
|
import java.util.Enumeration; |
||||||
|
import java.util.Iterator; |
||||||
|
|
||||||
|
|
||||||
|
/** |
||||||
|
* Helper class for iterationg over an {@link Enumeration} |
||||||
|
* |
||||||
|
* @author MightyPork |
||||||
|
* @param <T> target element type (will be cast) |
||||||
|
*/ |
||||||
|
public class EnumerationIterator<T> implements Iterable<T> { |
||||||
|
|
||||||
|
private final Enumeration<? extends T> enumeration; |
||||||
|
|
||||||
|
|
||||||
|
public EnumerationIterator(Enumeration<? extends T> enumeration) |
||||||
|
{ |
||||||
|
this.enumeration = enumeration; |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public Iterator<T> iterator() |
||||||
|
{ |
||||||
|
return new Iterator<T>() { |
||||||
|
|
||||||
|
@Override |
||||||
|
public boolean hasNext() |
||||||
|
{ |
||||||
|
return enumeration.hasMoreElements(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public T next() |
||||||
|
{ |
||||||
|
return enumeration.nextElement(); |
||||||
|
} |
||||||
|
|
||||||
|
|
||||||
|
@Override |
||||||
|
public void remove() |
||||||
|
{ |
||||||
|
throw new UnsupportedOperationException("Operation not supported."); |
||||||
|
} |
||||||
|
}; |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -1,84 +0,0 @@ |
|||||||
package mightypork.rogue; |
|
||||||
|
|
||||||
|
|
||||||
import mightypork.gamecore.logging.Log; |
|
||||||
import mightypork.gamecore.util.files.config.PropertyManager; |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Main Config class
|
|
||||||
* |
|
||||||
* @author MightyPork |
|
||||||
*/ |
|
||||||
public final class Config { |
|
||||||
|
|
||||||
private static PropertyManager mgr; |
|
||||||
|
|
||||||
// opts
|
|
||||||
public static final int def_LAST_RUN_VERSION = 0; |
|
||||||
public static int LAST_RUN_VERSION; |
|
||||||
|
|
||||||
public static final boolean def_START_IN_FS = false; |
|
||||||
public static boolean START_IN_FS; |
|
||||||
|
|
||||||
// property keys
|
|
||||||
private static final String PK_LAST_RUN_VERSION = "status.last_run_version"; |
|
||||||
private static final String PK_START_IN_FS = "cfg.start_in_fullscreen"; |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Prepare config manager and load user settings |
|
||||||
*/ |
|
||||||
public static void init() |
|
||||||
{ |
|
||||||
Log.f2("Initializing configuration manager."); |
|
||||||
|
|
||||||
final String comment = Const.APP_NAME + " config file"; |
|
||||||
|
|
||||||
mgr = new PropertyManager(Paths.CONFIG, comment); |
|
||||||
|
|
||||||
mgr.cfgNewlineBeforeComments(true); |
|
||||||
mgr.cfgSeparateSections(true); |
|
||||||
|
|
||||||
mgr.putInteger(PK_LAST_RUN_VERSION, def_LAST_RUN_VERSION, null); |
|
||||||
mgr.putBoolean(PK_START_IN_FS, def_START_IN_FS, "Go to fullscreen on startup."); |
|
||||||
|
|
||||||
load(); // load what has been "put"
|
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Save changed fields to config file |
|
||||||
*/ |
|
||||||
public static void save() |
|
||||||
{ |
|
||||||
mgr.setValue(PK_LAST_RUN_VERSION, Const.VERSION); |
|
||||||
mgr.setValue(PK_START_IN_FS, START_IN_FS); |
|
||||||
|
|
||||||
mgr.apply(); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Load config file and assign values to fields |
|
||||||
*/ |
|
||||||
public static void load() |
|
||||||
{ |
|
||||||
mgr.apply(); |
|
||||||
|
|
||||||
LAST_RUN_VERSION = mgr.getInteger(PK_LAST_RUN_VERSION); |
|
||||||
START_IN_FS = mgr.getBoolean(PK_START_IN_FS); |
|
||||||
} |
|
||||||
|
|
||||||
// options that can't be configured via config file
|
|
||||||
|
|
||||||
public static boolean LOGGING_ENABLED = true; |
|
||||||
public static boolean LOG_TO_STDOUT = true; |
|
||||||
public static boolean SINGLE_INSTANCE = true; |
|
||||||
|
|
||||||
/** Render dark in unknown area & skip invisible stuff */ |
|
||||||
public static boolean RENDER_UFOG = true; |
|
||||||
|
|
||||||
/** Render a font bounding box in text painters. */ |
|
||||||
public static boolean DEBUG_FONT_RENDER = false; |
|
||||||
} |
|
@ -0,0 +1,59 @@ |
|||||||
|
package mightypork.rogue; |
||||||
|
|
||||||
|
|
||||||
|
import java.io.File; |
||||||
|
import java.util.Arrays; |
||||||
|
|
||||||
|
import mightypork.gamecore.app.BaseApp; |
||||||
|
import mightypork.gamecore.logging.Log; |
||||||
|
import mightypork.gamecore.util.files.OsUtils; |
||||||
|
|
||||||
|
|
||||||
|
public class Launcher { |
||||||
|
|
||||||
|
/** |
||||||
|
* Launcher |
||||||
|
* |
||||||
|
* @param args |
||||||
|
*/ |
||||||
|
public static void main(String[] args) |
||||||
|
{ |
||||||
|
Log.f3(Arrays.toString(args)); |
||||||
|
|
||||||
|
File workdir = null; |
||||||
|
|
||||||
|
try { |
||||||
|
boolean localWorkdir = false; |
||||||
|
String lwdDir = null; |
||||||
|
|
||||||
|
for (int i = 0; i < args.length; i++) { |
||||||
|
if (args[i].equals("--workdir") || args[i].equals("-w")) { |
||||||
|
localWorkdir = true; |
||||||
|
lwdDir = args[i + 1]; |
||||||
|
i++; |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
if (!localWorkdir) { |
||||||
|
workdir = OsUtils.getHomeWorkDir(lwdDir); |
||||||
|
} else { |
||||||
|
workdir = new File(".rogue-save"); |
||||||
|
} |
||||||
|
|
||||||
|
} catch (final ArrayIndexOutOfBoundsException e) { |
||||||
|
Log.e("Malformed arguments."); |
||||||
|
} |
||||||
|
|
||||||
|
final BaseApp app = new RogueApp(workdir, true); |
||||||
|
|
||||||
|
app.addResources(new RogueResources()); |
||||||
|
app.addKeys(new RogueKeys()); |
||||||
|
app.addConfig(new RogueConfig()); |
||||||
|
|
||||||
|
app.setBusLogging(false); |
||||||
|
app.setConfigFile("config.ini", "Rogue config file"); |
||||||
|
app.setLogOptions("/", "runtime", 5, java.util.logging.Level.ALL); |
||||||
|
|
||||||
|
app.start(); |
||||||
|
} |
||||||
|
} |
@ -1,65 +0,0 @@ |
|||||||
package mightypork.rogue; |
|
||||||
|
|
||||||
|
|
||||||
import java.io.File; |
|
||||||
|
|
||||||
import mightypork.gamecore.util.files.OsUtils; |
|
||||||
|
|
||||||
|
|
||||||
public final class Paths { |
|
||||||
|
|
||||||
private static final String WORKDIR_NAME = ".rogue-save"; |
|
||||||
|
|
||||||
public static File WORKDIR; |
|
||||||
public static File LOG_FILE; |
|
||||||
public static File SCREENSHOTS; |
|
||||||
public static File CONFIG; |
|
||||||
public static File LOCK; |
|
||||||
|
|
||||||
public static File SAVE_SLOT_1; |
|
||||||
public static File SAVE_SLOT_2; |
|
||||||
public static File SAVE_SLOT_3; |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Initialize for local workdir |
|
||||||
* |
|
||||||
* @param local_wd_name workdir name |
|
||||||
*/ |
|
||||||
public static void init(String local_wd_name) |
|
||||||
{ |
|
||||||
init(true, local_wd_name); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
/** |
|
||||||
* Initialize for gloal workdir |
|
||||||
*/ |
|
||||||
public static void init() |
|
||||||
{ |
|
||||||
init(false, WORKDIR_NAME); |
|
||||||
} |
|
||||||
|
|
||||||
|
|
||||||
private static void init(boolean local_workdir, String workdir_name) |
|
||||||
{ |
|
||||||
if (local_workdir) { |
|
||||||
WORKDIR = new File(workdir_name); |
|
||||||
} else { |
|
||||||
WORKDIR = OsUtils.getWorkDir(workdir_name); |
|
||||||
} |
|
||||||
|
|
||||||
LOG_FILE = new File(WORKDIR, "runtime.log"); |
|
||||||
|
|
||||||
SCREENSHOTS = new File(WORKDIR, "screenshots"); |
|
||||||
|
|
||||||
CONFIG = new File(WORKDIR, "config.ini"); |
|
||||||
|
|
||||||
LOCK = new File(WORKDIR, ".lock"); |
|
||||||
|
|
||||||
SAVE_SLOT_1 = new File(WORKDIR, "saves/slot_1.ion"); |
|
||||||
SAVE_SLOT_2 = new File(WORKDIR, "saves/slot_2.ion"); |
|
||||||
SAVE_SLOT_3 = new File(WORKDIR, "saves/slot_3.ion"); |
|
||||||
} |
|
||||||
|
|
||||||
} |
|
@ -0,0 +1,16 @@ |
|||||||
|
package mightypork.rogue; |
||||||
|
|
||||||
|
|
||||||
|
import mightypork.gamecore.ConfigSetup; |
||||||
|
import mightypork.gamecore.util.files.config.PropertyManager; |
||||||
|
|
||||||
|
|
||||||
|
public class RogueConfig implements ConfigSetup { |
||||||
|
|
||||||
|
@Override |
||||||
|
public void addOptions(PropertyManager prop) |
||||||
|
{ |
||||||
|
prop.putBoolean("opt.fullscreen", false, "Start in fullscreen"); |
||||||
|
} |
||||||
|
|
||||||
|
} |
@ -0,0 +1,23 @@ |
|||||||
|
package mightypork.rogue; |
||||||
|
|
||||||
|
|
||||||
|
import mightypork.gamecore.input.KeyConfig; |
||||||
|
import mightypork.gamecore.input.KeySetup; |
||||||
|
|
||||||
|
|
||||||
|
public class RogueKeys implements KeySetup { |
||||||
|
|
||||||
|
@Override |
||||||
|
public void addKeys(KeyConfig keys) |
||||||
|
{ |
||||||
|
keys.add("key.global.quit", "CTRL+SHIFT+Q"); |
||||||
|
keys.add("key.global.menu", "CTRL+SHIFT+M"); |
||||||
|
keys.add("key.global.screenshot", "F2"); |
||||||
|
keys.add("key.global.fullscreen", "F11"); |
||||||
|
|
||||||
|
keys.add("key.general.cancel", "ESC"); |
||||||
|
keys.add("key.general.confirm", "ENTER"); |
||||||
|
keys.add("key.general.yes", "Y"); |
||||||
|
keys.add("key.general.no", "N"); |
||||||
|
} |
||||||
|
} |
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in new issue