package engine.net.client.handlers;

import engine.Enum.AllianceType;
import engine.exception.MsgSendException;
import engine.gameManager.ChatManager;
import engine.gameManager.SessionManager;
import engine.net.Dispatch;
import engine.net.client.ClientConnection;
import engine.net.client.msg.AllianceChangeMsg;
import engine.net.client.msg.ClientNetMsg;
import engine.net.client.msg.RecommendNationMsg;
import engine.objects.Guild;
import engine.objects.PlayerCharacter;

/*
 * @Author:
 * @Summary: Processes application protocol message which handles
 * protecting and unprotecting city assets
 */
public class RecommendNationMsgHandler extends AbstractClientMsgHandler {

	public RecommendNationMsgHandler() {
		super(RecommendNationMsg.class);
	}

	@Override
	protected boolean _handleNetMsg(ClientNetMsg baseMsg, ClientConnection origin) throws MsgSendException {

		// Member variable declaration

		PlayerCharacter player;
		RecommendNationMsg msg;


		// Member variable assignment

		msg = (RecommendNationMsg) baseMsg;

		player = SessionManager.getPlayerCharacter(origin);

		if (player == null)
			return true;


		RecommendNationMsgHandler.RecommendNation(player.getGuild(), Guild.getGuild(msg.getGuildID()), msg, origin);




		//		dispatch = Dispatch.borrow(player, baseMsg);
		//		DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);

		return true;

	}

	private static void RecommendNation(Guild fromGuild, Guild toGuild, RecommendNationMsg msg, ClientConnection origin) {

		// Member variable declaration
		Dispatch dispatch;

		// Member variable assignment

		if (fromGuild == null)
			return;

		if (toGuild == null)
			return;

		AllianceType allianceType;
		if (msg.getAlly() == 1)
			allianceType = AllianceType.RecommendedAlly;
		else
			allianceType = AllianceType.RecommendedEnemy;

		if (!fromGuild.addGuildToAlliance(new AllianceChangeMsg(origin.getPlayerCharacter(),fromGuild.getObjectUUID(), toGuild.getObjectUUID(), (byte)0, 0), allianceType, toGuild, origin.getPlayerCharacter()))
			return;
		String alliance = msg.getAlly() == 1? "ally" : "enemy";

		ChatManager.chatGuildInfo(fromGuild, origin.getPlayerCharacter().getFirstName() + " has recommended " + toGuild.getName() + " as an " + alliance );

		//		dispatch = Dispatch.borrow(origin.getPlayerCharacter(), msg);
		//		DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);


	}



}