Reimplement wave AI, split out some UI code into a ui module, update TODO
This commit is contained in:
37
src/main/java/gg/malloc/defense/ui/BombCarrier.java
Normal file
37
src/main/java/gg/malloc/defense/ui/BombCarrier.java
Normal file
@@ -0,0 +1,37 @@
|
||||
package gg.malloc.defense.ui;
|
||||
|
||||
import org.bukkit.entity.LivingEntity;
|
||||
import org.bukkit.inventory.EntityEquipment;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.Material;
|
||||
|
||||
public class BombCarrier {
|
||||
LivingEntity m_entity;
|
||||
|
||||
public BombCarrier(LivingEntity entity) {
|
||||
m_entity = entity;
|
||||
}
|
||||
|
||||
public LivingEntity inHand() {
|
||||
EntityEquipment equipment = m_entity.getEquipment();
|
||||
equipment.setItemInOffHand(makeBombHelmet());
|
||||
//equipment.setItemInOffHandDropChance(0.0f);
|
||||
return m_entity;
|
||||
}
|
||||
|
||||
public LivingEntity onHead() {
|
||||
EntityEquipment equipment = m_entity.getEquipment();
|
||||
equipment.setHelmet(makeBombHelmet());
|
||||
//equipment.setHelmetDropChance(0.0f);
|
||||
return m_entity;
|
||||
}
|
||||
|
||||
static ItemStack makeBombHelmet() {
|
||||
ItemStack bombItem = new ItemStack(Material.CARVED_PUMPKIN);
|
||||
ItemMeta meta = bombItem.getItemMeta();
|
||||
meta.setCustomModelData(33197);
|
||||
bombItem.setItemMeta(meta);
|
||||
return bombItem;
|
||||
}
|
||||
}
|
116
src/main/java/gg/malloc/defense/ui/BossBars.java
Normal file
116
src/main/java/gg/malloc/defense/ui/BossBars.java
Normal file
@@ -0,0 +1,116 @@
|
||||
package gg.malloc.defense.ui;
|
||||
|
||||
import gg.malloc.defense.engine.GameRunner;
|
||||
import gg.malloc.defense.engine.WaveManager;
|
||||
import gg.malloc.defense.engine.PlayerManager;
|
||||
import gg.malloc.defense.engine.MobManager;
|
||||
import gg.malloc.defense.engine.BombFuse;
|
||||
|
||||
import gg.malloc.defense.model.Game;
|
||||
|
||||
import org.bukkit.boss.BossBar;
|
||||
import org.bukkit.boss.BarStyle;
|
||||
import org.bukkit.boss.BarColor;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class BossBars {
|
||||
BossBar m_gameBar = Bukkit.createBossBar("Malloc Defense", BarColor.PURPLE, BarStyle.SOLID);
|
||||
BossBar m_waveBar = Bukkit.createBossBar("Malloc Defense", BarColor.PURPLE, BarStyle.SOLID);
|
||||
BossBar m_bombBar = Bukkit.createBossBar("Bomb Fuse", BarColor.RED, BarStyle.SOLID);
|
||||
|
||||
GameRunner m_runner;
|
||||
MobManager m_mobs;
|
||||
WaveManager m_waves;
|
||||
PlayerManager m_players;
|
||||
BombFuse m_fuse;
|
||||
Game m_game;
|
||||
|
||||
double m_countdownProgress;
|
||||
|
||||
public void setCountdownProgress(double v) {
|
||||
m_countdownProgress = v;
|
||||
}
|
||||
|
||||
public BossBars(GameRunner runner, Game game, WaveManager waves, PlayerManager players, BombFuse fuse, MobManager mobs) {
|
||||
m_runner = runner;
|
||||
m_game = game;
|
||||
m_waves = waves;
|
||||
m_players = players;
|
||||
m_fuse = fuse;
|
||||
m_mobs = mobs;
|
||||
m_gameBar.setVisible(true);
|
||||
m_waveBar.setVisible(false);
|
||||
m_bombBar.setVisible(false);
|
||||
}
|
||||
|
||||
public void addPlayer(Player p) {
|
||||
m_gameBar.addPlayer(p);
|
||||
m_waveBar.addPlayer(p);
|
||||
m_bombBar.addPlayer(p);
|
||||
}
|
||||
|
||||
public void removePlayer(Player p) {
|
||||
m_gameBar.removePlayer(p);
|
||||
m_waveBar.removePlayer(p);
|
||||
m_bombBar.removePlayer(p);
|
||||
}
|
||||
|
||||
public void update() {
|
||||
switch(m_runner.getStage()) {
|
||||
case Idle:
|
||||
m_gameBar.setProgress(1.0);
|
||||
m_gameBar.setTitle("Waiting for players...");
|
||||
m_gameBar.setColor(BarColor.PURPLE);
|
||||
m_waveBar.setVisible(false);
|
||||
m_bombBar.setVisible(false);
|
||||
break;
|
||||
case Warmup:
|
||||
m_gameBar.setProgress(m_waves.progress());
|
||||
m_gameBar.setTitle("Wave " + m_waves.currentWaveNum() + " / " + m_game.getWaveCount());
|
||||
m_gameBar.setColor(BarColor.PURPLE);
|
||||
m_waveBar.setVisible(true);
|
||||
m_waveBar.setColor(BarColor.BLUE);
|
||||
m_waveBar.setTitle("Warmup - Waiting for players to get ready...");
|
||||
m_waveBar.setProgress(m_players.readyProgress());
|
||||
m_bombBar.setVisible(false);
|
||||
break;
|
||||
case Countdown:
|
||||
m_gameBar.setProgress(m_waves.progress());
|
||||
m_gameBar.setTitle("Wave " + m_waves.currentWaveNum() + " / " + m_game.getWaveCount());
|
||||
m_gameBar.setColor(BarColor.PURPLE);
|
||||
m_waveBar.setVisible(true);
|
||||
m_waveBar.setColor(BarColor.YELLOW);
|
||||
m_waveBar.setTitle("Wave starting!");
|
||||
m_waveBar.setProgress(m_countdownProgress);
|
||||
m_bombBar.setVisible(false);
|
||||
break;
|
||||
case Playing:
|
||||
m_gameBar.setProgress(m_waves.progress());
|
||||
m_gameBar.setTitle("Wave " + m_waves.currentWaveNum() + " / " + m_game.getWaveCount());
|
||||
m_gameBar.setColor(BarColor.PURPLE);
|
||||
if (m_mobs.createdMobs() > 0) {
|
||||
m_waveBar.setVisible(true);
|
||||
m_waveBar.setColor(BarColor.GREEN);
|
||||
m_waveBar.setTitle("Mobs remaining: " + m_mobs.remainingMobs());
|
||||
m_waveBar.setProgress(m_mobs.progress());
|
||||
} else {
|
||||
m_waveBar.setVisible(false);
|
||||
}
|
||||
if (m_fuse.isLit()) {
|
||||
m_bombBar.setVisible(true);
|
||||
m_bombBar.setProgress(1.0 - m_fuse.getProgress());
|
||||
} else {
|
||||
m_bombBar.setVisible(false);
|
||||
}
|
||||
break;
|
||||
case GameOver:
|
||||
m_gameBar.setColor(BarColor.RED);
|
||||
m_gameBar.setProgress(1.0);
|
||||
m_gameBar.setTitle("Game Over!");
|
||||
m_waveBar.setVisible(false);
|
||||
m_bombBar.setVisible(false);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
15
src/main/java/gg/malloc/defense/ui/Items.java
Normal file
15
src/main/java/gg/malloc/defense/ui/Items.java
Normal file
@@ -0,0 +1,15 @@
|
||||
package gg.malloc.defense.engine;
|
||||
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.inventory.meta.ItemMeta;
|
||||
import org.bukkit.Material;
|
||||
|
||||
public class Items {
|
||||
static ItemStack makeBombHelmet() {
|
||||
ItemStack bombItem = new ItemStack(Material.CARVED_PUMPKIN);
|
||||
ItemMeta meta = bombItem.getItemMeta();
|
||||
meta.setCustomModelData(0);
|
||||
bombItem.setItemMeta(meta);
|
||||
return bombItem;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user