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

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);
}
}