Public Repository for the Magicbane Shadowbane Emulator
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

153 lines
4.5 KiB

package engine.net.client.handlers;
import engine.exception.MsgSendException;
import engine.gameManager.DispatchManager;
import engine.gameManager.SessionManager;
import engine.mbEnums;
import engine.mbEnums.AllianceType;
import engine.net.Dispatch;
import engine.net.client.ClientConnection;
import engine.net.client.msg.AllianceChangeMsg;
import engine.net.client.msg.ClientNetMsg;
import engine.objects.Guild;
import engine.objects.GuildStatusController;
import engine.objects.PlayerCharacter;
/*
* @Author:
* @Summary: Processes application protocol message which handles
* protecting and unprotecting city assets
*/
public class AllianceChangeMsgHandler extends AbstractClientMsgHandler {
public AllianceChangeMsgHandler() {
super();
}
private static void MakeEnemy(Guild fromGuild, Guild toGuild, AllianceChangeMsg msg, ClientConnection origin) {
// Member variable declaration
Dispatch dispatch;
// Member variable assignment
if (fromGuild == null)
return;
if (toGuild == null)
return;
if (!Guild.sameGuild(origin.getPlayerCharacter().getGuild(), fromGuild)) {
msg.setMsgType(AllianceChangeMsg.ERROR_NOT_SAME_GUILD);
dispatch = Dispatch.borrow(origin.getPlayerCharacter(), msg);
DispatchManager.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.SECONDARY);
return;
}
if (!GuildStatusController.isInnerCouncil(origin.getPlayerCharacter().getGuildStatus()) && !GuildStatusController.isGuildLeader(origin.getPlayerCharacter().getGuildStatus())) {
msg.setMsgType(AllianceChangeMsg.ERROR_NOT_AUTHORIZED);
dispatch = Dispatch.borrow(origin.getPlayerCharacter(), msg);
DispatchManager.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.SECONDARY);
return;
}
dispatch = Dispatch.borrow(origin.getPlayerCharacter(), msg);
DispatchManager.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.SECONDARY);
}
private static void makeAlly(Guild fromGuild, Guild toGuild, AllianceChangeMsg msg, ClientConnection origin) {
// Member variable declaration
Dispatch dispatch;
// Member variable assignment
if (fromGuild == null)
return;
if (toGuild == null)
return;
dispatch = Dispatch.borrow(origin.getPlayerCharacter(), msg);
DispatchManager.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.SECONDARY);
}
private static void removeFromAlliance(Guild fromGuild, Guild toGuild, AllianceChangeMsg msg, ClientConnection origin) {
// Member variable declaration
Dispatch dispatch;
// Member variable assignment
if (fromGuild == null)
return;
if (toGuild == null)
return;
dispatch = Dispatch.borrow(origin.getPlayerCharacter(), msg);
DispatchManager.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.SECONDARY);
}
@Override
protected boolean _handleNetMsg(ClientNetMsg baseMsg, ClientConnection origin) throws MsgSendException {
// Member variable declaration
PlayerCharacter player;
AllianceChangeMsg msg;
// Member variable assignment
msg = (AllianceChangeMsg) baseMsg;
player = SessionManager.getPlayerCharacter(origin);
if (player == null)
return true;
Guild toGuild = null;
toGuild = Guild.getGuild(msg.getSourceGuildID());
if (toGuild.isEmptyGuild())
return true;
if (player.getGuild().isEmptyGuild())
return true;
switch (msg.getMsgType()) {
case AllianceChangeMsg.MAKE_ALLY:
case 1: //allyfromRecommended
player.getGuild().addGuildToAlliance(msg, AllianceType.Ally, toGuild, player);
break;
case AllianceChangeMsg.MAKE_ENEMY:
case 2: //enemy recommend
player.getGuild().addGuildToAlliance(msg, AllianceType.Enemy, toGuild, player);
break;
case 3:
case 5:
case 7:
player.getGuild().removeGuildFromAllAlliances(toGuild);
break;
}
msg.setMsgType(AllianceChangeMsg.INFO_SUCCESS);
Dispatch dispatch = Dispatch.borrow(player, msg);
DispatchManager.dispatchMsgDispatch(dispatch, mbEnums.DispatchChannel.SECONDARY);
return true;
}
}