parent
4bc4af553e
commit
7024fb4402
@ -0,0 +1,11 @@ |
||||
package mightypork.gamecore.core.config; |
||||
|
||||
import mightypork.utils.files.config.PropertyManager; |
||||
|
||||
/** |
||||
* Config setup, class used to populate the config file. |
||||
*/ |
||||
public interface ConfigSetup { |
||||
|
||||
void addOptions(PropertyManager prop); |
||||
} |
@ -0,0 +1,28 @@ |
||||
package mightypork.gamecore.core.config; |
||||
|
||||
import mightypork.gamecore.input.KeyStroke; |
||||
|
||||
/** |
||||
* Key options - restricted access to {@link Config} for keys |
||||
*/ |
||||
public class KeyOpts { |
||||
|
||||
|
||||
public void add(String cfgKey, String dataString) |
||||
{ |
||||
add(cfgKey, dataString, null); |
||||
} |
||||
|
||||
|
||||
/** |
||||
* @param cfgKey key in config file |
||||
* @param dataString string representing the keystroke (format for {@link KeyStroke}) |
||||
* @param comment optional comment |
||||
*/ |
||||
public void add(String cfgKey, String dataString, String comment) |
||||
{ |
||||
final KeyProperty kprop = new KeyProperty(Config.prefixKey(cfgKey), KeyStroke.createFromDataString(dataString), comment); |
||||
Config.strokes.put(Config.prefixKey(cfgKey), kprop); |
||||
Config.cfg.putProperty(kprop); |
||||
} |
||||
} |
@ -0,0 +1,53 @@ |
||||
package mightypork.gamecore.core.config; |
||||
|
||||
import mightypork.gamecore.input.KeyStroke; |
||||
import mightypork.gamecore.input.Keys; |
||||
import mightypork.utils.files.config.Property; |
||||
|
||||
/** |
||||
* Key property.<br> |
||||
* The stored value must be invariant ({@link KeyStroke} is mutable). |
||||
* |
||||
* @author Ondřej Hruška (MightyPork) |
||||
*/ |
||||
public 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()); |
||||
} |
||||
} |
@ -0,0 +1,10 @@ |
||||
package mightypork.gamecore.core.config; |
||||
|
||||
|
||||
/** |
||||
* Key configurator. Config access restricted to key options. |
||||
*/ |
||||
public interface KeySetup { |
||||
|
||||
public void addKeys(KeyOpts keys); |
||||
} |
Loading…
Reference in new issue