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.GameModel; import com.yarin.android.GameEngine.Screen.elements.Property.Property; import com.yarin.android.GameEngine.Screen.elements.Property.PropertyManager; import com.yarin.android.GameEngine.Util.StringExtension; public class Actor extends Animal { //������ private PropertyManager propBox=null; //��Ϸģʽ private GameModel gameModel=null; //֡�л����飬��Ӧ�����ǵ��ϡ��¡������ĸ������֡ͼƬ private int[] frameSwtichSequence=null; public Actor(){ super(); gameModel=new GameModel(); gameModel.setModelType(GameModel.FREEMOVE_MODEL); } /** * ���ظ����loadProperties����ȡ֡�л����� */ public void loadProperties(Vector v){ super.loadProperties(v); Object[] objArray=StringExtension.split(new StringBuffer((String)v.elementAt(14)), ",",StringExtension.INTEGER_ARRAY,false); if (objArray!=null){ frameSwtichSequence=StringExtension.objectArrayBatchToIntArray(objArray); } else{ frameSwtichSequence=null; } } /** * ������ǵĵ����� * @return ���߹������ */ public PropertyManager getPropertyBox(){ return propBox; } /** * �������ǵĵ����� * @param ���߹������ */ public void setPropertyBox(PropertyManager propBox){ this.propBox=propBox; } /** * װ�����ߣ��ӵ�������ע�� * @param prop Ҫװ���ĵ��� */ public void equipProperty(Property prop){ switch(prop.getType()){ case Property.MEDICINE_PROP: increaseLife(prop.getLifeEffect()); break; case Property.ATTACK_WEAPON_PROP: increaseAttack(prop.getAttackEffect()); break; case Property.DEFENCE_WEAPON_PROP: increaseDefence(prop.getDefenceEffect()); } propBox.unRegisterProperty(prop.getId()); } /** * ���ص�ǰ����Ϸģʽ * @return ��Ϸģʽ */ public GameModel getGameModel() { return gameModel; } /** * �����˶��ķ����ÿ���ٶ��ƶ�,ÿ���ƶ�һ�����ǵĶ������λ�� */ 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(){ if (frameSwtichSequence!=null){ StringBuffer tmp=new StringBuffer(); for(int i=0;i<frameSwtichSequence.length;i++){ if (i<frameSwtichSequence.length-1){ tmp.append(frameSwtichSequence[i]+","); } else{ tmp.append(frameSwtichSequence[i]); } } return super.toString()+" frameSwtichSequence="+tmp.toString(); } else{ return super.toString(); } } }