package org.tjuscs.bulletgame.model; import org.tjuscs.bulletgame.model.item.ItemChip; import org.tjuscs.bulletgame.model.item.ItemFaith; import org.tjuscs.bulletgame.model.item.ItemPoint; import org.tjuscs.bulletgame.model.item.ItemPower; import org.tjuscs.bulletgame.model.item.ItemPowerFull; import org.tjuscs.bulletgame.model.item.ItemPowerLarge; import org.tjuscs.bulletgame.util.GameUtil; import org.tjuscs.bulletgame.util.MathUtils; import org.tjuscs.bulletgame.util.RandomUtil; import org.tjuscs.bulletgame.view.component.Renderer; /*********************************************************************** * Module: Item.java Author: Administrator Purpose: Defines the Class Item ***********************************************************************/ public class Item extends BaseObject { private String imgup; private int attract; private static double scBonusMax = 2000000; private static double scBonusBase = 1000000; public Item() { } public Item(double x, double y, int t) { this.init(x, y, t); } /** * @param x * @param y * @param t */ public void init(double x, double y, int t) { super.init(); this.setX(x); this.setY(y); this.setA(8); this.setB(8); this.setRect(false); double angle = 90.0; double v = 1.5; GameUtil.SetV(this, v, angle, false); this.setGroup(GameUtil.GROUP_ITEM); this.setLayer(GameUtil.LAYER_ITEM); this.setBound(false); this.setImg("item" + t); this.setImgup("item_up" + t); this.setAttract(0); } public void render() { double worldheight = GameModel.getInstance().getWorldHeight(); if (this.getY() > worldheight) Renderer.getInstance().Render(this.getImgup(), this.getX(), worldheight - 8); else Renderer.getInstance().Render(this.getImg(), this.getX(), this.getY()); } public void frame() { if (this.getTimer() < 24) { this.setRot(this.getRot() + 45); this.setHscale((this.getTimer() + 25) / 48); this.setVscale(this.getHscale()); if (this.getTimer() == 22) { this.setVy(RandomUtil.Float(1.5, 2.0)); this.setVx(0.0); } } else if (this.getAttract() > 0) { PlayerClass player = GameModel.getInstance().getPlayer(); double a = GameUtil.Angle(this, player); this.setVx(this.getAttract() * MathUtils.cosDeg(a) + player.getDx() * 0.5); this.setVy(this.getAttract() * MathUtils.sinDeg(a) + player.getDy() * 0.5); } else { this.setVy(Math.max(this.getVy() - 0.03, -1.7)); } if (this.getY() < 0) GameUtil.Del(this); } /** * @param other */ public void colli(BaseObject other) { if (other == GameModel.getInstance().getPlayer()) { this.collect(); GameUtil.Kill(this); } } public void collect() { } public static double getScBonusMax() { return scBonusMax; } public static void setScBonusMax(double scBonusMax) { Item.scBonusMax = scBonusMax; } public static double getScBonusBase() { return scBonusBase; } public static void setScBonusBase(double scBonusBase) { Item.scBonusBase = scBonusBase; } /** * @param x * @param y * @param drop */ public static void dropItem(double x, double y, int[] drop) { int n = drop[0] + drop[1] + drop[2]; if (n < 1) return; double r = Math.sqrt((double) (n - 1)) * 5; if (GameModel.getInstance().getPower() >= 500) { drop[1] += drop[0]; drop[0] = 0; } for (int i = 0; i < drop[0]; i++) { double r2 = Math.sqrt(RandomUtil.Float(1.0, 4.0)) * r; double a = RandomUtil.Float(0, 360); GameModel .getInstance() .getObjList() .add(new ItemPower(x + r2 * MathUtils.cosDeg(a), y + r2 * MathUtils.sinDeg(a))); } for (int i = 0; i < drop[1]; i++) { double r2 = Math.sqrt(RandomUtil.Float(1.0, 4.0)) * r; double a = RandomUtil.Float(0, 360); GameModel .getInstance() .getObjList() .add(new ItemFaith(x + r2 * MathUtils.cosDeg(a), y + r2 * MathUtils.sinDeg(a))); } for (int i = 0; i < drop[2]; i++) { double r2 = Math.sqrt(RandomUtil.Float(1.0, 4.0)) * r; double a = RandomUtil.Float(0, 360); GameModel .getInstance() .getObjList() .add(new ItemPoint(x + r2 * MathUtils.cosDeg(a), y + r2 * MathUtils.sinDeg(a))); } } public static void startChipBonus() { GameModel.getInstance().setChipBonus(true); } /** * @param x * @param y */ public static void endChipBonus(double x, double y) { if (GameModel.getInstance().isChipBonus()) { GameModel.getInstance().getObjList().add(new ItemChip(x, y)); GameModel.getInstance().setChipBonus(false); } } public static void playerInit() { GameModel.getInstance().setPower(0); GameModel.getInstance().setLife(2); GameModel.getInstance().setChip(0); GameModel.getInstance().setFaith(50000); GameModel.getInstance().setGraze(0); GameModel.getInstance().setScore(0); GameModel.getInstance().setBlockSpell(false); GameModel.getInstance().setChipBonus(false); } public static void playerMiss() { GameModel.getInstance().setChipBonus(false); PlayerClass player = GameModel.getInstance().getPlayer(); player.setProtect(360); GameModel.getInstance().setLife(GameModel.getInstance().getLife() - 1); GameModel.getInstance().setPower( Math.max(0, GameModel.getInstance().getPower() - 320)); if (GameModel.getInstance().getLife() > 0) { for (int i = 1; i <= 7; i++) { double a = 90 + (i - 4) * 18; if (i % 2 == 1) { Item itemp = new ItemPower(player.getX(), player.getY() + 10); GameUtil.SetV(itemp, 3, a, false); GameModel.getInstance().getObjList().add(itemp); } else { Item itemp = new ItemPowerLarge(player.getX(), player.getY() + 10); GameUtil.SetV(itemp, 3, a, false); GameModel.getInstance().getObjList().add(itemp); } } } else { Item itemp = new ItemPowerFull(player.getX(), player.getY() + 10); GameModel.getInstance().getObjList().add(itemp); } } public static void playerGraze() { GameModel.getInstance() .setGraze(GameModel.getInstance().getGraze() + 1); GameModel.getInstance().setScore( GameModel.getInstance().getScore() + 50); } /** * @param var */ public static int pointRateFunc() { int faith = GameModel.getInstance().getFaith(); int graze = GameModel.getInstance().getGraze(); int res = faith + faith * graze / 10000; return res - res % 20; } public String getImgup() { return imgup; } public void setImgup(String imgup) { this.imgup = imgup; } public int getAttract() { return attract; } public void setAttract(int attract) { this.attract = attract; } }