Move spawn related methods to challenge classes

This commit is contained in:
Thanos Paravantis 2016-07-01 17:18:03 +03:00
parent 6fdbda0ed0
commit e2663d6448
3 changed files with 82 additions and 97 deletions

View File

@ -76,9 +76,8 @@ import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.TeamGame;
import nautilus.game.arcade.game.games.mineware.challenge.Challenge;
import nautilus.game.arcade.game.games.mineware.challenge.ChallengeData;
import nautilus.game.arcade.game.games.mineware.challenge.ChallengeSettings;
import nautilus.game.arcade.game.games.mineware.challenge.ChallengeList;
import nautilus.game.arcade.game.games.mineware.challenge.TeamChallenge;
import nautilus.game.arcade.game.games.mineware.challenge.ChallengeSettings;
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeAnvilDance;
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeArrowRampage;
import nautilus.game.arcade.game.games.mineware.challenge.type.ChallengeBlockLobbers;
@ -398,6 +397,10 @@ public class BawkBawkBattles extends TeamGame implements IThrown
}
}
/*
* Spawns
*/
private ArrayList<Location> setupChallengeSpawnLocations()
{
ArrayList<Location> selected = _challenge.createSpawns();
@ -434,10 +437,6 @@ public class BawkBawkBattles extends TeamGame implements IThrown
}
}
/*
* Spawns
*/
private void teleportSpectatorsToSpawn()
{
for (Player player : GetPlayers(false))
@ -451,15 +450,7 @@ public class BawkBawkBattles extends TeamGame implements IThrown
private void teleportPlayersToSpawns(boolean firstRun)
{
if (_challenge instanceof TeamChallenge)
{
teamTeleport(firstRun);
}
else
{
playerTeleport(firstRun);
}
_challenge.spawn(firstRun);
removeSolidBlockForPlayers();
}
@ -489,46 +480,6 @@ public class BawkBawkBattles extends TeamGame implements IThrown
}
}
private void teamTeleport(boolean firstRun)
{
TeamChallenge teamChallenge = (TeamChallenge) _challenge;
if (teamChallenge.shouldTeamSpawn())
{
teamChallenge.spawn(firstRun);
}
else
{
playerTeleport(firstRun);
}
}
private void playerTeleport(boolean firstRun)
{
if (firstRun)
{
ArrayList<Player> players = GetPlayers(false);
for (int i = 0; i < players.size(); i++)
{
Player player = players.get(i);
new BukkitRunnable()
{
@Override
public void run()
{
_playerTeam.SpawnTeleport(player);
}
}.runTaskLater(Manager.getPlugin(), i);
}
}
else
{
_playerTeam.SpawnTeleport(false);
}
}
/*
* Start
*/
@ -948,7 +899,7 @@ public class BawkBawkBattles extends TeamGame implements IThrown
{
for (Player player : UtilServer.getPlayers())
{
UtilTextTop.displayTextBar(player, _challenge.getTimeLeftPercent(), C.cYellow + C.Bold + _challenge.getName());
UtilTextTop.displayTextBar(player, _challenge.getTimeLeftPercent(), C.cYellowB + _challenge.getName());
player.setLevel(_challenge.getRemainingPlaces());
player.setExp(_challenge.getTimeLeftPercent());
}

View File

@ -121,6 +121,32 @@ public abstract class Challenge implements Listener
return true;
}
public void spawn(boolean firstRun)
{
if (firstRun)
{
ArrayList<Player> players = Host.GetPlayers(false);
for (int i = 0; i < players.size(); i++)
{
Player player = players.get(i);
new BukkitRunnable()
{
@Override
public void run()
{
Host.getPlayerTeam().SpawnTeleport(player);
}
}.runTaskLater(Host.Manager.getPlugin(), i);
}
}
else
{
Host.getPlayerTeam().SpawnTeleport(false);
}
}
public void start()
{
Settings.setStartTime(System.currentTimeMillis());

View File

@ -54,64 +54,72 @@ public abstract class TeamChallenge extends Challenge
* Called automatically only when _teamSpawn is true.
*/
@SuppressWarnings("deprecation")
@Override
public void spawn(boolean firstRun)
{
autoSelectTeams();
List<Player> firstTeam = _firstTeam.getPlayers();
List<Player> secondTeam = _secondTeam.getPlayers();
int firstTeamIndex = 0;
int secondTeamIndex = 0;
int players = Host.getPlayersWithRemainingLives();
int teleported = 0;
List<Location> randomSpawns = Data.getDefinedSpawns();
Collections.shuffle(randomSpawns);
while (teleported < players)
if (_teamSpawn)
{
System.out.println("Selecting spawns");
autoSelectTeams();
for (Location spawn : randomSpawns)
List<Player> firstTeam = _firstTeam.getPlayers();
List<Player> secondTeam = _secondTeam.getPlayers();
int firstTeamIndex = 0;
int secondTeamIndex = 0;
int players = Host.getPlayersWithRemainingLives();
int teleported = 0;
List<Location> randomSpawns = Data.getDefinedSpawns();
Collections.shuffle(randomSpawns);
while (teleported < players)
{
Block block = spawn.getBlock().getRelative(BlockFace.DOWN);
System.out.println("Selecting spawns");
if (block.getData() == _firstTeamSpawnBlockData && firstTeamIndex < firstTeam.size())
for (Location spawn : randomSpawns)
{
Player player = firstTeam.get(firstTeamIndex);
Block block = spawn.getBlock().getRelative(BlockFace.DOWN);
if (firstRun)
if (block.getData() == _firstTeamSpawnBlockData && firstTeamIndex < firstTeam.size())
{
teleportWithDelay(player, spawn, teleported);
}
else
{
player.teleport(spawn);
}
Player player = firstTeam.get(firstTeamIndex);
firstTeamIndex++;
teleported++;
}
else if (block.getData() == _secondTeamSpawnBlockData && secondTeamIndex < secondTeam.size())
{
Player player = secondTeam.get(secondTeamIndex);
if (firstRun)
{
teleportWithDelay(player, spawn, teleported);
}
else
{
player.teleport(spawn);
}
if (firstRun)
{
teleportWithDelay(player, spawn, teleported);
firstTeamIndex++;
teleported++;
}
else
else if (block.getData() == _secondTeamSpawnBlockData && secondTeamIndex < secondTeam.size())
{
player.teleport(spawn);
}
Player player = secondTeam.get(secondTeamIndex);
secondTeamIndex++;
teleported++;
if (firstRun)
{
teleportWithDelay(player, spawn, teleported);
}
else
{
player.teleport(spawn);
}
secondTeamIndex++;
teleported++;
}
}
}
}
else
{
super.spawn(firstRun);
}
}
private void teleportWithDelay(Player player, final Location spawn, int teleported)