public Terrain(Map map) {
    	this.mapRenderer = new OrthogonalTiledMapRenderer((TiledMap) map, 1);
    	camera = new OrthographicCamera(960, 640);
    	camera.translate(Gdx.graphics.getWidth() / 2, Gdx.graphics.getHeight() / 2);
    	camera.update();
    	this.mapRenderer.setView(camera);
    	
    	rocks = new ArrayList<Rock>();
    	lights = new ArrayList<Light>();
    	nutrients = new ArrayList<Nutrients>();
    	waters = new ArrayList<Water>();
    	plants = new ArrayList<Plant>();
    	
    	for(int mapLayer = 0; mapLayer < map.getLayers().getCount(); mapLayer ++){
    		MapLayer mLayer = map.getLayers().get(mapLayer);
    		for(int mapObject = 0; mapObject < mLayer.getObjects().getCount(); mapObject ++){
    			MapObject mObject = mLayer.getObjects().get(mapObject);
    			if(mObject.getProperties().containsKey("type")){
    				String type = (String) mObject.getProperties().get("type");
    				if(type.equals("light")){
    					double amount = Double.parseDouble((String) mObject.getProperties().get("amount"));
    					Polygon shape = ((PolygonMapObject) mObject).getPolygon();
    					lights.add(new Light(shape, amount));
    				}
    				else if(type.equals("water")){
    					double amount = Double.parseDouble((String) mObject.getProperties().get("amount"));
    					Polygon shape = ((PolygonMapObject) mObject).getPolygon();
    					waters.add(new Water(shape, amount));
    				}
    				else if(type.equals("rock")){
    					Polygon shape = ((PolygonMapObject) mObject).getPolygon();
    					rocks.add(new Rock(shape));
    				}
    				else if(type.equals("nutrients")){
    					double amount = Double.parseDouble((String) mObject.getProperties().get("amount"));
    					Polygon shape = ((PolygonMapObject) mObject).getPolygon();
    					nutrients.add(new Nutrients(shape, amount));
    				}
    			}
    		}
    	}
    	
    	this.plants.add(new PlayerPlant(this, new Point(50, 50)));
    }