saving typewars state

This commit is contained in:
Sarah 2015-11-21 18:16:24 +01:00
parent 746cc597ab
commit e10a63254a
5 changed files with 110 additions and 109 deletions

View File

@ -40,6 +40,8 @@ import nautilus.game.arcade.game.games.typewars.stats.DumbledontStatTracker;
import nautilus.game.arcade.game.games.typewars.stats.HoarderStatTracker;
import nautilus.game.arcade.game.games.typewars.stats.PerfectionistStatTracker;
import nautilus.game.arcade.game.games.typewars.stats.WaitForItStatTracker;
import nautilus.game.arcade.game.games.typewars.tutorial.TutorialTypeWars;
import nautilus.game.arcade.gametutorial.events.GameTutorialStartEvent;
import nautilus.game.arcade.kit.Kit;
import nautilus.game.arcade.world.WorldData;
@ -92,9 +94,6 @@ public class TypeWars extends TeamGame
private HashMap<GameTeam, Long> _giantsAttacked;
private HashSet<Player> _playerTitles;
private HashMap<Player, Location> _playerSpawns;
private int _tutorialFrame;
public TypeWars(ArcadeManager manager)
{
@ -133,6 +132,7 @@ public class TypeWars extends TeamGame
this.PrepareFreeze = false;
this.PlaySoundGameStart = false;
this.EnableTutorials = true;
this.PrepareFreeze = true;
_activeMinions = new ArrayList<>();
_deadMinions = new ArrayList<>();
@ -149,12 +149,10 @@ public class TypeWars extends TeamGame
_minionsSpawned = new HashMap<>();
_giantsAttacked = new HashMap<>();
_playerTitles = new HashSet<>();
_playerSpawns = new HashMap<>();
_attackingMinions = new ArrayList<>();
_animationTicks = 0;
_nukeFrame = 0;
_tutorialFrame = 0;
registerStatTrackers(
new DemonStatsTracker(this),
@ -165,24 +163,6 @@ public class TypeWars extends TeamGame
manager.GetCreature().SetDisableCustomDrops(true);
}
private void initSpawns()
{
WorldData data = WorldData;
/*int i = 0;
for(String string : data.GetAllDataLocs().keySet())
{
_minionSpawns.put(GetTeamList().get(i), data.GetDataLocs(string));
i++;
if(i >= GetTeamList().size() -1)
return;
}*/
_minionSpawns.put(GetTeamList().get(1), (ArrayList<Location>)data.GetDataLocs("RED").clone());
_minionSpawns.put(GetTeamList().get(0), (ArrayList<Location>)data.GetDataLocs("LIGHT_BLUE").clone());
_giantAttackZones.put(GetTeamList().get(1), (ArrayList<Location>) data.GetDataLocs("MAGENTA").clone());
_giantAttackZones.put(GetTeamList().get(0), (ArrayList<Location>) data.GetDataLocs("ORANGE").clone());
}
@EventHandler
public void stateChange(GameStateChangeEvent event)
@ -319,82 +299,66 @@ public class TypeWars extends TeamGame
}
}
private Location _tutorialLocation;
private Location _tutorialLocationRed, _tutorialLocationBlue;
public void tutorialFrames(UpdateEvent event)
private void initSpawns()
{
if(event.getType() != UpdateType.TICK)
WorldData data = WorldData;
_minionSpawns.put(GetTeamList().get(1), (ArrayList<Location>)data.GetDataLocs("RED").clone());
_minionSpawns.put(GetTeamList().get(0), (ArrayList<Location>)data.GetDataLocs("LIGHT_BLUE").clone());
_giantAttackZones.put(GetTeamList().get(1), (ArrayList<Location>) data.GetDataLocs("MAGENTA").clone());
_giantAttackZones.put(GetTeamList().get(0), (ArrayList<Location>) data.GetDataLocs("ORANGE").clone());
Location red = WorldData.GetDataLocs("LIME").get(0);
Location blue = WorldData.GetDataLocs("PURPLE").get(0);
ArrayList<Location> tutorialLocations = UtilShapes.getLinesDistancedPoints(red, blue, 1);
_tutorialLocationRed = tutorialLocations.get(20).clone().add(0, 15, 0);
_tutorialLocationBlue = tutorialLocations.get(tutorialLocations.size() - 20).clone().add(0, 15, 0);
}
@EventHandler
public void tutorialStart(GameTutorialStartEvent event)
{
Location targetRed, targetBlue;
ArrayList<Location> locations = UtilShapes.getLinesDistancedPoints(_minionSpawns.get(GetTeamList().get(0)).get(4), _minionSpawns.get(GetTeamList().get(1)).get(4), 1);
targetRed = locations.get(locations.size() - 3);
targetBlue = locations.get(3);
if(event.getTutorial().getTeam() == GetTeamList().get(1))
{
event.getTutorial().getPhase(1).setLocation(_tutorialLocationRed);
event.getTutorial().getPhase(1).setTarget(targetRed);
}
else
{
event.getTutorial().getPhase(1).setLocation(_tutorialLocationBlue);
event.getTutorial().getPhase(1).setTarget(targetBlue);
}
}
@Override
public void addTutorials()
{
GetTeamList().get(0).setTutorial(new TutorialTypeWars(Manager));
GetTeamList().get(1).setTutorial(new TutorialTypeWars(Manager));
}
@EventHandler
public void tutorialFrames(GameStateChangeEvent event)
{
if(event.GetState() != GameState.Live)
return;
if(GetState() != GameState.Prepare)
return;
if(_tutorialFrame < 40 + _tutorialText[1].length() + _tutorialText[2].length() + 30 + _tutorialText[3].length() + _tutorialText[4].length() + 40 && _tutorialFrame > 6)
for(Giant giant : _giants.values())
{
for(Player player : UtilServer.getPlayers())
{
player.setAllowFlight(true);
player.setFlying(true);
player.teleport(_tutorialLocation);
}
giant.setHealth(100);
}
if(_tutorialFrame == 4)
{
for(Player player : UtilServer.getPlayers())
{
VisibilityManager.Instance.setVisibility(player, false, UtilServer.getPlayers());
_playerSpawns.put(player, player.getLocation().clone());
}
}
if(_tutorialFrame == 5)
{
Location red = WorldData.GetDataLocs("LIME").get(0);
Location blue = WorldData.GetDataLocs("PURPLE").get(0);
ArrayList<Location> tutorialLocations = UtilShapes.getLinesDistancedPoints(red, blue, 1);
_tutorialLocation = tutorialLocations.get(20).clone().add(0, 10, 0);
ArrayList<Location> locations = UtilShapes.getLinesDistancedPoints(_minionSpawns.get(GetTeamList().get(0)).get(4), _minionSpawns.get(GetTeamList().get(1)).get(4), 1);
Manager.GetCreature().SetForce(true);
this.CreatureAllowOverride = true;
Minion minion = new Minion(Manager, locations.get(locations.size() - 15), _minionSpawns.get(GetTeamList().get(1)).get(4), GetTeamList().get(0), 4);
minion.changeName("Fishing");
_activeMinions.add(minion);
this.CreatureAllowOverride = false;
Manager.GetCreature().SetForce(false);
Vector vec = new Vector(locations.get(locations.size() - 3).getBlockX() - _tutorialLocation.getBlockX(), locations.get(locations.size() - 3).getBlockY() - _tutorialLocation.getBlockY(), locations.get(locations.size() - 3).getBlockZ() - _tutorialLocation.getBlockZ());
float pitch = UtilAlg.GetPitch(vec);
float yaw = UtilAlg.GetYaw(vec);
_tutorialLocation.setPitch(pitch);
_tutorialLocation.setYaw(yaw);
}
if(_tutorialFrame == 40 + _tutorialText[1].length() + _tutorialText[2].length() + 30)
{
_activeMinions.get(0).despawn(null, false);
}
if(_tutorialFrame == 40 + _tutorialText[1].length() + _tutorialText[2].length() + 30 + _tutorialText[3].length() + _tutorialText[4].length() + 40)
{
for(Player player : UtilServer.getPlayers())
{
player.setAllowFlight(false);
player.teleport(_playerSpawns.get(player));
VisibilityManager.Instance.setVisibility(player, true, UtilServer.getPlayers());
}
this.PrepareFreeze = true;
for(Giant giant : _giants.values())
{
giant.setHealth(100);
}
for(Minion minion : _activeMinions)
minion.despawn(null, false, true);
_activeMinions.clear();
_deadMinions.clear();
_finishedMinions.clear();
this.PrepareTime = 5000 + (System.currentTimeMillis() - GetStateTime());
}
_tutorialFrame++;
_activeMinions.clear();
_deadMinions.clear();
_finishedMinions.clear();
}
private String[] _tutorialText = new String[]

