package sample.game.model;


import java.util.ArrayList;

import library.core.debug.CoreLog;
import library.core.listener.OnCoreCollisionListener;
import library.core.listener.OnCoreTouchDownListener;
import library.core.model.CoreAnimation;
import library.core.model.CoreAnimationModel;
import library.core.model.CoreModel;
import sample.game.controller.GameController;



public class CharaModel extends CoreAnimationModel implements
 Cloneable,OnCoreCollisionListener,OnCoreTouchDownListener{




	public enum TARGET_TYPE{
		MINISTART,
		WOLF,
		CATTLE,
		CABBAGE,
	}
	private TARGET_TYPE type;

	private boolean canMove;
	private boolean nowTarget;
	private boolean canTouch;

	private GameController controller;

	//レイアウトで使用するＩＤ
	private int layoutXId=0;
	private int layoutYId=0;

	//ターゲットのＩＤ識別用　セレクトボタンのＩＤに使用
	private int targetId=0;



	public CharaModel(GameController controller,TARGET_TYPE type,ArrayList<CoreAnimation> animations,
			int startTargetAnimIndex, float centerX, float centerY,
			float width, float height) {
		super(animations, startTargetAnimIndex, centerX, centerY, width, height);


		this.type=type;
		this.canMove=true;
		this.canTouch=true;
		this.nowTarget=false;

		this.controller=controller;

		this.targetId=0;
	}

	@Override
	public CharaModel clone(){
		CharaModel c=null;

		c=(CharaModel) super.clone();

		return c;
	}


	/**
	 * リスタート時などのゲームの再設定に使用
	 */
	public void reset(){
		this.canMove=true;
		this.canTouch=true;
		this.nowTarget=false;
	}

	/**
	 *リセットかけたときにゲームコントローラーのインスタンスが変わっているので入れなおす
	 * @param g
	 */
	public void setGameController(GameController g){
		this.controller=g;
	}

	public TARGET_TYPE getType(){
		return type;
	}


	public boolean isCanMove() {
		return canMove;
	}

	public void setCanMove(boolean canMove) {
		this.canMove = canMove;
	}

	public boolean isNowTarget() {
		return nowTarget;
	}

	public void setNowTarget(boolean nowTarget) {
		this.nowTarget = nowTarget;
	}


	public void setLayoutId(int x,int y){
		this.layoutXId=x;
		this.layoutYId=y;
	}




	public int getLayoutXId() {
		return layoutXId;
	}

	public int getLayoutYId() {
		return layoutYId;
	}

	public void setTargetId(int id){
		this.targetId=id;
	}

	public int getTargetId(){
		return targetId;
	}


	public boolean isCanTouch() {
		return canTouch;
	}

	public void setCanTouch(boolean canTouch) {
		this.canTouch = canTouch;
	}

	@Override
	public void onTouchDown() {
		if(!canTouch) return;	//タッチできない


		if(nowTarget){
			controller.removeTarget(this);
			nowTarget=false;
		}else{
			if(controller.addTarget(this)){
				nowTarget=true;
			}
		}

		CoreLog.debug("touch chara");


	}

	@Override
	public void onCollisionEnter(CoreModel model) {

	}

	@Override
	public void onCollisionOut(CoreModel model) {

	}

	@Override
	public void onCollisionIn(CoreModel model) {

	}

	@Override
	public void endAnimationEvent(CoreAnimation endAnim) {

	}

}
