import greenfoot.*;  // (World, Actor, GreenfootImage, Greenfoot and MouseInfo)

/**
 * Verwaltet Raster
 * 
 * @author Felix Pfeffer
 * @version 1.0
 */
public class Raster extends Actor
{
   
    /**
      * standart bild des Rasters
      */
    private GreenfootImage r0 = new GreenfootImage(TeD_World.RASTER); 
    /**
      * bild wenn das Rasters aktiv ist
      */
    private GreenfootImage r1 = new GreenfootImage(TeD_World.RASTER_JA);  
    /**
      * bild wenn das Rasters inaktiv ist
      */
    private GreenfootImage r2 = new GreenfootImage(TeD_World.RASTER_NO);
    /**
      * gibt Mouseinfo aus
      */
    private MouseInfo mouse = Greenfoot.getMouseInfo();
    
    private boolean onWay = false;

    
    
    public Raster(boolean b)
    {
        onWay = b;
        setImage(r0);
    }
    
    
    public void act()
    {
        int hilf = TeD_World.SPIELEVERWALTUNG.map0.getMap( ( TeD_World.pixToCell( this.getX() )  - 1 ) , ( TeD_World.pixToCell( this.getY() ) - 1 ));
        if( !onWay )
        {
            if( isMouseTouching() )
            {
                if( hilf != 0)
                {
                    this.setImage(r2);
                    TeD_World.SPIELEVERWALTUNG.setRasterStatus(false);
                }
                else
                {
                    this.setImage(r1);
                    TeD_World.SPIELEVERWALTUNG.setRasterStatus(true);
                }
            }
            else
            {
                this.setImage(r0);
            }
        }
        else if(onWay)
        {
            if( isMouseTouching() )
            {
                if( hilf < 1 || hilf > 2)
                {
                    this.setImage(r2);
                    TeD_World.SPIELEVERWALTUNG.setRasterStatus(false);
                }
                else
                {
                    this.setImage(r1);
                    TeD_World.SPIELEVERWALTUNG.setRasterStatus(true);
                }
            }
            else
            {
                this.setImage(r0);
            }
        }
    }
    /**
      * true falls --> Mouse berührt Raster
      */
    private boolean isMouseTouching()       // ist true wenn die Maus auf dem Raster ist.
    {
        boolean b = false;
        mouse = Greenfoot.getMouseInfo();
        
        if(mouse != null)
        {
            if( (mouse.getX() <= (int)(this.getX()+(TeD_World.PIX/2))) && (mouse.getX() > (int)(this.getX()-(TeD_World.PIX/2))) )
            {
                if( (mouse.getY() <= (int)(this.getY()+(TeD_World.PIX/2))) && (mouse.getY() > (int)(this.getY()-(TeD_World.PIX/2))) )
                {   
                    b = true;
                }
            }
        }
        
        return b;
    }
    
    
       
}
