This commit is contained in:
Shaun Bennett 2016-04-02 20:42:41 +11:00
parent 5a31be1138
commit b960925522
24 changed files with 152 additions and 23 deletions

View File

@ -15,6 +15,7 @@ public class TutorialSession
private Location _homeLocation;
private int _colorTick;
private int _textSeconds;
private Location _mapTargetLocation;
public TutorialSession()
{
@ -70,4 +71,14 @@ public class TutorialSession
_textSeconds++;
return _textSeconds;
}
public void setMapTargetLocation(Location location)
{
_mapTargetLocation = location;
}
public Location getMapTargetLocation()
{
return _mapTargetLocation;
}
}

View File

@ -21,6 +21,8 @@ import mineplex.game.clans.tutorial.TutorialRegion;
public class TutorialWorldManager extends MiniPlugin
{
public static final int BLOCKS_BETWEEN_TUTORIALS = 1200;
private final World _tutorialWorld;
private final Schematic _schematic;
private Stack<TutorialRegion> _regionStack;
@ -62,8 +64,8 @@ public class TutorialWorldManager extends MiniPlugin
for (int z = 0; z < 4; z++)
{
long time = System.currentTimeMillis();
double xLoc = (x) * 1200; // 1000x1000 regions
double zLoc = (z) * 1200;
double xLoc = (x) * BLOCKS_BETWEEN_TUTORIALS; // 1000x1000 regions
double zLoc = (z) * BLOCKS_BETWEEN_TUTORIALS;
TutorialRegion region = new TutorialRegion(_schematic, new Location(_tutorialWorld, xLoc, 30, zLoc));
if (x == 0 && z == 0) _centerRegion = region;

View File

@ -6,7 +6,9 @@ import java.util.List;
import mineplex.core.recharge.Recharge;
import mineplex.game.clans.tutorial.TutorialManager;
import mineplex.game.clans.tutorial.TutorialRegion;
import mineplex.game.clans.tutorial.TutorialSession;
import mineplex.game.clans.tutorial.TutorialType;
import mineplex.game.clans.tutorial.TutorialWorldManager;
import mineplex.game.clans.tutorial.tutorials.clans.ClansMainTutorial;
import org.bukkit.Location;
@ -109,8 +111,8 @@ public class TutorialMapRenderer extends MapRenderer
}
Location l = player.getLocation().clone();
l.setX((((int)l.getX()) % 1000) + (l.getX() - ((int) l.getX())));
l.setZ((((int)l.getZ()) % 1000) + (l.getZ() - ((int) l.getZ())));
l.setX((((int)l.getX()) % TutorialWorldManager.BLOCKS_BETWEEN_TUTORIALS) + (l.getX() - ((int) l.getX())));
l.setZ((((int)l.getZ()) % TutorialWorldManager.BLOCKS_BETWEEN_TUTORIALS) + (l.getZ() - ((int) l.getZ())));
double mapX = (l.getX() - tutorialMap.getX()) / zoom;
double mapZ = (l.getZ() - tutorialMap.getZ()) / zoom;
@ -126,6 +128,35 @@ public class TutorialMapRenderer extends MapRenderer
cursors.addCursor(cursor);
}
// Add Tutorial Markers
TutorialSession session = _tutorial.getTutorialSession(player);
if (session != null)
{
if (session.getMapTargetLocation() != null)
{
Location point = session.getMapTargetLocation().clone();
point.setX((((int)point.getX()) % TutorialWorldManager.BLOCKS_BETWEEN_TUTORIALS) + (point.getX() - ((int) point.getX())));
point.setZ((((int)point.getZ()) % TutorialWorldManager.BLOCKS_BETWEEN_TUTORIALS) + (point.getZ() - ((int) point.getZ())));
mapX = (point.getX() - tutorialMap.getX()) / zoom;
mapZ = (point.getZ() - tutorialMap.getZ()) / zoom;
// To make these appear at the edges of the map, just change it from 64 to something like 128 for double the map size
if (mapX > -64 && mapX < 64 && mapZ > -64 && mapZ < 64)
{
byte b0 = (byte) (int) Math.min(127, (double) (mapX * 2.0F) + 0.5D);
byte b1 = (byte) (int) Math.max(-127, (double) (mapZ * 2.0F) + 0.5D);
byte cursorType = 4; // http://i.imgur.com/wpH6PT8.png
// Those are byte 5 and 6
byte rotation = (byte) ((int) Math.floor(System.currentTimeMillis() / 1000D) % 16);
MapCursor cursor = new MapCursor(b0, b1, rotation, cursorType, true);
cursors.addCursor(cursor);
}
}
}
}
private byte attemptDraw(boolean colorAll, byte color, Color color1, Color color2, int xRegion, int zRegion, MinMaxArea area, int mapX, int mapZ)

