|
|
@ -15,9 +15,6 @@ import engine.net.client.msg.*; |
|
|
|
import engine.objects.*; |
|
|
|
import engine.objects.*; |
|
|
|
import org.pmw.tinylog.Logger; |
|
|
|
import org.pmw.tinylog.Logger; |
|
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
|
|
|
import java.util.HashMap; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/* |
|
|
|
/* |
|
|
|
* @Author: |
|
|
|
* @Author: |
|
|
|
* @Summary: Processes application protocol message which |
|
|
|
* @Summary: Processes application protocol message which |
|
|
@ -26,8 +23,6 @@ import java.util.HashMap; |
|
|
|
|
|
|
|
|
|
|
|
public class MinionTrainingMsgHandler extends AbstractClientMsgHandler { |
|
|
|
public class MinionTrainingMsgHandler extends AbstractClientMsgHandler { |
|
|
|
|
|
|
|
|
|
|
|
public static HashMap<Integer, ArrayList<Integer>> _minionsByCaptain = null; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public MinionTrainingMsgHandler() { |
|
|
|
public MinionTrainingMsgHandler() { |
|
|
|
super(MinionTrainingMessage.class); |
|
|
|
super(MinionTrainingMessage.class); |
|
|
|
} |
|
|
|
} |
|
|
@ -37,10 +32,11 @@ public class MinionTrainingMsgHandler extends AbstractClientMsgHandler { |
|
|
|
|
|
|
|
|
|
|
|
MinionTrainingMessage minionMsg = (MinionTrainingMessage) baseMsg; |
|
|
|
MinionTrainingMessage minionMsg = (MinionTrainingMessage) baseMsg; |
|
|
|
|
|
|
|
|
|
|
|
PlayerCharacter player = SessionManager.getPlayerCharacter(origin); |
|
|
|
PlayerCharacter playerCharacter = SessionManager.getPlayerCharacter(origin); |
|
|
|
|
|
|
|
|
|
|
|
if (player == null) |
|
|
|
if (playerCharacter == null) |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
|
|
if (minionMsg.getNpcType() == Enum.GameObjectType.NPC.ordinal()) { |
|
|
|
if (minionMsg.getNpcType() == Enum.GameObjectType.NPC.ordinal()) { |
|
|
|
|
|
|
|
|
|
|
|
NPC npc = NPC.getFromCache(minionMsg.getNpcID()); |
|
|
|
NPC npc = NPC.getFromCache(minionMsg.getNpcID()); |
|
|
@ -48,14 +44,15 @@ public class MinionTrainingMsgHandler extends AbstractClientMsgHandler { |
|
|
|
if (npc == null) |
|
|
|
if (npc == null) |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
|
|
Building b = BuildingManager.getBuildingFromCache(minionMsg.getBuildingID()); |
|
|
|
Building building = BuildingManager.getBuildingFromCache(minionMsg.getBuildingID()); |
|
|
|
|
|
|
|
|
|
|
|
if (b == null) |
|
|
|
if (building == null) |
|
|
|
return true; |
|
|
|
return true; |
|
|
|
|
|
|
|
|
|
|
|
//clear minion
|
|
|
|
//clear minion
|
|
|
|
|
|
|
|
|
|
|
|
if (npc.minionLock.writeLock().tryLock()) { |
|
|
|
if (npc.minionLock.writeLock().tryLock()) { |
|
|
|
|
|
|
|
|
|
|
|
try { |
|
|
|
try { |
|
|
|
if (minionMsg.getType() == 2) { |
|
|
|
if (minionMsg.getType() == 2) { |
|
|
|
|
|
|
|
|
|
|
@ -86,23 +83,21 @@ public class MinionTrainingMsgHandler extends AbstractClientMsgHandler { |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
// we Found the move to remove, lets break the for loop so it doesnt look for more.
|
|
|
|
ManageCityAssetsMsg mca1 = new ManageCityAssetsMsg(playerCharacter, building); |
|
|
|
|
|
|
|
|
|
|
|
ManageCityAssetsMsg mca1 = new ManageCityAssetsMsg(player, b); |
|
|
|
|
|
|
|
mca1.actionType = 3; |
|
|
|
mca1.actionType = 3; |
|
|
|
mca1.setTargetType(b.getObjectType().ordinal()); |
|
|
|
mca1.setTargetType(building.getObjectType().ordinal()); |
|
|
|
mca1.setTargetID(b.getObjectUUID()); |
|
|
|
mca1.setTargetID(building.getObjectUUID()); |
|
|
|
|
|
|
|
|
|
|
|
mca1.setTargetType3(npc.getObjectType().ordinal()); |
|
|
|
mca1.setTargetType3(npc.getObjectType().ordinal()); |
|
|
|
mca1.setTargetID3(npc.getObjectUUID()); |
|
|
|
mca1.setTargetID3(npc.getObjectUUID()); |
|
|
|
mca1.setAssetName1(b.getName()); |
|
|
|
mca1.setAssetName1(building.getName()); |
|
|
|
mca1.setUnknown54(1); |
|
|
|
mca1.setUnknown54(1); |
|
|
|
|
|
|
|
|
|
|
|
Dispatch dispatch = Dispatch.borrow(player, mca1); |
|
|
|
Dispatch dispatch = Dispatch.borrow(playerCharacter, mca1); |
|
|
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY); |
|
|
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY); |
|
|
|
|
|
|
|
|
|
|
|
ManageNPCMsg mnm = new ManageNPCMsg(npc); |
|
|
|
ManageNPCMsg mnm = new ManageNPCMsg(npc); |
|
|
|
dispatch = Dispatch.borrow(player, mnm); |
|
|
|
dispatch = Dispatch.borrow(playerCharacter, mnm); |
|
|
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY); |
|
|
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY); |
|
|
|
|
|
|
|
|
|
|
|
//Add Minion
|
|
|
|
//Add Minion
|
|
|
@ -156,7 +151,7 @@ public class MinionTrainingMsgHandler extends AbstractClientMsgHandler { |
|
|
|
|
|
|
|
|
|
|
|
ManageNPCMsg mnm = new ManageNPCMsg(npc); |
|
|
|
ManageNPCMsg mnm = new ManageNPCMsg(npc); |
|
|
|
mnm.setMessageType(1); |
|
|
|
mnm.setMessageType(1); |
|
|
|
Dispatch dispatch = Dispatch.borrow(player, mnm); |
|
|
|
Dispatch dispatch = Dispatch.borrow(playerCharacter, mnm); |
|
|
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY); |
|
|
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY); |
|
|
|
|
|
|
|
|
|
|
|
} finally { |
|
|
|
} finally { |
|
|
@ -199,7 +194,21 @@ public class MinionTrainingMsgHandler extends AbstractClientMsgHandler { |
|
|
|
|
|
|
|
|
|
|
|
DbManager.removeFromCache(toRemove); |
|
|
|
DbManager.removeFromCache(toRemove); |
|
|
|
|
|
|
|
|
|
|
|
ManageCityAssetsMsg mca1 = new ManageCityAssetsMsg(player, building); |
|
|
|
if (toRemove.agentType.equals(Enum.AIAgentType.SIEGEENGINE)) { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
PlayerCharacter trebOwner = (PlayerCharacter) toRemove.guardCaptain; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (trebOwner != null) { |
|
|
|
|
|
|
|
trebOwner.setPet(null); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
toRemove.guardCaptain = null; |
|
|
|
|
|
|
|
PetMsg petMsg = new PetMsg(5, null); |
|
|
|
|
|
|
|
Dispatch dispatch = Dispatch.borrow(trebOwner, petMsg); |
|
|
|
|
|
|
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY); |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ManageCityAssetsMsg mca1 = new ManageCityAssetsMsg(playerCharacter, building); |
|
|
|
mca1.actionType = 3; |
|
|
|
mca1.actionType = 3; |
|
|
|
mca1.setTargetType(building.getObjectType().ordinal()); |
|
|
|
mca1.setTargetType(building.getObjectType().ordinal()); |
|
|
|
mca1.setTargetID(building.getObjectUUID()); |
|
|
|
mca1.setTargetID(building.getObjectUUID()); |
|
|
@ -209,11 +218,11 @@ public class MinionTrainingMsgHandler extends AbstractClientMsgHandler { |
|
|
|
mca1.setAssetName1(building.getName()); |
|
|
|
mca1.setAssetName1(building.getName()); |
|
|
|
mca1.setUnknown54(1); |
|
|
|
mca1.setUnknown54(1); |
|
|
|
|
|
|
|
|
|
|
|
Dispatch dispatch = Dispatch.borrow(player, mca1); |
|
|
|
Dispatch dispatch = Dispatch.borrow(playerCharacter, mca1); |
|
|
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY); |
|
|
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY); |
|
|
|
|
|
|
|
|
|
|
|
ManageNPCMsg mnm = new ManageNPCMsg(npc); |
|
|
|
ManageNPCMsg mnm = new ManageNPCMsg(npc); |
|
|
|
dispatch = Dispatch.borrow(player, mnm); |
|
|
|
dispatch = Dispatch.borrow(playerCharacter, mnm); |
|
|
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY); |
|
|
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY); |
|
|
|
|
|
|
|
|
|
|
|
//Add Minion
|
|
|
|
//Add Minion
|
|
|
@ -275,7 +284,7 @@ public class MinionTrainingMsgHandler extends AbstractClientMsgHandler { |
|
|
|
|
|
|
|
|
|
|
|
ManageNPCMsg mnm = new ManageNPCMsg(npc); |
|
|
|
ManageNPCMsg mnm = new ManageNPCMsg(npc); |
|
|
|
mnm.setMessageType(1); |
|
|
|
mnm.setMessageType(1); |
|
|
|
Dispatch dispatch = Dispatch.borrow(player, mnm); |
|
|
|
Dispatch dispatch = Dispatch.borrow(playerCharacter, mnm); |
|
|
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY); |
|
|
|
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY); |
|
|
|
|
|
|
|
|
|
|
|
} catch (Exception e) { |
|
|
|
} catch (Exception e) { |
|
|
|