Browse Source

Warehosue cleanup

magicbox-1.5.2
FatBoy-DOTC 10 months ago
parent
commit
cc1e0d8986
  1. 51
      src/engine/db/handlers/dbWarehouseHandler.java
  2. 5
      src/engine/devcmd/cmds/MakeItemCmd.java
  3. 7
      src/engine/devcmd/cmds/RemoveObjectCmd.java
  4. 8
      src/engine/gameManager/BuildingManager.java
  5. 40
      src/engine/gameManager/MaintenanceManager.java
  6. 846
      src/engine/gameManager/WarehouseManager.java
  7. 3
      src/engine/net/client/handlers/ArcViewAssetTransactionsMsgHandler.java
  8. 5
      src/engine/net/client/handlers/ManageCityAssetMsgHandler.java
  9. 6
      src/engine/net/client/handlers/MerchantMsgHandler.java
  10. 40
      src/engine/net/client/handlers/ObjectActionMsgHandler.java
  11. 2
      src/engine/net/client/handlers/PlaceAssetMsgHandler.java
  12. 2
      src/engine/net/client/handlers/TaxCityMsgHandler.java
  13. 12
      src/engine/net/client/msg/ArcViewAssetTransactionsMsg.java
  14. 15
      src/engine/net/client/msg/ViewResourcesMessage.java
  15. 11
      src/engine/objects/Building.java
  16. 9
      src/engine/objects/CharacterItemManager.java
  17. 8
      src/engine/objects/City.java
  18. 94
      src/engine/objects/ItemFactory.java
  19. 7
      src/engine/objects/Mine.java
  20. 1290
      src/engine/objects/Warehouse.java

51
src/engine/db/handlers/dbWarehouseHandler.java

