From 3f33e53666ecddfedff6378e2dba09dc80282659 Mon Sep 17 00:00:00 2001 From: MobiusDevelopment <8391001+MobiusDevelopment@users.noreply.github.com> Date: Wed, 29 Jan 2020 00:57:22 +0000 Subject: [PATCH] Minor cleanup for previous commit. --- .../gameserver/datatables/xml/BoatData.java | 26 +- .../model/actor/instance/BoatInstance.java | 369 +++++++++--------- .../model/holders/BoatPathHolder.java | 8 +- 3 files changed, 194 insertions(+), 209 deletions(-) diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/xml/BoatData.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/xml/BoatData.java index 22b0f0d821..0453446f7f 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/xml/BoatData.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/datatables/xml/BoatData.java @@ -41,7 +41,6 @@ public class BoatData implements IXmlReader private static final Logger LOGGER = Logger.getLogger(BoatData.class.getName()); private final Map _boats = new HashMap<>(); - private final Map> _paths = new HashMap<>(); protected BoatData() { @@ -52,10 +51,7 @@ public class BoatData implements IXmlReader public void load() { _boats.clear(); - _paths.clear(); parseDatapackFile("data/Boats.xml"); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _boats.size() + " boats."); - LOGGER.info(getClass().getSimpleName() + ": Loaded " + _paths.size() + " paths."); } @Override @@ -71,6 +67,7 @@ public class BoatData implements IXmlReader int id; int index; final StatSet set = new StatSet(); + final Map> paths = new HashMap<>(); final Node n = doc.getFirstChild(); for (Node node = n.getFirstChild(); node != null; node = node.getNextSibling()) @@ -84,7 +81,6 @@ public class BoatData implements IXmlReader set.set(attr.getNodeName(), attr.getNodeValue()); } - final String name = set.getString("name"); final StatSet npcDat = new StatSet(); npcDat.set("npcId", set.getInt("id")); npcDat.set("level", 0); @@ -119,7 +115,7 @@ public class BoatData implements IXmlReader npcDat.set("armor", 0); npcDat.set("baseWalkSpd", 0); npcDat.set("baseRunSpd", 0); - npcDat.set("name", name); + npcDat.set("name", set.getString("name")); npcDat.set("baseHpMax", 50000); npcDat.set("baseHpReg", 3.e-3f); npcDat.set("baseMpReg", 3.e-3f); @@ -127,11 +123,11 @@ public class BoatData implements IXmlReader npcDat.set("baseMDef", 100); final CreatureTemplate template = new CreatureTemplate(npcDat); - final BoatInstance boat = new BoatInstance(IdFactory.getInstance().getNextId(), template, name); + final BoatInstance boat = new BoatInstance(IdFactory.getInstance().getNextId(), template); boat.getPosition().setHeading(set.getInt("heading")); boat.setXYZ(set.getInt("spawnX"), set.getInt("spawnY"), set.getInt("spawnZ")); - boat.setPathA(set.getInt("pathIdA"), set.getInt("ticketA"), set.getInt("xTeleNoTicketA"), set.getInt("yTeleNoTicketA"), set.getInt("zTeleNoTicketA"), set.getString("announcerA"), set.getString("message10A"), set.getString("message5A"), set.getString("message1A"), set.getString("message0A"), set.getString("messageBeginA"), _paths.get(set.getInt("pathIdA"))); - boat.setPathB(set.getInt("pathIdB"), set.getInt("ticketB"), set.getInt("xTeleNoTicketB"), set.getInt("yTeleNoTicketB"), set.getInt("zTeleNoTicketB"), set.getString("announcerB"), set.getString("message10B"), set.getString("message5B"), set.getString("message1B"), set.getString("message0B"), set.getString("messageBeginB"), _paths.get(set.getInt("pathIdB"))); + boat.setPathA(set.getInt("pathIdA"), set.getInt("ticketA"), set.getInt("xTeleNoTicketA"), set.getInt("yTeleNoTicketA"), set.getInt("zTeleNoTicketA"), set.getString("announcerA"), set.getString("message10A"), set.getString("message5A"), set.getString("message1A"), set.getString("message0A"), set.getString("messageBeginA"), paths.get(set.getInt("pathIdA"))); + boat.setPathB(set.getInt("pathIdB"), set.getInt("ticketB"), set.getInt("xTeleNoTicketB"), set.getInt("yTeleNoTicketB"), set.getInt("zTeleNoTicketB"), set.getString("announcerB"), set.getString("message10B"), set.getString("message5B"), set.getString("message1B"), set.getString("message0B"), set.getString("messageBeginB"), paths.get(set.getInt("pathIdB"))); boat.spawn(); _boats.put(boat.getObjectId(), boat); @@ -140,7 +136,7 @@ public class BoatData implements IXmlReader { index = 0; id = Integer.parseInt(node.getAttributes().getNamedItem("id").getNodeValue()); - _paths.put(id, new HashMap()); + paths.put(id, new HashMap()); for (Node b = node.getFirstChild(); b != null; b = b.getNextSibling()) { if (!"point".equalsIgnoreCase(b.getNodeName())) @@ -163,10 +159,13 @@ public class BoatData implements IXmlReader point.z = set.getInt("z"); point.time = set.getInt("time"); - _paths.get(id).put(index++, point); + paths.get(id).put(index++, point); } } } + + LOGGER.info(getClass().getSimpleName() + ": Loaded " + _boats.size() + " boats."); + LOGGER.info(getClass().getSimpleName() + ": Loaded " + paths.size() + " paths."); } catch (Exception e) { @@ -179,11 +178,6 @@ public class BoatData implements IXmlReader return _boats.get(boatId); } - public Map getBoatPath(int pathId) - { - return _paths.get(pathId); - } - public static final BoatData getInstance() { return SingletonHolder.INSTANCE; diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/BoatInstance.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/BoatInstance.java index 3279221e42..3c190f533a 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/BoatInstance.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/actor/instance/BoatInstance.java @@ -43,19 +43,20 @@ import org.l2jmobius.gameserver.network.serverpackets.VehicleInfo; public class BoatInstance extends Creature { public float boatSpeed; + public VehicleDeparture vd = null; + private int lastx = -1; + private int lasty = -1; + private int cycle = 0; + private int runstate = 0; + private BoatPathHolder pathA; + private BoatPathHolder pathB; + private boolean needOnVehicleCheckLocation = false; + private final Map inboat = new HashMap<>(); - private final String _name; - protected BoatPathHolder _t1; - protected BoatPathHolder _t2; - protected int _cycle = 0; - public VehicleDeparture _vd = null; - private Map _inboat; - - public BoatInstance(int objectId, CreatureTemplate template, String name) + public BoatInstance(int objectId, CreatureTemplate template) { super(objectId, template); super.setKnownList(new BoatKnownList(this)); - _name = name; } public void moveToLocation(int x, int y, int z, float speed) @@ -101,159 +102,32 @@ public class BoatInstance extends Creature GameTimeController.getInstance().registerMovingObject(this); } - class BoatCaptain implements Runnable - { - private final int _state; - private final BoatInstance _boat; - - public BoatCaptain(int state, BoatInstance instance) - { - _state = state; - _boat = instance; - } - - @Override - public void run() - { - BoatCaptain bc; - switch (_state) - { - case 1: - { - _boat.say(5); - bc = new BoatCaptain(2, _boat); - ThreadPool.schedule(bc, 240000); - break; - } - case 2: - { - _boat.say(1); - bc = new BoatCaptain(3, _boat); - ThreadPool.schedule(bc, 40000); - break; - } - case 3: - { - _boat.say(0); - bc = new BoatCaptain(4, _boat); - ThreadPool.schedule(bc, 20000); - break; - } - case 4: - { - _boat.say(-1); - _boat.begin(); - break; - } - } - } - } - - class Boatrun implements Runnable - { - private int _state; - private final BoatInstance _boat; - - public Boatrun(int state, BoatInstance instance) - { - _state = state; - _boat = instance; - } - - @Override - public void run() - { - _boat._vd = null; - _boat.needOnVehicleCheckLocation = false; - - if (_boat._cycle == 1) - { - final int time = _boat._t1.state(_state, _boat); - if (time > 0) - { - _state++; - final Boatrun bc = new Boatrun(_state, _boat); - ThreadPool.schedule(bc, time); - } - else if (time == 0) - { - _boat._cycle = 2; - _boat.say(10); - final BoatCaptain bc = new BoatCaptain(1, _boat); - ThreadPool.schedule(bc, 300000); - } - else - { - _boat.needOnVehicleCheckLocation = true; - _state++; - _boat._runstate = _state; - } - } - else if (_boat._cycle == 2) - { - final int time = _boat._t2.state(_state, _boat); - if (time > 0) - { - _state++; - final Boatrun bc = new Boatrun(_state, _boat); - ThreadPool.schedule(bc, time); - } - else if (time == 0) - { - _boat._cycle = 1; - _boat.say(10); - final BoatCaptain bc = new BoatCaptain(1, _boat); - ThreadPool.schedule(bc, 300000); - } - else - { - _boat.needOnVehicleCheckLocation = true; - _state++; - _boat._runstate = _state; - } - } - } - } - - public int _runstate = 0; - public void evtArrived() { - if (_runstate != 0) + if (runstate != 0) { - final Boatrun bc = new Boatrun(_runstate, this); + final BoatRun bc = new BoatRun(runstate, this); ThreadPool.schedule(bc, 10); - _runstate = 0; + runstate = 0; } } public void sendVehicleDeparture(PlayerInstance player) { - if (_vd != null) + if (vd != null) { - player.sendPacket(_vd); + player.sendPacket(vd); } } public VehicleDeparture getVehicleDeparture() { - return _vd; + return vd; } - public void beginCycle() - { - say(10); - final BoatCaptain bc = new BoatCaptain(1, this); - ThreadPool.schedule(bc, 300000); - } - - private int lastx = -1; - private int lasty = -1; - protected boolean needOnVehicleCheckLocation = false; - public void updatePeopleInTheBoat(int x, int y, int z) { - if (_inboat != null) + if (inboat != null) { boolean check = false; if ((lastx == -1) || (lasty == -1)) @@ -268,9 +142,9 @@ public class BoatInstance extends Creature lastx = x; lasty = y; } - for (int i = 0; i < _inboat.size(); i++) + for (int i = 0; i < inboat.size(); i++) { - final PlayerInstance player = _inboat.get(i); + final PlayerInstance player = inboat.get(i); if ((player != null) && player.isInBoat() && (player.getBoat() == this)) { player.getPosition().setXYZ(x, y, z); @@ -285,85 +159,90 @@ public class BoatInstance extends Creature } } - public void begin() + private void beginCycle() { - if (_cycle == 1) + say(10); + final BoatCaptain bc = new BoatCaptain(1, this); + ThreadPool.schedule(bc, 300000); + } + + private void begin() + { + if (cycle == 1) { final Collection knownPlayers = getKnownList().getKnownPlayers().values(); if ((knownPlayers != null) && !knownPlayers.isEmpty()) { - _inboat = new HashMap<>(); + inboat.clear(); int i = 0; for (PlayerInstance player : knownPlayers) { if (player.isInBoat() && (player.getBoat() == this)) { ItemInstance it; - it = player.getInventory().getItemByItemId(_t1.ticketId); + it = player.getInventory().getItemByItemId(pathA.ticketId); if ((it != null) && (it.getCount() >= 1)) { player.getInventory().destroyItem("Boat", it.getObjectId(), 1, player, this); final InventoryUpdate iu = new InventoryUpdate(); iu.addModifiedItem(it); player.sendPacket(iu); - _inboat.put(i, player); + inboat.put(i, player); i++; } - else if ((it == null) && (_t1.ticketId == 0)) + else if ((it == null) && (pathA.ticketId == 0)) { - _inboat.put(i, player); + inboat.put(i, player); i++; } else { - player.teleToLocation(_t1.ntx, _t1.nty, _t1.ntz, false); + player.teleToLocation(pathA.ntx, pathA.nty, pathA.ntz, false); } } } } - final Boatrun bc = new Boatrun(0, this); - ThreadPool.schedule(bc, 0); + ThreadPool.execute(new BoatRun(0, this)); } - else if (_cycle == 2) + else if (cycle == 2) { final Collection knownPlayers = getKnownList().getKnownPlayers().values(); if ((knownPlayers != null) && !knownPlayers.isEmpty()) { - _inboat = new HashMap<>(); + inboat.clear(); int i = 0; for (PlayerInstance player : knownPlayers) { if (player.isInBoat() && (player.getBoat() == this)) { ItemInstance it; - it = player.getInventory().getItemByItemId(_t2.ticketId); + it = player.getInventory().getItemByItemId(pathB.ticketId); if ((it != null) && (it.getCount() >= 1)) { player.getInventory().destroyItem("Boat", it.getObjectId(), 1, player, this); final InventoryUpdate iu = new InventoryUpdate(); iu.addModifiedItem(it); player.sendPacket(iu); - _inboat.put(i, player); + inboat.put(i, player); i++; } - else if ((it == null) && (_t2.ticketId == 0)) + else if ((it == null) && (pathB.ticketId == 0)) { - _inboat.put(i, player); + inboat.put(i, player); i++; } else { - player.teleToLocation(_t2.ntx, _t2.nty, _t2.ntz, false); + player.teleToLocation(pathB.ntx, pathB.nty, pathB.ntz, false); } } } } - final Boatrun bc = new Boatrun(0, this); - ThreadPool.schedule(bc, 0); + ThreadPool.execute(new BoatRun(0, this)); } } - public void say(int id) + private void say(int id) { final Collection knownPlayers = getKnownList().getKnownPlayers().values(); CreatureSay sm; @@ -372,13 +251,13 @@ public class BoatInstance extends Creature { case 10: { - if (_cycle == 1) + if (cycle == 1) { - sm = new CreatureSay(0, Say2.SHOUT, _t1.npc, _t1.sysmess10); + sm = new CreatureSay(0, Say2.SHOUT, pathA.npc, pathA.sysmess10); } else { - sm = new CreatureSay(0, Say2.SHOUT, _t2.npc, _t2.sysmess10); + sm = new CreatureSay(0, Say2.SHOUT, pathB.npc, pathB.sysmess10); } ps = new PlaySound(0, "itemsound.ship_arrival_departure", this); if ((knownPlayers == null) || knownPlayers.isEmpty()) @@ -396,13 +275,13 @@ public class BoatInstance extends Creature } case 5: { - if (_cycle == 1) + if (cycle == 1) { - sm = new CreatureSay(0, Say2.SHOUT, _t1.npc, _t1.sysmess5); + sm = new CreatureSay(0, Say2.SHOUT, pathA.npc, pathA.sysmess5); } else { - sm = new CreatureSay(0, Say2.SHOUT, _t2.npc, _t2.sysmess5); + sm = new CreatureSay(0, Say2.SHOUT, pathB.npc, pathB.sysmess5); } ps = new PlaySound(0, "itemsound.ship_5min", this); if ((knownPlayers == null) || knownPlayers.isEmpty()) @@ -418,13 +297,13 @@ public class BoatInstance extends Creature } case 1: { - if (_cycle == 1) + if (cycle == 1) { - sm = new CreatureSay(0, Say2.SHOUT, _t1.npc, _t1.sysmess1); + sm = new CreatureSay(0, Say2.SHOUT, pathA.npc, pathA.sysmess1); } else { - sm = new CreatureSay(0, Say2.SHOUT, _t2.npc, _t2.sysmess1); + sm = new CreatureSay(0, Say2.SHOUT, pathB.npc, pathB.sysmess1); } ps = new PlaySound(0, "itemsound.ship_1min", this); if ((knownPlayers == null) || knownPlayers.isEmpty()) @@ -440,13 +319,13 @@ public class BoatInstance extends Creature } case 0: { - if (_cycle == 1) + if (cycle == 1) { - sm = new CreatureSay(0, Say2.SHOUT, _t1.npc, _t1.sysmess0); + sm = new CreatureSay(0, Say2.SHOUT, pathA.npc, pathA.sysmess0); } else { - sm = new CreatureSay(0, Say2.SHOUT, _t2.npc, _t2.sysmess0); + sm = new CreatureSay(0, Say2.SHOUT, pathB.npc, pathB.sysmess0); } if ((knownPlayers == null) || knownPlayers.isEmpty()) { @@ -460,13 +339,13 @@ public class BoatInstance extends Creature } case -1: { - if (_cycle == 1) + if (cycle == 1) { - sm = new CreatureSay(0, Say2.SHOUT, _t1.npc, _t1.sysmessb); + sm = new CreatureSay(0, Say2.SHOUT, pathA.npc, pathA.sysmessb); } else { - sm = new CreatureSay(0, Say2.SHOUT, _t2.npc, _t2.sysmessb); + sm = new CreatureSay(0, Say2.SHOUT, pathB.npc, pathB.sysmessb); } ps = new PlaySound(0, "itemsound.ship_arrival_departure", this); for (PlayerInstance player : knownPlayers) @@ -483,28 +362,28 @@ public class BoatInstance extends Creature public void spawn() { - final Collection knownPlayers = getKnownList().getKnownPlayers().values(); - _cycle = 1; + cycle = 1; beginCycle(); + final Collection knownPlayers = getKnownList().getKnownPlayers().values(); if ((knownPlayers == null) || knownPlayers.isEmpty()) { return; } - final VehicleInfo vi = new VehicleInfo(this); + final VehicleInfo info = new VehicleInfo(this); for (PlayerInstance player : knownPlayers) { - player.sendPacket(vi); + player.sendPacket(info); } } - public void setPathA(int idWaypoint1, int idWTicket1, int ntx1, int nty1, int ntz1, String idnpc1, String sysmess10, String sysmess5, String sysmess1, String sysmess0, String sysmessb, Map path) + public void setPathA(int pathId, int ticketId, int ntx, int nty, int ntz, String announcer, String sysmess10, String sysmess5, String sysmess1, String sysmess0, String sysmessb, Map path) { - _t1 = new BoatPathHolder(idWaypoint1, idWTicket1, ntx1, nty1, ntz1, idnpc1, sysmess10, sysmess5, sysmess1, sysmess0, sysmessb, _name, path); + pathA = new BoatPathHolder(pathId, ticketId, ntx, nty, ntz, announcer, sysmess10, sysmess5, sysmess1, sysmess0, sysmessb, path); } - public void setPathB(int idWaypoint1, int idWTicket1, int ntx1, int nty1, int ntz1, String idnpc1, String sysmess10, String sysmess5, String sysmess1, String sysmess0, String sysmessb, Map path) + public void setPathB(int pathId, int ticketId, int ntx, int nty, int ntz, String announcer, String sysmess10, String sysmess5, String sysmess1, String sysmess0, String sysmessb, Map path) { - _t2 = new BoatPathHolder(idWaypoint1, idWTicket1, ntx1, nty1, ntz1, idnpc1, sysmess10, sysmess5, sysmess1, sysmess0, sysmessb, _name, path); + pathB = new BoatPathHolder(pathId, ticketId, ntx, nty, ntz, announcer, sysmess10, sysmess5, sysmess1, sysmess0, sysmessb, path); } @Override @@ -554,4 +433,118 @@ public class BoatInstance extends Creature { return true; } + + private class BoatCaptain implements Runnable + { + private final int _state; + private final BoatInstance _boat; + + public BoatCaptain(int state, BoatInstance instance) + { + _state = state; + _boat = instance; + } + + @Override + public void run() + { + BoatCaptain bc; + switch (_state) + { + case 1: + { + _boat.say(5); + bc = new BoatCaptain(2, _boat); + ThreadPool.schedule(bc, 240000); + break; + } + case 2: + { + _boat.say(1); + bc = new BoatCaptain(3, _boat); + ThreadPool.schedule(bc, 40000); + break; + } + case 3: + { + _boat.say(0); + bc = new BoatCaptain(4, _boat); + ThreadPool.schedule(bc, 20000); + break; + } + case 4: + { + _boat.say(-1); + _boat.begin(); + break; + } + } + } + } + + private class BoatRun implements Runnable + { + private int _state; + private final BoatInstance _boat; + + public BoatRun(int state, BoatInstance instance) + { + _state = state; + _boat = instance; + } + + @Override + public void run() + { + _boat.vd = null; + _boat.needOnVehicleCheckLocation = false; + + if (_boat.cycle == 1) + { + final int time = _boat.pathA.state(_state, _boat); + if (time > 0) + { + _state++; + final BoatRun bc = new BoatRun(_state, _boat); + ThreadPool.schedule(bc, time); + } + else if (time == 0) + { + _boat.cycle = 2; + _boat.say(10); + final BoatCaptain bc = new BoatCaptain(1, _boat); + ThreadPool.schedule(bc, 300000); + } + else + { + _boat.needOnVehicleCheckLocation = true; + _state++; + _boat.runstate = _state; + } + } + else if (_boat.cycle == 2) + { + final int time = _boat.pathB.state(_state, _boat); + if (time > 0) + { + _state++; + final BoatRun bc = new BoatRun(_state, _boat); + ThreadPool.schedule(bc, time); + } + else if (time == 0) + { + _boat.cycle = 1; + _boat.say(10); + final BoatCaptain bc = new BoatCaptain(1, _boat); + ThreadPool.schedule(bc, 300000); + } + else + { + _boat.needOnVehicleCheckLocation = true; + _state++; + _boat.runstate = _state; + } + } + } + } } diff --git a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/holders/BoatPathHolder.java b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/holders/BoatPathHolder.java index 910cfbdd71..b5a66f23aa 100644 --- a/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/holders/BoatPathHolder.java +++ b/L2J_Mobius_C6_Interlude/java/org/l2jmobius/gameserver/model/holders/BoatPathHolder.java @@ -37,7 +37,6 @@ public class BoatPathHolder public int ntx; public int nty; public int ntz; - public String boatName; public String npc; public String sysmess10; public String sysmess5; @@ -55,7 +54,7 @@ public class BoatPathHolder public int time; } - public BoatPathHolder(int pathId, int pTicketId, int pNtx, int pNty, int pNtz, String pNpc, String pSysmess10, String pSysmess5, String pSysmess1, String pSysmess0, String pSysmessb, String pBoatname, Map path) + public BoatPathHolder(int pathId, int pTicketId, int pNtx, int pNty, int pNtz, String pNpc, String pSysmess10, String pSysmess5, String pSysmess1, String pSysmess0, String pSysmessb, Map path) { ticketId = pTicketId; ntx = pNtx; @@ -67,7 +66,6 @@ public class BoatPathHolder sysmess1 = pSysmess1; sysmessb = pSysmessb; sysmess0 = pSysmess0; - boatName = pBoatname; _path = path; _max = _path.size(); } @@ -85,7 +83,7 @@ public class BoatPathHolder boat.getPosition().setHeading((int) (Math.atan2(-sin, -cos) * 10430.378350470452724949566316381) + 32768); - boat._vd = new VehicleDeparture(boat, path.speed1, path.speed2, path.x, path.y, path.z); + boat.vd = new VehicleDeparture(boat, path.speed1, path.speed2, path.x, path.y, path.z); boat.boatSpeed = path.speed1; boat.moveToLocation(path.x, path.y, path.z, path.speed1); final Collection knownPlayers = boat.getKnownList().getKnownPlayers().values(); @@ -95,7 +93,7 @@ public class BoatPathHolder } for (PlayerInstance player : knownPlayers) { - player.sendPacket(boat._vd); + player.sendPacket(boat.vd); } if (path.time == 0) {