forked from MagicBane/Server
Initial Repository Push
This commit is contained in:
@@ -0,0 +1,115 @@
|
||||
package engine.net.client.handlers;
|
||||
|
||||
import engine.Enum;
|
||||
import engine.Enum.DispatchChannel;
|
||||
import engine.exception.MsgSendException;
|
||||
import engine.gameManager.BuildingManager;
|
||||
import engine.gameManager.SessionManager;
|
||||
import engine.net.Dispatch;
|
||||
import engine.net.DispatchMessage;
|
||||
import engine.net.client.ClientConnection;
|
||||
import engine.net.client.msg.ClientNetMsg;
|
||||
import engine.net.client.msg.PlaceAssetMsg;
|
||||
import engine.net.client.msg.TransferGoldToFromBuildingMsg;
|
||||
import engine.net.client.msg.UpdateGoldMsg;
|
||||
import engine.objects.Building;
|
||||
import engine.objects.CharacterItemManager;
|
||||
import engine.objects.Item;
|
||||
import engine.objects.PlayerCharacter;
|
||||
import org.pmw.tinylog.Logger;
|
||||
|
||||
/*
|
||||
* @Author:
|
||||
* @Summary: Processes application protocol message which transfers
|
||||
* gold between a building's strongbox and a player character.
|
||||
*/
|
||||
|
||||
public class TransferGoldToFromBuildingMsgHandler extends AbstractClientMsgHandler {
|
||||
|
||||
public TransferGoldToFromBuildingMsgHandler() {
|
||||
super(TransferGoldToFromBuildingMsg.class);
|
||||
}
|
||||
|
||||
@Override
|
||||
protected boolean _handleNetMsg(ClientNetMsg baseMsg, ClientConnection origin) throws MsgSendException {
|
||||
|
||||
PlayerCharacter player;
|
||||
Building building;
|
||||
CharacterItemManager itemMan;
|
||||
Item goldItem;
|
||||
TransferGoldToFromBuildingMsg msg;
|
||||
Dispatch dispatch;
|
||||
|
||||
player = SessionManager.getPlayerCharacter(origin);
|
||||
|
||||
if (player == null)
|
||||
return true;
|
||||
|
||||
msg = (TransferGoldToFromBuildingMsg) baseMsg;
|
||||
|
||||
building = BuildingManager.getBuildingFromCache(msg.getObjectID());
|
||||
|
||||
if (building == null)
|
||||
return true;
|
||||
|
||||
if (msg.getDirection() == 2){
|
||||
|
||||
if(!ManageCityAssetMsgHandler.playerCanManageNotFriends(player, building))
|
||||
return true;
|
||||
if (building.setReserve(msg.getUnknown01(),player)){
|
||||
dispatch = Dispatch.borrow(player, msg);
|
||||
DispatchMessage.dispatchMsgDispatch(dispatch, DispatchChannel.SECONDARY);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
// if (building.getTimeStamp(MBServerStatics.STRONGBOX_DELAY_STRING) > System.currentTimeMillis()){
|
||||
// ErrorPopupMsg.sendErrorMsg(player, MBServerStatics.STRONGBOX_DELAY_OUTPUT);
|
||||
// return true;
|
||||
// }
|
||||
|
||||
//building.getTimestamps().put(MBServerStatics.STRONGBOX_DELAY_STRING, System.currentTimeMillis() + MBServerStatics.ONE_MINUTE);
|
||||
|
||||
itemMan = player.getCharItemManager();
|
||||
|
||||
goldItem = itemMan.getGoldInventory();
|
||||
|
||||
if (goldItem == null) {
|
||||
Logger.error("Could not access gold item");
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
// Update in-game gold values for player and building
|
||||
|
||||
|
||||
try {
|
||||
|
||||
|
||||
if (!itemMan.transferGoldToFromBuilding(msg.getAmount(), building))
|
||||
return true;
|
||||
|
||||
|
||||
UpdateGoldMsg ugm = new UpdateGoldMsg(player);
|
||||
ugm.configure();
|
||||
dispatch = Dispatch.borrow(player, ugm);
|
||||
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);
|
||||
|
||||
// Refresh the player's inventory if it's currently open
|
||||
|
||||
// Refresh the tree's window to update strongbox
|
||||
|
||||
|
||||
msg.setAmount(building.getStrongboxValue());
|
||||
dispatch = Dispatch.borrow(player, msg);
|
||||
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);
|
||||
|
||||
} catch (Exception e) {
|
||||
PlaceAssetMsg.sendPlaceAssetError(player.getClientConnection(), 1, "A Serious error has occurred. Please post details for to ensure transaction integrity");
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user