View File

@ -44,8 +44,8 @@ public abstract class Objective<Plugin extends Tutorial, Data extends ObjectiveD
_name = name;
_description = description;
_extraDescription = extraDescription;
_displayStartMessage = true;
_displayFinishMessage = true;
_displayStartMessage = false;
_displayFinishMessage = false;
_startMessageDelay = 60;
_finishMessageDelay = 1;

View File

@ -48,8 +48,8 @@ public abstract class ObjectiveGoal <T extends Objective<?, ?>> implements Liste
_description = description;
_extraDescription = extraDescription;
_displayStartMessage = true;
_startMessageDelay = 40;
_displayFinishMessage = true;
_startMessageDelay = 1;//40;
_displayFinishMessage = false;
_finishMessageDelay = 1;
_fireworkLocations = fireworkLocs;
}
@ -209,7 +209,8 @@ public abstract class ObjectiveGoal <T extends Objective<?, ?>> implements Liste
}
@EventHandler
public void update(UpdateEvent event) {
public void update(UpdateEvent event)
{
if (!event.getType().equals(UpdateType.SEC_05)) return;
if (_fireworkLocations == null) return;
@ -223,6 +224,8 @@ public abstract class ObjectiveGoal <T extends Objective<?, ?>> implements Liste
UtilFirework.playFirework(loc, FireworkEffect.Type.BURST, Color.AQUA, true, true);
}
}
}
@EventHandler
public void activeCleaner(UpdateEvent event)
{
@ -235,6 +238,5 @@ public abstract class ObjectiveGoal <T extends Objective<?, ?>> implements Liste
}
_removeList.clear();
}
}

View File

