// Processed by ReveiverDispatcher
  private synchronized void processStateMsg(StateMessage statemsg) {
    // Get the new GameState that comes in the message
    GameState gameState = statemsg.getGame();

    // Change everything
    frontBuffer = new HashMap<Character, Plane>();
    for (Map.Entry<Character, Plane> e : gameState.getFrontBuffer().entrySet())
      frontBuffer.put(e.getKey(), e.getValue());

    backBuffer = new HashMap<Character, Plane>();
    for (Map.Entry<Character, Plane> e : gameState.getBackBuffer().entrySet())
      backBuffer.put(e.getKey(), e.getValue());

    this.successfulExits = gameState.getSuccessfulExits();
    this.unsuccessfulExits = gameState.getUnsucessfulExits();
    this.epoch = gameState.getEpoch();
    this.board = gameState.getBoard();

    // Notify Screen that the GameState has changed
    Map<Character, Plane> obs = new HashMap<Character, Plane>();
    for (Map.Entry<Character, Plane> e : frontBuffer.entrySet())
      obs.put(e.getKey().charValue(), e.getValue().clone());
    setChanged();
    notifyObservers(obs);
  }
  public GameState(GameState gameState) {
    frontBuffer = new HashMap<Character, Plane>();
    for (Map.Entry<Character, Plane> e : gameState.getFrontBuffer().entrySet())
      frontBuffer.put(e.getKey(), e.getValue());

    backBuffer = new HashMap<Character, Plane>();
    for (Map.Entry<Character, Plane> e : gameState.getBackBuffer().entrySet())
      backBuffer.put(e.getKey(), e.getValue());

    this.successfulExits = gameState.getSuccessfulExits();
    this.unsuccessfulExits = gameState.getUnsucessfulExits();
    this.epoch = gameState.getEpoch();
    this.board = gameState.getBoard();

    previousAdds = new HashMap<Gate, Integer>();
    for (Map.Entry<Gate, Integer> e : gameState.getPreviousAdds().entrySet())
      previousAdds.put(e.getKey().clone(), e.getValue().intValue());

    actualAdds = new HashMap<Gate, Integer>();
    for (Map.Entry<Gate, Integer> e : gameState.getActualAdds().entrySet())
      actualAdds.put(e.getKey().clone(), e.getValue().intValue());
  }