From 4e8a9ae47c26a779a36d49e54dd4e6b18193418f Mon Sep 17 00:00:00 2001 From: Light2 Date: Wed, 21 May 2014 19:02:12 +0200 Subject: [PATCH] bit more work on vendors --- scripts/commands/createvendor.py | 2 ++ scripts/radial/terminal/vendor.py | 15 ++++++++++++++- src/services/bazaar/BazaarService.java | 25 ++++++++++++++++++++++++- 3 files changed, 40 insertions(+), 2 deletions(-) diff --git a/scripts/commands/createvendor.py b/scripts/commands/createvendor.py index d2e4a1cc..b4f09cbb 100644 --- a/scripts/commands/createvendor.py +++ b/scripts/commands/createvendor.py @@ -158,6 +158,8 @@ def handleVendorName(actor, window, eventType, returnList): actor.setAttachment('selectedVendorTemplate', None) vendor.setAttachment('isVendor', True) + vendor.setAttachment('onMap', True) + vendor.setAttachment('maintenanceAmount', 0) vendor.setAttachment('vendorOwner', actor.getObjectID()) vendor.setAttachment('initialized', False) vendor.setAttachment('vendorSearchEnabled', False) diff --git a/scripts/radial/terminal/vendor.py b/scripts/radial/terminal/vendor.py index 39b25d8b..9a6c9bc0 100644 --- a/scripts/radial/terminal/vendor.py +++ b/scripts/radial/terminal/vendor.py @@ -13,7 +13,7 @@ def createRadial(core, owner, target, radials): radials.add(RadialOptions(3, 53, 1, '')) radials.add(RadialOptions(3, 54, 1, '')) - if not owner.getPlayerObject().getOwnedVendors().contains(target.getObjectID()) + if not owner.getPlayerObject().getOwnedVendors().contains(target.getObjectID()): return radials.add(RadialOptions(0, 112, 3, '@player_structure:vendor_control')) if target.getAttachment('initialized') == False: @@ -35,5 +35,18 @@ def createRadial(core, owner, target, radials): return def handleSelection(core, owner, target, option): + + if not owner.getPlayerObject().getOwnedVendors().contains(target.getObjectID()): + return + + if target.getAttachment('initialized') == False: + if option == 118: + owner.sendSystemMessage('@player_structure:vendor_initialized', 0) + vendor.setAttachment('initialized', True) + core.bazaarService.startVendorUpdateTask(owner, target) + else: + + + return \ No newline at end of file diff --git a/src/services/bazaar/BazaarService.java b/src/services/bazaar/BazaarService.java index 2efde273..4cb2c845 100644 --- a/src/services/bazaar/BazaarService.java +++ b/src/services/bazaar/BazaarService.java @@ -30,6 +30,10 @@ import java.util.Set; import java.util.Vector; import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentSkipListSet; +import java.util.concurrent.Executors; +import java.util.concurrent.ScheduledExecutorService; +import java.util.concurrent.ScheduledFuture; +import java.util.concurrent.TimeUnit; import java.util.function.BiFunction; import java.util.function.Function; @@ -73,6 +77,7 @@ public class BazaarService implements INetworkDispatch { private NGECore core; private Set auctionItems = new ConcurrentSkipListSet(); private ConcurrentHashMap commodityLimit = new ConcurrentHashMap(); + private final ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); private final static int COMMODITY_LIMIT = 25; private final static int MAX_BAZAAR_SALE_PRICE = 10000000; private final static int SALES_FEE = 20; @@ -143,8 +148,11 @@ public class BazaarService implements INetworkDispatch { if(terminal == null) return; int permission = 2; - if(terminal.getAttachment("isVendor") != null && (Boolean) terminal.getAttachment("isVendor")) + if(terminal.getAttachment("isVendor") != null && (Boolean) terminal.getAttachment("isVendor")) { + if(!((Boolean) terminal.getAttachment("initialized"))) + return; permission = (long) terminal.getAttachment("vendorOwner") == player.getObjectID() ? 0 : 1; + } Point3D pos = terminal.getWorldPosition(); session.write(new IsVendorOwnerResponseMessage(permission, 0, terminalId, getVendorUID((TangibleObject) terminal)).serialize()); @@ -776,4 +784,19 @@ public class BazaarService implements INetworkDispatch { core.objectService.deletePersistentObject(auctionItem.getObjectId(), core.getAuctionODB()); } + public void startVendorUpdateTask(CreatureObject owner, SWGObject vendor) { + + scheduler.scheduleAtFixedRate(() -> { + if(vendor == null || !((Boolean) vendor.getAttachment("initialized"))) + return; + + float maintenanceRate = 15; + if((Boolean) vendor.getAttachment("onMap")) + maintenanceRate += 6; + vendor.setAttachment("maintenanceAmount", (Integer) vendor.getAttachment("maintenanceAmount") - maintenanceRate); + // TODO add vendor delete after x days + }, 1, 1, TimeUnit.HOURS); + + } + }