You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.5 KiB
52 lines
1.5 KiB
package visualiser.gameController.Keys;
|
|
|
|
import java.util.HashMap;
|
|
import java.util.Map;
|
|
|
|
/**
|
|
* Factory for creating Keys, these could be predefined in the future.
|
|
*/
|
|
public class KeyFactory {
|
|
/**
|
|
* Retrieve command given key
|
|
*/
|
|
private Map<String, ControlKey> keyState;
|
|
|
|
/**
|
|
* Singleton instance to enforce consistent key state
|
|
*/
|
|
private static KeyFactory theFactory = new KeyFactory();
|
|
|
|
/**
|
|
* Singleton constructor for key state, set up initial state of each action.
|
|
*/
|
|
private KeyFactory() {
|
|
this.keyState = new HashMap<>();
|
|
keyState.put("Z", new ZoomInKey("Zoom In"));
|
|
keyState.put("X", new ZoomOutKey("Zoom Out"));
|
|
keyState.put("SPACE", new VMGKey("VMG"));
|
|
keyState.put("SHIFT", new SailsToggleKey("Toggle Sails"));
|
|
keyState.put("ENTER", new TackGybeKey("Tack/Gybe"));
|
|
keyState.put("UP", new UpWindKey("Upwind"));
|
|
keyState.put("DOWN", new DownWindKey("Downwind"));
|
|
}
|
|
|
|
/**
|
|
* Get singleton instance of KeyFactory to interact with key state
|
|
* @return automatically constructed KeyFactory
|
|
*/
|
|
public static KeyFactory getFactory() {
|
|
return theFactory;
|
|
}
|
|
|
|
/**
|
|
* Get the Control Key in charge of a key press
|
|
* @param key key pressed (String value of KeyCode)
|
|
* @return the Control Key behaviour of the key pressed.
|
|
*/
|
|
public ControlKey getKey(String key){
|
|
return keyState.get(key);
|
|
}
|
|
|
|
}
|