package net.minecraft.src;

import java.util.Map;
import net.minecraft.client.Minecraft;

import org.lwjgl.input.Keyboard;

/**
 * powerCraft's Mobile module<br>
 * Provides power crystals (+generation), miner, activation crystal, power dust,
 * fishing machine and ore sniffer.
 * 
 * @author MightyPork
 * @copy (c) 2012
 */
public class mod_PCmobile extends PC_Module {

	/**
	 * Get images directory (ending with slash)
	 * 
	 * @return the directory
	 */
	public static String getImgDir() {
		return "/PowerCraft/mobile/";
	}

	/**
	 * Get terrain file path (png)
	 * 
	 * @return the file path
	 */
	public static String getTerrainFile() {
		return getImgDir() + "tiles.png";
	}

	@Override
	public String getPriorities() {
		return "after:mod_PCcore";
	}

	@Override
	public String getModuleName() {
		return "MOBILE";
	}





	// *** PROPERTIES ***
	public static final String pk_mForward = "key.miner.move_forward";
	public static final String pk_mBackward = "key.miner.move_backward";
	public static final String pk_mLeft = "key.miner.turn_left";
	public static final String pk_mRight = "key.miner.turn_right";
	public static final String pk_mAround = "key.miner.turn_around";
	public static final String pk_mUp = "key.miner.mine_up";
	public static final String pk_mDown = "key.miner.mine_down";
	public static final String pk_mBridgeOn = "key.miner.set_bridge_on";
	public static final String pk_mBridgeOff = "key.miner.set_bridge_off";
	public static final String pk_mRun = "key.miner.run_program";
	public static final String pk_mDeposit = "key.miner.store_to_chest";
	public static final String pk_mToBlocks = "key.miner.deactivate";
	public static final String pk_mMiningOn = "key.miner.set_mining_on";
	public static final String pk_mMiningOff = "key.miner.set_mining_off";
	public static final String pk_mCancel = "key.miner.reset";

	/** Configuration file */
	public static PC_PropertyManager conf;

	static {
		conf = new PC_PropertyManager("/config/PowerCraft/module_mobile.cfg", "PowerCraft MOBILE module\nconfiguration file");

		conf.putKey(pk_mForward, Keyboard.KEY_NUMPAD8);
		conf.putKey(pk_mBackward, Keyboard.KEY_NUMPAD2);
		conf.putKey(pk_mLeft, Keyboard.KEY_NUMPAD4);
		conf.putKey(pk_mRight, Keyboard.KEY_NUMPAD6);
		conf.putKey(pk_mAround, Keyboard.KEY_NUMPAD5);
		conf.putKey(pk_mDown, Keyboard.KEY_SUBTRACT);
		conf.putKey(pk_mUp, Keyboard.KEY_ADD);

		conf.putKey(pk_mBridgeOn, Keyboard.KEY_O);
		conf.putKey(pk_mBridgeOff, Keyboard.KEY_P);
		conf.putKey(pk_mRun, Keyboard.KEY_NUMPADENTER);

		conf.putKey(pk_mDeposit, Keyboard.KEY_DECIMAL);
		conf.putKey(pk_mToBlocks, Keyboard.KEY_NUMPAD1);
		conf.putKey(pk_mMiningOn, Keyboard.KEY_NUMPAD7);
		conf.putKey(pk_mMiningOff, Keyboard.KEY_NUMPAD9);

		conf.putKey(pk_mCancel, Keyboard.KEY_DELETE);

		conf.apply();
	}







	// *** MODULE INIT ***

	@Override
	public void preInit() {		
	}

	@Override
	public void registerEntities() {
		ModLoader.registerEntityID(net.minecraft.src.PCmo_EntityMiner.class, "PCmo_Miner", ModLoader.getUniqueEntityId());
		ModLoader.registerEntityID(net.minecraft.src.PCmo_EntityFishingMachine.class, "PCmo_FishingMachine", ModLoader.getUniqueEntityId());
	}

	@Override
	public void registerTileEntities() {}

	@Override
	public void registerBlockRenderers() {
	}

	@Override
	public void registerBlocks() {
	}

	@Override
	public void registerTextures() {
	}

	@Override
	public void preloadTextures() {
		mc.renderEngine.getTexture(getTerrainFile());
		mc.renderEngine.getTexture(getImgDir() + "gui_miner.png");
		mc.renderEngine.getTexture(getImgDir() + "miner_base.png");
		mc.renderEngine.getTexture(getImgDir() + "miner_overlay_1.png");
		mc.renderEngine.getTexture(getImgDir() + "miner_overlay_2.png");
		mc.renderEngine.getTexture(getImgDir() + "miner_overlay_3.png");
		mc.renderEngine.getTexture(getImgDir() + "miner_overlay_4.png");
		mc.renderEngine.getTexture(getImgDir() + "miner_overlay_5.png");
		mc.renderEngine.getTexture(getImgDir() + "miner_overlay_6.png");
		mc.renderEngine.getTexture(getImgDir() + "miner_overlay_7.png");
		mc.renderEngine.getTexture(getImgDir() + "miner_overlay_8.png");
		mc.renderEngine.getTexture(getImgDir() + "miner_overlay_keyboard.png");
		mc.renderEngine.getTexture(getImgDir() + "fisher.png");
	}

	@Override
	public void addNames() {
	}

	@Override
	public void addRecipes() {

	}

	@Override
	public void postInit() {
		ModLoader.setInGameHook(this, true, true);
	}



	@SuppressWarnings({ "unchecked", "rawtypes" })
	@Override
	public void addRenderer(Map map) {
		map.put(PCmo_EntityMiner.class, new PCmo_RenderMiner());
		map.put(PCmo_EntityFishingMachine.class, new PCmo_RenderFishingMachine());
	}


	@Override
	public boolean onTickInGame(float f, Minecraft minecraft) {
		PCmo_MinerControlHandler.tick();
		return true;
	}


}
