package net.fe.builderStage;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.List;

import net.fe.FEResources;
import net.fe.fightStage.FightStage;

import org.lwjgl.input.Keyboard;
import org.newdawn.slick.Color;

import chu.engine.Game;
import chu.engine.KeyboardEvent;
import chu.engine.anim.BitmapFont;
import chu.engine.anim.Renderer;
import chu.engine.menu.TextInputBox;

public class TeamNameInput extends TextInputBox {
	private static final Color FOCUSED = new Color(0x817b58);
	private static final Color CURSOR = new Color(0xeeeeee);
	
	public static final String EXT = "femt";
	
	private boolean save;
	
	public TeamNameInput(boolean save) {
		super(190, 160, 100, 20, "default_med");
		this.save = save;
		renderDepth = 0f;
	}
	
	public void render(){
		Renderer.drawRectangle(0, 0, 480, 320, renderDepth, new Color(0,0,0,0.5f));
		Renderer.drawBorderedRectangle(x-10, y-20, x+width+10, y+height +5, renderDepth,
				FightStage.NEUTRAL, FightStage.BORDER_LIGHT, FightStage.BORDER_DARK);
		Renderer.drawString("default_med", "Team Name:", x, y-15, renderDepth);
		BitmapFont font = FEResources.getBitmapFont("default_med");
		Renderer.drawRectangle(x, y, x+width, y+height, renderDepth, FOCUSED);
		float linepos = x + font.getStringWidth(input.substring(0, cursorPos)) + 2;
		Renderer.drawRectangle(linepos, y+1, linepos+1, y+height-1, renderDepth-0.02f, CURSOR);
		Renderer.drawString("default_med", input.toString(), x+2, y+5, renderDepth-0.01f);
	}
	
	public void beginStep(){
		super.beginStep();
		List<KeyboardEvent> keys = Game.getKeys();
		for(KeyboardEvent ke : keys) {
			if(ke.state) {
				if(ke.key == Keyboard.KEY_RETURN) { 
					if(!new File("teams").exists()){
						new File("teams").mkdir();
					}
					if(save){
						save();
					} else {
						load();
					}
					destroy();
					((TeamBuilderStage) stage).setControl(true);
					
				}
			}
		}
	}
	
	public void save(){
		((TeamBuilderStage) stage).saveTeam(input.toString());
	}
	
	public void load(){
		((TeamBuilderStage) stage).loadTeam(input.toString());
	}
	
	public static String convertPath(String path){
		if(!path.endsWith(EXT)){
			return path+"."+EXT;
		} else {
			return path;
		}
	}
	
	public void setStage(TeamBuilderStage s){
		hasFocus = true;
		s.addEntity(this);
		s.setControl(false);
	}

}