bit more work on vendors

This commit is contained in:
Light2
2014-05-21 19:02:12 +02:00
parent fea0ddbe75
commit 4e8a9ae47c
3 changed files with 40 additions and 2 deletions
+2
View File
@@ -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)
+14 -1
View File
@@ -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
+24 -1
View File
@@ -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<AuctionItem> auctionItems = new ConcurrentSkipListSet<AuctionItem>();
private ConcurrentHashMap<Long, Integer> commodityLimit = new ConcurrentHashMap<Long, Integer>();
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);
}
}