package ludumdare.game;

import java.awt.Color;
import java.awt.Graphics2D;
import java.awt.geom.AffineTransform;
import java.util.Random;

import org.crusty.math.Vec2double;

public class SpaceBody extends Entity {

	long mass;
	String atmosphere;
	
	Random r = new Random();
	String name = "";
	
	double diameter;
	
	public SpaceBody(Sprite sprite, Vec2double pos, int diameter) {
		super(sprite);
		this.pos.x = pos.x;
		this.pos.y = pos.y;
		this.diameter = diameter;
		rotation = r.nextInt(360);
		this.rotationalVel = (r.nextDouble() - 0.5) / 1000;
	}

	public void draw(Graphics2D g) {
		
		g.setColor(Color.WHITE);
		
		g.drawLine((int) pos.x, (int) pos.y, (int) pos.x + 20, (int) pos.y - 40);
		g.drawLine((int) pos.x + 20, (int) pos.y - 40, (int) pos.x + 20 + 5, (int) pos.y - 40);
		
//		System.out.println("Diam:" + diameter);
		g.drawOval((int) pos.x, (int) pos.y, (int) diameter, (int) diameter);
		
		AffineTransform save = g.getTransform();
		
//		AffineTransform atNew = g.getTransform();
//		g.scale(diameter/this.sprite.image.getWidth(), diameter/this.sprite.image.getHeight());
		g.rotate(rotation, pos.x + diameter/2, pos.y + diameter/2); //  + rotatePoint.x  + rotatePoint.y
		
//		g.setTransform(atNew);
		g.drawImage(sprite.image, (int) pos.x, (int) pos.y, (int) diameter, (int) diameter, null);
//		g.drawImage(img, op, x, y)
//		g.drawImage(sprite.image, 
//					(int) pos.x, 
//					(int) pos.y, 
//					null);
//		atNew.rotate(-rotation , pos.x + rotatePoint.x, pos.y + rotatePoint.y); //  + rotatePoint.x  + rotatePoint.y
		g.setTransform(save);
		
//		g.drawLine((int) pos.x, (int) pos.y, (int) pos.x + 20, (int) pos.y - 40);
//		g.drawLine((int) pos.x + 20, (int) pos.y - 40, (int) pos.x + 20 + 10, (int) pos.y - 40);
//		g.setFont(Game.smallFont);
//		g.drawString("Mass: " + mass, (int) pos.x + 35, (int) pos.y - 40);
//		g.drawString("Atmosphere:" + atmosphere, (int) pos.x + 35, (int) pos.y - 40 + 15);
//		g.drawString("CellularAutomata: " + cellularAutomata, (int) pos.x + 35, (int) pos.y - 40 + 30);
		
//		super.draw(g);
	}
	
	public void generateRandomData() {
		
		String[] syllables = {
			"bar",
			"tar",
			"har",
			"jar",
			"dar",
			"zar",
			
			
			"bin",
			"din",
			"fin",
			"lin",
			
			"dor",
			"bor",
			"gor",
			
			"zul",
			"mul",
			
			"bel",
			"zel",
			"cel",
			"rel",
			"del",
			
			"zeon",
			"ico",
			"loz",
			"snoz",
			"bour"
		};
		
		int num = r.nextInt(2) + 2;
		name = "";
		for (int i = 0; i < num; i++)
			name += syllables[r.nextInt(syllables.length)];
		name = ("" + name.charAt(0)).toUpperCase() + name.substring(1, name.length());
		
		
		mass = Math.abs(r.nextLong());
		String[] atmospheres = {
			"Oxygen",
			"Methane",
			"Hydrogen",
			"Arsenic"
		};
		atmosphere = "";
//		int percentage = 100;
		
//		while (percentage > 0) {
//			int amount = r.nextInt(100);
//			percentage -= amount;
//			if (percentage < 0) {
//				amount -= percentage;
//			}
//			atmosphere += amount + "% " + atmospheres[r.nextInt(atmospheres.length)];
//		}
		if (r.nextBoolean()) {
			// 1
			atmosphere += "100% " + atmospheres[r.nextInt(atmospheres.length)];
		} else {
			// 2
			int first = r.nextInt(100);
			int second = 100 - first;
			int firstNum = r.nextInt(atmospheres.length);
			int secondNum = -1;
			while (secondNum == -1 || secondNum == firstNum)
				secondNum = r.nextInt(atmospheres.length);
			atmosphere += first + "% " + atmospheres[firstNum] + " " + second + "% " + atmospheres[firstNum];
		}
		if (r.nextInt(6) == 0) {
			atmosphere = "None";
		}
		
		
	}
	
}