@ -184,6 +184,12 @@ public class ClansMainTutorial extends Tutorial
return false;
}
public Location getCenter(TutorialRegion region, Bounds bounds)
{
List<Location> locs = region.getLocationMap().getGoldLocations(bounds.getDataLocColor());
return UtilAlg.getMidpoint(locs.get(0), locs.get(1));
}
public Location getSpawn(TutorialRegion region)
{
Location location = region.getLocationMap().getGoldLocations(Point.SPAWN.getDataLocColor()).get(0).clone();

View File

@ -6,6 +6,7 @@ import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.game.clans.tutorial.TutorialSession;
import mineplex.game.clans.tutorial.objective.OrderedObjective;
import mineplex.game.clans.tutorial.tutorials.clans.ClansMainTutorial;
import mineplex.game.clans.tutorial.tutorials.clans.objective.goals.HoldItemGoal;
@ -46,6 +47,15 @@ public class AttackEnemyObjective extends OrderedObjective<ClansMainTutorial>
setStartMessageDelay(60);
}
@Override
protected void customStart(Player player)
{
super.customStart(player);
TutorialSession session = getPlugin().getTutorialSession(player);
session.setMapTargetLocation(getPlugin().getCenter(session.getRegion(), ClansMainTutorial.Bounds.ENEMY_LAND));
}
@Override
protected void customLeave(Player player)
{

View File

@ -3,6 +3,7 @@ package mineplex.game.clans.tutorial.tutorials.clans.objective;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.game.clans.tutorial.TutorialSession;
import mineplex.game.clans.tutorial.objective.OrderedObjective;
import mineplex.game.clans.tutorial.tutorials.clans.ClansMainTutorial;
import mineplex.game.clans.tutorial.tutorials.clans.objective.goals.classes.EquipDefaultBuildGoal;
@ -22,6 +23,15 @@ public class ClassesObjective extends OrderedObjective<ClansMainTutorial>
setStartMessageDelay(60);
}
@Override
protected void customStart(Player player)
{
super.customStart(player);
TutorialSession session = getPlugin().getTutorialSession(player);
session.setMapTargetLocation(null);
}
@Override
protected void customLeave(Player player)
{

View File

@ -3,6 +3,7 @@ package mineplex.game.clans.tutorial.tutorials.clans.objective;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.game.clans.tutorial.TutorialSession;
import mineplex.game.clans.tutorial.objective.OrderedObjective;
import mineplex.game.clans.tutorial.tutorials.clans.ClansMainTutorial;
import mineplex.game.clans.tutorial.tutorials.clans.objective.goals.energy.BuyEnergyGoal;
@ -20,6 +21,15 @@ public class EnergyObjective extends OrderedObjective<ClansMainTutorial>
setStartMessageDelay(60);
}
@Override
protected void customStart(Player player)
{
super.customStart(player);
TutorialSession session = getPlugin().getTutorialSession(player);
session.setMapTargetLocation(getPlugin().getPoint(session.getRegion(), ClansMainTutorial.Point.ENERGY_SHOP));
}
@Override
protected void customLeave(Player player)
{

View File

@ -6,6 +6,7 @@ import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.core.common.util.C;
import mineplex.game.clans.tutorial.TutorialSession;
import mineplex.game.clans.tutorial.objective.OrderedObjective;
import mineplex.game.clans.tutorial.tutorials.clans.ClansMainTutorial;
import mineplex.game.clans.tutorial.tutorials.clans.objective.goals.HoldItemGoal;
@ -30,7 +31,7 @@ public class FieldsObjective extends OrderedObjective<ClansMainTutorial>
addGoal(new MineDiamondsGoal(this));
addGoal(new SellDiamondsGoal(this));
setStartMessageDelay(60);
// setStartMessageDelay(60);
}
@Override
@ -47,5 +48,8 @@ public class FieldsObjective extends OrderedObjective<ClansMainTutorial>
protected void customStart(Player player)
{
super.customStart(player);
TutorialSession session = getPlugin().getTutorialSession(player);
session.setMapTargetLocation(getPlugin().getCenter(session.getRegion(), ClansMainTutorial.Bounds.FIELDS));
}
}

View File

@ -3,6 +3,7 @@ package mineplex.game.clans.tutorial.tutorials.clans.objective;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.game.clans.tutorial.TutorialSession;
import mineplex.game.clans.tutorial.objective.OrderedObjective;
import mineplex.game.clans.tutorial.tutorials.clans.ClansMainTutorial;
import mineplex.game.clans.tutorial.tutorials.clans.objective.goals.finalobj.DisbandClanGoal;
@ -20,6 +21,15 @@ public class FinalObjective extends OrderedObjective<ClansMainTutorial>
setStartMessageDelay(60);
}
@Override
protected void customStart(Player player)
{
super.customStart(player);
TutorialSession session = getPlugin().getTutorialSession(player);
session.setMapTargetLocation(null);
}
@Override
protected void customLeave(Player player)
{

View File

@ -8,6 +8,7 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.plugin.java.JavaPlugin;
import mineplex.game.clans.tutorial.TutorialSession;
import mineplex.game.clans.tutorial.objective.UnorderedObjective;
import mineplex.game.clans.tutorial.tutorials.clans.ClansMainTutorial;
import mineplex.game.clans.tutorial.tutorials.clans.objective.goals.shops.PurchaseGoal;
@ -41,6 +42,15 @@ public class PurchaseItemsObjective extends UnorderedObjective<ClansMainTutorial
setStartMessageDelay(60);
}
@Override
protected void customStart(Player player)
{
super.customStart(player);
TutorialSession session = getPlugin().getTutorialSession(player);
session.setMapTargetLocation(getPlugin().getPoint(session.getRegion(), ClansMainTutorial.Point.PVP_SHOP));
}
@Override
protected void customFinish(Player player)
{

View File

@ -18,6 +18,7 @@ import mineplex.core.npc.Npc;
import mineplex.core.npc.NpcManager;
import mineplex.database.tables.records.NpcsRecord;
import mineplex.game.clans.tutorial.TutorialRegion;
import mineplex.game.clans.tutorial.TutorialSession;
import mineplex.game.clans.tutorial.objective.OrderedObjective;
import mineplex.game.clans.tutorial.tutorials.clans.ClansMainTutorial;
import mineplex.game.clans.tutorial.tutorials.clans.objective.goals.HoldItemGoal;
@ -89,6 +90,10 @@ public class ShopsObjective extends OrderedObjective<ClansMainTutorial>
npcs.add(spawnNpc(farmingShop, "Organic Produce"));
npcs.add(spawnNpc(miningShop, "Mining Shop"));
_npcMap.put(player.getUniqueId(), npcs);
TutorialSession session = getPlugin().getTutorialSession(player);
session.setMapTargetLocation(getPlugin().getCenter(session.getRegion(), ClansMainTutorial.Bounds.SHOPS));
}
private Npc spawnNpc(Location location, String name)

