public new void setMap(MapComposite mapComposite) { Point p=getPosition(); MapComposite oldMapComposite=getMap(); if(oldMapComposite!=null) { Map oldMap=oldMapComposite.getMap(); int oldTileWidth=oldMap.getTileWidth(); int oldTileHeight=oldMap.getTileHeight(); oldMap.freeTile(p.x/oldTileWidth, p.y/oldTileHeight, getBlockType()); } base.setMap(mapComposite); //TODO Überprüfen ob es wie im ORiginal funktioniert Map map=mapComposite.getMap(); int tileWidth=map.getTileWidth(); int tileHeight=map.getTileHeight(); map.blockTile(p.x/tileWidth, p.y/tileHeight, getBlockType()); /* the last line might look illogical because the current position is * invalid on the new map, but it is necessary to block the old position * because the next call of setPosition() will automatically free the old * position. When we don't block the position now the occupation counting * will be off. */ }