@Override
	public void move(Road r)
	{
		this.setMovementDirection(r.getDirection());
		
		int pX=0, pY=0;
		
		int eX = r.getBPosition().getXPosition();
		int eY  = r.getBPosition().getYPosition();
		
		for(Point p : r.road)
		{
			if(clonedMerchant.isLiving == false)
			{
				this.kill();
				Empire.getInstance().CREATURES.remove(clonedMerchant);
				return;
			}
	
			
			int x = p.getXPosition();
			int y = p.getYPosition();

			
			MapPoint occ = Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y));
			while(occ.getOccupancy() != MapPoint.Occupancy.FREE)
			{
				if(occ.getOccupancy() == MapPoint.Occupancy.BARBARIAN_HORDE)
				{
					//if(isSafe == false)
					{
						//Empire.getInstance().POINTS[x][y].setCollised(true);
						Empire.getInstance().CREATURES.remove(clonedMerchant);
						Empire.SoundsOfEmpire.playDeathSound();
						this.kill();
						return;
					}
					
				}
				else
				{
					if((occ.getDirection() == this.getMovementDirection()) || (eY==y && eX == x))
					{
						Empire.getInstance().POINTS.get(String.valueOf(pX) + "-" + String.valueOf(pY)).setOccupancy(MapPoint.Occupancy.MERCHANT);	
						Empire.getInstance().POINTS.get(String.valueOf(pX) + "-" + String.valueOf(pY)).setDirection(this.getMovementDirection());
						
						try
						{
							Thread.sleep(1000);
						}
						catch(Exception ex)
						{
							ex.printStackTrace();
						}
						
						Empire.getInstance().POINTS.get(String.valueOf(pX) + "-" + String.valueOf(pY)).setOccupancy(MapPoint.Occupancy.FREE);
						Empire.getInstance().POINTS.get(String.valueOf(pX) + "-" + String.valueOf(pY)).setDirection(Road.Direction.NONE);
					}
					else
					{
						break;
					}
				}
			
			}
			
			pX = x;
			pY=y;
			
			Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y)).setOccupancy(MapPoint.Occupancy.MERCHANT);
			Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y)).setDirection(this.getMovementDirection());
			

			
			this.setPosition(x, y);
			clonedMerchant.setPosition(x, y);
			
			while(!clonedMerchant.shoudMove)
			{
				if (clonedMerchant.isLiving == false)
				{
					this.kill();
					Empire.getInstance().CREATURES.remove(clonedMerchant);
					Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y)).setOccupancy(MapPoint.Occupancy.FREE);
					Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y)).setDirection(Road.Direction.NONE);
					return;
				}
				try
				{
					Thread.sleep(100);
				}
				catch(Exception ex)
				{
					ex.printStackTrace();
				}
			}

			
			try 
			{
				Thread.sleep(this.movementSpeed);
			}
			catch (InterruptedException e) 
			{
				e.printStackTrace();
			}
			
			Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y)).setOccupancy(MapPoint.Occupancy.FREE);
			Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y)).setDirection(Road.Direction.NONE);

			if(Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y)).isCollised() == true)
			{
				
				//if(isSafe == false)
				{
					Empire.getInstance().CREATURES.remove(clonedMerchant);
					this.kill();
					Empire.getInstance().POINTS.get(String.valueOf(x) + "-" + String.valueOf(y)).setCollised(false);
					return;
				}
				
			}
			
		}
	}