package org.tjuscs.bulletgame.model; import org.tjuscs.bulletgame.model.item.ItemFaithMinor; import org.tjuscs.bulletgame.util.GameUtil; import org.tjuscs.bulletgame.view.component.Renderer; import com.badlogic.gdx.utils.Pool.Poolable; /*********************************************************************** * Module: Bullet.java * Author: Administrator * Purpose: Defines the Class Bullet ***********************************************************************/ /** * 子弹 * */ public class Bullet extends BaseObject implements Poolable { private ImageClass imgclass; private int index; private boolean stay; private boolean destroyable; private String img1, img2; private boolean hasgrazed; public Bullet() { } public Bullet(String imgclassName, int index, double x, double y, double v, double angle, boolean aim, double omiga, boolean stay, boolean destroyable) { this.init(imgclassName, index, x, y, v, angle, aim, omiga, stay, destroyable); } /** * @param imgclass * @param index * @param stay * @param destroyable */ public void init(String imgclassName, int index, double x, double y, double v, double angle, boolean aim, double omiga, boolean stay, boolean destroyable) { super.init(); this.setX(x); this.setY(y); this.setHasgrazed(false); GameUtil.SetV2(this, v, angle, true, aim); this.setOmiga(omiga); ImageClass imgclass = ImageClass.valueOf(imgclassName); this.setImgclass(imgclass); if (destroyable) this.setGroup(GameUtil.GROUP_ENEMY_BULLET); else this.setGroup(GameUtil.GROUP_INDES); this.setStay(stay); if (this.isStay()) this.setColli(false); else this.setColli(true); index = Math.min(Math.max(1, index), 16); this.setLayer(GameUtil.LAYER_ENEMY_BULLET_EF); this.setIndex(index); imgclass.init(this, index); this.img1 = this.getImg(); this.img2 = "preimg" + ((index + 1) / 2); } public void frame() { if (this.stay) { this.setX(this.getX() - this.getVx()); this.setY(this.getY() - this.getVy()); this.setRot(this.getRot() - this.getOmiga()); this.setImg(img2); if (this.getTimer() == 11) { this.setLayer(GameUtil.LAYER_ENEMY_BULLET); this.setColli(true); if (this.stay) { this.setTimer(-1); this.stay = false; this.setImg(img1); } } } this.getTask().act(); } public void kill() { GameModel.getInstance().getObjList() .add(new ItemFaithMinor(this.getX(), this.getY())); } @Override public void render() { Renderer.getInstance().Render(this.getImg(), this.getX(), this.getY(), this.getRot()); } public void del() { } public ImageClass getImgclass() { return imgclass; } public void setImgclass(ImageClass imgclass) { this.imgclass = imgclass; } public int getIndex() { return index; } public void setIndex(int index) { this.index = index; } public boolean isStay() { return stay; } public void setStay(boolean stay) { this.stay = stay; } public boolean isDestroyable() { return destroyable; } public void setDestroyable(boolean destroyable) { this.destroyable = destroyable; } @Override public void reset() { super.reset(); imgclass = null; index = 0; stay = false; destroyable = false; img1 = null; img2 = null; } public boolean isHasgrazed() { return hasgrazed; } public void setHasgrazed(boolean hasgrazed) { this.hasgrazed = hasgrazed; } }