@ -13,6 +13,7 @@ import engine.Enum.GameObjectType;
import engine.Enum.ProtectionState; import engine.Enum.ProtectionState;
import engine.Enum.TransactionType; import engine.Enum.TransactionType;
import engine.gameManager.DbManager; import engine.gameManager.DbManager;
import engine.gameManager.WarehouseManager;
import engine.math.Vector3fImmutable; import engine.math.Vector3fImmutable;
import engine.objects.*; import engine.objects.*;
import engine.server.MBServerStatics; import engine.server.MBServerStatics;
@ -109,7 +110,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_locks`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_locks`=? WHERE `UID` = ?")) {
preparedStatement.setLong(1, locks); preparedStatement.setLong(1, locks);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -125,7 +126,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_gold`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_gold`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -141,7 +142,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_stone`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_stone`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -157,7 +158,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_truesteel`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_truesteel`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -173,7 +174,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_iron`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_iron`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -189,7 +190,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_adamant`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_adamant`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -205,7 +206,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_lumber`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_lumber`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -221,7 +222,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_oak`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_oak`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -237,7 +238,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_bronzewood`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_bronzewood`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -253,7 +254,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_mandrake`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_mandrake`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -269,7 +270,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_coal`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_coal`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -285,7 +286,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_agate`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_agate`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -301,7 +302,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_diamond`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_diamond`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -317,7 +318,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_onyx`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_onyx`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -333,7 +334,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_azoth`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_azoth`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -349,7 +350,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_orichalk`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_orichalk`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -365,7 +366,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_antimony`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_antimony`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -381,7 +382,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_sulfur`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_sulfur`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -397,7 +398,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_quicksilver`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_quicksilver`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -413,7 +414,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_galvor`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_galvor`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -429,7 +430,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_wormwood`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_wormwood`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -445,7 +446,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_obsidian`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_obsidian`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -461,7 +462,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_bloodstone`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_bloodstone`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -477,7 +478,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_mithril`=? WHERE `UID` = ?")) { PreparedStatement preparedStatement = connection.prepareStatement("UPDATE `obj_warehouse` SET `warehouse_mithril`=? WHERE `UID` = ?")) {
preparedStatement.setInt(1, amount); preparedStatement.setInt(1, amount);
preparedStatement.setInt(2, wh.getUID()); preparedStatement.setInt(2, wh.UID);
return (preparedStatement.executeUpdate() > 0); return (preparedStatement.executeUpdate() > 0);
@ -545,7 +546,7 @@ public class dbWarehouseHandler extends dbHandlerBase {
while (rs.next()) { while (rs.next()) {
warehouse = new Warehouse(rs); warehouse = new Warehouse(rs);
warehouse.runAfterLoad(); warehouse.runAfterLoad();
warehouse.loadAllTransactions(); WarehouseManager.loadAllTransactions(warehouse);
} }
} catch (SQLException e) { } catch (SQLException e) {

5
src/engine/devcmd/cmds/MakeItemCmd.java

@ -14,6 +14,7 @@ import engine.Enum.ItemType;
import engine.Enum.OwnerType; import engine.Enum.OwnerType;
import engine.devcmd.AbstractDevCmd; import engine.devcmd.AbstractDevCmd;
import engine.gameManager.DbManager; import engine.gameManager.DbManager;
import engine.gameManager.WarehouseManager;
import engine.objects.*; import engine.objects.*;
import engine.powers.EffectsBase; import engine.powers.EffectsBase;
@ -33,7 +34,7 @@ public class MakeItemCmd extends AbstractDevCmd {
AbstractGameObject target) { AbstractGameObject target) {
if (words[0].equals("resources")) { if (words[0].equals("resources")) {
for (int ibID : Warehouse.getMaxResources().keySet()) { for (int ibID : WarehouseManager.getMaxResources().keySet()) {
if (ibID == 7) if (ibID == 7)
continue; continue;
@ -53,7 +54,7 @@ public class MakeItemCmd extends AbstractDevCmd {
true, false, ItemContainerType.INVENTORY, (byte) 0, true, false, ItemContainerType.INVENTORY, (byte) 0,
new ArrayList<>(), ""); new ArrayList<>(), "");
item.setNumOfItems(Warehouse.getMaxResources().get(ibID)); item.setNumOfItems(WarehouseManager.getMaxResources().get(ibID));
try { try {
item = DbManager.ItemQueries.ADD_ITEM(item); item = DbManager.ItemQueries.ADD_ITEM(item);

7
src/engine/devcmd/cmds/RemoveObjectCmd.java

@ -13,10 +13,7 @@ import engine.Enum.BuildingGroup;
import engine.Enum.DbObjectType; import engine.Enum.DbObjectType;
import engine.InterestManagement.WorldGrid; import engine.InterestManagement.WorldGrid;
import engine.devcmd.AbstractDevCmd; import engine.devcmd.AbstractDevCmd;
import engine.gameManager.BuildingManager; import engine.gameManager.*;
import engine.gameManager.ChatManager;
import engine.gameManager.DbManager;
import engine.gameManager.ZoneManager;
import engine.math.Vector3fImmutable; import engine.math.Vector3fImmutable;
import engine.objects.*; import engine.objects.*;
@ -134,7 +131,7 @@ public class RemoveObjectCmd extends AbstractDevCmd {
if (city != null) { if (city != null) {
city.setWarehouseBuildingID(0); city.setWarehouseBuildingID(0);
} }
Warehouse.warehouseByBuildingUUID.remove(building.getObjectUUID()); WarehouseManager.warehouseByBuildingUUID.remove(building.getObjectUUID());
} }
//remove cached shrines. //remove cached shrines.

8
src/engine/gameManager/BuildingManager.java

@ -224,7 +224,7 @@ public enum BuildingManager {
break; break;
case WAREHOUSE: case WAREHOUSE:
Warehouse warehouse = Warehouse.warehouseByBuildingUUID.get(building.getObjectUUID()); Warehouse warehouse = WarehouseManager.warehouseByBuildingUUID.get(building.getObjectUUID());
if (warehouse == null) if (warehouse == null)
return false; return false;
@ -234,15 +234,15 @@ public enum BuildingManager {
ChatManager.chatSystemInfo(player, "You can not carry any more of that item."); ChatManager.chatSystemInfo(player, "You can not carry any more of that item.");
return false; return false;
} }
if (warehouse.getResources().get(resourceBase) == null) if (warehouse.resources.get(resourceBase) == null)
continue; continue;
int resourceAmount = warehouse.getResources().get(resourceBase); int resourceAmount = warehouse.resources.get(resourceBase);
if (resourceAmount <= 0) if (resourceAmount <= 0)
continue; continue;
if (warehouse.loot(player, resourceBase, resourceAmount, true)) if (WarehouseManager.loot(warehouse, player, resourceBase, resourceAmount, true))
ChatManager.chatInfoInfo(player, "You have looted " + resourceAmount + ' ' + resourceBase.getName()); ChatManager.chatInfoInfo(player, "You have looted " + resourceAmount + ' ' + resourceBase.getName());
} }
break; break;

40
src/engine/gameManager/MaintenanceManager.java

@ -184,7 +184,7 @@ public enum MaintenanceManager {
if ((overDraft > 0)) if ((overDraft > 0))
if ((building.getBlueprint().getBuildingGroup().equals(Enum.BuildingGroup.SHRINE) == false) && if ((building.getBlueprint().getBuildingGroup().equals(Enum.BuildingGroup.SHRINE) == false) &&
(warehouse != null) && building.assetIsProtected() == true && (warehouse != null) && building.assetIsProtected() == true &&
(warehouse.getResources().get(ItemBase.GOLD_ITEM_BASE)) >= overDraft) { (warehouse.resources.get(ItemBase.GOLD_ITEM_BASE)) >= overDraft) {
hasFunds = true; hasFunds = true;
} }
@ -199,22 +199,22 @@ public enum MaintenanceManager {
hasResources = false; hasResources = false;
else { else {
resourceValue = warehouse.getResources().get(Warehouse.stoneIB); resourceValue = warehouse.resources.get(WarehouseManager.stoneIB);
if (resourceValue < 1500) if (resourceValue < 1500)
hasResources = false; hasResources = false;
resourceValue = warehouse.getResources().get(Warehouse.lumberIB); resourceValue = warehouse.resources.get(WarehouseManager.lumberIB);
if (resourceValue < 1500) if (resourceValue < 1500)
hasResources = false; hasResources = false;
resourceValue = warehouse.getResources().get(Warehouse.galvorIB); resourceValue = warehouse.resources.get(WarehouseManager.galvorIB);
if (resourceValue < 5) if (resourceValue < 5)
hasResources = false; hasResources = false;
resourceValue = warehouse.getResources().get(Warehouse.wormwoodIB); resourceValue = warehouse.resources.get(WarehouseManager.wormwoodIB);
if (resourceValue < 5) if (resourceValue < 5)
hasResources = false; hasResources = false;
@ -247,11 +247,11 @@ public enum MaintenanceManager {
if (overDraft > 0) { if (overDraft > 0) {
resourceValue = warehouse.getResources().get(Warehouse.goldIB); resourceValue = warehouse.resources.get(WarehouseManager.goldIB);
if (DbManager.WarehouseQueries.updateGold(warehouse, resourceValue - overDraft) == true) { if (DbManager.WarehouseQueries.updateGold(warehouse, resourceValue - overDraft) == true) {
warehouse.getResources().put(Warehouse.goldIB, resourceValue - overDraft); warehouse.resources.put(WarehouseManager.goldIB, resourceValue - overDraft);
warehouse.AddTransactionToWarehouse(Enum.GameObjectType.Building, building.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.GOLD, overDraft); WarehouseManager.AddTransactionToWarehouse(warehouse, Enum.GameObjectType.Building, building.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.GOLD, overDraft);
} else { } else {
Logger.error("gold update failed for warehouse of UUID:" + warehouse.getObjectUUID()); Logger.error("gold update failed for warehouse of UUID:" + warehouse.getObjectUUID());
return true; return true;
@ -267,11 +267,11 @@ public enum MaintenanceManager {
// Withdraw Stone // Withdraw Stone
resourceValue = warehouse.getResources().get(Warehouse.stoneIB); resourceValue = warehouse.resources.get(WarehouseManager.stoneIB);
if (DbManager.WarehouseQueries.updateStone(warehouse, resourceValue - 1500) == true) { if (DbManager.WarehouseQueries.updateStone(warehouse, resourceValue - 1500) == true) {
warehouse.getResources().put(Warehouse.stoneIB, resourceValue - 1500); warehouse.resources.put(WarehouseManager.stoneIB, resourceValue - 1500);
warehouse.AddTransactionToWarehouse(Enum.GameObjectType.Building, building.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.STONE, 1500); WarehouseManager.AddTransactionToWarehouse(warehouse, Enum.GameObjectType.Building, building.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.STONE, 1500);
} else { } else {
Logger.error("stone update failed for warehouse of UUID:" + warehouse.getObjectUUID()); Logger.error("stone update failed for warehouse of UUID:" + warehouse.getObjectUUID());
return true; return true;
@ -279,11 +279,11 @@ public enum MaintenanceManager {
// Withdraw Lumber // Withdraw Lumber
resourceValue = warehouse.getResources().get(Warehouse.lumberIB); resourceValue = warehouse.resources.get(WarehouseManager.lumberIB);
if (DbManager.WarehouseQueries.updateLumber(warehouse, resourceValue - 1500) == true) { if (DbManager.WarehouseQueries.updateLumber(warehouse, resourceValue - 1500) == true) {
warehouse.getResources().put(Warehouse.lumberIB, resourceValue - 1500); warehouse.resources.put(WarehouseManager.lumberIB, resourceValue - 1500);
warehouse.AddTransactionToWarehouse(Enum.GameObjectType.Building, building.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.LUMBER, 1500); WarehouseManager.AddTransactionToWarehouse(warehouse, Enum.GameObjectType.Building, building.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.LUMBER, 1500);
} else { } else {
Logger.error("lumber update failed for warehouse of UUID:" + warehouse.getObjectUUID()); Logger.error("lumber update failed for warehouse of UUID:" + warehouse.getObjectUUID());
return true; return true;
@ -291,21 +291,21 @@ public enum MaintenanceManager {
// Withdraw Galvor // Withdraw Galvor
resourceValue = warehouse.getResources().get(Warehouse.galvorIB); resourceValue = warehouse.resources.get(WarehouseManager.galvorIB);
if (DbManager.WarehouseQueries.updateGalvor(warehouse, resourceValue - 5) == true) { if (DbManager.WarehouseQueries.updateGalvor(warehouse, resourceValue - 5) == true) {
warehouse.getResources().put(Warehouse.galvorIB, resourceValue - 5); warehouse.resources.put(WarehouseManager.galvorIB, resourceValue - 5);
warehouse.AddTransactionToWarehouse(Enum.GameObjectType.Building, building.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.GALVOR, 5); WarehouseManager.AddTransactionToWarehouse(warehouse, Enum.GameObjectType.Building, building.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.GALVOR, 5);
} else { } else {
Logger.error("galvor update failed for warehouse of UUID:" + warehouse.getObjectUUID()); Logger.error("galvor update failed for warehouse of UUID:" + warehouse.getObjectUUID());
return true; return true;
} }
resourceValue = warehouse.getResources().get(Warehouse.wormwoodIB); resourceValue = warehouse.resources.get(WarehouseManager.wormwoodIB);
if (DbManager.WarehouseQueries.updateWormwood(warehouse, resourceValue - 5) == true) { if (DbManager.WarehouseQueries.updateWormwood(warehouse, resourceValue - 5) == true) {
warehouse.getResources().put(Warehouse.wormwoodIB, resourceValue - 5); warehouse.resources.put(WarehouseManager.wormwoodIB, resourceValue - 5);
warehouse.AddTransactionToWarehouse(Enum.GameObjectType.Building, building.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.WORMWOOD, 5); WarehouseManager.AddTransactionToWarehouse(warehouse, Enum.GameObjectType.Building, building.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.WORMWOOD, 5);
} else { } else {
Logger.error("wyrmwood update failed for warehouse of UUID:" + warehouse.getObjectUUID()); Logger.error("wyrmwood update failed for warehouse of UUID:" + warehouse.getObjectUUID());
} }

846
src/engine/gameManager/WarehouseManager.java

@ -0,0 +1,846 @@
package engine.gameManager;
import ch.claude_martin.enumbitset.EnumBitSet;
import engine.Enum;
import engine.net.Dispatch;
import engine.net.DispatchMessage;
import engine.net.client.ClientConnection;
import engine.net.client.msg.*;
import engine.objects.*;
import engine.server.MBServerStatics;
import org.joda.time.DateTime;
import org.pmw.tinylog.Logger;
import java.util.ArrayList;
import java.util.concurrent.ConcurrentHashMap;
public class WarehouseManager {
public static ItemBase goldIB = ItemBase.getItemBase(7);
public static ItemBase stoneIB = ItemBase.getItemBase(1580000);
public static ItemBase truesteelIB = ItemBase.getItemBase(1580001);
public static ItemBase ironIB = ItemBase.getItemBase(1580002);
public static ItemBase adamantIB = ItemBase.getItemBase(1580003);
public static ItemBase lumberIB = ItemBase.getItemBase(1580004);
public static ItemBase oakIB = ItemBase.getItemBase(1580005);
public static ItemBase bronzewoodIB = ItemBase.getItemBase(1580006);
public static ItemBase mandrakeIB = ItemBase.getItemBase(1580007);
public static ItemBase coalIB = ItemBase.getItemBase(1580008);
public static ItemBase agateIB = ItemBase.getItemBase(1580009);
public static ItemBase diamondIB = ItemBase.getItemBase(1580010);
public static ItemBase onyxIB = ItemBase.getItemBase(1580011);
public static ItemBase azothIB = ItemBase.getItemBase(1580012);
public static ItemBase orichalkIB = ItemBase.getItemBase(1580013);
public static ItemBase antimonyIB = ItemBase.getItemBase(1580014);
public static ItemBase sulferIB = ItemBase.getItemBase(1580015);
public static ItemBase quicksilverIB = ItemBase.getItemBase(1580016);
public static ItemBase galvorIB = ItemBase.getItemBase(1580017);
public static ItemBase wormwoodIB = ItemBase.getItemBase(1580018);
public static ItemBase obsidianIB = ItemBase.getItemBase(1580019);
public static ItemBase bloodstoneIB = ItemBase.getItemBase(1580020);
public static ItemBase mithrilIB = ItemBase.getItemBase(1580021);
public static ConcurrentHashMap<Integer, Integer> maxResources = new ConcurrentHashMap<>();
public static ConcurrentHashMap<Integer, Warehouse> warehouseByBuildingUUID = new ConcurrentHashMap<>();
public static ConcurrentHashMap<Integer, Integer> getMaxResources() {
if (maxResources.size() != 23) {
maxResources.put(7, 100000000);
maxResources.put(1580000, 10000);
maxResources.put(1580001, 2000);
maxResources.put(1580002, 2000);
maxResources.put(1580003, 1000);
maxResources.put(1580004, 10000);
maxResources.put(1580005, 3000);
maxResources.put(1580006, 3000);
maxResources.put(1580007, 1000);
maxResources.put(1580008, 3000);
maxResources.put(1580009, 2000);
maxResources.put(1580010, 2000);
maxResources.put(1580011, 1000);
maxResources.put(1580012, 2000);
maxResources.put(1580013, 3000);
maxResources.put(1580014, 1000);
maxResources.put(1580015, 1000);
maxResources.put(1580016, 1000);
maxResources.put(1580017, 500);
maxResources.put(1580018, 500);
maxResources.put(1580019, 500);
maxResources.put(1580020, 500);
maxResources.put(1580021, 500);
}
return maxResources;
}
public static void warehouseDeposit(MerchantMsg msg, PlayerCharacter player, NPC npc) {
Building warehouseBuilding;
Warehouse warehouse;
int depositAmount;
Dispatch dispatch;
Item resource = Item.getFromCache(msg.getItemID());
if (resource == null)
return;
depositAmount = msg.getAmount();
CharacterItemManager itemMan = player.getCharItemManager();
if (!itemMan.doesCharOwnThisItem(resource.getObjectUUID()))
return;
warehouseBuilding = npc.getBuilding();
if (warehouseBuilding == null)
return;
warehouse = warehouseByBuildingUUID.get(warehouseBuilding.getObjectUUID());
if (warehouse == null)
return;
if (!WarehouseManager.deposit(player, resource, depositAmount, true, true,warehouse)) {
return;
}
ViewResourcesMessage vrm = new ViewResourcesMessage(player);
vrm.setGuild(player.getGuild());
vrm.setWarehouseBuilding(warehouseBuilding);
vrm.configure();
dispatch = Dispatch.borrow(player, vrm);
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);
}
public static void warehouseWithdraw(MerchantMsg msg, PlayerCharacter player, NPC npc) {
int withdrawAmount;
Building warehouseBuilding;
Warehouse warehouse;
Dispatch dispatch;
withdrawAmount = msg.getAmount();
warehouseBuilding = npc.getBuilding();
if (warehouseBuilding == null)
return;
if (player.getGuild() != warehouseBuilding.getGuild() || !GuildStatusController.isInnerCouncil(player.getGuildStatus()))
return;
warehouse = warehouseByBuildingUUID.get(warehouseBuilding.getObjectUUID());
if (warehouse == null)
return;
int hashID = msg.getHashID();
int itemBaseID = ItemBase.getItemHashIDMap().get(hashID);
ItemBase ib = ItemBase.getItemBase(itemBaseID);
if (ib == null) {
Logger.debug("Failed to find Resource ItemBaseID with Hash ID = " + hashID);
return;
}
if (isResourceLocked(warehouse, ib)) {
ChatManager.chatSystemInfo(player, "You cannot withdrawl a locked resource.");
return;
}
if (!withdraw(warehouse, player, ib, withdrawAmount, true, true)) {
ChatManager.chatGuildError(player, "Failed to withdrawl " + ib.getName() + '.');
Logger.debug(player.getName() + " Failed to withdrawl =" + ib.getName() + " from Warehouse With ID = " + warehouseBuilding.getObjectUUID());
return;
}
ViewResourcesMessage vrm = new ViewResourcesMessage(player);
vrm.setGuild(player.getGuild());
vrm.setWarehouseBuilding(warehouseBuilding);
vrm.configure();
dispatch = Dispatch.borrow(player, vrm);
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);
}
public static void warehouseLock(MerchantMsg msg, PlayerCharacter player, NPC npc) {
Building warehouse;
int hashID;
Dispatch dispatch;
hashID = msg.getHashID();
warehouse = npc.getBuilding();
if (warehouse == null)
return;
if (player.getGuild() != warehouse.getGuild() || !GuildStatusController.isInnerCouncil(player.getGuildStatus()))
return;
Warehouse wh = warehouseByBuildingUUID.get(warehouse.getObjectUUID());
if (wh == null)
return;
int itemBaseID = ItemBase.getItemHashIDMap().get(hashID);
ItemBase ib = ItemBase.getItemBase(itemBaseID);
if (ib == null)
return;
if (isResourceLocked(wh, ib)) {
boolean worked;
EnumBitSet<Enum.ResourceType> bitSet = EnumBitSet.asEnumBitSet(wh.lockedResourceTypes.toLong(), Enum.ResourceType.class);
bitSet.remove(Enum.ResourceType.resourceLookup.get(itemBaseID));
worked = DbManager.WarehouseQueries.updateLocks(wh, bitSet.toLong());
if (worked) {
wh.lockedResourceTypes.remove(Enum.ResourceType.resourceLookup.get(itemBaseID));
ViewResourcesMessage vrm = new ViewResourcesMessage(player);
vrm.setGuild(player.getGuild());
vrm.setWarehouseBuilding(warehouse);
vrm.configure();
dispatch = Dispatch.borrow(player, vrm);
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);
}
return;
}
EnumBitSet<Enum.ResourceType> bitSet = EnumBitSet.asEnumBitSet(wh.lockedResourceTypes.toLong(), Enum.ResourceType.class);
bitSet.add(Enum.ResourceType.resourceLookup.get(itemBaseID));
if (!DbManager.WarehouseQueries.updateLocks(wh, bitSet.toLong()))
return;
wh.lockedResourceTypes.add(Enum.ResourceType.resourceLookup.get(itemBaseID));
ViewResourcesMessage vrm = new ViewResourcesMessage(player);
vrm.setGuild(player.getGuild());
vrm.setWarehouseBuilding(warehouse);
vrm.configure();
dispatch = Dispatch.borrow(player, vrm);
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);
}
public static synchronized boolean deposit(PlayerCharacter pc, Item resource, int amount, boolean removeFromInventory, boolean transaction, Warehouse warehouse) {
ClientConnection origin = pc.getClientConnection();
if (origin == null)
return false;
if (amount < 0) {
Logger.info(pc.getFirstName() + " Attempting to Dupe!!!!!!");
return false;
}
ItemBase ib = resource.getItemBase();
if (ib == null)
return false;
if (warehouse.resources.get(ib) == null)
return false;
CharacterItemManager itemMan = pc.getCharItemManager();
if (itemMan == null)
return false;
if (itemMan.getGoldTrading() > 0) {
ErrorPopupMsg.sendErrorPopup(pc, 195);
return false;
}
if (!itemMan.doesCharOwnThisItem(resource.getObjectUUID()))
return false;
if (!resource.validForInventory(origin, pc, itemMan))
return false;
if (resource.getNumOfItems() < amount)
return false;
int oldAmount = warehouse.resources.get(ib);
int newAmount = oldAmount + amount;
if (newAmount > WarehouseManager.getMaxResources().get(ib.getUUID())) {
//ChatManager.chatSystemInfo(pc, "The Warehouse is at it's maximum for this type of resource.");
return false;
}
if (removeFromInventory) {
if (ib.getUUID() == 7) {
if (itemMan.getGoldInventory().getNumOfItems() - amount < 0)
return false;
if (itemMan.getGoldInventory().getNumOfItems() - amount > MBServerStatics.PLAYER_GOLD_LIMIT)
return false;
if (!itemMan.modifyInventoryGold(-amount)) {
//ChatManager.chatSystemError(pc, "You do not have this Gold.");
return false;
}
UpdateGoldMsg ugm = new UpdateGoldMsg(pc);
ugm.configure();
Dispatch dispatch = Dispatch.borrow(pc, ugm);
DispatchMessage.dispatchMsgDispatch(dispatch, engine.Enum.DispatchChannel.SECONDARY);
itemMan.updateInventory();
} else {
itemMan.delete(resource);
itemMan.updateInventory();
}
}
itemMan.updateInventory();
if (!WarehouseManager.DepositApproved(ib,amount,warehouse))
return false;
warehouse.resources.put(ib, newAmount);
Resource resourceType;
if (resource.getItemBase().getType().equals(engine.Enum.ItemType.GOLD))
resourceType = Resource.GOLD;
else
resourceType = Resource.valueOf(resource.getItemBase().getName().toUpperCase());
if (transaction)
AddTransactionToWarehouse(warehouse, pc.getObjectType(), pc.getObjectUUID(), Enum.TransactionType.DEPOSIT, resourceType, amount);
return true;
}
public static synchronized boolean depositFromMine(Mine mine, ItemBase resource, int amount, Warehouse warehouse) {
int oldAmount = warehouse.resources.get(resource);
int newAmount = oldAmount + amount;
if (newAmount > WarehouseManager.getMaxResources().get(resource.getUUID()))
return false;
if (!WarehouseManager.DepositApproved(resource,amount,warehouse))
return false;
warehouse.resources.put(resource, newAmount);
Resource resourceType;
if (resource.getUUID() == 7)
resourceType = Resource.GOLD;
else
resourceType = Resource.valueOf(resource.getName().toUpperCase());
if (mine != null)
AddTransactionToWarehouse(warehouse, Enum.GameObjectType.Building, mine.getBuildingID(), Enum.TransactionType.MINE, resourceType, amount);
return true;
}
public static boolean DepositApproved(ItemBase ib, int amount, Warehouse warehouse){
if (ib == null)
return false;
if (warehouse.resources.get(ib) == null)
return false;
int oldAmount = warehouse.resources.get(ib);
int newAmount = oldAmount + amount;
if (newAmount > WarehouseManager.getMaxResources().get(ib.getUUID()))
return false;
int itemID = ib.getUUID();
boolean worked = false;
switch (itemID) {
case 7:
worked = DbManager.WarehouseQueries.updateGold(warehouse, newAmount);
break;
case 1580000:
worked = DbManager.WarehouseQueries.updateStone(warehouse, newAmount);
break;
case 1580001:
worked = DbManager.WarehouseQueries.updateTruesteel(warehouse, newAmount);
break;
case 1580002:
worked = DbManager.WarehouseQueries.updateIron(warehouse, newAmount);
break;
case 1580003:
worked = DbManager.WarehouseQueries.updateAdamant(warehouse, newAmount);
break;
case 1580004:
worked = DbManager.WarehouseQueries.updateLumber(warehouse, newAmount);
break;
case 1580005:
worked = DbManager.WarehouseQueries.updateOak(warehouse, newAmount);
break;
case 1580006:
worked = DbManager.WarehouseQueries.updateBronzewood(warehouse, newAmount);
break;
case 1580007:
worked = DbManager.WarehouseQueries.updateMandrake(warehouse, newAmount);
break;
case 1580008:
worked = DbManager.WarehouseQueries.updateCoal(warehouse, newAmount);
break;
case 1580009:
worked = DbManager.WarehouseQueries.updateAgate(warehouse, newAmount);
break;
case 1580010:
worked = DbManager.WarehouseQueries.updateDiamond(warehouse, newAmount);
break;
case 1580011:
worked = DbManager.WarehouseQueries.updateOnyx(warehouse, newAmount);
break;
case 1580012:
worked = DbManager.WarehouseQueries.updateAzoth(warehouse, newAmount);
break;
case 1580013:
worked = DbManager.WarehouseQueries.updateOrichalk(warehouse, newAmount);
break;
case 1580014:
worked = DbManager.WarehouseQueries.updateAntimony(warehouse, newAmount);
break;
case 1580015:
worked = DbManager.WarehouseQueries.updateSulfur(warehouse, newAmount);
break;
case 1580016:
worked = DbManager.WarehouseQueries.updateQuicksilver(warehouse, newAmount);
break;
case 1580017:
worked = DbManager.WarehouseQueries.updateGalvor(warehouse, newAmount);
break;
case 1580018:
worked = DbManager.WarehouseQueries.updateWormwood(warehouse, newAmount);
break;
case 1580019:
worked = DbManager.WarehouseQueries.updateObsidian(warehouse, newAmount);
break;
case 1580020:
worked = DbManager.WarehouseQueries.updateBloodstone(warehouse, newAmount);
break;
case 1580021:
worked = DbManager.WarehouseQueries.updateMithril(warehouse, newAmount);
break;
}
return worked;
}
public static synchronized void depositRealmTaxes(PlayerCharacter taxer, ItemBase ib, int amount, Warehouse warehouse) {
if (!DepositApproved(ib,amount,warehouse))
return;
int oldAmount = warehouse.resources.get(ib);
int newAmount = oldAmount + amount;
warehouse.resources.put(ib, newAmount);
Resource resourceType;
if (ib.getUUID() == 7)
resourceType = Resource.GOLD;
else
resourceType = Resource.valueOf(ib.getName().toUpperCase());
AddTransactionToWarehouse(warehouse, taxer.getObjectType(), taxer.getObjectUUID(), Enum.TransactionType.TAXRESOURCEDEPOSIT, resourceType, amount);
}
public static synchronized void depositProfitTax(ItemBase ib, int amount, Building building, Warehouse warehouse) {
if (ib == null)
return;
if (warehouse.resources.get(ib) == null)
return;
int oldAmount = warehouse.resources.get(ib);
int newAmount = oldAmount + amount;
if (newAmount > getMaxResources().get(ib.getUUID()))
return;
if (!DepositApproved(ib,amount,warehouse))
return;
warehouse.resources.put(ib, newAmount);
Resource resourceType;
if (ib.getUUID() == 7)
resourceType = Resource.GOLD;
else
resourceType = Resource.valueOf(ib.getName().toUpperCase());
if (building != null)
AddTransactionToWarehouse(warehouse, Enum.GameObjectType.Building, building.getObjectUUID(), Enum.TransactionType.DEPOSIT, resourceType, amount);
}
public static boolean WithdrawApproved(ItemBase ib, int amount, Warehouse warehouse){
if (ib == null)
return false;
if (warehouse.resources.get(ib) == null)
return false;
if (amount <= 0)
return false;
int oldAmount = warehouse.resources.get(ib);
if (oldAmount < amount)
return false;
int hashID = ib.getHashID();
int newAmount = oldAmount - amount;
boolean worked = false;
switch (hashID) {
case 2308551:
worked = DbManager.WarehouseQueries.updateGold(warehouse, newAmount);
break;
case 74856115:
worked = DbManager.WarehouseQueries.updateStone(warehouse, newAmount);
break;
case -317484979:
worked = DbManager.WarehouseQueries.updateTruesteel(warehouse, newAmount);
break;
case 2504297:
worked = DbManager.WarehouseQueries.updateIron(warehouse, newAmount);
break;
case -1741189964:
worked = DbManager.WarehouseQueries.updateAdamant(warehouse, newAmount);
break;
case -1603256692:
worked = DbManager.WarehouseQueries.updateLumber(warehouse, newAmount);
break;
case 74767:
worked = DbManager.WarehouseQueries.updateOak(warehouse, newAmount);
break;
case 1334770447:
worked = DbManager.WarehouseQueries.updateBronzewood(warehouse, newAmount);
break;
case 1191391799:
worked = DbManager.WarehouseQueries.updateMandrake(warehouse, newAmount);
break;
case 2559427:
worked = DbManager.WarehouseQueries.updateCoal(warehouse, newAmount);
break;
case 75173057:
worked = DbManager.WarehouseQueries.updateAgate(warehouse, newAmount);
break;
case -1730704107:
worked = DbManager.WarehouseQueries.updateDiamond(warehouse, newAmount);
break;
case 2977263:
worked = DbManager.WarehouseQueries.updateOnyx(warehouse, newAmount);
break;
case 78329697:
worked = DbManager.WarehouseQueries.updateAzoth(warehouse, newAmount);
break;
case -2036290524:
worked = DbManager.WarehouseQueries.updateOrichalk(warehouse, newAmount);
break;
case 452320058:
worked = DbManager.WarehouseQueries.updateAntimony(warehouse, newAmount);
break;
case -1586349421:
worked = DbManager.WarehouseQueries.updateSulfur(warehouse, newAmount);
break;
case -472884509:
worked = DbManager.WarehouseQueries.updateQuicksilver(warehouse, newAmount);
break;
case -1596311545:
worked = DbManager.WarehouseQueries.updateGalvor(warehouse, newAmount);
break;
case 1532478436:
worked = DbManager.WarehouseQueries.updateWormwood(warehouse, newAmount);
break;
case -697973233:
worked = DbManager.WarehouseQueries.updateObsidian(warehouse, newAmount);
break;
case -1569826353:
worked = DbManager.WarehouseQueries.updateBloodstone(warehouse, newAmount);
break;
case -1761257186:
worked = DbManager.WarehouseQueries.updateMithril(warehouse, newAmount);
break;
}
return worked;
}
public static synchronized boolean withdraw(Warehouse warehouse, NPC npc, ItemBase ib, int amount, boolean transaction) {
int oldAmount = warehouse.resources.get(ib);
int newAmount = oldAmount - amount;
if (!WithdrawApproved(ib,amount, warehouse))
return false;
warehouse.resources.put(ib, newAmount);
Resource resourceType;
if (ib.getUUID() == 7)
resourceType = Resource.GOLD;
else
resourceType = Resource.valueOf(ib.getName().toUpperCase());
if (transaction)
AddTransactionToWarehouse(warehouse, npc.getObjectType(), npc.getObjectUUID(), Enum.TransactionType.WITHDRAWL, resourceType, amount);
return true;
}
public static synchronized void transferResources(Warehouse warehouse, PlayerCharacter taxer, TaxResourcesMsg msg, ArrayList<Integer> realmResources, float taxPercent) {
for (int ibID : realmResources) {
ItemBase ib = ItemBase.getItemBase(ibID);
if (ib == null)
return;
if (warehouse.resources.get(ib) == null)
return;
int amount = (int) (warehouse.resources.get(ib) * taxPercent);
if (amount <= 0) {
msg.getResources().put(ib.getHashID(), 0);
continue;
}
int oldAmount = warehouse.resources.get(ib);
if (oldAmount < amount)
amount = oldAmount;
int newAmount = oldAmount - amount;
if (newAmount < amount)
continue;
if (!WithdrawApproved(ib,amount,warehouse)) {
msg.getResources().put(ib.getHashID(), 0);
continue;
}
msg.getResources().put(ib.getHashID(), amount);
warehouse.resources.put(ib, newAmount);
depositRealmTaxes(taxer, ib, amount, warehouse);
Resource resourceType;
if (ib.getUUID() == 7)
resourceType = Resource.GOLD;
else
resourceType = Resource.valueOf(ib.getName().toUpperCase());
AddTransactionToWarehouse(warehouse, taxer.getObjectType(), taxer.getObjectUUID(), Enum.TransactionType.TAXRESOURCE, resourceType, amount);
}
}
public static synchronized boolean withdraw(Warehouse warehouse, PlayerCharacter pc, ItemBase ib, int amount, boolean addToInventory, boolean transaction) {
if (pc == null)
return false;
if (ib == null)
return false;
if (warehouse.resources.get(ib) == null)
return false;
if (amount <= 0)
return false;
CharacterItemManager itemMan = pc.getCharItemManager();
if (itemMan == null)
return false;
if (addToInventory)
if (!itemMan.hasRoomInventory(ib.getWeight())) {
ChatManager.chatSystemInfo(pc, "You can not carry any more of that item.");
return false;
}
if (addToInventory && ib.getUUID() == ItemBase.GOLD_BASE_ID) {
if (pc.getCharItemManager().getGoldInventory().getNumOfItems() + amount > MBServerStatics.PLAYER_GOLD_LIMIT) {
return false;
}
if (pc.getCharItemManager().getGoldInventory().getNumOfItems() + amount < 0)
return false;
}
int oldAmount = warehouse.resources.get(ib);
if (oldAmount < amount)
return false;
int newAmount = oldAmount - amount;
if (!WithdrawApproved(ib,amount,warehouse))
return false;
warehouse.resources.put(ib, newAmount);
if (addToInventory) {
if (ib.getUUID() == 7) {
itemMan.addGoldToInventory(amount, false);
UpdateGoldMsg ugm = new UpdateGoldMsg(pc);
ugm.configure();
Dispatch dispatch = Dispatch.borrow(pc, ugm);
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);
itemMan.updateInventory();
} else {
boolean itemWorked = false;
Item item = new Item(ib, pc.getObjectUUID(), Enum.OwnerType.PlayerCharacter, (byte) 0, (byte) 0,
(short) 1, (short) 1, true, false, Enum.ItemContainerType.INVENTORY, (byte) 0,
new ArrayList<>(), "");
item.setNumOfItems(amount);
item.containerType = Enum.ItemContainerType.INVENTORY;
try {
item = DbManager.ItemQueries.ADD_ITEM(item);
itemWorked = true;
} catch (Exception e) {
Logger.error(e);
}
if (itemWorked) {
itemMan.addItemToInventory(item);
itemMan.updateInventory();
}
}
}
Resource resourceType;
if (ib.getUUID() == 7)
resourceType = Resource.GOLD;
else
resourceType = Resource.valueOf(ib.getName().toUpperCase());
if (transaction)
AddTransactionToWarehouse(warehouse, pc.getObjectType(), pc.getObjectUUID(), Enum.TransactionType.WITHDRAWL, resourceType, amount);
return true;
}
public static synchronized boolean loot(Warehouse warehouse, PlayerCharacter pc, ItemBase ib, int amount, boolean addToInventory) {
if (pc == null)
return false;
if (ib == null)
return false;
if (warehouse.resources.get(ib) == null)
return false;
if (amount <= 0)
return false;
CharacterItemManager itemMan = pc.getCharItemManager();
if (itemMan == null)
return false;
if (!itemMan.hasRoomInventory(ib.getWeight())) {
ChatManager.chatSystemInfo(pc, "You can not carry any more of that item.");
return false;
}
int oldAmount = warehouse.resources.get(ib);
if (oldAmount < amount)
return false;
int newAmount = oldAmount - amount;
warehouse.resources.put(ib, newAmount);
if (addToInventory) {
if (ib.getUUID() == 7) {
itemMan.addGoldToInventory(amount, false);
UpdateGoldMsg ugm = new UpdateGoldMsg(pc);
ugm.configure();
Dispatch dispatch = Dispatch.borrow(pc, ugm);
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);
itemMan.updateInventory();
} else {
boolean itemWorked = false;
Item item = new Item(ib, pc.getObjectUUID(), Enum.OwnerType.PlayerCharacter, (byte) 0, (byte) 0,
(short) 1, (short) 1, true, false, Enum.ItemContainerType.INVENTORY, (byte) 0,
new ArrayList<>(), "");
item.setNumOfItems(amount);
item.containerType = Enum.ItemContainerType.INVENTORY;
try {
item = DbManager.ItemQueries.ADD_ITEM(item);
itemWorked = true;
} catch (Exception e) {
Logger.error(e);
}
if (itemWorked) {
itemMan.addItemToInventory(item);
itemMan.updateInventory();
}
}
}
return true;
}
public static boolean isEmpty(Warehouse warehouse) {
int amount = 0;
for (ItemBase ib : ItemBase.getResourceList()) {
if (amount > 0)
return false;
amount += warehouse.resources.get(ib);
}
return true;
}
public static void loadAllTransactions(Warehouse warehouse) {
warehouse.transactions = DbManager.WarehouseQueries.GET_TRANSACTIONS_FOR_WAREHOUSE(warehouse.buildingUID);
}
public static void AddTransactionToWarehouse(Warehouse warehouse, Enum.GameObjectType targetType, int targetUUID, Enum.TransactionType transactionType, Resource resource, int amount) {
if (!DbManager.WarehouseQueries.CREATE_TRANSACTION(warehouse.buildingUID, targetType, targetUUID, transactionType, resource, amount, DateTime.now()))
return;
Transaction transaction = new Transaction(warehouse.buildingUID, targetType, targetUUID, transactionType, resource, amount, DateTime.now());
warehouse.transactions.add(transaction);
}
public static boolean isAboveCap(Warehouse warehouse, ItemBase ib, int deposit) {
int newAmount = warehouse.resources.get(ib) + deposit;
return newAmount > getMaxResources().get(ib.getUUID());
}
public static boolean isResourceLocked(Warehouse warehouse, ItemBase itemBase) {
Enum.ResourceType resourceType;
resourceType = Enum.ResourceType.resourceLookup.get(itemBase.getUUID());
return resourceType.elementOf(warehouse.lockedResourceTypes);
}
}

3
src/engine/net/client/handlers/ArcViewAssetTransactionsMsgHandler.java

@ -3,6 +3,7 @@ package engine.net.client.handlers;
import engine.Enum; import engine.Enum;
import engine.exception.MsgSendException; import engine.exception.MsgSendException;
import engine.gameManager.SessionManager; import engine.gameManager.SessionManager;
import engine.gameManager.WarehouseManager;
import engine.net.Dispatch; import engine.net.Dispatch;
import engine.net.DispatchMessage; import engine.net.DispatchMessage;
import engine.net.client.ClientConnection; import engine.net.client.ClientConnection;
@ -37,7 +38,7 @@ public class ArcViewAssetTransactionsMsgHandler extends AbstractClientMsgHandler
msg = (ArcViewAssetTransactionsMsg) baseMsg; msg = (ArcViewAssetTransactionsMsg) baseMsg;
Warehouse warehouse = Warehouse.warehouseByBuildingUUID.get(msg.getWarehouseID()); Warehouse warehouse = WarehouseManager.warehouseByBuildingUUID.get(msg.getWarehouseID());
if (warehouse == null) if (warehouse == null)
return true; return true;

5
src/engine/net/client/handlers/ManageCityAssetMsgHandler.java

@ -6,6 +6,7 @@ import engine.Enum.GameObjectType;
import engine.exception.MsgSendException; import engine.exception.MsgSendException;
import engine.gameManager.BuildingManager; import engine.gameManager.BuildingManager;
import engine.gameManager.SessionManager; import engine.gameManager.SessionManager;
import engine.gameManager.WarehouseManager;
import engine.gameManager.ZoneManager; import engine.gameManager.ZoneManager;
import engine.math.Bounds; import engine.math.Bounds;
import engine.net.Dispatch; import engine.net.Dispatch;
@ -166,12 +167,12 @@ public class ManageCityAssetMsgHandler extends AbstractClientMsgHandler {
return true; return true;
} }
Warehouse warehouse = Warehouse.warehouseByBuildingUUID.get(building.getObjectUUID()); Warehouse warehouse = WarehouseManager.warehouseByBuildingUUID.get(building.getObjectUUID());
if (warehouse == null) if (warehouse == null)
return true; return true;
if (warehouse.isEmpty()) { if (WarehouseManager.isEmpty(warehouse)) {
ErrorPopupMsg.sendErrorPopup(player, 167); // no more resources. ErrorPopupMsg.sendErrorPopup(player, 167); // no more resources.
return true; return true;
} }

6
src/engine/net/client/handlers/MerchantMsgHandler.java

@ -437,13 +437,13 @@ public class MerchantMsgHandler extends AbstractClientMsgHandler {
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY); DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);
break; break;
case 17: case 17:
Warehouse.warehouseWithdraw(msg, player, npc, origin); WarehouseManager.warehouseWithdraw(msg, player, npc);
break; break;
case 18: case 18:
Warehouse.warehouseDeposit(msg, player, npc, origin); WarehouseManager.warehouseDeposit(msg, player, npc);
break; break;
case 19: case 19:
Warehouse.warehouseLock(msg, player, npc, origin); WarehouseManager.warehouseLock(msg, player, npc);
break; break;
} }

40
src/engine/net/client/handlers/ObjectActionMsgHandler.java

@ -98,27 +98,27 @@ public class ObjectActionMsgHandler extends AbstractClientMsgHandler {
return false; return false;
} }
resourceValue = warehouse.getResources().get(Warehouse.goldIB); resourceValue = warehouse.resources.get(WarehouseManager.goldIB);
if (resourceValue < 5000000) if (resourceValue < 5000000)
hasResources = false; hasResources = false;
resourceValue = warehouse.getResources().get(Warehouse.stoneIB); resourceValue = warehouse.resources.get(WarehouseManager.stoneIB);
if (resourceValue < 8000) if (resourceValue < 8000)
hasResources = false; hasResources = false;
resourceValue = warehouse.getResources().get(Warehouse.lumberIB); resourceValue = warehouse.resources.get(WarehouseManager.lumberIB);
if (resourceValue < 8000) if (resourceValue < 8000)
hasResources = false; hasResources = false;
resourceValue = warehouse.getResources().get(Warehouse.galvorIB); resourceValue = warehouse.resources.get(WarehouseManager.galvorIB);
if (resourceValue < 15) if (resourceValue < 15)
hasResources = false; hasResources = false;
resourceValue = warehouse.getResources().get(Warehouse.wormwoodIB); resourceValue = warehouse.resources.get(WarehouseManager.wormwoodIB);
if (resourceValue < 15) if (resourceValue < 15)
hasResources = false; hasResources = false;
@ -130,51 +130,51 @@ public class ObjectActionMsgHandler extends AbstractClientMsgHandler {
// Remove resources from warehouse before claiming realm // Remove resources from warehouse before claiming realm
resourceValue = warehouse.getResources().get(Warehouse.goldIB); resourceValue = warehouse.resources.get(WarehouseManager.goldIB);
if (DbManager.WarehouseQueries.updateGold(warehouse, resourceValue - 5000000) == true) { if (DbManager.WarehouseQueries.updateGold(warehouse, resourceValue - 5000000) == true) {
warehouse.getResources().put(Warehouse.goldIB, resourceValue - 5000000); warehouse.resources.put(WarehouseManager.goldIB, resourceValue - 5000000);
warehouse.AddTransactionToWarehouse(engine.Enum.GameObjectType.Building, tol.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.GOLD, 5000000); WarehouseManager.AddTransactionToWarehouse(warehouse, engine.Enum.GameObjectType.Building, tol.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.GOLD, 5000000);
} else { } else {
Logger.error("gold update failed for warehouse of UUID:" + warehouse.getObjectUUID()); Logger.error("gold update failed for warehouse of UUID:" + warehouse.getObjectUUID());
return false; return false;
} }
resourceValue = warehouse.getResources().get(Warehouse.stoneIB); resourceValue = warehouse.resources.get(WarehouseManager.stoneIB);
if (DbManager.WarehouseQueries.updateStone(warehouse, resourceValue - 8000) == true) { if (DbManager.WarehouseQueries.updateStone(warehouse, resourceValue - 8000) == true) {
warehouse.getResources().put(Warehouse.stoneIB, resourceValue - 8000); warehouse.resources.put(WarehouseManager.stoneIB, resourceValue - 8000);
warehouse.AddTransactionToWarehouse(engine.Enum.GameObjectType.Building, tol.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.STONE, 8000); WarehouseManager.AddTransactionToWarehouse(warehouse, engine.Enum.GameObjectType.Building, tol.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.STONE, 8000);
} else { } else {
Logger.error("stone update failed for warehouse of UUID:" + warehouse.getObjectUUID()); Logger.error("stone update failed for warehouse of UUID:" + warehouse.getObjectUUID());
return false; return false;
} }
resourceValue = warehouse.getResources().get(Warehouse.lumberIB); resourceValue = warehouse.resources.get(WarehouseManager.lumberIB);
if (DbManager.WarehouseQueries.updateLumber(warehouse, resourceValue - 8000) == true) { if (DbManager.WarehouseQueries.updateLumber(warehouse, resourceValue - 8000) == true) {
warehouse.getResources().put(Warehouse.lumberIB, resourceValue - 8000); warehouse.resources.put(WarehouseManager.lumberIB, resourceValue - 8000);
warehouse.AddTransactionToWarehouse(engine.Enum.GameObjectType.Building, tol.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.LUMBER, 8000); WarehouseManager.AddTransactionToWarehouse(warehouse, engine.Enum.GameObjectType.Building, tol.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.LUMBER, 8000);
} else { } else {
Logger.error("lumber update failed for warehouse of UUID:" + warehouse.getObjectUUID()); Logger.error("lumber update failed for warehouse of UUID:" + warehouse.getObjectUUID());
return false; return false;
} }
resourceValue = warehouse.getResources().get(Warehouse.galvorIB); resourceValue = warehouse.resources.get(WarehouseManager.galvorIB);
if (DbManager.WarehouseQueries.updateGalvor(warehouse, resourceValue - 15) == true) { if (DbManager.WarehouseQueries.updateGalvor(warehouse, resourceValue - 15) == true) {
warehouse.getResources().put(Warehouse.galvorIB, resourceValue - 15); warehouse.resources.put(WarehouseManager.galvorIB, resourceValue - 15);
warehouse.AddTransactionToWarehouse(engine.Enum.GameObjectType.Building, tol.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.GALVOR, 15); WarehouseManager.AddTransactionToWarehouse(warehouse, engine.Enum.GameObjectType.Building, tol.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.GALVOR, 15);
} else { } else {
Logger.error("galvor update failed for warehouse of UUID:" + warehouse.getObjectUUID()); Logger.error("galvor update failed for warehouse of UUID:" + warehouse.getObjectUUID());
return false; return false;
} }
resourceValue = warehouse.getResources().get(Warehouse.wormwoodIB); resourceValue = warehouse.resources.get(WarehouseManager.wormwoodIB);
if (DbManager.WarehouseQueries.updateWormwood(warehouse, resourceValue - 15) == true) { if (DbManager.WarehouseQueries.updateWormwood(warehouse, resourceValue - 15) == true) {
warehouse.getResources().put(Warehouse.wormwoodIB, resourceValue - 15); warehouse.resources.put(WarehouseManager.wormwoodIB, resourceValue - 15);
warehouse.AddTransactionToWarehouse(engine.Enum.GameObjectType.Building, tol.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.WORMWOOD, 15); WarehouseManager.AddTransactionToWarehouse(warehouse, engine.Enum.GameObjectType.Building, tol.getObjectUUID(), Enum.TransactionType.WITHDRAWL, Resource.WORMWOOD, 15);
} else { } else {
Logger.error("wormwood update failed for warehouse of UUID:" + warehouse.getObjectUUID()); Logger.error("wormwood update failed for warehouse of UUID:" + warehouse.getObjectUUID());
return false; return false;

2
src/engine/net/client/handlers/PlaceAssetMsgHandler.java

@ -1359,7 +1359,7 @@ public class PlaceAssetMsgHandler extends AbstractClientMsgHandler {
return true; return true;
city.setWarehouseBuildingID(newMesh.getObjectUUID()); city.setWarehouseBuildingID(newMesh.getObjectUUID());
Warehouse.warehouseByBuildingUUID.put(newMesh.getObjectUUID(), warehouse); WarehouseManager.warehouseByBuildingUUID.put(newMesh.getObjectUUID(), warehouse);
} }
} }

2
src/engine/net/client/handlers/TaxCityMsgHandler.java

@ -111,7 +111,7 @@ public class TaxCityMsgHandler extends AbstractClientMsgHandler {
ViewResourcesMessage vrm = new ViewResourcesMessage(player); ViewResourcesMessage vrm = new ViewResourcesMessage(player);
vrm.setGuild(building.getGuild()); vrm.setGuild(building.getGuild());
vrm.setWarehouseBuilding(BuildingManager.getBuildingFromCache(building.getCity().getWarehouse().getBuildingUID())); vrm.setWarehouseBuilding(BuildingManager.getBuildingFromCache(building.getCity().getWarehouse().buildingUID));
vrm.configure(); vrm.configure();
Dispatch dispatch = Dispatch.borrow(player, msg); Dispatch dispatch = Dispatch.borrow(player, msg);
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY); DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);

12
src/engine/net/client/msg/ArcViewAssetTransactionsMsg.java

@ -61,13 +61,13 @@ public class ArcViewAssetTransactionsMsg extends ClientNetMsg {
public void configure() { public void configure() {
warehouseBuilding = BuildingManager.getBuilding(this.warehouse.getBuildingUID()); warehouseBuilding = BuildingManager.getBuilding(this.warehouse.buildingUID);
transactions = new ArrayList<>(50); transactions = new ArrayList<>(50);
if (this.warehouse.getTransactions().size() > 150) { if (this.warehouse.transactions.size() > 150) {
transactions.addAll(this.warehouse.getTransactions().subList(this.warehouse.getTransactions().size() - 150, this.warehouse.getTransactions().size())); transactions.addAll(this.warehouse.transactions.subList(this.warehouse.transactions.size() - 150, this.warehouse.transactions.size()));
} else } else
transactions = this.warehouse.getTransactions(); transactions = this.warehouse.transactions;
} }
@ -78,7 +78,7 @@ public class ArcViewAssetTransactionsMsg extends ClientNetMsg {
protected void _serialize(ByteBufferWriter writer) throws SerializationException { protected void _serialize(ByteBufferWriter writer) throws SerializationException {
writer.putInt(this.transactionID); writer.putInt(this.transactionID);
writer.putInt(this.warehouse.getBuildingUID()); writer.putInt(this.warehouse.buildingUID);
writer.putInt(transactions.size()); //list Size writer.putInt(transactions.size()); //list Size
for (Transaction transaction : transactions) { for (Transaction transaction : transactions) {
@ -124,7 +124,7 @@ public class ArcViewAssetTransactionsMsg extends ClientNetMsg {
writer.putInt(transaction.getTargetUUID()); //ID writer.putInt(transaction.getTargetUUID()); //ID
writer.putString(name); //Name of depositer/withdrawler or mine name writer.putString(name); //Name of depositer/withdrawler or mine name
writer.putInt(GameObjectType.Building.ordinal()); //Type writer.putInt(GameObjectType.Building.ordinal()); //Type
writer.putInt(warehouse.getBuildingUID()); //ID writer.putInt(warehouse.buildingUID); //ID
writer.putString(warehouseBuilding.getName()); //warehouse writer.putString(warehouseBuilding.getName()); //warehouse
writer.putInt(transaction.getTransactionType().getID()); //79,80 withdrew, 81 mine produced, 82 deposit writer.putInt(transaction.getTransactionType().getID()); //79,80 withdrew, 81 mine produced, 82 deposit
writer.putInt(transaction.getAmount()); //amount writer.putInt(transaction.getAmount()); //amount

15
src/engine/net/client/msg/ViewResourcesMessage.java

@ -11,6 +11,7 @@ package engine.net.client.msg;
import engine.Enum; import engine.Enum;
import engine.gameManager.DbManager; import engine.gameManager.DbManager;
import engine.gameManager.WarehouseManager;
import engine.net.AbstractConnection; import engine.net.AbstractConnection;
import engine.net.ByteBufferReader; import engine.net.ByteBufferReader;
import engine.net.ByteBufferWriter; import engine.net.ByteBufferWriter;
@ -89,26 +90,26 @@ public class ViewResourcesMessage extends ClientNetMsg {
@Override @Override
protected void _serialize(ByteBufferWriter writer) { protected void _serialize(ByteBufferWriter writer) {
writer.putInt(warehouseObject.getResources().size()); writer.putInt(warehouseObject.resources.size());
for (ItemBase ib : (warehouseObject.getResources().keySet())) { for (ItemBase ib : (warehouseObject.resources.keySet())) {
writer.putInt(ib.getHashID()); writer.putInt(ib.getHashID());
writer.putInt((warehouseObject.getResources().get(ib))); writer.putInt((warehouseObject.resources.get(ib)));
if (warehouseObject.isResourceLocked(ib) == true) if (WarehouseManager.isResourceLocked(warehouseObject, ib) == true)
writer.put((byte) 1); writer.put((byte) 1);
else else
writer.put((byte) 0); writer.put((byte) 0);
} }
writer.putInt(warehouseObject.getResources().size()); writer.putInt(warehouseObject.resources.size());
for (ItemBase ib : warehouseObject.getResources().keySet()) { for (ItemBase ib : warehouseObject.resources.keySet()) {
writer.putInt(ib.getHashID()); writer.putInt(ib.getHashID());
writer.putInt(0); //available? writer.putInt(0); //available?
writer.putInt(Warehouse.getMaxResources().get(ib.getUUID())); //max? writer.putInt(WarehouseManager.getMaxResources().get(ib.getUUID())); //max?
} }
GuildTag._serializeForDisplay(guild.getGuildTag(), writer); GuildTag._serializeForDisplay(guild.getGuildTag(), writer);

11
src/engine/objects/Building.java

@ -19,6 +19,7 @@ import engine.db.archive.DataWarehouse;
import engine.db.archive.MineRecord; import engine.db.archive.MineRecord;
import engine.gameManager.BuildingManager; import engine.gameManager.BuildingManager;
import engine.gameManager.DbManager; import engine.gameManager.DbManager;
import engine.gameManager.WarehouseManager;
import engine.gameManager.ZoneManager; import engine.gameManager.ZoneManager;
import engine.job.JobContainer; import engine.job.JobContainer;
import engine.job.JobScheduler; import engine.job.JobScheduler;
@ -1429,18 +1430,18 @@ public class Building extends AbstractWorldObject {
if (this.getCity().getWarehouse() == null) if (this.getCity().getWarehouse() == null)
return amount; return amount;
if (this.getCity().getWarehouse().getResources().get(ItemBase.getGoldItemBase()) >= Warehouse.getMaxResources().get(ItemBase.getGoldItemBase().getUUID())) if (this.getCity().getWarehouse().resources.get(ItemBase.getGoldItemBase()) >= WarehouseManager.getMaxResources().get(ItemBase.getGoldItemBase().getUUID()))
return amount; return amount;
int profitAmount = (int) (amount * (taxAmount * .01f)); int profitAmount = (int) (amount * (taxAmount * .01f));
if (this.getCity().getWarehouse().getResources().get(ItemBase.getGoldItemBase()) + profitAmount <= Warehouse.getMaxResources().get(ItemBase.getGoldItemBase().getUUID())) { if (this.getCity().getWarehouse().resources.get(ItemBase.getGoldItemBase()) + profitAmount <= WarehouseManager.getMaxResources().get(ItemBase.getGoldItemBase().getUUID())) {
this.getCity().getWarehouse().depositProfitTax(ItemBase.getGoldItemBase(), profitAmount, this); WarehouseManager.depositProfitTax(ItemBase.getGoldItemBase(), profitAmount, this,this.getCity().getWarehouse());
return amount - profitAmount; return amount - profitAmount;
} }
//overDrafting //overDrafting
int warehouseDeposit = Warehouse.getMaxResources().get(ItemBase.getGoldItemBase().getUUID()) - this.getCity().getWarehouse().getResources().get(ItemBase.getGoldItemBase()); int warehouseDeposit = WarehouseManager.getMaxResources().get(ItemBase.getGoldItemBase().getUUID()) - this.getCity().getWarehouse().resources.get(ItemBase.getGoldItemBase());
this.getCity().getWarehouse().depositProfitTax(ItemBase.getGoldItemBase(), warehouseDeposit, this); WarehouseManager.depositProfitTax(ItemBase.getGoldItemBase(), warehouseDeposit, this,this.getCity().getWarehouse());
return amount - warehouseDeposit; return amount - warehouseDeposit;
} }

9
src/engine/objects/CharacterItemManager.java

@ -12,10 +12,7 @@ package engine.objects;
import engine.Enum; import engine.Enum;
import engine.Enum.GameObjectType; import engine.Enum.GameObjectType;
import engine.Enum.ItemType; import engine.Enum.ItemType;
import engine.gameManager.BuildingManager; import engine.gameManager.*;
import engine.gameManager.ChatManager;
import engine.gameManager.ConfigManager;
import engine.gameManager.DbManager;
import engine.math.Vector3fImmutable; import engine.math.Vector3fImmutable;
import engine.net.Dispatch; import engine.net.Dispatch;
import engine.net.DispatchMessage; import engine.net.DispatchMessage;
@ -345,13 +342,13 @@ public class CharacterItemManager {
Warehouse warehouse = (Warehouse) object; Warehouse warehouse = (Warehouse) object;
if (amount < 0) { if (amount < 0) {
if (!warehouse.deposit((PlayerCharacter) this.absCharacter, this.getGoldInventory(), amount * -1, true, true)) { if (!WarehouseManager.deposit((PlayerCharacter) this.absCharacter, this.getGoldInventory(), amount * -1, true, true,warehouse)) {
ErrorPopupMsg.sendErrorPopup((PlayerCharacter) this.absCharacter, 203); ErrorPopupMsg.sendErrorPopup((PlayerCharacter) this.absCharacter, 203);
return false; return false;
} }
} else { } else {
if (!warehouse.withdraw((PlayerCharacter) this.absCharacter, this.getGoldInventory().getItemBase(), amount * -1, true, true)) { if (!WarehouseManager.withdraw(warehouse, (PlayerCharacter) this.absCharacter, this.getGoldInventory().getItemBase(), amount * -1, true, true)) {
ErrorPopupMsg.sendErrorPopup((PlayerCharacter) this.absCharacter, 203); ErrorPopupMsg.sendErrorPopup((PlayerCharacter) this.absCharacter, 203);
return false; return false;

8
src/engine/objects/City.java

@ -875,7 +875,7 @@ public class City extends AbstractWorldObject {
if (this.warehouseBuildingID == 0) if (this.warehouseBuildingID == 0)
return null; return null;
return Warehouse.warehouseByBuildingUUID.get(this.warehouseBuildingID); return WarehouseManager.warehouseByBuildingUUID.get(this.warehouseBuildingID);
} }
public Realm getRealm() { public Realm getRealm() {
@ -1358,7 +1358,7 @@ public class City extends AbstractWorldObject {
ItemBase ib = ItemBase.getItemBase(itemBaseID); ItemBase ib = ItemBase.getItemBase(itemBaseID);
if (ib == null) if (ib == null)
continue; continue;
if (ruledWarehouse.isAboveCap(ib, (int) (city.getWarehouse().getResources().get(ib) * taxPercent))) { if (WarehouseManager.isAboveCap(ruledWarehouse, ib, (int) (city.getWarehouse().resources.get(ib) * taxPercent))) {
ErrorPopupMsg.sendErrorMsg(player, "You're warehouse has enough " + ib.getName() + " already!"); ErrorPopupMsg.sendErrorMsg(player, "You're warehouse has enough " + ib.getName() + " already!");
return true; return true;
} }
@ -1371,7 +1371,7 @@ public class City extends AbstractWorldObject {
} }
try { try {
city.getWarehouse().transferResources(player, msg, resources, taxPercent, ruledWarehouse); WarehouseManager.transferResources(city.getWarehouse(), player, msg, resources, taxPercent);
} catch (Exception e) { } catch (Exception e) {
Logger.info(e.getMessage()); Logger.info(e.getMessage());
} }
@ -1380,7 +1380,7 @@ public class City extends AbstractWorldObject {
ViewResourcesMessage vrm = new ViewResourcesMessage(player); ViewResourcesMessage vrm = new ViewResourcesMessage(player);
vrm.setGuild(building.getGuild()); vrm.setGuild(building.getGuild());
vrm.setWarehouseBuilding(BuildingManager.getBuildingFromCache(building.getCity().getWarehouse().getBuildingUID())); vrm.setWarehouseBuilding(BuildingManager.getBuildingFromCache(building.getCity().getWarehouse().buildingUID));
vrm.configure(); vrm.configure();
Dispatch dispatch = Dispatch.borrow(player, vrm); Dispatch dispatch = Dispatch.borrow(player, vrm);
DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY); DispatchMessage.dispatchMsgDispatch(dispatch, Enum.DispatchChannel.SECONDARY);

94
src/engine/objects/ItemFactory.java

@ -119,7 +119,7 @@ public class ItemFactory {
// ROLL BANE SCROLL. // ROLL BANE SCROLL.
if (ib.getUUID() > 910010 && ib.getUUID() < 910019) { if (ib.getUUID() > 910010 && ib.getUUID() < 910019) {
ConcurrentHashMap<ItemBase, Integer> resources = cityWarehouse.getResources(); ConcurrentHashMap<ItemBase, Integer> resources = cityWarehouse.resources;
int buildingWithdraw = BuildingManager.GetWithdrawAmountForRolling(forge, ib.getBaseValue()); int buildingWithdraw = BuildingManager.GetWithdrawAmountForRolling(forge, ib.getBaseValue());
@ -131,7 +131,7 @@ public class ItemFactory {
return null; return null;
} }
if (overdraft > 0 && cityWarehouse.isResourceLocked(ItemBase.GOLD_ITEM_BASE)) { if (overdraft > 0 && WarehouseManager.isResourceLocked(cityWarehouse, ItemBase.GOLD_ITEM_BASE)) {
if (pc != null) if (pc != null)
ErrorPopupMsg.sendErrorMsg(pc, "Warehouse gold is barred! Overdraft cannot be withdrawn from warehouse." + " " + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Warehouse gold is barred! Overdraft cannot be withdrawn from warehouse." + " " + ib.getName());
return null; return null;
@ -167,9 +167,9 @@ public class ItemFactory {
} }
if (overdraft > 0) if (overdraft > 0)
if (!cityWarehouse.withdraw(npc, ItemBase.GOLD_ITEM_BASE, overdraft, false, true)) { if (!WarehouseManager.withdraw(cityWarehouse, npc, ItemBase.GOLD_ITEM_BASE, overdraft, true)) {
//ChatManager.chatGuildError(pc, "Failed to create Item"); //ChatManager.chatGuildError(pc, "Failed to create Item");
Logger.error("Warehouse With UID of " + cityWarehouse.getUID() + " Failed to Create Item." + ib.getName()); Logger.error("Warehouse With UID of " + cityWarehouse.UID + " Failed to Create Item." + ib.getName());
return null; return null;
} }
@ -263,13 +263,13 @@ public class ItemFactory {
} }
if (galvorAmount > 0) { if (galvorAmount > 0) {
if (cityWarehouse.isResourceLocked(galvor)) { if (WarehouseManager.isResourceLocked(cityWarehouse, galvor)) {
if (pc != null) if (pc != null)
ErrorPopupMsg.sendErrorMsg(pc, "Galvor is locked." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Galvor is locked." + ib.getName());
return null; return null;
} }
if (cityWarehouse.getResources().get(galvor) < galvorAmount) { if (cityWarehouse.resources.get(galvor) < galvorAmount) {
if (pc != null) if (pc != null)
ErrorPopupMsg.sendErrorMsg(pc, "Not enough Galvor in warehouse to roll this item." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Not enough Galvor in warehouse to roll this item." + ib.getName());
return null; return null;
@ -277,13 +277,13 @@ public class ItemFactory {
} }
if (wormwoodAmount > 0) { if (wormwoodAmount > 0) {
if (cityWarehouse.isResourceLocked(wormwood)) { if (WarehouseManager.isResourceLocked(cityWarehouse, wormwood)) {
if (pc != null) if (pc != null)
ErrorPopupMsg.sendErrorMsg(pc, "Wormwood is locked." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Wormwood is locked." + ib.getName());
return null; return null;
} }
if (cityWarehouse.getResources().get(wormwood) < wormwoodAmount) { if (cityWarehouse.resources.get(wormwood) < wormwoodAmount) {
if (pc != null) if (pc != null)
ErrorPopupMsg.sendErrorMsg(pc, "Not enough Wormwood in warehouse to roll this item." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Not enough Wormwood in warehouse to roll this item." + ib.getName());
return null; return null;
@ -320,20 +320,20 @@ public class ItemFactory {
return null; return null;
} }
if (overdraft > 0 && cityWarehouse.isResourceLocked(ItemBase.GOLD_ITEM_BASE)) { if (overdraft > 0 && WarehouseManager.isResourceLocked(cityWarehouse, ItemBase.GOLD_ITEM_BASE)) {
if (pc != null) if (pc != null)
ErrorPopupMsg.sendErrorMsg(pc, "Warehouse gold is barred! Overdraft cannot be withdrawn from warehouse." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Warehouse gold is barred! Overdraft cannot be withdrawn from warehouse." + ib.getName());
return null; return null;
} }
if (overdraft > cityWarehouse.getResources().get(ItemBase.GOLD_ITEM_BASE)) { if (overdraft > cityWarehouse.resources.get(ItemBase.GOLD_ITEM_BASE)) {
if (pc != null) if (pc != null)
ErrorPopupMsg.sendErrorMsg(pc, "Not enough Gold in Warehouse for overdraft." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Not enough Gold in Warehouse for overdraft." + ib.getName());
return null; return null;
} }
prefixResourceCosts = prefix.getResourcesForEffect(); prefixResourceCosts = prefix.getResourcesForEffect();
for (ItemBase ibResources : prefixResourceCosts.keySet()) { for (ItemBase ibResources : prefixResourceCosts.keySet()) {
int warehouseAmount = cityWarehouse.getResources().get(ibResources); int warehouseAmount = cityWarehouse.resources.get(ibResources);
int creationAmount = prefixResourceCosts.get(ibResources); int creationAmount = prefixResourceCosts.get(ibResources);
//ChatManager.chatInfoError(pc, "Prefix : " + ibResources.getName() + " / " + creationAmount); //ChatManager.chatInfoError(pc, "Prefix : " + ibResources.getName() + " / " + creationAmount);
if (warehouseAmount < creationAmount) { if (warehouseAmount < creationAmount) {
@ -374,13 +374,13 @@ public class ItemFactory {
return null; return null;
} }
if (overdraft > 0 && cityWarehouse.isResourceLocked(ItemBase.GOLD_ITEM_BASE)) { if (overdraft > 0 && WarehouseManager.isResourceLocked(cityWarehouse, ItemBase.GOLD_ITEM_BASE)) {
if (pc != null) if (pc != null)
ErrorPopupMsg.sendErrorMsg(pc, "Warehouse gold is barred! Overdraft cannot be withdrawn from warehouse." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Warehouse gold is barred! Overdraft cannot be withdrawn from warehouse." + ib.getName());
return null; return null;
} }
if (overdraft > cityWarehouse.getResources().get(ItemBase.GOLD_ITEM_BASE)) { if (overdraft > cityWarehouse.resources.get(ItemBase.GOLD_ITEM_BASE)) {
if (pc != null) if (pc != null)
ErrorPopupMsg.sendErrorMsg(pc, "Not enough Gold in Warehouse for overdraft." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Not enough Gold in Warehouse for overdraft." + ib.getName());
return null; return null;
@ -388,7 +388,7 @@ public class ItemFactory {
for (ItemBase ibResources : suffixResourceCosts.keySet()) { for (ItemBase ibResources : suffixResourceCosts.keySet()) {
int warehouseAmount = cityWarehouse.getResources().get(ibResources); int warehouseAmount = cityWarehouse.resources.get(ibResources);
int creationAmount = suffixResourceCosts.get(ibResources); int creationAmount = suffixResourceCosts.get(ibResources);
if (warehouseAmount < creationAmount) { if (warehouseAmount < creationAmount) {
// if (pc != null) // if (pc != null)
@ -414,13 +414,13 @@ public class ItemFactory {
return null; return null;
} }
if (overdraft > 0 && useWarehouse && cityWarehouse.isResourceLocked(ItemBase.GOLD_ITEM_BASE)) { if (overdraft > 0 && useWarehouse && WarehouseManager.isResourceLocked(cityWarehouse, ItemBase.GOLD_ITEM_BASE)) {
if (pc != null) if (pc != null)
ErrorPopupMsg.sendErrorMsg(pc, "Warehouse gold is barred! Overdraft cannot be withdrawn from warehouse." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Warehouse gold is barred! Overdraft cannot be withdrawn from warehouse." + ib.getName());
return null; return null;
} }
if (useWarehouse && overdraft > cityWarehouse.getResources().get(ItemBase.GOLD_ITEM_BASE)) { if (useWarehouse && overdraft > cityWarehouse.resources.get(ItemBase.GOLD_ITEM_BASE)) {
if (pc != null) if (pc != null)
ErrorPopupMsg.sendErrorMsg(pc, "Not enough Gold in Warehouse for overdraft." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Not enough Gold in Warehouse for overdraft." + ib.getName());
return null; return null;
@ -440,7 +440,7 @@ public class ItemFactory {
ErrorPopupMsg.sendErrorMsg(pc, "Building does not have enough gold to produce this item." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Building does not have enough gold to produce this item." + ib.getName());
return null; return null;
} else { } else {
if (overdraft > cityWarehouse.getResources().get(ItemBase.GOLD_ITEM_BASE)) { if (overdraft > cityWarehouse.resources.get(ItemBase.GOLD_ITEM_BASE)) {
ErrorPopupMsg.sendErrorMsg(pc, "Not enough Gold in Warehouse to produce this item." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Not enough Gold in Warehouse to produce this item." + ib.getName());
return null; return null;
} }
@ -448,9 +448,9 @@ public class ItemFactory {
} }
if (overdraft > 0 && useWarehouse) if (overdraft > 0 && useWarehouse)
if (!cityWarehouse.withdraw(npc, ItemBase.GOLD_ITEM_BASE, overdraft, false, true)) { if (!WarehouseManager.withdraw(cityWarehouse, npc, ItemBase.GOLD_ITEM_BASE, overdraft, true)) {
//ChatManager.chatGuildError(pc, "Failed to create Item"); //ChatManager.chatGuildError(pc, "Failed to create Item");
Logger.error("Warehouse With UID of " + cityWarehouse.getUID() + " Failed to Create Item." + ib.getName()); Logger.error("Warehouse With UID of " + cityWarehouse.UID + " Failed to Create Item." + ib.getName());
return null; return null;
} }
@ -467,18 +467,18 @@ public class ItemFactory {
int creationAmount = prefixResourceCosts.get(ibResources); int creationAmount = prefixResourceCosts.get(ibResources);
if (cityWarehouse.isResourceLocked(ibResources) == true) if (WarehouseManager.isResourceLocked(cityWarehouse, ibResources) == true)
return null; return null;
int oldAmount = cityWarehouse.getResources().get(ibResources); int oldAmount = cityWarehouse.resources.get(ibResources);
int amount = creationAmount; int amount = creationAmount;
if (oldAmount < amount) if (oldAmount < amount)
amount = oldAmount; amount = oldAmount;
if (!cityWarehouse.withdraw(npc, ibResources, amount, false, true)) { if (!WarehouseManager.withdraw(cityWarehouse, npc, ibResources, amount, true)) {
//ChatManager.chatGuildError(pc, "Failed to create Item"); //ChatManager.chatGuildError(pc, "Failed to create Item");
Logger.error("Warehouse With UID of " + cityWarehouse.getUID() + " Failed to Create Item." + ib.getName()); Logger.error("Warehouse With UID of " + cityWarehouse.UID + " Failed to Create Item." + ib.getName());
return null; return null;
} }
} }
@ -489,18 +489,18 @@ public class ItemFactory {
for (ItemBase ibResources : suffixResourceCosts.keySet()) { for (ItemBase ibResources : suffixResourceCosts.keySet()) {
int creationAmount = suffixResourceCosts.get(ibResources); int creationAmount = suffixResourceCosts.get(ibResources);
if (cityWarehouse.isResourceLocked(ibResources) == true) { if (WarehouseManager.isResourceLocked(cityWarehouse, ibResources) == true) {
ChatManager.chatSystemError(pc, ibResources.getName() + " is locked!" + ib.getName()); ChatManager.chatSystemError(pc, ibResources.getName() + " is locked!" + ib.getName());
return null; return null;
} }
int oldAmount = cityWarehouse.getResources().get(ibResources); int oldAmount = cityWarehouse.resources.get(ibResources);
int amount = creationAmount; int amount = creationAmount;
if (oldAmount < amount) if (oldAmount < amount)
amount = oldAmount; amount = oldAmount;
if (!cityWarehouse.withdraw(npc, ibResources, amount, false, true)) { if (!WarehouseManager.withdraw(cityWarehouse, npc, ibResources, amount, true)) {
//ChatManager.chatGuildError(pc, "Failed to create Item"); //ChatManager.chatGuildError(pc, "Failed to create Item");
Logger.error("Warehouse With UID of " + cityWarehouse.getUID() + " Failed to Create Item." + ib.getName()); Logger.error("Warehouse With UID of " + cityWarehouse.UID + " Failed to Create Item." + ib.getName());
return null; return null;
} }
} }
@ -522,14 +522,14 @@ public class ItemFactory {
return null; return null;
} }
if (overdraft > 0 && cityWarehouse.isResourceLocked(ItemBase.GOLD_ITEM_BASE)) { if (overdraft > 0 && WarehouseManager.isResourceLocked(cityWarehouse, ItemBase.GOLD_ITEM_BASE)) {
if (pc != null) if (pc != null)
ErrorPopupMsg.sendErrorMsg(pc, "Warehouse gold is barred! Overdraft cannot be withdrawn from warehouse." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Warehouse gold is barred! Overdraft cannot be withdrawn from warehouse." + ib.getName());
return null; return null;
} }
if (useWarehouse && overdraft > cityWarehouse.getResources().get(ItemBase.GOLD_ITEM_BASE)) { if (useWarehouse && overdraft > cityWarehouse.resources.get(ItemBase.GOLD_ITEM_BASE)) {
if (pc != null) if (pc != null)
ErrorPopupMsg.sendErrorMsg(pc, "Not enough Gold in Warehouse for overdraft." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Not enough Gold in Warehouse for overdraft." + ib.getName());
@ -544,7 +544,7 @@ public class ItemFactory {
ErrorPopupMsg.sendErrorMsg(pc, "Building does not have enough gold to produce this item." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Building does not have enough gold to produce this item." + ib.getName());
return null; return null;
} else { } else {
if (overdraft > cityWarehouse.getResources().get(ItemBase.GOLD_ITEM_BASE)) { if (overdraft > cityWarehouse.resources.get(ItemBase.GOLD_ITEM_BASE)) {
ErrorPopupMsg.sendErrorMsg(pc, "Not enough Gold in Warehouse to produce this item." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Not enough Gold in Warehouse to produce this item." + ib.getName());
return null; return null;
} }
@ -552,16 +552,16 @@ public class ItemFactory {
} }
if (overdraft > 0) if (overdraft > 0)
if (!cityWarehouse.withdraw(npc, ItemBase.GOLD_ITEM_BASE, overdraft, false, true)) { if (!WarehouseManager.withdraw(cityWarehouse, npc, ItemBase.GOLD_ITEM_BASE, overdraft, true)) {
//ChatManager.chatGuildError(pc, "Failed to create Item"); //ChatManager.chatGuildError(pc, "Failed to create Item");
Logger.error("Warehouse With UID of " + cityWarehouse.getUID() + " Failed to Create Item." + ib.getName()); Logger.error("Warehouse With UID of " + cityWarehouse.UID + " Failed to Create Item." + ib.getName());
return null; return null;
} }
// ChatManager.chatGuildInfo(pc, "Gold Cost = " + total); // ChatManager.chatGuildInfo(pc, "Gold Cost = " + total);
if (galvorAmount > 0) { if (galvorAmount > 0) {
if (!cityWarehouse.withdraw(npc, galvor, galvorAmount, false, true)) { if (!WarehouseManager.withdraw(cityWarehouse, npc, galvor, galvorAmount, true)) {
ErrorPopupMsg.sendErrorMsg(pc, "Failed to withdraw Galvor from warehouse!" + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Failed to withdraw Galvor from warehouse!" + ib.getName());
Logger.error("Warehouse with UID of" + cityWarehouse.getObjectUUID() + "Failed to Withdrawl "); Logger.error("Warehouse with UID of" + cityWarehouse.getObjectUUID() + "Failed to Withdrawl ");
return null; return null;
@ -569,7 +569,7 @@ public class ItemFactory {
} }
if (wormwoodAmount > 0) { if (wormwoodAmount > 0) {
if (!cityWarehouse.withdraw(npc, wormwood, wormwoodAmount, false, true)) { if (!WarehouseManager.withdraw(cityWarehouse, npc, wormwood, wormwoodAmount, true)) {
ErrorPopupMsg.sendErrorMsg(pc, "Failed to withdraw Wormwood from warehouse!" + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Failed to withdraw Wormwood from warehouse!" + ib.getName());
Logger.error("Warehouse with UID of" + cityWarehouse.getObjectUUID() + "Failed to Withdrawl "); Logger.error("Warehouse with UID of" + cityWarehouse.getObjectUUID() + "Failed to Withdrawl ");
return null; return null;
@ -815,7 +815,7 @@ public class ItemFactory {
ConcurrentHashMap<ItemBase, Integer> resources = null; ConcurrentHashMap<ItemBase, Integer> resources = null;
if (useWarehouse) if (useWarehouse)
resources = cityWarehouse.getResources(); resources = cityWarehouse.resources;
int galvorAmount = 0; int galvorAmount = 0;
int wormwoodAmount = 0; int wormwoodAmount = 0;
@ -852,24 +852,24 @@ public class ItemFactory {
return null; return null;
if (galvorAmount > 0) { if (galvorAmount > 0) {
if (cityWarehouse.isResourceLocked(galvor)) { if (WarehouseManager.isResourceLocked(cityWarehouse, galvor)) {
ErrorPopupMsg.sendErrorMsg(pc, "Galvor is locked." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Galvor is locked." + ib.getName());
return null; return null;
} }
if (cityWarehouse.getResources().get(galvor) < galvorAmount) { if (cityWarehouse.resources.get(galvor) < galvorAmount) {
ErrorPopupMsg.sendErrorMsg(pc, "Not enough Galvor in warehouse to roll this item." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Not enough Galvor in warehouse to roll this item." + ib.getName());
return null; return null;
} }
} }
if (wormwoodAmount > 0) { if (wormwoodAmount > 0) {
if (cityWarehouse.isResourceLocked(wormwood)) { if (WarehouseManager.isResourceLocked(cityWarehouse, wormwood)) {
ErrorPopupMsg.sendErrorMsg(pc, "Galvor is locked." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Galvor is locked." + ib.getName());
return null; return null;
} }
if (cityWarehouse.getResources().get(wormwood) < wormwoodAmount) { if (cityWarehouse.resources.get(wormwood) < wormwoodAmount) {
ErrorPopupMsg.sendErrorMsg(pc, "Not enough Galvor in warehouse to roll this item." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Not enough Galvor in warehouse to roll this item." + ib.getName());
return null; return null;
} }
@ -908,7 +908,7 @@ public class ItemFactory {
return null; return null;
} }
if (useWarehouse && overdraft > 0 && cityWarehouse.isResourceLocked(ItemBase.GOLD_ITEM_BASE)) { if (useWarehouse && overdraft > 0 && WarehouseManager.isResourceLocked(cityWarehouse, ItemBase.GOLD_ITEM_BASE)) {
if (pc != null) if (pc != null)
ErrorPopupMsg.sendErrorMsg(pc, "Warehouse gold is barred! Overdraft cannot be withdrawn from warehouse." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Warehouse gold is barred! Overdraft cannot be withdrawn from warehouse." + ib.getName());
return null; return null;
@ -936,12 +936,12 @@ public class ItemFactory {
// there was an overdraft, withdraw the rest from warehouse. // there was an overdraft, withdraw the rest from warehouse.
if (overdraft > 0) { if (overdraft > 0) {
if (pc != null) { if (pc != null) {
if (!cityWarehouse.withdraw(pc, ItemBase.GOLD_ITEM_BASE, overdraft, false, true)) { if (!WarehouseManager.withdraw(cityWarehouse, pc, ItemBase.GOLD_ITEM_BASE, overdraft, false, true)) {
Logger.error("Warehouse with UID of" + cityWarehouse.getObjectUUID() + "Failed to Withdrawl "); Logger.error("Warehouse with UID of" + cityWarehouse.getObjectUUID() + "Failed to Withdrawl ");
return null; return null;
} }
} else { } else {
if (!cityWarehouse.withdraw(npc, ItemBase.GOLD_ITEM_BASE, overdraft, false, true)) { if (!WarehouseManager.withdraw(cityWarehouse, npc, ItemBase.GOLD_ITEM_BASE, overdraft, true)) {
Logger.error("Warehouse with UID of" + cityWarehouse.getObjectUUID() + "Failed to Withdrawl "); Logger.error("Warehouse with UID of" + cityWarehouse.getObjectUUID() + "Failed to Withdrawl ");
return null; return null;
} }
@ -959,7 +959,7 @@ public class ItemFactory {
return null; return null;
} }
if (useWarehouse && overdraft > 0 && cityWarehouse.isResourceLocked(ItemBase.GOLD_ITEM_BASE)) { if (useWarehouse && overdraft > 0 && WarehouseManager.isResourceLocked(cityWarehouse, ItemBase.GOLD_ITEM_BASE)) {
if (pc != null) if (pc != null)
ErrorPopupMsg.sendErrorMsg(pc, "Warehouse gold is barred! Overdraft cannot be withdrawn from warehouse." + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Warehouse gold is barred! Overdraft cannot be withdrawn from warehouse." + ib.getName());
return null; return null;
@ -987,12 +987,12 @@ public class ItemFactory {
if (overdraft > 0 && useWarehouse) { if (overdraft > 0 && useWarehouse) {
if (pc != null) { if (pc != null) {
if (!cityWarehouse.withdraw(pc, ItemBase.GOLD_ITEM_BASE, overdraft, false, true)) { if (!WarehouseManager.withdraw(cityWarehouse, pc, ItemBase.GOLD_ITEM_BASE, overdraft, false, true)) {
Logger.error("Warehouse with UID of" + cityWarehouse.getObjectUUID() + "Failed to Withdrawl "); Logger.error("Warehouse with UID of" + cityWarehouse.getObjectUUID() + "Failed to Withdrawl ");
return null; return null;
} }
} else { } else {
if (!cityWarehouse.withdraw(npc, ItemBase.GOLD_ITEM_BASE, overdraft, false, true)) { if (!WarehouseManager.withdraw(cityWarehouse, npc, ItemBase.GOLD_ITEM_BASE, overdraft, true)) {
Logger.error("Warehouse with UID of" + cityWarehouse.getObjectUUID() + "Failed to Withdrawl "); Logger.error("Warehouse with UID of" + cityWarehouse.getObjectUUID() + "Failed to Withdrawl ");
return null; return null;
} }
@ -1002,7 +1002,7 @@ public class ItemFactory {
if (galvorAmount > 0 && useWarehouse) { if (galvorAmount > 0 && useWarehouse) {
//ChatManager.chatGuildInfo(pc, "Withdrawing " + galvorAmount + " galvor from warehouse"); //ChatManager.chatGuildInfo(pc, "Withdrawing " + galvorAmount + " galvor from warehouse");
if (!cityWarehouse.withdraw(npc, galvor, galvorAmount, false, true)) { if (!WarehouseManager.withdraw(cityWarehouse, npc, galvor, galvorAmount, true)) {
ErrorPopupMsg.sendErrorMsg(pc, "Failed to withdraw Galvor from warehouse!" + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Failed to withdraw Galvor from warehouse!" + ib.getName());
Logger.error("Warehouse with UID of" + cityWarehouse.getObjectUUID() + "Failed to Withdrawl "); Logger.error("Warehouse with UID of" + cityWarehouse.getObjectUUID() + "Failed to Withdrawl ");
return null; return null;
@ -1011,7 +1011,7 @@ public class ItemFactory {
if (wormwoodAmount > 0 && useWarehouse) { if (wormwoodAmount > 0 && useWarehouse) {
//ChatManager.chatGuildInfo(pc, "Withdrawing " + wormwoodAmount + " wormwood from warehouse"); //ChatManager.chatGuildInfo(pc, "Withdrawing " + wormwoodAmount + " wormwood from warehouse");
if (!cityWarehouse.withdraw(npc, wormwood, wormwoodAmount, false, true)) { if (!WarehouseManager.withdraw(cityWarehouse, npc, wormwood, wormwoodAmount, true)) {
ErrorPopupMsg.sendErrorMsg(pc, "Failed to withdraw Wormwood from warehouse for " + ib.getName()); ErrorPopupMsg.sendErrorMsg(pc, "Failed to withdraw Wormwood from warehouse for " + ib.getName());
Logger.error("Warehouse with UID of" + cityWarehouse.getObjectUUID() + "Failed to Withdrawl "); Logger.error("Warehouse with UID of" + cityWarehouse.getObjectUUID() + "Failed to Withdrawl ");

7
src/engine/objects/Mine.java

@ -11,10 +11,7 @@ package engine.objects;
import engine.Enum; import engine.Enum;
import engine.InterestManagement.WorldGrid; import engine.InterestManagement.WorldGrid;
import engine.gameManager.BuildingManager; import engine.gameManager.*;
import engine.gameManager.ChatManager;
import engine.gameManager.DbManager;
import engine.gameManager.ZoneManager;
import engine.net.ByteBufferWriter; import engine.net.ByteBufferWriter;
import engine.net.client.msg.ErrorPopupMsg; import engine.net.client.msg.ErrorPopupMsg;
import engine.server.MBServerStatics; import engine.server.MBServerStatics;
@ -483,7 +480,7 @@ public class Mine extends AbstractGameObject {
return false; return false;
ItemBase resourceIB = ItemBase.getItemBase(this.production.UUID); ItemBase resourceIB = ItemBase.getItemBase(this.production.UUID);
return this.owningGuild.getOwnedCity().getWarehouse().depositFromMine(this, resourceIB, this.getModifiedProductionAmount()); return WarehouseManager.depositFromMine(this, resourceIB, this.getModifiedProductionAmount(),this.owningGuild.getOwnedCity().getWarehouse());
} }
public boolean updateGuildOwner(PlayerCharacter playerCharacter) { public boolean updateGuildOwner(PlayerCharacter playerCharacter) {

1290
src/engine/objects/Warehouse.java

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save