Minor cleanup for previous commit.
This commit is contained in:
parent
78bf4dc9b3
commit
3f33e53666
@ -41,7 +41,6 @@ public class BoatData implements IXmlReader
|
||||
private static final Logger LOGGER = Logger.getLogger(BoatData.class.getName());
|
||||
|
||||
private final Map<Integer, BoatInstance> _boats = new HashMap<>();
|
||||
private final Map<Integer, Map<Integer, BoatPoint>> _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<Integer, Map<Integer, BoatPoint>> 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<Integer, BoatPoint>());
|
||||
paths.put(id, new HashMap<Integer, BoatPoint>());
|
||||
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<Integer, BoatPoint> getBoatPath(int pathId)
|
||||
{
|
||||
return _paths.get(pathId);
|
||||
}
|
||||
|
||||
public static final BoatData getInstance()
|
||||
{
|
||||
return SingletonHolder.INSTANCE;
|
||||
|
@ -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<Integer, PlayerInstance> inboat = new HashMap<>();
|
||||
|
||||
private final String _name;
|
||||
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)
|
||||
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<PlayerInstance> 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<PlayerInstance> 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<PlayerInstance> 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<PlayerInstance> knownPlayers = getKnownList().getKnownPlayers().values();
|
||||
_cycle = 1;
|
||||
cycle = 1;
|
||||
beginCycle();
|
||||
final Collection<PlayerInstance> 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<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
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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<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;
|
||||
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<PlayerInstance> 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)
|
||||
{
|
||||
|
Loading…
Reference in New Issue
Block a user