public GameMap(GameWorld world, GameFrame frame, EditorMapInformation objects, Vector2f position)
	{
		super(world, frame);
		this.objects = objects;
		world2D = world.getWorld2D();
		world2D.clear();
		timer = new Timer(1000 / 60, this);
		running = true;
		deadCounter = 1;
		imgX = 0;
		imgY = 0;
		gettingUp = false;
		
		line1 = objects.getLine1();
		line2 = objects.getLine2();

		interAct1 = objects.getInteractLine1();
		interAct2 = objects.getInteractLine2();

		if ((!line1.equals("") && !line2.equals("")) || (line1.length() > 0))
			show = true;
		
		walls = new ArrayList<Body>();
		spikes = new ArrayList<GameSpike>();
		blocks = new ArrayList<GameFallingObject>();
		platforms = new ArrayList<GameMovingObject>();
		doors = new ArrayList<Body>();
		doorObjects = new ArrayList<EditorObjectInformation>();
		List<EditorObjectInformation> list = this.objects.getGameObjects();
		for (EditorObjectInformation gameObject : list)
		{
			switch (gameObject.getObjectType())
			{
			case BLOCK:
				GameFallingObject block = new GameFallingObject(new Vector2f(gameObject.getPosition().x, gameObject.getPosition().y), new Vector2f(
						gameObject.getStartPosition().x, gameObject.getStartPosition().y), (int) gameObject.getWidth(), (int) gameObject.getHeight(), world,
						false);
				blocks.add(block);
				world2D.add(block.getBody());
				break;
			case DEADLYBLOCK:
				GameFallingObject deadlyBlock = new GameFallingObject(new Vector2f(gameObject.getPosition().x, gameObject.getPosition().y), new Vector2f(
						gameObject.getStartPosition().x, gameObject.getStartPosition().y), (int) gameObject.getWidth(), (int) gameObject.getHeight(), world,
						true);
				blocks.add(deadlyBlock);
				world2D.add(deadlyBlock.getBody());
				break;
			case DEADLYPLATFORM:
				GameMovingObject deadlyPlatform = new GameMovingObject(new Vector2f(gameObject.getStartPosition().x, gameObject.getStartPosition().y),
						new Vector2f(gameObject.getEndPosition().x, gameObject.getEndPosition().y), (int) gameObject.getWidth(), (int) gameObject.getHeight(),
						gameObject.getSpeed(), world, true);
				platforms.add(deadlyPlatform);
				world2D.add(deadlyPlatform.getBody());
				break;
			case PLATFORM:
				GameMovingObject platform = new GameMovingObject(new Vector2f(gameObject.getStartPosition().x, gameObject.getStartPosition().y), new Vector2f(
						gameObject.getEndPosition().x, gameObject.getEndPosition().y), (int) gameObject.getWidth(), (int) gameObject.getHeight(),
						gameObject.getSpeed(), world, false);
				platforms.add(platform);
				world2D.add(platform.getBody());
				break;
			case SPIKE:
				GameSpike spike = new GameSpike(gameObject, world);
				world2D.add(spike.getBody());
				spikes.add(spike);
				break;
			case WALL:
				Body wall = new StaticBody("wall", new Box(gameObject.getWidth(), gameObject.getHeight()));
				wall.adjustRotation(gameObject.getRotation());
				wall.setPosition(gameObject.getPosition().x, gameObject.getPosition().y);
				world2D.add(wall);
				walls.add(wall);
				break;
			case OMRU:
				omruX = (int) gameObject.getPosition().x;
				omruY = (int) gameObject.getPosition().y;
				omruRotate = gameObject.getRotation();
				omruWidth = (int) gameObject.getWidth();
				omruHeight = (int) gameObject.getHeight();
				break;
			case INTERACTION:
				intX = (int) gameObject.getPosition().x;
				intY = (int) gameObject.getPosition().y;
				intWidth = (int) gameObject.getWidth();
				intHeight = (int) gameObject.getHeight();
				interActMax = interAct1.size();
				break;
			case PC:
				pc = gameObject.toString();
				pcCoordX = (int) gameObject.getPosition().x;
				pcCoordY = (int) gameObject.getPosition().y;
				pcRotate = gameObject.getRotation();
				pcWidth = (int) gameObject.getWidth();
				pcHeight = (int) gameObject.getHeight();
				break;
			case DOOR:
				doorObjects.add(gameObject);
				Body door = new StaticBody(gameObject.toString(), new Box(gameObject.getWidth(), gameObject.getHeight()));
				door.adjustRotation(gameObject.getRotation());
				door.setPosition(gameObject.getStartPosition().x, gameObject.getStartPosition().y);
				world2D.add(door);
				doors.add(door);
				break;
			default:
				break;
			}
		}
		hero = world.getHero();
		hero2D = hero.getHeroBody();
		hero2D.setPosition(position.x, position.y);
		world2D.add(hero2D);

		if (omruWidth != 1)
		{
			try
			{
				omru = ImageIO.read(getClass().getResource(Messages.sourceURI + "portal160x165.png"));
				omruBG = ImageIO.read(getClass().getResource(Messages.sourceURI + "portal bg.png"));
				omruBG2 = ImageIO.read(getClass().getResource(Messages.sourceURI + "portal bg2.png"));
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
		if (intWidth != 1)
		{
			KeyControlPanel p = new KeyControlPanel(world, frame);
			str = p.getKeyString(frame.getEnterKey());
		}
		if (pcWidth > 1)
		{
			try
			{
				pcImage = ImageIO.read(getClass().getResource(Messages.sourceURI + "pc.png"));
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
	}