package engine.net.client.handlers; import engine.gameManager.DispatchManager; import engine.mbEnums; import engine.mbEnums.DispatchChannel; import engine.net.Dispatch; import engine.net.client.ClientConnection; import engine.net.client.msg.ArcMineChangeProductionMsg; import engine.net.client.msg.ClientNetMsg; import engine.objects.GuildStatusController; import engine.objects.Mine; import engine.objects.PlayerCharacter; /* * @Author: * @Summary: Processes application protocol message which keeps * client's tcp connection open. */ public class ArcMineChangeProductionMsgHandler extends AbstractClientMsgHandler { public ArcMineChangeProductionMsgHandler() { super(); } @Override protected boolean _handleNetMsg(ClientNetMsg baseMsg, ClientConnection origin) { PlayerCharacter playerCharacter = origin.getPlayerCharacter(); ArcMineChangeProductionMsg changeProductionMsg = (ArcMineChangeProductionMsg) baseMsg; if (playerCharacter == null) return true; //TODO verify this against the warehouse? if (GuildStatusController.isInnerCouncil(playerCharacter.getGuildStatus()) == false) // is this only GL? return true; Mine mine = Mine.getMine(changeProductionMsg.getMineID()); if (mine == null) return true; //make sure mine belongs to guild if (mine.getOwningGuild().isEmptyGuild() || mine.getOwningGuild().getObjectUUID() != playerCharacter.getGuild().getObjectUUID()) return true; //make sure valid resource mbEnums.ResourceType resource = mbEnums.ResourceType.templateHashLookup.get(changeProductionMsg.getResourceHash()); if (resource == null) return true; //update resource mine.changeProductionType(resource); Dispatch dispatch = Dispatch.borrow(playerCharacter, changeProductionMsg); DispatchManager.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY); return true; } }