package com.yarin.android.GameEngine.Screen.elements.biology;
import java.util.Vector;
import com.yarin.android.GameEngine.Material.Movement;
import com.yarin.android.GameEngine.Screen.elements.Property.PropertyManager;
import com.yarin.android.GameEngine.Util.StringExtension;
public class NPC extends Animal
{
//������NPC������Ϸ�е��ι����Թ���-��������
public static final int FUNCTIONAL_NPC=1;
//�����NPC������Ϸ�Ĺ�����ڷ�������-����ŵ�ʿ��
public static final int SCENARIO_NPC=2;
//�ǽ�����NPC������Ϸ��ֻ�����Ǻ�����NPC������ײ���
public static final int NOINTERACTION_NPC=3;
// ֡�л����飬��Ӧ�����ǵ��ϡ��¡������ĸ������֡ͼƬ
private int[] frameSwtichSequence=null;
//NPC������
private int type=0;
//������
private PropertyManager propBox=null;
public NPC(){
super();
}
/**
* ����NPC�ĵ�����
* @return ���߹������
*/
public PropertyManager getPropertyBox() {
return propBox;
}
/**
* ����NPC������
* @return NPC������
*/
public int getType() {
return type;
}
public void setPropertyBox(PropertyManager propBox) {
this.propBox = propBox;
}
public void setType(int type) {
this.type = type;
}
/**
* ���ظ����loadProperties����ȡ֡�л�����
*/
public void loadProperties(Vector v){
super.loadProperties(v);
// System.out.println("FrameSequenceLength="+this.getAnimator().getFrameSequenceLength());
Object[] objArray=StringExtension.split(new StringBuffer((String)v.elementAt(14)),
",",StringExtension.INTEGER_ARRAY,false);
if (objArray!=null){
frameSwtichSequence=StringExtension.objectArrayBatchToIntArray(objArray);
}
else{
frameSwtichSequence=null;
}
}
/**
* �����˶��ķ����ÿ���ٶ��ƶ�,ÿ���ƶ�һ�����ǵĶ������λ��
*/
public void move(){
int x=this.getAnimator().getX();
int y=this.getAnimator().getY();
//�ƶ�����λ�ã�ÿ���ƶ�һ�����ǵĶ������λ��
switch(this.getMovement().getMoveDirection()){
case Movement.LEFT_MOVE:
x-=this.getMovement().getStepSpeed();
getAnimator().setFrame(frameSwtichSequence[2]);
getAnimator().flushPosition(x,y);
break;
case Movement.RIGHT_MOVE:
x+=this.getMovement().getStepSpeed();
getAnimator().setFrame(frameSwtichSequence[3]);
getAnimator().flushPosition(x,y);
break;
case Movement.UP_MOVE:
y-=this.getMovement().getStepSpeed();
getAnimator().setFrame(frameSwtichSequence[0]);
getAnimator().flushPosition(x,y);
break;
case Movement.DOWN_MOVE:
y+=this.getMovement().getStepSpeed();
getAnimator().setFrame(frameSwtichSequence[1]);
getAnimator().flushPosition(x,y);
break;
}
}
/**
* �����˶��ķ����ÿ���ٶȷ����ƶ���������ǰ��ȡ���ƶ�Ч����Ŀ��
*/
public void undoMove(){
int x=this.getAnimator().getX();
int y=this.getAnimator().getY();
//�ƶ�����λ��
switch(this.getMovement().getMoveDirection()){
case Movement.LEFT_MOVE:
x+=this.getMovement().getStepSpeed();
getAnimator().setFrame(frameSwtichSequence[2]);
getAnimator().flushPosition(x,y);
break;
case Movement.RIGHT_MOVE:
x-=this.getMovement().getStepSpeed();
getAnimator().setFrame(frameSwtichSequence[3]);
getAnimator().flushPosition(x,y);
break;
case Movement.UP_MOVE:
y+=this.getMovement().getStepSpeed();
getAnimator().setFrame(frameSwtichSequence[0]);
getAnimator().flushPosition(x,y);
break;
case Movement.DOWN_MOVE:
y-=this.getMovement().getStepSpeed();
getAnimator().setFrame(frameSwtichSequence[1]);
getAnimator().flushPosition(x,y);
break;
}
}
public String toString(){
return super.toString()
+" propBox="+propBox;
}
}