package Controller; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import net.java.games.input.Controller; import net.java.games.input.ControllerEnvironment; import net.java.games.input.Event; import net.java.games.input.EventQueue; public class ControllerManager { private HashMap<Controller, GameController> gameControllers; private HashSet<GameEvent> gameEvents; private int currentId; public ControllerManager() { this.gameControllers = new HashMap<Controller, GameController>(); this.gameEvents = new HashSet<GameEvent>(); currentId = 0; } public GameController addController(ControllerType controllerType) { GameController gameController = null; if(ControllerEnvironment.getDefaultEnvironment().getControllers().length > gameControllers.size()){ for(Controller c : ControllerEnvironment.getDefaultEnvironment().getControllers()){ if(gameControllers.get(c) == null && c.getName().toLowerCase().contains(controllerType.getName())){ switch(controllerType){ case XBOX: gameController = new XboxController(currentId++); break; case KEYBOARD: gameController = new KeyboardController(currentId++); break; } if(gameController != null){ gameControllers.put(c, gameController); return gameController; } else { System.out.println("No controllers found!!! Nyeaguh!"); } } } } return null; } public void poll(){ gameEvents.clear(); gameEvents = new HashSet<GameEvent>(); for(Map.Entry<Controller, GameController> entry : getControllersMap().entrySet()){ Controller c = entry.getKey(); c.poll(); EventQueue eq = c.getEventQueue(); Event event = new Event(); while(eq.getNextEvent(event)){ Event e2 = new Event(); e2.set(event); //System.out.println("event name bunkai '" + event.getComponent().getName() + "' event value " + event.getValue()); GameEvent gameEvent = new GameEvent(e2, entry.getValue()); gameEvents.add(gameEvent); } } } public HashSet<GameEvent> getEvents(){ return new HashSet<GameEvent>(gameEvents); } public HashMap<Controller, GameController> getControllersMap(){ return gameControllers; } }