Add towers
This commit is contained in:
parent
927d98c977
commit
dc44220ea6
|
@ -0,0 +1,38 @@
|
|||
package fr.ynerant.leveleditor.game;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
|
||||
public class BasicTower extends Tower {
|
||||
public BasicTower(int x, int y) {
|
||||
super(x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDamagePerShot() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getPeriod() {
|
||||
return 5;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPrice() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
Collection<Mob> _filterDetectedMobs(Collection<Mob> mobs) {
|
||||
List<Mob> filtered = new ArrayList<>();
|
||||
|
||||
for (Mob mob : mobs) {
|
||||
if (mob.getX() == getX() || mob.getY() == getY())
|
||||
filtered.add(mob);
|
||||
}
|
||||
|
||||
return filtered;
|
||||
}
|
||||
}
|
|
@ -19,7 +19,10 @@ public class GameFrame extends JFrame implements WindowListener {
|
|||
private final RawMap map;
|
||||
|
||||
private int round = 0;
|
||||
private int hp = 20;
|
||||
private int reward = 20;
|
||||
private List<Mob> mobs = new ArrayList<>();
|
||||
private List<Tower> towers = new ArrayList<>();
|
||||
|
||||
public GameFrame(RawMap map) {
|
||||
super("Jeu");
|
||||
|
@ -72,10 +75,20 @@ public class GameFrame extends JFrame implements WindowListener {
|
|||
}
|
||||
}
|
||||
|
||||
for (Tower tower : towers) {
|
||||
for (Mob mob : tower.filterDetectedMobs(mobs))
|
||||
mob.hit();
|
||||
}
|
||||
|
||||
for (Mob mob : new ArrayList<>(mobs)) {
|
||||
mob.tick();
|
||||
if (mob.getX() < 0 || mob.isDead())
|
||||
if (mob.getX() < 0 || mob.isDead()) {
|
||||
mobs.remove(mob);
|
||||
if (mob.getX() < 0)
|
||||
--hp;
|
||||
else
|
||||
reward += mob.getReward();
|
||||
}
|
||||
else {
|
||||
Sprite s = mob.getSprite();
|
||||
g.drawImage(s.getImage(), SPRITE_SIZE * mob.getX(), SPRITE_SIZE * mob.getY(), SPRITE_SIZE, SPRITE_SIZE, null, null);
|
||||
|
|
|
@ -3,8 +3,6 @@ package fr.ynerant.leveleditor.game;
|
|||
import fr.ynerant.leveleditor.api.editor.sprites.Sprite;
|
||||
import fr.ynerant.leveleditor.api.editor.sprites.SpriteRegister;
|
||||
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
|
||||
public abstract class Mob {
|
||||
|
|
|
@ -0,0 +1,30 @@
|
|||
package fr.ynerant.leveleditor.game;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
|
||||
public class NullTower extends Tower {
|
||||
public NullTower(int x, int y) {
|
||||
super(x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDamagePerShot() {
|
||||
return Integer.MAX_VALUE;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getPeriod() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPrice() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
@Override
|
||||
Collection<Mob> _filterDetectedMobs(Collection<Mob> mobs) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
|
@ -0,0 +1,29 @@
|
|||
package fr.ynerant.leveleditor.game;
|
||||
|
||||
import java.util.Collection;
|
||||
|
||||
public class SuperTower extends Tower {
|
||||
public SuperTower(int x, int y) {
|
||||
super(x, y);
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getDamagePerShot() {
|
||||
return 20;
|
||||
}
|
||||
|
||||
@Override
|
||||
public long getPeriod() {
|
||||
return 10;
|
||||
}
|
||||
|
||||
@Override
|
||||
public int getPrice() {
|
||||
return 142;
|
||||
}
|
||||
|
||||
@Override
|
||||
Collection<Mob> _filterDetectedMobs(Collection<Mob> mobs) {
|
||||
return mobs;
|
||||
}
|
||||
}
|
|
@ -0,0 +1,45 @@
|
|||
package fr.ynerant.leveleditor.game;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.Random;
|
||||
|
||||
public abstract class Tower {
|
||||
private final int x;
|
||||
private final int y;
|
||||
private long remainingTicks;
|
||||
|
||||
public Tower(int x, int y) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
}
|
||||
|
||||
private static final Random RANDOM = new Random();
|
||||
|
||||
public abstract int getDamagePerShot();
|
||||
|
||||
public abstract long getPeriod();
|
||||
|
||||
public abstract int getPrice();
|
||||
|
||||
abstract Collection<Mob> _filterDetectedMobs(Collection<Mob> mobs);
|
||||
|
||||
public Collection<Mob> filterDetectedMobs(Collection<Mob> mobs) {
|
||||
if (remainingTicks > 0) {
|
||||
--remainingTicks;
|
||||
return new ArrayList<>();
|
||||
}
|
||||
else {
|
||||
remainingTicks = getPeriod();
|
||||
return filterDetectedMobs(mobs);
|
||||
}
|
||||
}
|
||||
|
||||
public int getX() {
|
||||
return x;
|
||||
}
|
||||
|
||||
public int getY() {
|
||||
return y;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue