From a2d7c76991aec2ba6d296ac342c46b16be04dcaa Mon Sep 17 00:00:00 2001 From: Tacef Ine Date: Tue, 18 Jul 2017 18:58:47 +0200 Subject: [PATCH] Changed session to tradeSession for continuity Trading an Equipped Item no longer aborts the Trade Added a Warning when trading an Equipped Item Trading a No Trade Item will abort the Trade Added a notifcation when attemptint to trade a NoTrade Item Removed additional blanklines in Securetrade ObjController --- .../zone/object_controller/SecureTrade.java | 2 -- src/services/trade/TradeService.java | 23 +++++++++++-------- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/network/packets/swg/zone/object_controller/SecureTrade.java b/src/network/packets/swg/zone/object_controller/SecureTrade.java index 03e2ea267..2a3e34fa0 100644 --- a/src/network/packets/swg/zone/object_controller/SecureTrade.java +++ b/src/network/packets/swg/zone/object_controller/SecureTrade.java @@ -84,6 +84,4 @@ public class SecureTrade extends ObjectController { return LOOKUP.getEnum(id, UNDEFINED); } } - - } \ No newline at end of file diff --git a/src/services/trade/TradeService.java b/src/services/trade/TradeService.java index db833ed38..61bcd4d1f 100644 --- a/src/services/trade/TradeService.java +++ b/src/services/trade/TradeService.java @@ -18,6 +18,7 @@ import network.packets.swg.zone.trade.BeginTradeMessage; import network.packets.swg.zone.trade.BeginVerificationMessage; import network.packets.swg.zone.trade.DenyTradeMessage; import network.packets.swg.zone.trade.GiveMoneyMessage; +import network.packets.swg.zone.trade.RemoveItemMessage; import network.packets.swg.zone.trade.TradeCompleteMessage; import network.packets.swg.zone.trade.UnAcceptTransactionMessage; import network.packets.swg.zone.trade.VerifyTradeMessage; @@ -52,14 +53,14 @@ public class TradeService extends Service { private void handlePlayerEventIntent(PlayerEventIntent pei) { if (pei.getPlayer().getCreatureObject() == null) return; - TradeSession session = pei.getPlayer().getCreatureObject().getTradeSession(); - if (session == null) + TradeSession tradeSession = pei.getPlayer().getCreatureObject().getTradeSession(); + if (tradeSession == null) return; switch (pei.getEvent()) { case PE_FIRST_ZONE: case PE_LOGGED_OUT: - session.sendAbortTrade(); + tradeSession.sendAbortTrade(); break; default: break; @@ -162,20 +163,20 @@ public class TradeService extends Service { private void handleAddItemMessage(AddItemMessage packet, Player player, ObjectManager objectManager) { CreatureObject creature = player.getCreatureObject(); TradeSession tradeSession = creature.getTradeSession(); + if (tradeSession == null) { Log.w("Invalid TradeSession for handleAddItemMessage. Creature %s: ", creature); return; } - + SWGObject tradeObject = objectManager.getObjectById(packet.getObjectId()); if(creature.hasSlottedObject(tradeObject)){ - tradeSession.sendAbortTrade(); - return; + sendSystemMessageNoStf(player, "Warning: You have just added an equipped item to the trade window!"); } - if(tradeObject.hasAttribute("no_trade")){ - sendSystemMessage(player, "add_item_failed_prose"); + if(tradeObject.hasAttribute("no_trade")){ tradeSession.sendAbortTrade(); + return; } tradeObject.setContainerPermissions(ContainerPermissionsType.INVENTORY); @@ -236,7 +237,7 @@ public class TradeService extends Service { } private void handleTradeSessionRequest(SecureTrade packet, Player packetSender , CreatureObject initiator, CreatureObject accepter) { - SuiMessageBox requestBox = new SuiMessageBox(SuiButtons.OK_CANCEL, "Trade Request", accepter.getOwner().getCharacterName() + " wants to trade with you.\nDo you want to accept the request?"); + SuiMessageBox requestBox = new SuiMessageBox(SuiButtons.OK_CANCEL, "Trade Request", initiator.getObjectName() + " wants to trade with you.\nDo you want to accept the request?"); requestBox.addOkButtonCallback("handleTradeRequest", (player, actor, event, paramenters)-> { if(initiator.getTradeSession() == null) return; @@ -262,4 +263,8 @@ public class TradeService extends Service { private void sendSystemMessage(Player player, String str) { new ChatBroadcastIntent(player, "@ui_trade:" + str).broadcast(); } + + private void sendSystemMessageNoStf(Player player, String message) { + new ChatBroadcastIntent(player, message).broadcast(); + } } \ No newline at end of file