package com.yarin.android.GameEngine.Screen.elements.biology; import java.util.Vector; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import com.yarin.android.GameEngine.GameActivity; import com.yarin.android.GameEngine.GameObject; import com.yarin.android.GameEngine.Events.EventQueue; import com.yarin.android.GameEngine.Material.Movement; import com.yarin.android.GameEngine.Screen.animation.Animator; import com.yarin.android.GameEngine.Util.Coordinates; //ʵ��Biology�ӿڵĶ����� public class Animal extends GameObject implements Biology { //���� private String name=null; //����ֵ private int life=0; //����ֵ private int attack=0; //����ֵ private int defence=0; //�����Ƿ����� private boolean alive=true; //ͼƬ/����URL private String imgURL=null; //����ͼƬURL private String faceURL=null; //�¼����У���������NPC������ײʱ��ʹ���¼�ID�����¼������е�ij���¼��� private EventQueue eventQueue=null; //���� private Coordinates co=null; //�˶�������ٶ� private Movement movement=null; //�������� private Animator ani=null; public Animal(){ super(); } /** * ֻʹ��ǰ14������ */ public void loadProperties(Vector v){ this.setId((String)v.elementAt(0)); this.name=(String)v.elementAt(1); this.life=Integer.parseInt((String)v.elementAt(2)); this.attack=Integer.parseInt((String)v.elementAt(3)); this.defence=Integer.parseInt((String)v.elementAt(4)); this.imgURL=(String)v.elementAt(5); this.faceURL=(String)v.elementAt(6); int col=Integer.parseInt((String)v.elementAt(7)); int row=Integer.parseInt((String)v.elementAt(8)); this.co=new Coordinates(col,row); int stepSpeed=Integer.parseInt((String)v.elementAt(9)); int moveDirection=Integer.parseInt((String)v.elementAt(10)); this.movement=new Movement(stepSpeed,moveDirection); this.alive=true; int animationLoopTime=Integer.parseInt((String)v.elementAt(11)); int frameWidth=Integer.parseInt((String)v.elementAt(12)); int frameHeight=Integer.parseInt((String)v.elementAt(13)); try{ Bitmap img=BitmapFactory.decodeResource(GameActivity.mContext.getResources(), Integer.parseInt(this.imgURL)); this.ani=new Animator(img,frameWidth,frameHeight,animationLoopTime); this.ani.setRefPixelPosition(col*frameWidth,row*frameHeight); } catch(Exception ex){ ex.printStackTrace(); } } /** * �޸����� * @param name */ public void changeName(String name){ this.name=name; } /** * ���ض�������� * @return ��������� */ public String getName(){ return this.name; } /** * �޸Ķ����ͼƬ/����URL * @param imgURL */ public void changeImgURL(String imgURL){ this.imgURL=imgURL; } /** * ����ͼƬURL * @return ͼƬURL */ public String getImgURL(){ return this.imgURL; } /** * �����ܵ��˺����������ؼ��ٶ�������������������ֵС��MINLIFE������������������� * @param detaLife ������������ * @return ���ض���������� */ public int decreaseLife(int detaLife){ if (alive){ if (life>MINLIFE){ life-=detaLife; if (life<MINLIFE){ alive=false; } } } return life; } /** * ����ʹ����Ʒ������ԭ�򣬶�������������� * @param detaLife ������������ * @return ����������� */ public int increaseLife(int detaLife){ if (alive){ if ((life+detaLife)<=MAXLIFE){ life+=detaLife; } else{ life=MAXLIFE; } } return life; } /** * �ж϶����Ƿ����� * @return ���������ţ�����true�����򷵻�false */ public boolean isAlive(){ return alive; } /** * ����˶��ٶȺͷ��� * @return Movement���� */ public Movement getMovement() { return movement; } /** * �����˶��ٶȺͷ��� * @param movement Movement���� */ public void setMovement(Movement movement) { this.movement = movement; } /** * ��ö��ﵱǰ������ * @return ���ﵱǰ������ */ public Coordinates getCoordinates() { return co; } public int getAttack() { return attack; } public int increaseAttack(int detaAttack){ this.attack+=detaAttack; return this.attack; } public int getDefence() { return defence; } public int increaseDefence(int detaDefence){ this.defence+=detaDefence; return this.defence; } public EventQueue getEventQueue() { return eventQueue; } public String getFaceURL() { return faceURL; } public void setCoordinate(Coordinates co) { this.co = co; } public Animator getAnimator() { return ani; } public void setEventQueue(EventQueue eventQueue) { this.eventQueue = eventQueue; } public int getLife(){ return this.life; } public String toString(){ return super.toString() +" name="+name+" life="+life +" attack="+attack+" defence="+defence +" imgURL="+imgURL+" faceURL="+faceURL +" col="+co.getX()+" row="+co.getY() +" speed="+movement.getStepSpeed()+" direction="+movement.getMoveDirection() +" eventQueue="+eventQueue+" animator="+ani; } }