View File

@ -23,7 +23,7 @@ public class HoldItemGoal extends ObjectiveGoal<Objective<?, ?>>
_material = material;
setStartMessageDelay(startDelay);
// setStartMessageDelay(startDelay);
}
public HoldItemGoal(Objective<?, ?> objective, Material material, String name, String description, String helpText)

View File

@ -17,6 +17,7 @@ import mineplex.core.common.util.UtilPlayer;
import mineplex.core.fallingblock.FallingBlocks;
import mineplex.game.clans.clans.siege.events.SiegeWeaponExplodeEvent;
import mineplex.game.clans.tutorial.TutorialRegion;
import mineplex.game.clans.tutorial.TutorialSession;
import mineplex.game.clans.tutorial.objective.ObjectiveGoal;
import mineplex.game.clans.tutorial.tutorials.clans.ClansMainTutorial;
import mineplex.game.clans.tutorial.tutorials.clans.objective.AttackEnemyObjective;
@ -37,6 +38,8 @@ public class BlowUpWallGoal extends ObjectiveGoal<AttackEnemyObjective>
@Override
protected void customStart(Player player)
{
TutorialSession session = getObjective().getPlugin().getTutorialSession(player);
session.setMapTargetLocation(getObjective().getPlugin().getCenter(session.getRegion(), ClansMainTutorial.Bounds.ENEMY_ATTACK_AREA));
}
@EventHandler

View File

@ -27,7 +27,7 @@ public class GetMapGoal extends ObjectiveGoal<AttackEnemyObjective>
null
);
setStartMessageDelay(120);
// setStartMessageDelay(120);
}
@Override

View File

@ -13,7 +13,9 @@ import mineplex.game.clans.clans.siege.SiegeManager;
import mineplex.game.clans.clans.siege.events.MountSiegeWeaponEvent;
import mineplex.game.clans.clans.siege.weapon.Cannon;
import mineplex.game.clans.tutorial.TutorialRegion;
import mineplex.game.clans.tutorial.TutorialSession;
import mineplex.game.clans.tutorial.objective.ObjectiveGoal;
import mineplex.game.clans.tutorial.tutorials.clans.ClansMainTutorial;
import mineplex.game.clans.tutorial.tutorials.clans.ClansMainTutorial.Point;
import mineplex.game.clans.tutorial.tutorials.clans.objective.AttackEnemyObjective;
@ -36,6 +38,9 @@ public class MountCannonGoal extends ObjectiveGoal<AttackEnemyObjective>
{
getObjective().getCannons().put(player.getName(), SiegeManager.Instance.spawnCannon(player, getObjective().getPlugin().getPoint(getObjective().getPlugin().getRegion(player), Point.CANNON), false));
getObjective().getCannons().get(player.getName()).SetForcedVelocity(0.4, 2.45);
TutorialSession session = getObjective().getPlugin().getTutorialSession(player);
session.setMapTargetLocation(getObjective().getPlugin().getPoint(session.getRegion(), ClansMainTutorial.Point.CANNON));
}
@Override

