Fix sidebars, implement vault api, coin pickups, and player respawning
This commit is contained in:
@@ -2,6 +2,9 @@ package gg.malloc.defense.ui;
|
||||
|
||||
import gg.malloc.defense.model.Game;
|
||||
import gg.malloc.defense.model.State;
|
||||
import gg.malloc.defense.model.Progress;
|
||||
|
||||
import java.util.HashMap;
|
||||
|
||||
import org.bukkit.boss.BossBar;
|
||||
import org.bukkit.boss.BarStyle;
|
||||
@@ -13,6 +16,7 @@ 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);
|
||||
HashMap<Player, BossBar> m_respawnBars = new HashMap<>();
|
||||
|
||||
State m_gameState;
|
||||
|
||||
@@ -33,12 +37,20 @@ public class BossBars {
|
||||
m_gameBar.addPlayer(p);
|
||||
m_waveBar.addPlayer(p);
|
||||
m_bombBar.addPlayer(p);
|
||||
BossBar respawnBar = Bukkit.createBossBar("Respawn", BarColor.BLUE, BarStyle.SOLID);
|
||||
respawnBar.addPlayer(p);
|
||||
respawnBar.setVisible(false);
|
||||
m_respawnBars.put(p, respawnBar);
|
||||
}
|
||||
|
||||
public void removePlayer(Player p) {
|
||||
m_gameBar.removePlayer(p);
|
||||
m_waveBar.removePlayer(p);
|
||||
m_bombBar.removePlayer(p);
|
||||
if (m_respawnBars.containsKey(p)) {
|
||||
m_respawnBars.get(p).removePlayer(p);
|
||||
m_respawnBars.remove(p);
|
||||
}
|
||||
}
|
||||
|
||||
public void update() {
|
||||
@@ -100,5 +112,15 @@ public class BossBars {
|
||||
m_bombBar.setVisible(false);
|
||||
break;
|
||||
}
|
||||
for (Player p : m_respawnBars.keySet()) {
|
||||
Progress respawnProgress = m_gameState.playerRespawnProgress(p);
|
||||
if (respawnProgress.value() > 0) {
|
||||
m_respawnBars.get(p).setVisible(true);
|
||||
m_respawnBars.get(p).setProgress(respawnProgress.toDouble());
|
||||
m_respawnBars.get(p).setTitle("Respawning in " + respawnProgress.value());
|
||||
} else {
|
||||
m_respawnBars.get(p).setVisible(false);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,7 @@ import org.bukkit.scoreboard.DisplaySlot;
|
||||
import org.bukkit.scoreboard.Score;
|
||||
import org.bukkit.scoreboard.Team;
|
||||
import org.bukkit.scoreboard.Objective;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
public class Sidebar {
|
||||
Scoreboard m_scoreboard;
|
||||
@@ -19,12 +20,14 @@ public class Sidebar {
|
||||
ArrayList<String> m_rowKeys;
|
||||
HashMap<Integer, String> m_rows;
|
||||
ArrayList<Team> m_teams;
|
||||
Player m_player;
|
||||
int m_size;
|
||||
|
||||
State m_state;
|
||||
|
||||
public Sidebar(State state, Scoreboard scoreboard) {
|
||||
public Sidebar(State state, Scoreboard scoreboard, Player player) {
|
||||
m_state = state;
|
||||
m_player = player;
|
||||
m_scoreboard = scoreboard;
|
||||
m_objective = m_scoreboard.registerNewObjective("text", "dummy", ChatColor.LIGHT_PURPLE + "" + ChatColor.BOLD + "Malloc Defense");
|
||||
m_objective.setDisplaySlot(DisplaySlot.SIDEBAR);
|
||||
@@ -34,6 +37,7 @@ public class Sidebar {
|
||||
m_rowKeys.add(ChatColor.BLACK + "" + ChatColor.WHITE);
|
||||
m_rowKeys.add(ChatColor.GOLD+ "" + ChatColor.WHITE);
|
||||
m_rowKeys.add(ChatColor.WHITE+ "" + ChatColor.WHITE);
|
||||
m_rowKeys.add(ChatColor.BLACK+ "" + ChatColor.BLACK);
|
||||
for(String key : m_rowKeys) {
|
||||
Team team = m_scoreboard.registerNewTeam(key);
|
||||
team.addEntry(key);
|
||||
@@ -50,20 +54,23 @@ public class Sidebar {
|
||||
case Warmup:
|
||||
m_rows.put(0, ChatColor.LIGHT_PURPLE + "Wave " + m_state.waveProgress().value() + " / " + m_state.waveProgress().maximum());
|
||||
m_rows.put(1, ChatColor.AQUA + "Get ready!");
|
||||
m_rows.put(2, ChatColor.AQUA + "Balance: ");
|
||||
m_size = 3;
|
||||
m_rows.put(2, ChatColor.AQUA + "Balance: " + m_state.getPlayerBalance(m_player));
|
||||
m_rows.put(3, ChatColor.AQUA + "Coins remaining: " + m_state.coinProgress().remaining());
|
||||
m_size = 4;
|
||||
break;
|
||||
case Countdown:
|
||||
m_rows.put(0, ChatColor.LIGHT_PURPLE + "Wave " + m_state.waveProgress().value() + " / " + m_state.waveProgress().maximum());
|
||||
m_rows.put(1, ChatColor.GOLD + "Wave incoming!");
|
||||
m_rows.put(2, ChatColor.AQUA + "Balance: ");
|
||||
m_size = 3;
|
||||
m_rows.put(2, ChatColor.AQUA + "Balance: " + m_state.getPlayerBalance(m_player));
|
||||
m_rows.put(3, ChatColor.AQUA + "Coins remaining: " + m_state.coinProgress().remaining());
|
||||
m_size = 4;
|
||||
break;
|
||||
case Playing:
|
||||
m_rows.put(0, ChatColor.LIGHT_PURPLE + "Wave " + m_state.waveProgress().value() + " / " + m_state.waveProgress().maximum());
|
||||
m_rows.put(1, ChatColor.GREEN + "Mobs remaining: " + (m_state.mobProgress().maximum() - m_state.mobProgress().value()));
|
||||
m_rows.put(2, ChatColor.AQUA + "Balance: ");
|
||||
m_size = 3;
|
||||
m_rows.put(1, ChatColor.GREEN + "Mobs remaining: " + m_state.mobProgress().remaining());
|
||||
m_rows.put(2, ChatColor.AQUA + "Balance: " + m_state.getPlayerBalance(m_player));
|
||||
m_rows.put(3, ChatColor.AQUA + "Coins remaining: " + m_state.coinProgress().remaining());
|
||||
m_size = 4;
|
||||
break;
|
||||
case GameOver:
|
||||
m_rows.put(0, ChatColor.RED + "Game over!");
|
||||
|
||||
@@ -18,7 +18,7 @@ public class Sidebars {
|
||||
}
|
||||
|
||||
public void addPlayer(Player player) {
|
||||
m_sidebars.put(player, new Sidebar(m_state, m_scoreboards.getNewScoreboard()));
|
||||
m_sidebars.put(player, new Sidebar(m_state, m_scoreboards.getNewScoreboard(), player));
|
||||
player.setScoreboard(m_sidebars.get(player).getScoreboard());
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user