saving typewars state
This commit is contained in:
parent
746cc597ab
commit
e10a63254a
|
@ -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[]
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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())
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue