More refactor itembase out of warehouse

This commit is contained in:
2024-03-15 10:47:35 -04:00
parent 6ed4faded2
commit a489aecb86
2 changed files with 17 additions and 31 deletions
+6 -15
View File
@@ -1365,28 +1365,19 @@ public class City extends AbstractWorldObject {
ItemBase.getItemHashIDMap();
ArrayList<Integer> resources = new ArrayList<>();
ArrayList<ResourceType> resources = new ArrayList<>();
float taxPercent = msg.getTaxPercent();
if (taxPercent > 20)
taxPercent = .20f;
for (int resourceHash : msg.getResources().keySet()) {
if (ItemBase.getItemHashIDMap().get(resourceHash) != null)
resources.add(ItemBase.getItemHashIDMap().get(resourceHash));
}
for (int resourceHash : msg.getResources().keySet())
resources.add(ResourceType.hashLookup.get(resourceHash));
for (Integer itemBaseID : resources) {
ItemBase ib = ItemBase.getItemBase(itemBaseID);
if (ib == null)
continue;
ItemTemplate template = ItemTemplate.itemTemplates.get(itemBaseID);
if (Warehouse.isAboveCap(ruledWarehouse, ib, (int) (city.getWarehouse().resources.get(ib) * taxPercent))) {
ErrorPopupMsg.sendErrorMsg(player, "You're warehouse has enough " + template.item_base_name + " already!");
for (ResourceType resourceType : resources) {
if (Warehouse.isAboveCap(ruledWarehouse, resourceType, (int) (city.getWarehouse().resources.get(resourceType) * taxPercent))) {
ErrorPopupMsg.sendErrorMsg(player, "Your warehouse has enough " + resourceType.name() + " already!");
return true;
}
+11 -16
View File
@@ -25,6 +25,7 @@ import org.pmw.tinylog.Logger;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.EnumSet;
import java.util.concurrent.ConcurrentHashMap;
public class Warehouse extends AbstractWorldObject {
@@ -550,12 +551,9 @@ public class Warehouse extends AbstractWorldObject {
return true;
}
public static synchronized void transferResources(Warehouse warehouse, PlayerCharacter taxer, TaxResourcesMsg msg, ArrayList<Integer> realmResources, float taxPercent) {
public static synchronized void transferResources(Warehouse warehouse, PlayerCharacter taxer, TaxResourcesMsg msg, ArrayList<Enum.ResourceType> realmResources, float taxPercent) {
for (int templateID : realmResources) {
ItemTemplate template = ItemTemplate.itemTemplates.get(templateID);
Enum.ResourceType resourceType = Enum.ResourceType.resourceLookup.get(templateID);
for (Enum.ResourceType resourceType : realmResources) {
if (warehouse.resources.get(resourceType) == null)
return;
@@ -588,12 +586,7 @@ public class Warehouse extends AbstractWorldObject {
depositRealmTaxes(taxer, resourceType, amount, warehouse);
Enum.ResourceType resource;
if (resourceType.equals(Enum.ResourceType.GOLD))
resource = Enum.ResourceType.GOLD;
else
resource = Enum.ResourceType.valueOf(template.item_base_name.toUpperCase());
AddTransactionToWarehouse(warehouse, taxer.getObjectType(), taxer.getObjectUUID(), Enum.TransactionType.TAXRESOURCE, resource, amount);
AddTransactionToWarehouse(warehouse, taxer.getObjectType(), taxer.getObjectUUID(), Enum.TransactionType.TAXRESOURCE, resourceType, amount);
}
}
@@ -751,10 +744,12 @@ public class Warehouse extends AbstractWorldObject {
public static boolean isEmpty(Warehouse warehouse) {
int amount = 0;
for (ItemBase ib : ItemBase.getResourceList()) {
for (Enum.ResourceType resourceType : EnumSet.allOf(Enum.ResourceType.class)) {
amount += warehouse.resources.get(resourceType);
if (amount > 0)
return false;
amount += warehouse.resources.get(ib);
}
return true;
}
@@ -773,9 +768,9 @@ public class Warehouse extends AbstractWorldObject {
warehouse.transactions.add(transaction);
}
public static boolean isAboveCap(Warehouse warehouse, ItemBase ib, int deposit) {
int newAmount = warehouse.resources.get(ib) + deposit;
return newAmount > Enum.ResourceType.resourceLookup.get(ib.getUUID()).deposit_limit;
public static boolean isAboveCap(Warehouse warehouse, Enum.ResourceType resourceType, int deposit) {
int newAmount = warehouse.resources.get(resourceType) + deposit;
return newAmount > resourceType.deposit_limit;
}