View File

@ -18,6 +18,7 @@ import mineplex.core.common.DefaultHashMap;
import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilPlayer;
import mineplex.game.clans.tutorial.TutorialRegion;
import mineplex.game.clans.tutorial.TutorialSession;
import mineplex.game.clans.tutorial.objective.ObjectiveGoal;
import mineplex.game.clans.tutorial.tutorials.clans.ClansMainTutorial;
import mineplex.game.clans.tutorial.tutorials.clans.objective.AttackEnemyObjective;
@ -50,6 +51,9 @@ public class StealEnemyPotatoesGoal extends ObjectiveGoal<AttackEnemyObjective>
{
_playersMap.put(player.getUniqueId(), new AtomicInteger(0));
UtilPlayer.message(player, F.main("Clans", "Now that you have blown a hole in the enemy's base, go and steal their potatoes."));
TutorialSession session = getObjective().getPlugin().getTutorialSession(player);
session.setMapTargetLocation(getObjective().getPlugin().getCenter(session.getRegion(), ClansMainTutorial.Bounds.ENEMY_LAND));
}
@Override

View File

@ -32,7 +32,7 @@ public class LeaveSpawnGoal extends ObjectiveGoal<ClanObjective>
);
// 2 seconds after start message
setStartMessageDelay(20 * 3);
// setStartMessageDelay(20 * 3);
}
@Override

View File

@ -20,7 +20,7 @@ public class EquipDefaultBuildGoal extends ObjectiveGoal<ClassesObjective>
null
);
setStartMessageDelay(120);
// setStartMessageDelay(120);
}
@Override

View File

@ -46,7 +46,7 @@ public class ExplainEnergyGoal extends ObjectiveGoal<EnergyObjective>
}, 20 * 10L);
}, 20 * 3L);
setStartMessageDelay(120);
// setStartMessageDelay(120);
}
@Override

View File

@ -9,7 +9,9 @@ import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilPlayer;
import mineplex.game.clans.clans.event.ClansPlayerSellItemEvent;
import mineplex.game.clans.tutorial.TutorialSession;
import mineplex.game.clans.tutorial.objective.ObjectiveGoal;
import mineplex.game.clans.tutorial.tutorials.clans.ClansMainTutorial;
import mineplex.game.clans.tutorial.tutorials.clans.objective.FieldsObjective;
public class SellDiamondsGoal extends ObjectiveGoal<FieldsObjective>
@ -28,7 +30,8 @@ public class SellDiamondsGoal extends ObjectiveGoal<FieldsObjective>
@Override
protected void customStart(Player player)
{
TutorialSession session = getObjective().getPlugin().getTutorialSession(player);
session.setMapTargetLocation(getObjective().getPlugin().getPoint(session.getRegion(), ClansMainTutorial.Point.MINING_SHOP));
}
@Override

View File

@ -27,7 +27,7 @@ public class TpClanHomeGoal extends ObjectiveGoal<FinalObjective>
null
);
setStartMessageDelay(120);
// setStartMessageDelay(120);
}
@Override

View File

@ -9,7 +9,9 @@ import mineplex.core.common.util.F;
import mineplex.core.common.util.UtilInv;
import mineplex.core.common.util.UtilPlayer;
import mineplex.game.clans.clans.event.ClansPlayerSellItemEvent;
import mineplex.game.clans.tutorial.TutorialSession;
import mineplex.game.clans.tutorial.objective.ObjectiveGoal;
import mineplex.game.clans.tutorial.tutorials.clans.ClansMainTutorial;
import mineplex.game.clans.tutorial.tutorials.clans.objective.ShopsObjective;
public class SellPotatoesGoal extends ObjectiveGoal<ShopsObjective>
@ -30,7 +32,8 @@ public class SellPotatoesGoal extends ObjectiveGoal<ShopsObjective>
@Override
protected void customStart(Player player)
{
TutorialSession session = getObjective().getPlugin().getTutorialSession(player);
session.setMapTargetLocation(getObjective().getPlugin().getPoint(session.getRegion(), ClansMainTutorial.Point.FARMING_SHOP));
}
@Override