attempted warehouse delay issue resolution

This commit is contained in:
2024-05-20 13:34:03 -05:00
parent a11b590573
commit 023057668a
4 changed files with 53 additions and 30 deletions
@@ -45,7 +45,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
list.add(building); list.add(building);
break; break;
case "warehouse": case "warehouse":
Warehouse warehouse = new Warehouse(rs); Warehouse warehouse = new Warehouse(rs, depositQueItem);
DbManager.addToCache(warehouse); DbManager.addToCache(warehouse);
list.add(warehouse); list.add(warehouse);
break; break;
@@ -543,7 +543,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
ResultSet rs = preparedStatement.executeQuery(); ResultSet rs = preparedStatement.executeQuery();
while (rs.next()) { while (rs.next()) {
warehouse = new Warehouse(rs); warehouse = new Warehouse(rs, depositQueItem);
warehouse.runAfterLoad(); warehouse.runAfterLoad();
warehouse.loadAllTransactions(); warehouse.loadAllTransactions();
} }
@@ -70,6 +70,8 @@ public class CharacterItemManager {
*/ */
private byte equipVer = (byte) 0; private byte equipVer = (byte) 0;
public boolean updateLock = false;
public CharacterItemManager(AbstractCharacter ac) { public CharacterItemManager(AbstractCharacter ac) {
super(); super();
this.absCharacter = ac; this.absCharacter = ac;
@@ -2286,6 +2288,8 @@ public class CharacterItemManager {
if (this.absCharacter.getObjectType().equals(GameObjectType.PlayerCharacter) == false) if (this.absCharacter.getObjectType().equals(GameObjectType.PlayerCharacter) == false)
return; return;
if(this.updateLock)
return;
PlayerCharacter pc = (PlayerCharacter) this.absCharacter; PlayerCharacter pc = (PlayerCharacter) this.absCharacter;
UpdateInventoryMsg updateInventoryMsg = new UpdateInventoryMsg(inventory, this.getBank(), this.getGoldInventory(), add); UpdateInventoryMsg updateInventoryMsg = new UpdateInventoryMsg(inventory, this.getBank(), this.getGoldInventory(), add);
+17
View File
@@ -178,6 +178,9 @@ public class PlayerCharacter extends AbstractCharacter {
public float ZergMultiplier = 1.0f; public float ZergMultiplier = 1.0f;
public int mineAppliedID = 0; public int mineAppliedID = 0;
public boolean depositingWarehouse = false;
public Building warehouseBuilding;
/** /**
* No Id Constructor * No Id Constructor
*/ */
@@ -4885,6 +4888,20 @@ public class PlayerCharacter extends AbstractCharacter {
this.updateLock.writeLock().unlock(); this.updateLock.writeLock().unlock();
} }
} }
if(this.depositingWarehouse){
long sinceLast = System.currentTimeMillis() - this.getTimestamps().get("lastDepositWarehouse");
if(sinceLast > 1000) {
this.depositingWarehouse = false;
ViewResourcesMessage vrm = new ViewResourcesMessage(this);
vrm.setGuild(this.getGuild());
vrm.setWarehouseBuilding(this.warehouseBuilding);
vrm.configure();
Dispatch dispatch = Dispatch.borrow(this, vrm);
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);
this.charItemManager.updateLock = false;
this.charItemManager.updateInventory();
}
}
} }
public static boolean checkIfBoxed(PlayerCharacter player){ public static boolean checkIfBoxed(PlayerCharacter player){
+30 -28
View File
@@ -128,42 +128,44 @@ public class Warehouse extends AbstractWorldObject {
} }
public static void warehouseDeposit(MerchantMsg msg, PlayerCharacter player, NPC npc, ClientConnection origin) { public static void warehouseDeposit(MerchantMsg msg, PlayerCharacter player, NPC npc, ClientConnection origin) {
Item resource = Item.getFromCache(msg.getItemID());
if (resource == null) {
return;
}
int depositAmount = msg.getAmount();
CharacterItemManager itemMan = player.getCharItemManager();
if (!itemMan.doesCharOwnThisItem(resource.getObjectUUID())) {
return;
}
Building warehouseBuilding = npc.getBuilding(); Building warehouseBuilding = npc.getBuilding();
if (warehouseBuilding == null) { if (warehouseBuilding == null) {
return; return;
} }
Warehouse warehouse = warehouseByBuildingUUID.get(warehouseBuilding.getObjectUUID()); player.getTimestamps().put("lastDepositWarehouse", System.currentTimeMillis());
if (warehouse == null) { player.depositingWarehouse = true;
return; player.warehouseBuilding = warehouseBuilding;
} player.getCharItemManager().updateLock = true;
Item resource = Item.getFromCache(msg.getItemID());
if (!warehouse.deposit(player, resource, depositAmount, true, true)) { if (resource == null) {
// Optional: Uncomment these lines for debugging/logging purposes. return;
// ChatManager.chatGuildError(player, "Failed to deposit " + resource.getItemBase().getName() + "."); }
// Logger.debug("OpenWindow", player.getName() + " Failed to deposit Item with ID " + resource.getObjectUUID() + " from Warehouse With ID = " + warehouseBuilding.getObjectUUID());
return;
}
ViewResourcesMessage vrm = new ViewResourcesMessage(player); int depositAmount = msg.getAmount();
vrm.setGuild(player.getGuild()); CharacterItemManager itemMan = player.getCharItemManager();
vrm.setWarehouseBuilding(warehouseBuilding);
vrm.configure(); if (!itemMan.doesCharOwnThisItem(resource.getObjectUUID())) {
Dispatch dispatch = Dispatch.borrow(player, vrm); return;
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY); }
Warehouse warehouse = warehouseByBuildingUUID.get(warehouseBuilding.getObjectUUID());
if (warehouse == null) {
return;
}
if (!warehouse.deposit(player, resource, depositAmount, true, true)) {
return;
}
//ViewResourcesMessage vrm = new ViewResourcesMessage(player);
//vrm.setGuild(player.getGuild());
//vrm.setWarehouseBuilding(warehouseBuilding);
//vrm.configure();
//Dispatch dispatch = Dispatch.borrow(player, vrm);
//DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);
} }
public static void warehouseWithdraw(MerchantMsg msg, PlayerCharacter player, NPC npc, ClientConnection origin) { public static void warehouseWithdraw(MerchantMsg msg, PlayerCharacter player, NPC npc, ClientConnection origin) {