/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package ManicMiner;

import javax.microedition.lcdui.game.*;

/**
 *
 * @author supervisor
 */
public class Monstruo implements IMonstruo{

    Sprite sp;

    int x1;
    int y1;
    int x2;
    int y2;

    int posInicialx;
    int posInicialy;


    int dirInicial;

 

    boolean imagenDer;


    int velocidad; //1---> DERECHA Y ABAJO | -1 ---> IZQUIERDA Y ARRIBA

    int dx,dy;

    public Monstruo(Sprite sp, int velocidad, boolean imagenDer, int x1,int y1, int x2, int y2){

        this.sp = sp;
        this.dirInicial = velocidad;
        this.velocidad = velocidad;

        this.posInicialx = sp.getX();
        this.posInicialy = sp.getY();

        this.imagenDer = imagenDer;
        
        this.x1 = x1;
        this.y1 = y1;
        this.x2 = x2;
        this.y2 = y2;
        
        if(!imagenDer)
             mirarDer();
    }


    public Sprite getSprite(){
        return sp;

    }
    public void mover(TiledLayer t){


        if(y1 == y2) //El monstruo solo se mueve en el x
        {
            //PRIMERO MIRO HACIA DONDE ME DIRIJO

            sp.move(velocidad,0);
            sp.nextFrame();
           //Miro si ha llegado al final

           if(sp.getX() + t.getX() <= x1)
               mirarDer();
           else if(sp.getX() + sp.getWidth() + t.getX() >= x2){
               mirarIzq();
           }
               
        }else if(x1 == x2) //el monstruo se mueve en el y
        {
                sp.move(0, velocidad);

                if(sp.getY() + t.getY() <= y1){
                    velocidad = -velocidad;
                }else if(sp.getY() + sp.getHeight() + t.getY() >= y2)
                    velocidad = -velocidad;

                sp.nextFrame();

        }else{
            System.out.println("No existen monstruos que se desplacen en diagonal");
        }




    }

    private void mirarDer(){

        if(imagenDer){
            sp.setTransform(Sprite.TRANS_NONE);
            sp.setPosition(sp.getX() - sp.getWidth() +2, sp.getY());

            
        }else if(!imagenDer){
            sp.setTransform(Sprite.TRANS_MIRROR);

            sp.setPosition(sp.getX() + sp.getWidth() -2, sp.getY());

        }

        if(velocidad < 0)
                velocidad = -velocidad;

        sp.nextFrame();
    }

    public void mirarIzq(){
        if(imagenDer){
            sp.setTransform(Sprite.TRANS_MIRROR);
            sp.setPosition(sp.getX() + sp.getWidth() -2, sp.getY());

        }else if(!imagenDer){
            sp.setTransform(Sprite.TRANS_NONE);
             sp.setPosition(sp.getX() - sp.getWidth() +2, sp.getY());
        }

        if(velocidad > 0)
                velocidad = -velocidad;

        sp.prevFrame();
        
    }

    
    public void reiniciar(){
        sp.setPosition(posInicialx, posInicialy);
        velocidad = dirInicial;

        sp.setTransform(Sprite.TRANS_NONE);
        
    }

}
