Merge branch 'pregametutorial' of http://184.154.0.242:7990/scm/min/mineplex into type-wars

# Conflicts:
#	Plugins/Nautilus.Game.Arcade/src/nautilus/game/arcade/managers/GameManager.java
This commit is contained in:
Sarah 2015-12-07 18:54:19 +01:00
commit dfb1837e81
4 changed files with 119 additions and 23 deletions

View File

@ -28,10 +28,14 @@ public abstract class GameTutorial
private boolean _hasStarted; private boolean _hasStarted;
private int _tick; private int _tick;
private long _started;
public boolean SetTutorialPositions = true; public boolean SetTutorialPositions = true;
public boolean TeleportOnEnd = true; public boolean TeleportOnEnd = true;
public boolean RunTasksSync = true; public boolean RunTasksSync = true;
public boolean PlayTutorialSounds = false;
public boolean ShowPrepareTimer = false;
public long TimeBetweenPhase = 0; public long TimeBetweenPhase = 0;
public long StartAfterTutorial = 5000; public long StartAfterTutorial = 5000;
@ -50,8 +54,9 @@ public abstract class GameTutorial
for(TutorialPhase phase : _phases) for(TutorialPhase phase : _phases)
phase.setTutorial(this); phase.setTutorial(this);
Manager.GetGame().PrepareTime = 60000; //Manager.GetGame().PrepareTime = 60000;
Manager.GetChat().Silence(60000, false); Manager.GetChat().Silence(60000, false);
_started = System.currentTimeMillis();
Manager.getPluginManager().callEvent(new GameTutorialStartEvent(this)); Manager.getPluginManager().callEvent(new GameTutorialStartEvent(this));
onStart(); onStart();
preparePlayers(); preparePlayers();
@ -78,11 +83,19 @@ public abstract class GameTutorial
onEnd(); onEnd();
_hasEnded = true; _hasEnded = true;
endTutorial(); endTutorial();
Manager.getPluginManager().callEvent(new GameTutorialEndEvent(this)); final GameTutorial tutorial = this;
Manager.runSyncLater(new Runnable()
{
@Override
public void run()
{
Manager.getPluginManager().callEvent(new GameTutorialEndEvent(tutorial));
}
}, 5);
} }
else else
{ {
Manager.GetChat().Silence(7000, false); Manager.GetChat().Silence(70000, false);
onPhaseChange(_currentPhase); onPhaseChange(_currentPhase);
Manager.getPluginManager().callEvent(new GameTutorialPhaseEvent(this, from, _currentPhase)); Manager.getPluginManager().callEvent(new GameTutorialPhaseEvent(this, from, _currentPhase));
_currentPhase.start(phaseOne); _currentPhase.start(phaseOne);
@ -96,11 +109,18 @@ public abstract class GameTutorial
private void endTutorial() private void endTutorial()
{ {
for(Player player : _players.keySet()) for(final Player player : _players.keySet())
{ {
VisibilityManager.Instance.setVisibility(player, true, UtilServer.getPlayers()); VisibilityManager.Instance.setVisibility(player, true, UtilServer.getPlayers());
player.setAllowFlight(false); Manager.runSyncLater(new Runnable()
player.setFlying(false); {
@Override
public void run()
{
player.setAllowFlight(false);
player.setFlying(false);
}
}, 5);
if(TeleportOnEnd) if(TeleportOnEnd)
{ {
Manager.runSyncLater(new Runnable() Manager.runSyncLater(new Runnable()
@ -192,4 +212,24 @@ public abstract class GameTutorial
_tick++; _tick++;
return _tick; return _tick;
} }
public TutorialPhase[] getPhases()
{
return _phases;
}
public long getTutorialStart()
{
return _started;
}
public long getRunning()
{
return System.currentTimeMillis() - _started;
}
public long getPhaseTime()
{
return _currentPhase.getPhaseTime();
}
} }

View File

@ -18,6 +18,8 @@ public abstract class TutorialPhase
private Location _target; private Location _target;
private boolean _hasEnded; private boolean _hasEnded;
private long _started;
private TutorialText _currentText; private TutorialText _currentText;
public TutorialPhase(TutorialText[] text) public TutorialPhase(TutorialText[] text)
@ -28,6 +30,7 @@ public abstract class TutorialPhase
final public void start(boolean phaseOne) final public void start(boolean phaseOne)
{ {
_hasEnded = false; _hasEnded = false;
_started = System.currentTimeMillis();
onStart(); onStart();
if(!phaseOne) if(!phaseOne)
{ {
@ -71,12 +74,15 @@ public abstract class TutorialPhase
@Override @Override
public void run() public void run()
{ {
for(Player player : _tutorial.getPlayers().keySet()) if(!_hasEnded && !getTutorial().hasEnded())
{ {
player.setAllowFlight(true); for(Player player : _tutorial.getPlayers().keySet())
player.setFlying(true); {
player.teleport(_location); player.setAllowFlight(true);
} player.setFlying(true);
player.teleport(_location);
}
}
} }
}); });
try try
@ -121,6 +127,11 @@ public abstract class TutorialPhase
int i = 0; int i = 0;
for(Player player : _tutorial.getPlayers().keySet()) for(Player player : _tutorial.getPlayers().keySet())
{ {
if(_tutorial.PlayTutorialSounds)
{
if(text.getSound() != null)
player.playSound(player.getLocation(), text.getSound(), 2f, 2f);
}
players[i] = player; players[i] = player;
i++; i++;
} }
@ -212,6 +223,11 @@ public abstract class TutorialPhase
return _target; return _target;
} }
public long getPhaseTime()
{
return _started;
}
public void onStart(){} public void onStart(){}
public void onMessageDisplay(TutorialText text){} public void onMessageDisplay(TutorialText text){}

View File

@ -1,5 +1,7 @@
package nautilus.game.arcade.gametutorial; package nautilus.game.arcade.gametutorial;
import org.bukkit.Sound;
public class TutorialText public class TutorialText
{ {
@ -7,17 +9,29 @@ public class TutorialText
private String _text; private String _text;
private int _stayTime; private int _stayTime;
private int _id; private int _id;
private Sound _sound;
public TutorialText(String text, int stayTime, int id) public TutorialText(String text, int stayTime, int id, Sound sound)
{ {
_text = text; _text = text;
_id = id; _id = id;
_stayTime = stayTime; _stayTime = stayTime;
_sound = sound;
} }
public TutorialText(String text, int id) public TutorialText(String text, int id)
{ {
this(text, (int) (Math.round(1.5 * text.length()) + 25), id); this(text, (int) (Math.round(1.5 * text.length()) + 25), id, Sound.NOTE_PLING);
}
public TutorialText(String text, int id, Sound sound)
{
this(text, (int) (Math.round(1.5 * text.length()) + 25), id, sound);
}
public TutorialText(String text, int stayTime, int id)
{
this(text, stayTime, id, Sound.NOTE_PLING);
} }
public String getText() public String getText()
@ -30,6 +44,11 @@ public class TutorialText
return _id; return _id;
} }
public Sound getSound()
{
return _sound;
}
public int getStayTime() public int getStayTime()
{ {
return _stayTime; return _stayTime;

View File

@ -19,33 +19,31 @@ import mineplex.core.disguise.disguises.DisguiseWither;
import mineplex.core.gadget.gadgets.MorphWither; import mineplex.core.gadget.gadgets.MorphWither;
import mineplex.core.gadget.types.Gadget; import mineplex.core.gadget.types.Gadget;
import mineplex.core.gadget.types.GadgetType; import mineplex.core.gadget.types.GadgetType;
import mineplex.minecraft.game.core.condition.Condition.ConditionType;
import mineplex.core.mount.Mount; import mineplex.core.mount.Mount;
import mineplex.core.mount.types.MountDragon; import mineplex.core.mount.types.MountDragon;
import mineplex.core.updater.UpdateType; import mineplex.core.updater.UpdateType;
import mineplex.core.updater.event.RestartServerEvent; import mineplex.core.updater.event.RestartServerEvent;
import mineplex.core.updater.event.UpdateEvent; import mineplex.core.updater.event.UpdateEvent;
import mineplex.minecraft.game.core.condition.Condition.ConditionType;
import nautilus.game.arcade.ArcadeManager; import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.GameType;
import nautilus.game.arcade.events.GamePrepareCountdownCommence; import nautilus.game.arcade.events.GamePrepareCountdownCommence;
import nautilus.game.arcade.events.GameStateChangeEvent; import nautilus.game.arcade.events.GameStateChangeEvent;
import nautilus.game.arcade.events.PlayerPrepareTeleportEvent; import nautilus.game.arcade.events.PlayerPrepareTeleportEvent;
import nautilus.game.arcade.events.PlayerStateChangeEvent; import nautilus.game.arcade.events.PlayerStateChangeEvent;
import nautilus.game.arcade.game.Game; import nautilus.game.arcade.game.Game;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.Game.GameState; import nautilus.game.arcade.game.Game.GameState;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.games.uhc.UHC; import nautilus.game.arcade.game.games.uhc.UHC;
import nautilus.game.arcade.gametutorial.GameTutorial; import nautilus.game.arcade.gametutorial.TutorialPhase;
import nautilus.game.arcade.gametutorial.TutorialText;
import org.bukkit.ChatColor; import org.bukkit.ChatColor;
import org.bukkit.Color; import org.bukkit.Color;
import org.bukkit.GameMode; import org.bukkit.FireworkEffect.Type;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.Sound; import org.bukkit.Sound;
import org.bukkit.FireworkEffect.Type;
import org.bukkit.entity.Creature; import org.bukkit.entity.Creature;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.entity.Wither;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
@ -122,7 +120,7 @@ public class GameManager implements Listener
} }
} }
public boolean isInTutorial() public boolean isInTutorial(boolean checkForTimer)
{ {
if (Manager.GetGame() == null || Manager.GetGame().GetState() != GameState.Prepare) if (Manager.GetGame() == null || Manager.GetGame().GetState() != GameState.Prepare)
return false; return false;
@ -147,21 +145,44 @@ public class GameManager implements Listener
if(player.getWorld() == Manager.GetLobby().GetSpawn().getWorld()) if(player.getWorld() == Manager.GetLobby().GetSpawn().getWorld())
return true; return true;
} }
long prepTime = 0;
for(GameTeam team : game.GetTeamList()) for(GameTeam team : game.GetTeamList())
{ {
long timeUsage = 0;
if(team.getTutorial() != null) if(team.getTutorial() != null)
{ {
if(!team.getTutorial().hasStarted()) if(!team.getTutorial().hasStarted())
{ {
team.getTutorial().setTeam(team); team.getTutorial().setTeam(team);
team.getTutorial().start(); team.getTutorial().start();
timeUsage = team.getTutorial().StartAfterTutorial;
timeUsage = timeUsage + (team.getTutorial().TimeBetweenPhase * team.getTutorial().getPhases().length);
for(TutorialPhase phase : team.getTutorial().getPhases())
{
for(TutorialText text : phase.getText())
{
timeUsage = timeUsage + (text.getStayTime() * 50);
}
}
} }
if(!team.getTutorial().hasEnded()) if(!team.getTutorial().hasEnded())
{ {
finished = false; finished = false;
} }
if(checkForTimer)
{
if(team.getTutorial().ShowPrepareTimer)
finished = false;
else
finished = true;
}
} }
if(prepTime <= timeUsage)
prepTime = timeUsage;
} }
if(prepTime > 0)
Manager.GetGame().PrepareTime = prepTime;
if(!finished) if(!finished)
return true; return true;
} }
@ -179,7 +200,7 @@ public class GameManager implements Listener
Game game = Manager.GetGame(); Game game = Manager.GetGame();
if(isInTutorial()) if(isInTutorial(true))
return; return;
double percentage = (double) (System.currentTimeMillis() - game.GetStateTime()) / game.PrepareTime; double percentage = (double) (System.currentTimeMillis() - game.GetStateTime()) / game.PrepareTime;
@ -265,7 +286,7 @@ public class GameManager implements Listener
} }
else if (game.GetState() == GameState.Prepare) else if (game.GetState() == GameState.Prepare)
{ {
if(isInTutorial()) if(isInTutorial(false))
return; return;
if (game.CanStartPrepareCountdown()) if (game.CanStartPrepareCountdown())