package model.drawObjects;

import image.Images;

import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.awt.geom.Point2D;
import java.awt.image.BufferedImage;

public class Player extends DrawObject {
	
	private BufferedImage img,pulse;	
	private AffineTransform transform;
	private int lastindex;
	private Point2D middlePoint;
	
	private int subImgX,subImgY, indexCursor =0;
	
	private int subImgXBeat, indexBeat = 0;
	private boolean beat = false;
	
	public Player(int x, int y){
		img = Images.getImage(Images.ImageType.cursor);	
		pulse = Images.getImage(Images.ImageType.pulse);
		width = 100;//img.getWidth();
		height = 100;//img.getHeight();	
		lastindex = -10;
		middlePoint = new Point2D.Double(x,y);
	}
	
	public void draw(Graphics2D g2){//		
		subImgX = (indexCursor % 8)*100;
		subImgY = (indexCursor / 8)*100;
		
		subImgXBeat = (indexBeat % 9)*100;
		
		
		BufferedImage subImg2 = pulse.getSubimage(subImgXBeat,0,100,100);
		g2.drawImage(subImg2, transform, null);	
		
		
		BufferedImage subImg = img.getSubimage(subImgX,subImgY,100,100);
		g2.drawImage(subImg, transform, null);		
		
	}
	
	public void update(float update){
        if(beat){
            indexBeat++;
            if(indexBeat >= 9)
            {
            	indexBeat = 0;
            	beat = false;
            }
          }
        
        indexCursor++;
		indexCursor%=32;
        
		if(lastindex != index){
			transform = new AffineTransform();
			transform.rotate(Math.toRadians(index*45),middlePoint.getX(),middlePoint.getY());
			transform.translate(middlePoint.getX() - width/2, middlePoint.getY() - height);
			lastindex = index;
		}
	}
	
	public void setBeat() {
		beat = true;
		indexBeat = 0;
		
	}
}
	
