forked from MagicBane/Server
attempted warehouse delay issue resolution
This commit is contained in:
@@ -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);
|
||||||
|
|||||||
@@ -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){
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user