Skip to content

Commit

Permalink
Changes for Watching
Browse files Browse the repository at this point in the history
  • Loading branch information
alkarinv committed Apr 8, 2014
1 parent 7c45b53 commit 82956e7
Show file tree
Hide file tree
Showing 46 changed files with 650 additions and 508 deletions.
14 changes: 14 additions & 0 deletions src/java/mc/alk/arena/BattleArena.java
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
import mc.alk.arena.controllers.Scheduler;
import mc.alk.arena.controllers.TeamController;
import mc.alk.arena.controllers.TeleportController;
import mc.alk.arena.controllers.WatchController;
import mc.alk.arena.executors.ArenaEditorExecutor;
import mc.alk.arena.executors.BAExecutor;
import mc.alk.arena.executors.BASchedulerExecutor;
Expand Down Expand Up @@ -93,6 +94,7 @@ public class BattleArena extends JavaPlugin {
private final BAPluginListener pluginListener = new BAPluginListener();
private final SignUpdateListener signUpdateListener = new SignUpdateListener();
private final BASignListener signListener = new BASignListener(signUpdateListener);
private final WatchController watchController = new WatchController();

private ArenaControllerSerializer arenaControllerSerializer;
private static final BAConfigSerializer baConfigSerializer = new BAConfigSerializer();
Expand Down Expand Up @@ -302,10 +304,22 @@ public static void update(final Plugin plugin, final int bukkitId, final File fi
new APIRegistrationController().update(plugin, bukkitId, file, updateOption, announceOption);
}

/**
* Return the BattlePluginsAPI used by BattleArena
* @return BattlePluginsAPI
*/
public BattlePluginsAPI getBattlePluginsAPI() {
return bpapi;
}

/**
* Return the watch controller
* @return WatchController
*/
public WatchController getWatchController() {
return watchController;
}

/**
NONE get no releases,
RELEASE get only release updates, ignore beta/alpha,
Expand Down
2 changes: 1 addition & 1 deletion src/java/mc/alk/arena/Defaults.java
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ public class Defaults {
/// DEBUG OPTIONS
public static final boolean DEBUG = false;
public static final boolean DEBUGQ = false;
public static final boolean DEBUG_TRACE = true;
public static final boolean DEBUG_TRACE = false;
public static final boolean DEBUG_EVENTS = false;
public static final boolean DEBUG_TEVENTS = false;
public static final boolean DEBUG_DAMAGE = false;
Expand Down
4 changes: 2 additions & 2 deletions src/java/mc/alk/arena/competition/TransitionController.java
Original file line number Diff line number Diff line change
Expand Up @@ -120,9 +120,9 @@ private static boolean transition(final PlayerHolder am, final CompetitionState
if (mo == null){ /// no options
return true;}
if (Defaults.DEBUG_TRANSITIONS) Log.info("-- transition "+am.getClass().getSimpleName()+" " + transition + " p= " +player.getName() +
" ops="+am.getParams().getThisTransitionOptions().getOptions(transition)+" onlyInMatch="+onlyInMatch+
" ops="+am.getParams().getThisStateGraph().getOptions(transition)+" onlyInMatch="+onlyInMatch+
" inArena="+am.isHandled(player) + " dead="+player.isDead()+":"+player.getHealth()+" online="+player.isOnline()+" clearInv=" +
am.getParams().getThisTransitionOptions().hasOptionAt(transition, TransitionOption.CLEARINVENTORY));
am.getParams().getThisStateGraph().hasOptionAt(transition, TransitionOption.CLEARINVENTORY));
final boolean insideArena = am.isHandled(player);
final boolean teleportIn = mo.shouldTeleportIn();
final boolean teleportRoom = mo.shouldTeleportWaitRoom() || mo.shouldTeleportLobby() || mo.shouldTeleportSpectate();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@
import mc.alk.arena.controllers.BattleArenaController;
import mc.alk.arena.controllers.ParamController;
import mc.alk.arena.controllers.Scheduler;
import mc.alk.arena.controllers.StatController;
import mc.alk.arena.controllers.plugins.TrackerController;
import mc.alk.arena.controllers.joining.TeamJoinFactory;
import mc.alk.arena.events.events.tournaments.TournamentRoundEvent;
import mc.alk.arena.events.matches.MatchCancelledEvent;
Expand Down Expand Up @@ -122,7 +122,7 @@ public void startEvent() {
" is starting!"));

TreeMap<Double,ArenaTeam> sortTeams = new TreeMap<Double,ArenaTeam>(Collections.reverseOrder());
StatController sc = new StatController(eventParams);
TrackerController sc = new TrackerController(eventParams);

for (ArenaTeam t: teams) {
if (t.size() <= 0) {
Expand Down Expand Up @@ -402,7 +402,7 @@ private void announceRound() {
t.sendMessage("&4["+strround+"]&e You have a &5bye&e this round");
}
}
StatController sc = new StatController(eventParams);
TrackerController sc = new TrackerController(eventParams);
final String prefix = eventParams.getPrefix();
if (tr.getMatchups().size() <= 8){
for (Matchup m: tr.getMatchups()){
Expand Down
55 changes: 41 additions & 14 deletions src/java/mc/alk/arena/competition/match/ArenaMatch.java
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@
import mc.alk.arena.objects.spawns.SpawnLocation;
import mc.alk.arena.objects.teams.ArenaTeam;
import mc.alk.arena.util.CommandUtil;
import mc.alk.arena.util.Countdown;
import mc.alk.arena.util.Countdown.CountdownCallback;
import mc.alk.arena.util.DmgDeathUtil;
import mc.alk.arena.util.Log;
import mc.alk.arena.util.MessageUtil;
Expand Down Expand Up @@ -241,6 +243,7 @@ public void onPlayerRespawn(PlayerRespawnEvent event) {
}
final SpawnLocation loc;
final ArenaTeam t = getTeam(p);
/// We respawn them to a different location
if (mo.hasAnyOption(TransitionOption.TELEPORTLOBBY, TransitionOption.TELEPORTMAINLOBBY,
TransitionOption.TELEPORTWAITROOM, TransitionOption.TELEPORTMAINWAITROOM)) {
final int index = t.getIndex();
Expand All @@ -254,22 +257,46 @@ public void onPlayerRespawn(PlayerRespawnEvent event) {
loc = this.getWaitRoomSpawn(index, randomRespawn);
}
/// Should we respawn the player to the team spawn after a certain amount of time
if (mo.hasOption(TransitionOption.RESPAWNTIME)) {
int id = Scheduler.scheduleSynchronousTask(new Runnable() {
Integer respawnTime = mo.getInt(TransitionOption.RESPAWNTIME);
if (respawnTime==null)
respawnTime = 15;
final Integer finalRespawnTime = respawnTime;
if (scoreboard != null) {
new Countdown(BattleArena.getSelf(), finalRespawnTime, 1, new CountdownCallback() {
@Override
public void run() {
Integer id = respawnTimer.remove(p.getID());
Bukkit.getScheduler().cancelTask(id);
SpawnLocation loc = getTeamSpawn(index, tops.hasOptionAt(MatchState.ONSPAWN, TransitionOption.RANDOMRESPAWN));
TeleportController.teleport(p.getPlayer(), loc.getLocation());
if (scoreboard != null && !scoreboard.hasThisScoreboard(p.getPlayer())) {
public boolean intervalTick(int secondsRemaining) {
if (!scoreboard.hasThisScoreboard(p.getPlayer())) {
scoreboard.setScoreboard(p.getPlayer());
}

SEntry e = scoreboard.getEntry(p.getPlayer());
if (e != null) {
/// Either set the seconds remaining, or back to the current lives
if (secondsRemaining > 0) {
scoreboard.setEntryNameSuffix(e, "&e(" + secondsRemaining + ")");
} else {
Integer curLives = nLivesPerPlayer - t.getNDeaths(p);
String s = (nLivesPerPlayer != ArenaSize.MAX && curLives != 1) ?
"&4(" + curLives + ")" : "";
scoreboard.setEntryNameSuffix(e, s);
}
}
return true;
}
}, mo.getRespawnTime() * 20);
respawnTimer.put(p.getID(), id);
});
}

int id = Scheduler.scheduleSynchronousTask(new Runnable() {
@Override
public void run() {
Integer id = respawnTimer.remove(p.getID());
Bukkit.getScheduler().cancelTask(id);
SpawnLocation loc = getTeamSpawn(index, tops.hasOptionAt(MatchState.ONSPAWN, TransitionOption.RANDOMRESPAWN));
TeleportController.teleport(p.getPlayer(), loc.getLocation());

}
}, respawnTime * 20);
respawnTimer.put(p.getID(), id);

} else {
loc = getTeamSpawn(getTeam(p), randomRespawn);
}
Expand Down Expand Up @@ -345,9 +372,9 @@ public void onPlayerInteract(PlayerInteractEvent event){
private void playerInteract(PlayerInteractEvent event){
if (event.getClickedBlock() == null ||
!(event.getClickedBlock().getType().equals(Material.SIGN) ||
event.getClickedBlock().getType().equals(Material.WALL_SIGN) ||
event.getClickedBlock().getType().equals(Defaults.READY_BLOCK)
)) {
event.getClickedBlock().getType().equals(Material.WALL_SIGN) ||
event.getClickedBlock().getType().equals(Defaults.READY_BLOCK)
)) {
return;
}

Expand Down
14 changes: 7 additions & 7 deletions src/java/mc/alk/arena/competition/match/Match.java
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
import mc.alk.arena.controllers.PlayerStoreController;
import mc.alk.arena.controllers.RewardController;
import mc.alk.arena.controllers.Scheduler;
import mc.alk.arena.controllers.StatController;
import mc.alk.arena.controllers.plugins.TrackerController;
import mc.alk.arena.controllers.containers.GameManager;
import mc.alk.arena.controllers.joining.AbstractJoinHandler;
import mc.alk.arena.controllers.messaging.MatchMessager;
Expand Down Expand Up @@ -552,7 +552,7 @@ public void run() {
" losers=" + losers + " drawers=" + drawers + " " + matchResult + " secondsToLoot=" +
params.getSecondsToLoot());
if (params.isRated()){
StatController sc = new StatController(params);
TrackerController sc = new TrackerController(params);
sc.addRecord(victors,losers,drawers,result.getResult(), params.isTeamRating());
}

Expand Down Expand Up @@ -585,7 +585,7 @@ public void run() {
params.getSecondsToLoot());

if (params.isRated()){
StatController sc = new StatController(params);
TrackerController sc = new TrackerController(params);
sc.addRecord(victors,losers,drawers,am.getResult().getResult(), params.isTeamRating());
}
if (matchResult.hasVictor()){ /// We have a true winner
Expand Down Expand Up @@ -1024,8 +1024,8 @@ private void postFirstJoin(ArenaPlayer player){
scoreboard.setEntryNameSuffix(e, "(" + nLivesPerPlayer + ")");
}
if (!params.getUseTrackerPvP()){
StatController.stopTracking(player);
StatController.stopTrackingMessages(player);
TrackerController.stopTracking(player);
TrackerController.stopTrackingMessages(player);
}
if (woolTeams && team !=null && team.getIndex()!=-1){
TeamUtil.setTeamHead(team.getIndex(), player); // give wool heads
Expand Down Expand Up @@ -1099,8 +1099,8 @@ public void onPostQuit(ArenaPlayer player, ArenaPlayerTeleportEvent apte) {
player.removeCompetition(this);
player.reset(); /// reset the players
if (!params.getUseTrackerPvP()){
StatController.resumeTracking(player);
StatController.resumeTrackingMessages(player);
TrackerController.resumeTracking(player);
TrackerController.resumeTrackingMessages(player);
}
if (t != null){
if (this.woolTeams)
Expand Down
45 changes: 17 additions & 28 deletions src/java/mc/alk/arena/controllers/ArenaAlterController.java
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
import mc.alk.arena.controllers.plugins.WorldGuardController;
import mc.alk.arena.objects.ArenaPlayer;
import mc.alk.arena.objects.CompetitionState;
import mc.alk.arena.objects.LocationType;
import mc.alk.arena.objects.MatchParams;
import mc.alk.arena.objects.arenas.Arena;
import mc.alk.arena.objects.arenas.ArenaType;
Expand Down Expand Up @@ -267,11 +268,11 @@ private static boolean addWorldGuardRegion(Player sender, Arena arena) {
arena.setWorldGuardRegion(region);
WorldGuardController.saveSchematic(sender, id);
MatchParams mp = ParamController.getMatchParams(arena.getArenaType().getName());
if (mp != null && mp.getThisTransitionOptions().hasAnyOption(TransitionOption.WGNOENTER)){
if (mp != null && mp.getThisStateGraph().hasAnyOption(TransitionOption.WGNOENTER)){
WorldGuardController.trackRegion(w.getName(), id);
WorldGuardController.setFlag(region, "entry", false);
}
if (mp != null && mp.getThisTransitionOptions().hasAnyOption(TransitionOption.WGNOLEAVE)){
if (mp != null && mp.getThisStateGraph().hasAnyOption(TransitionOption.WGNOLEAVE)){
WorldGuardController.trackRegion(w.getName(), id);
WorldGuardController.setFlag(region, "exit", false);
}
Expand All @@ -297,22 +298,6 @@ private static boolean changeSpawn(Player sender, Arena arena, BattleArenaContro
"&2 set to location=&6" + Util.getLocString(loc)));
}

private static boolean changeWaitroomSpawn(Player sender, Arena arena,
BattleArenaController ac,SpawnIndex index) {
Location loc = sender.getLocation();
MatchParams mp = ParamController.getMatchParams(arena.getArenaType());
if (mp == null){
throw new IllegalStateException("MatchParams for " + arena.getArenaType() +" could not be found");}
if (arena.getWaitroom() == null){
RoomContainer room = RoomController.getOrCreateWaitroom(arena);
arena.setWaitRoom(room);
}
arena.setWaitRoomSpawnLoc(index.teamIndex,index.spawnIndex, new FixedLocation(loc));
ac.updateArena(arena);
return sendMessage(sender,"&2waitroom for the "+(getSpawnName(index.teamIndex)+" &2team. Spawn #&6"+(index.spawnIndex+1)+
"&2 set to location=&6" + Util.getLocString(loc)));
}

private static String getSpawnName(int index){
return index == Integer.MAX_VALUE ? "main" : TeamUtil.getTeamName(index);
}
Expand All @@ -321,24 +306,27 @@ private static boolean changeLobbySpawn(Player sender, MatchParams params, Spawn
Location loc = sender.getLocation();
RoomController.addLobby(params.getType(), index.teamIndex, index.spawnIndex, new FixedLocation(loc));
PlayerContainerSerializer pcs = new PlayerContainerSerializer();
pcs.setConfig(BattleArena.getSelf().getDataFolder().getPath()+"/saves/containers.yml");
pcs.setConfig(BattleArena.getSelf().getDataFolder().getPath()+"/watchers/containers.yml");
pcs.save();
return sendMessage(sender,"&2Lobby for the "+(getSpawnName(index.teamIndex)+" &2team. Spawn #&6"+(index.spawnIndex+1)+
"&2 set to location=&6" + Util.getLocString(loc)));
}

private static boolean changeWaitroomSpawn(Player sender, Arena arena,
BattleArenaController ac,SpawnIndex index) {
Location loc = sender.getLocation();
RoomContainer rc = RoomController.getOrCreateRoom(arena, LocationType.WAITROOM);
rc.setSpawnLoc(index.teamIndex,index.spawnIndex, new FixedLocation(loc));
ac.updateArena(arena);
return sendMessage(sender,"&2waitroom for the "+(getSpawnName(index.teamIndex)+" &2team. Spawn #&6"+(index.spawnIndex+1)+
"&2 set to location=&6" + Util.getLocString(loc)));
}

private static boolean changeSpectateSpawn(Player sender, Arena arena,
BattleArenaController ac, SpawnIndex index) {
Location loc = sender.getLocation();
MatchParams mp = ParamController.getMatchParams(arena.getArenaType());
if (mp == null){
throw new IllegalStateException("MatchParams for " + arena.getArenaType() +" could not be found");}
if (arena.getSpectatorRoom() == null){
RoomContainer room = RoomController.getOrCreateSpectate(arena);
arena.setSpectate(room);
}
arena.getSpectatorRoom().setSpawnLoc(index.teamIndex,index.spawnIndex, new FixedLocation(loc));
RoomContainer rc = RoomController.getOrCreateRoom(arena, LocationType.SPECTATE);
rc.setSpawnLoc(index.teamIndex,index.spawnIndex, new FixedLocation(loc));
ac.updateArena(arena);
return sendMessage(sender,"&2spectator room #&6"+(index.teamIndex+1)+"&2. Spawn #&6"+(index.spawnIndex+1)+
"&2 set to location=&6" + Util.getLocString(loc));
Expand All @@ -347,7 +335,8 @@ private static boolean changeSpectateSpawn(Player sender, Arena arena,
private static boolean changeVisitorSpawn(Player sender, Arena arena,
BattleArenaController ac, SpawnIndex index) {
Location loc = sender.getLocation();
arena.setSpawnLoc(index.teamIndex,index.spawnIndex, new FixedLocation(loc));
RoomContainer rc = RoomController.getOrCreateRoom(arena, LocationType.VISITOR);
rc.setSpawnLoc(index.teamIndex,index.spawnIndex, new FixedLocation(loc));
ac.updateArena(arena);
return sendMessage(sender,"&2Visitor room #&6"+(index.teamIndex+1)+"&2. Spawn #&6"+(index.spawnIndex+1)+
"&2 set to location=&6" + Util.getLocString(loc));
Expand Down
12 changes: 6 additions & 6 deletions src/java/mc/alk/arena/controllers/ParamAlterController.java
Original file line number Diff line number Diff line change
Expand Up @@ -156,7 +156,7 @@ public static boolean setOption(CommandSender sender, MatchParams params, Compet

if (to.hasValue() && value == null)
throw new InvalidOptionException("Transition Option " + to +" needs a value! " + to+"=<value>");
StateGraph tops = params.getThisTransitionOptions();
StateGraph tops = params.getThisStateGraph();
if (tops == null) {
tops = new StateGraph();
}
Expand Down Expand Up @@ -219,7 +219,7 @@ public static boolean setOption(CommandSender sender, MatchParams params, Compet
}

tops.addStateOption(state, to, value);
params.setTransitionOptions(tops);
params.setStateGraph(tops);
return true;
}

Expand All @@ -237,7 +237,7 @@ public boolean deleteOption(CommandSender sender, String[] args) {
if (go != null){
try {
deleteGameOption(go);
params.getThisTransitionOptions();
params.getThisStateGraph();
saveParamsAndUpdate(rc, params);
ParamController.addMatchParams(params);
sendMessage(sender, "&2Game option &6"+go.toString()+"&2 removed");
Expand All @@ -259,7 +259,7 @@ public boolean deleteOption(CommandSender sender, String[] args) {
CompetitionState state = StateController.fromString(args[1]);
if (state != null){
if (args.length < 3){
StateGraph tops = params.getThisTransitionOptions();
StateGraph tops = params.getThisStateGraph();
tops.deleteOptions(state);
return sendMessage(sender, "&2Options at &6"+state +"&2 are now empty");
} else {
Expand All @@ -268,7 +268,7 @@ public boolean deleteOption(CommandSender sender, String[] args) {
deleteTransitionOption(state, key);
rc.saveParams(params);
sendMessage(sender, "&2Game option &6"+state +" "+key+" &2 removed");
StateGraph tops = params.getThisTransitionOptions();
StateGraph tops = params.getThisStateGraph();
StateOptions ops = tops.getOptions(state);
if (ops == null){
sendMessage(sender, "&2Options at &6"+state +"&2 are empty");
Expand All @@ -290,7 +290,7 @@ public boolean deleteOption(CommandSender sender, String[] args) {

private boolean deleteTransitionOption(CompetitionState state, String key) throws Exception{
TransitionOption to = TransitionOption.fromString(key);
StateGraph tops = params.getThisTransitionOptions();
StateGraph tops = params.getThisStateGraph();
return tops.removeStateOption(state, to);
}

Expand Down
Loading

0 comments on commit 82956e7

Please sign in to comment.