package uk.co.patrickhaston.mars;

import uk.co.patrickhaston.pdhsprites.PdhBitmapSprite;

import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Point;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionAdapter;
import java.awt.event.MouseMotionListener;

public class MarsNavigator
  extends MarsControl
{
  public MarsNavigator(MPanel parent, MarsFrame frame)
  {
    super(parent, frame);
    try
    {
      jbInit();
    }
    catch (Exception e)
    {
      e.printStackTrace();
    }
  }

  private void jbInit()
    throws Exception
  {
    setImage(theFrame.mars.systemResources.navigatorImage);
    this.setControlSize(new Dimension(48,48));
  }

  public void handleMousePressed(MouseEvent e)
  {
    myParent.pan(getDirection(e.getPoint()));
    repaint();
  }

  public void handleMouseReleased(MouseEvent e)
  {
    direction = 5;
    repaint();
  }

  public int getDirection(Point p)
  {
    // x starts from the left, y starts from the top
    if((p.x + p.y)< 24)
    {
      direction = NORTH_WEST;
      return direction;
    }
    if((p.x + p.y)>72)
    {
      direction = SOUTH_EAST;
      return direction;
    }
    if((p.x - p.y) > 24)
    {
      direction = NORTH_EAST;
      return direction;
    }
    if((p.x - p.y) < -24)
    {
      direction = SOUTH_WEST;
      return direction;
    }
    if((p.x + p.y) > 48)
    {
      if((p.x - p.y)>0)
      {
        direction = EAST;
        return direction;
      }
      else
      {
        direction = SOUTH;
        return direction;
      }
    }
    else
    {
      if((p.x - p.y)>0)
      {
        direction = NORTH;
        return direction;
      }
      else
      {
        direction = WEST;
        return direction;
      }
    }
  }
  

}

