package propra2012.gruppe33.bomberman.graphics.rendering.scenegraph.grid.input; import java.awt.event.KeyEvent; import java.util.EnumMap; import java.util.Map; import java.util.UUID; import com.indyforge.twod.engine.graphics.rendering.scenegraph.GraphicsEntity; import com.indyforge.twod.engine.graphics.rendering.scenegraph.Scene; /** * * @author Christopher Probst * */ public final class GridRemoteInput extends GraphicsEntity { /** * */ private static final long serialVersionUID = 1L; private final UUID peerKey; private final Map<Input, Boolean> inputMap = new EnumMap<Input, Boolean>( Input.class); public GridRemoteInput(UUID peerKey) { this.peerKey = peerKey; } @Override protected void onUpdate(float tpf) { super.onUpdate(tpf); Scene scene = findScene(); final Map<Input, Boolean> tmp = new EnumMap<Input, Boolean>(Input.class); tmp.put(Input.Up, scene.isPressed(KeyEvent.VK_UP)); tmp.put(Input.Down, scene.isPressed(KeyEvent.VK_DOWN)); tmp.put(Input.Left, scene.isPressed(KeyEvent.VK_LEFT)); tmp.put(Input.Right, scene.isPressed(KeyEvent.VK_RIGHT)); tmp.put(Input.PlaceDefaultBomb, scene.isSinglePressed(KeyEvent.VK_Q)); tmp.put(Input.PlaceNukeBomb, scene.isSinglePressed(KeyEvent.VK_W)); tmp.put(Input.PlaceFastBomb, scene.isSinglePressed(KeyEvent.VK_E)); tmp.put(Input.ActivateShield, scene.isSinglePressed(KeyEvent.VK_S)); tmp.put(Input.PlacePalisade, scene.isSinglePressed(KeyEvent.VK_SPACE)); if (scene.processor().hasSession() && !tmp.equals(inputMap)) { inputMap.putAll(tmp); GridInputChange ch = new GridInputChange(Input.class); ch.entities().add(peerKey); ch.inputMap().putAll(tmp); /* * Do NOT queue. This event should be send directly! */ scene.processor().changeableServer().applyChangeLater(ch, null); } } }