Minor cleanup for previous commit.

This commit is contained in:
MobiusDevelopment
2020-01-29 00:57:22 +00:00
parent 78bf4dc9b3
commit 3f33e53666
3 changed files with 194 additions and 209 deletions

View File

@@ -41,7 +41,6 @@ public class BoatData implements IXmlReader
private static final Logger LOGGER = Logger.getLogger(BoatData.class.getName()); private static final Logger LOGGER = Logger.getLogger(BoatData.class.getName());
private final Map<Integer, BoatInstance> _boats = new HashMap<>(); private final Map<Integer, BoatInstance> _boats = new HashMap<>();
private final Map<Integer, Map<Integer, BoatPoint>> _paths = new HashMap<>();
protected BoatData() protected BoatData()
{ {
@@ -52,10 +51,7 @@ public class BoatData implements IXmlReader
public void load() public void load()
{ {
_boats.clear(); _boats.clear();
_paths.clear();
parseDatapackFile("data/Boats.xml"); parseDatapackFile("data/Boats.xml");
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _boats.size() + " boats.");
LOGGER.info(getClass().getSimpleName() + ": Loaded " + _paths.size() + " paths.");
} }
@Override @Override
@@ -71,6 +67,7 @@ public class BoatData implements IXmlReader
int id; int id;
int index; int index;
final StatSet set = new StatSet(); final StatSet set = new StatSet();
final Map<Integer, Map<Integer, BoatPoint>> paths = new HashMap<>();
final Node n = doc.getFirstChild(); final Node n = doc.getFirstChild();
for (Node node = n.getFirstChild(); node != null; node = node.getNextSibling()) 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()); set.set(attr.getNodeName(), attr.getNodeValue());
} }
final String name = set.getString("name");
final StatSet npcDat = new StatSet(); final StatSet npcDat = new StatSet();
npcDat.set("npcId", set.getInt("id")); npcDat.set("npcId", set.getInt("id"));
npcDat.set("level", 0); npcDat.set("level", 0);
@@ -119,7 +115,7 @@ public class BoatData implements IXmlReader
npcDat.set("armor", 0); npcDat.set("armor", 0);
npcDat.set("baseWalkSpd", 0); npcDat.set("baseWalkSpd", 0);
npcDat.set("baseRunSpd", 0); npcDat.set("baseRunSpd", 0);
npcDat.set("name", name); npcDat.set("name", set.getString("name"));
npcDat.set("baseHpMax", 50000); npcDat.set("baseHpMax", 50000);
npcDat.set("baseHpReg", 3.e-3f); npcDat.set("baseHpReg", 3.e-3f);
npcDat.set("baseMpReg", 3.e-3f); npcDat.set("baseMpReg", 3.e-3f);
@@ -127,11 +123,11 @@ public class BoatData implements IXmlReader
npcDat.set("baseMDef", 100); npcDat.set("baseMDef", 100);
final CreatureTemplate template = new CreatureTemplate(npcDat); 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.getPosition().setHeading(set.getInt("heading"));
boat.setXYZ(set.getInt("spawnX"), set.getInt("spawnY"), set.getInt("spawnZ")); 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.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.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(); boat.spawn();
_boats.put(boat.getObjectId(), boat); _boats.put(boat.getObjectId(), boat);
@@ -140,7 +136,7 @@ public class BoatData implements IXmlReader
{ {
index = 0; index = 0;
id = Integer.parseInt(node.getAttributes().getNamedItem("id").getNodeValue()); id = Integer.parseInt(node.getAttributes().getNamedItem("id").getNodeValue());
_paths.put(id, new HashMap<Integer, BoatPoint>()); paths.put(id, new HashMap<Integer, BoatPoint>());
for (Node b = node.getFirstChild(); b != null; b = b.getNextSibling()) for (Node b = node.getFirstChild(); b != null; b = b.getNextSibling())
{ {
if (!"point".equalsIgnoreCase(b.getNodeName())) if (!"point".equalsIgnoreCase(b.getNodeName()))
@@ -163,10 +159,13 @@ public class BoatData implements IXmlReader
point.z = set.getInt("z"); point.z = set.getInt("z");
point.time = set.getInt("time"); 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) catch (Exception e)
{ {
@@ -179,11 +178,6 @@ public class BoatData implements IXmlReader
return _boats.get(boatId); return _boats.get(boatId);
} }
public Map<Integer, BoatPoint> getBoatPath(int pathId)
{
return _paths.get(pathId);
}
public static final BoatData getInstance() public static final BoatData getInstance()
{ {
return SingletonHolder.INSTANCE; return SingletonHolder.INSTANCE;

View File

@@ -43,19 +43,20 @@ import org.l2jmobius.gameserver.network.serverpackets.VehicleInfo;
public class BoatInstance extends Creature public class BoatInstance extends Creature
{ {
public float boatSpeed; 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<Integer, PlayerInstance> inboat = new HashMap<>();
private final String _name; public BoatInstance(int objectId, CreatureTemplate template)
protected BoatPathHolder _t1;
protected BoatPathHolder _t2;
protected int _cycle = 0;
public VehicleDeparture _vd = null;
private Map<Integer, PlayerInstance> _inboat;
public BoatInstance(int objectId, CreatureTemplate template, String name)
{ {
super(objectId, template); super(objectId, template);
super.setKnownList(new BoatKnownList(this)); super.setKnownList(new BoatKnownList(this));
_name = name;
} }
public void moveToLocation(int x, int y, int z, float speed) public void moveToLocation(int x, int y, int z, float speed)
@@ -101,159 +102,32 @@ public class BoatInstance extends Creature
GameTimeController.getInstance().registerMovingObject(this); 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() 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); ThreadPool.schedule(bc, 10);
_runstate = 0; runstate = 0;
} }
} }
public void sendVehicleDeparture(PlayerInstance player) public void sendVehicleDeparture(PlayerInstance player)
{ {
if (_vd != null) if (vd != null)
{ {
player.sendPacket(_vd); player.sendPacket(vd);
} }
} }
public VehicleDeparture getVehicleDeparture() 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) public void updatePeopleInTheBoat(int x, int y, int z)
{ {
if (_inboat != null) if (inboat != null)
{ {
boolean check = false; boolean check = false;
if ((lastx == -1) || (lasty == -1)) if ((lastx == -1) || (lasty == -1))
@@ -268,9 +142,9 @@ public class BoatInstance extends Creature
lastx = x; lastx = x;
lasty = y; 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)) if ((player != null) && player.isInBoat() && (player.getBoat() == this))
{ {
player.getPosition().setXYZ(x, y, z); 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<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values(); final Collection<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values();
if ((knownPlayers != null) && !knownPlayers.isEmpty()) if ((knownPlayers != null) && !knownPlayers.isEmpty())
{ {
_inboat = new HashMap<>(); inboat.clear();
int i = 0; int i = 0;
for (PlayerInstance player : knownPlayers) for (PlayerInstance player : knownPlayers)
{ {
if (player.isInBoat() && (player.getBoat() == this)) if (player.isInBoat() && (player.getBoat() == this))
{ {
ItemInstance it; ItemInstance it;
it = player.getInventory().getItemByItemId(_t1.ticketId); it = player.getInventory().getItemByItemId(pathA.ticketId);
if ((it != null) && (it.getCount() >= 1)) if ((it != null) && (it.getCount() >= 1))
{ {
player.getInventory().destroyItem("Boat", it.getObjectId(), 1, player, this); player.getInventory().destroyItem("Boat", it.getObjectId(), 1, player, this);
final InventoryUpdate iu = new InventoryUpdate(); final InventoryUpdate iu = new InventoryUpdate();
iu.addModifiedItem(it); iu.addModifiedItem(it);
player.sendPacket(iu); player.sendPacket(iu);
_inboat.put(i, player); inboat.put(i, player);
i++; i++;
} }
else if ((it == null) && (_t1.ticketId == 0)) else if ((it == null) && (pathA.ticketId == 0))
{ {
_inboat.put(i, player); inboat.put(i, player);
i++; i++;
} }
else 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.execute(new BoatRun(0, this));
ThreadPool.schedule(bc, 0);
} }
else if (_cycle == 2) else if (cycle == 2)
{ {
final Collection<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values(); final Collection<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values();
if ((knownPlayers != null) && !knownPlayers.isEmpty()) if ((knownPlayers != null) && !knownPlayers.isEmpty())
{ {
_inboat = new HashMap<>(); inboat.clear();
int i = 0; int i = 0;
for (PlayerInstance player : knownPlayers) for (PlayerInstance player : knownPlayers)
{ {
if (player.isInBoat() && (player.getBoat() == this)) if (player.isInBoat() && (player.getBoat() == this))
{ {
ItemInstance it; ItemInstance it;
it = player.getInventory().getItemByItemId(_t2.ticketId); it = player.getInventory().getItemByItemId(pathB.ticketId);
if ((it != null) && (it.getCount() >= 1)) if ((it != null) && (it.getCount() >= 1))
{ {
player.getInventory().destroyItem("Boat", it.getObjectId(), 1, player, this); player.getInventory().destroyItem("Boat", it.getObjectId(), 1, player, this);
final InventoryUpdate iu = new InventoryUpdate(); final InventoryUpdate iu = new InventoryUpdate();
iu.addModifiedItem(it); iu.addModifiedItem(it);
player.sendPacket(iu); player.sendPacket(iu);
_inboat.put(i, player); inboat.put(i, player);
i++; i++;
} }
else if ((it == null) && (_t2.ticketId == 0)) else if ((it == null) && (pathB.ticketId == 0))
{ {
_inboat.put(i, player); inboat.put(i, player);
i++; i++;
} }
else 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.execute(new BoatRun(0, this));
ThreadPool.schedule(bc, 0);
} }
} }
public void say(int id) private void say(int id)
{ {
final Collection<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values(); final Collection<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values();
CreatureSay sm; CreatureSay sm;
@@ -372,13 +251,13 @@ public class BoatInstance extends Creature
{ {
case 10: 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 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); ps = new PlaySound(0, "itemsound.ship_arrival_departure", this);
if ((knownPlayers == null) || knownPlayers.isEmpty()) if ((knownPlayers == null) || knownPlayers.isEmpty())
@@ -396,13 +275,13 @@ public class BoatInstance extends Creature
} }
case 5: 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 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); ps = new PlaySound(0, "itemsound.ship_5min", this);
if ((knownPlayers == null) || knownPlayers.isEmpty()) if ((knownPlayers == null) || knownPlayers.isEmpty())
@@ -418,13 +297,13 @@ public class BoatInstance extends Creature
} }
case 1: 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 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); ps = new PlaySound(0, "itemsound.ship_1min", this);
if ((knownPlayers == null) || knownPlayers.isEmpty()) if ((knownPlayers == null) || knownPlayers.isEmpty())
@@ -440,13 +319,13 @@ public class BoatInstance extends Creature
} }
case 0: 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 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()) if ((knownPlayers == null) || knownPlayers.isEmpty())
{ {
@@ -460,13 +339,13 @@ public class BoatInstance extends Creature
} }
case -1: 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 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); ps = new PlaySound(0, "itemsound.ship_arrival_departure", this);
for (PlayerInstance player : knownPlayers) for (PlayerInstance player : knownPlayers)
@@ -483,28 +362,28 @@ public class BoatInstance extends Creature
public void spawn() public void spawn()
{ {
final Collection<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values(); cycle = 1;
_cycle = 1;
beginCycle(); beginCycle();
final Collection<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values();
if ((knownPlayers == null) || knownPlayers.isEmpty()) if ((knownPlayers == null) || knownPlayers.isEmpty())
{ {
return; return;
} }
final VehicleInfo vi = new VehicleInfo(this); final VehicleInfo info = new VehicleInfo(this);
for (PlayerInstance player : knownPlayers) 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<Integer, BoatPoint> 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<Integer, BoatPoint> 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<Integer, BoatPoint> 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<Integer, BoatPoint> 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 @Override
@@ -554,4 +433,118 @@ public class BoatInstance extends Creature
{ {
return true; 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;
}
}
}
}
} }

View File

@@ -37,7 +37,6 @@ public class BoatPathHolder
public int ntx; public int ntx;
public int nty; public int nty;
public int ntz; public int ntz;
public String boatName;
public String npc; public String npc;
public String sysmess10; public String sysmess10;
public String sysmess5; public String sysmess5;
@@ -55,7 +54,7 @@ public class BoatPathHolder
public int time; 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<Integer, BoatPoint> 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<Integer, BoatPoint> path)
{ {
ticketId = pTicketId; ticketId = pTicketId;
ntx = pNtx; ntx = pNtx;
@@ -67,7 +66,6 @@ public class BoatPathHolder
sysmess1 = pSysmess1; sysmess1 = pSysmess1;
sysmessb = pSysmessb; sysmessb = pSysmessb;
sysmess0 = pSysmess0; sysmess0 = pSysmess0;
boatName = pBoatname;
_path = path; _path = path;
_max = _path.size(); _max = _path.size();
} }
@@ -85,7 +83,7 @@ public class BoatPathHolder
boat.getPosition().setHeading((int) (Math.atan2(-sin, -cos) * 10430.378350470452724949566316381) + 32768); 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.boatSpeed = path.speed1;
boat.moveToLocation(path.x, path.y, path.z, path.speed1); boat.moveToLocation(path.x, path.y, path.z, path.speed1);
final Collection<PlayerInstance> knownPlayers = boat.getKnownList().getKnownPlayers().values(); final Collection<PlayerInstance> knownPlayers = boat.getKnownList().getKnownPlayers().values();
@@ -95,7 +93,7 @@ public class BoatPathHolder
} }
for (PlayerInstance player : knownPlayers) for (PlayerInstance player : knownPlayers)
{ {
player.sendPacket(boat._vd); player.sendPacket(boat.vd);
} }
if (path.time == 0) if (path.time == 0)
{ {