View File

@ -1,5 +1,7 @@
package nautilus.game.arcade.game.games.typewars.tutorial;
import nautilus.game.arcade.game.games.typewars.Minion;
import nautilus.game.arcade.game.games.typewars.TypeWars;
import nautilus.game.arcade.gametutorial.TutorialPhase;
import nautilus.game.arcade.gametutorial.TutorialText;
@ -48,7 +50,13 @@ public class TutorialPhaseTypeWars extends TutorialPhase
{
if(text.ID() == 10)
{
for(Minion minion : ((TypeWars) getTutorial().Manager.GetGame()).getActiveMinions())
{
if(minion.getTeam() == getTutorial().getTeam())
{
minion.despawn(null, false);
}
}
}
}

View File

@ -1,15 +1,47 @@
package nautilus.game.arcade.game.games.typewars.tutorial;
import java.util.ArrayList;
import mineplex.core.common.util.UtilShapes;
import nautilus.game.arcade.ArcadeManager;
import nautilus.game.arcade.game.GameTeam;
import nautilus.game.arcade.game.games.typewars.Minion;
import nautilus.game.arcade.game.games.typewars.TypeWars;
import nautilus.game.arcade.gametutorial.GameTutorial;
import nautilus.game.arcade.gametutorial.TutorialPhase;
import org.bukkit.Location;
public class TutorialTypeWars extends GameTutorial
{
private ArcadeManager _manager;
private TypeWars _typeWars;
public TutorialTypeWars(ArcadeManager manager)
{
super(manager, new TutorialPhase[]{new TutorialPhaseTypeWars()});
}
@Override
public void onStart()
{
_manager = Manager;
_typeWars = (TypeWars) Manager.GetGame();
for(GameTeam team : Manager.GetGame().GetTeamList())
{
if(team != getTeam())
{
ArrayList<Location> locations = UtilShapes.getLinesDistancedPoints(_typeWars.getMinionSpawns().get(getTeam()).get(4), _typeWars.getMinionSpawns().get(team).get(4), 1);
_manager.GetCreature().SetForce(true);
_manager.GetGame().CreatureAllowOverride = true;
Minion minion = new Minion(_manager, locations.get(locations.size() - 15), _typeWars.getMinionSpawns().get(team).get(4), getTeam(), 4);
minion.changeName("Fishing");
((TypeWars) _manager.GetGame()).getActiveMinions().add(minion);
_manager.GetGame().CreatureAllowOverride = false;
_manager.GetCreature().SetForce(false);
}
}
}
}

View File

@ -114,7 +114,8 @@ public abstract class TutorialPhase
i++;
}
UtilTextMiddle.display("", text.getText(), 0, text.getStayTime(), 0, players);
displayMessage(text);
System.out.println(text.ID());
onMessageDisplay(text);
try
{
Thread.sleep(text.getStayTime() * 50);
@ -129,18 +130,6 @@ public abstract class TutorialPhase
}).start();
}
private void displayMessage(final TutorialText text)
{
_tutorial.Manager.runSync(new Runnable()
{
@Override
public void run()
{
onMessageDisplay(text);
}
});
}
protected TutorialText getNextMessage()
{
for(TutorialText text : _text)

View File

@ -145,14 +145,22 @@ public class GameManager implements Listener
}
if(game.EnableTutorials)
{
for(GameTeam team : game.GetTeamList())
for(final GameTeam team : game.GetTeamList())
{
if(team.getTutorial() != null)
{
if(!team.getTutorial().hasStarted())
{
team.getTutorial().setTeam(team);
team.getTutorial().start();
Manager.runSync(new Runnable()
{
@Override
public void run()
{
team.getTutorial().setTeam(team);
team.getTutorial().start();
}
});
}
if(!team.getTutorial().hasEnded())
{