From b67ff36631162b9ff7a8c20460c4c5b673b8793e Mon Sep 17 00:00:00 2001 From: Chomp Date: Tue, 25 Feb 2025 13:30:59 +0000 Subject: [PATCH] Converted more string comparisons to use string.equals Optimised `CreateBarterBarterScheme` --- .../Generators/FenceBaseAssortGenerator.cs | 2 +- .../Core/Generators/RagfairOfferGenerator.cs | 23 +++++++++++-------- Libraries/Core/Helpers/ItemHelper.cs | 2 +- .../Services/BotEquipmentModPoolService.cs | 4 ++-- Libraries/Core/Services/FenceService.cs | 4 ++-- Libraries/Core/Services/PostDbLoadService.cs | 2 +- .../Core/Services/RagfairOfferService.cs | 4 ++-- .../Core/Services/RagfairPriceService.cs | 2 +- 8 files changed, 23 insertions(+), 20 deletions(-) diff --git a/Libraries/Core/Generators/FenceBaseAssortGenerator.cs b/Libraries/Core/Generators/FenceBaseAssortGenerator.cs index 1d84c89f..ec6fa9eb 100644 --- a/Libraries/Core/Generators/FenceBaseAssortGenerator.cs +++ b/Libraries/Core/Generators/FenceBaseAssortGenerator.cs @@ -343,6 +343,6 @@ public class FenceBaseAssortGenerator( */ protected bool IsValidFenceItem(TemplateItem item) { - return item.Type == "Item"; + return string.Equals(item.Type, "Item", StringComparison.OrdinalIgnoreCase); } } diff --git a/Libraries/Core/Generators/RagfairOfferGenerator.cs b/Libraries/Core/Generators/RagfairOfferGenerator.cs index f6074486..2e6c14dd 100644 --- a/Libraries/Core/Generators/RagfairOfferGenerator.cs +++ b/Libraries/Core/Generators/RagfairOfferGenerator.cs @@ -953,7 +953,7 @@ public class RagfairOfferGenerator( false ); - // Dont make items under a designated rouble value into barter offers + // Don't make items under a designated rouble value into barter offers if (priceOfOfferItem < barterConfig.MinRoubleCostToBecomeBarter) { return CreateCurrencyBarterScheme(offerItems, false); @@ -969,25 +969,28 @@ public class RagfairOfferGenerator( var offerCostVarianceRoubles = desiredItemCostRouble * barterConfig.PriceRangeVariancePercent / 100; // Dict of items and their flea price (cached on first use) - var itemFleaPrices = GetFleaPricesAsArray(); + List itemFleaPrices = GetFleaPricesAsArray(); // Filter possible barters to items that match the price range + not itself + var min = desiredItemCostRouble - offerCostVarianceRoubles; + var max = desiredItemCostRouble + offerCostVarianceRoubles; var itemsInsidePriceBounds = itemFleaPrices.Where( - itemAndPrice => - itemAndPrice.Price >= desiredItemCostRouble - offerCostVarianceRoubles && - itemAndPrice.Price <= desiredItemCostRouble + offerCostVarianceRoubles && - !string.Equals(itemAndPrice.Tpl, offerItems[0].Template, StringComparison.OrdinalIgnoreCase) // Don't allow the item being sold to be chosen - ) - .ToList(); + itemAndPrice => + itemAndPrice.Price >= min && + itemAndPrice.Price <= max && + !string.Equals(itemAndPrice.Tpl, offerItems[0].Template, + StringComparison.OrdinalIgnoreCase) // Don't allow the item being sold to be chosen + ); + // No items on flea have a matching price, fall back to currency - if (itemsInsidePriceBounds.Count == 0) + if (!itemsInsidePriceBounds.Any()) { return CreateCurrencyBarterScheme(offerItems, false); } // Choose random item from price-filtered flea items - var randomItem = randomUtil.GetArrayValue(itemsInsidePriceBounds); + var randomItem = randomUtil.GetArrayValue(itemsInsidePriceBounds.ToList()); return [ diff --git a/Libraries/Core/Helpers/ItemHelper.cs b/Libraries/Core/Helpers/ItemHelper.cs index b2800e8f..af43a285 100644 --- a/Libraries/Core/Helpers/ItemHelper.cs +++ b/Libraries/Core/Helpers/ItemHelper.cs @@ -350,7 +350,7 @@ public class ItemHelper( } return !(itemDetails.Value.Properties.QuestItem ?? false) && - itemDetails.Value.Type == "Item" && + string.Equals(itemDetails.Value.Type, "Item", StringComparison.OrdinalIgnoreCase) && baseTypes.All(x => !IsOfBaseclass(tpl, x)) && GetItemPrice(tpl) > 0 && !_itemFilterService.IsItemBlacklisted(tpl); diff --git a/Libraries/Core/Services/BotEquipmentModPoolService.cs b/Libraries/Core/Services/BotEquipmentModPoolService.cs index dff21682..2fe027bc 100644 --- a/Libraries/Core/Services/BotEquipmentModPoolService.cs +++ b/Libraries/Core/Services/BotEquipmentModPoolService.cs @@ -232,7 +232,7 @@ public class BotEquipmentModPoolService { var weapons = _databaseService.GetItems() .Values.Where( - item => item.Type == "Item" && _itemHelper.IsOfBaseclass(item.Id, BaseClasses.WEAPON) + item => string.Equals(item.Type, "Item", StringComparison.OrdinalIgnoreCase) && _itemHelper.IsOfBaseclass(item.Id, BaseClasses.WEAPON) ); GeneratePool(weapons, "weapon"); @@ -247,7 +247,7 @@ public class BotEquipmentModPoolService { var gear = _databaseService.GetItems() .Values.Where( - item => item.Type == "Item" && + item => string.Equals(item.Type, "Item", StringComparison.OrdinalIgnoreCase) && _itemHelper.IsOfBaseclasses( item.Id, [ diff --git a/Libraries/Core/Services/FenceService.cs b/Libraries/Core/Services/FenceService.cs index 34175626..d4e8b129 100644 --- a/Libraries/Core/Services/FenceService.cs +++ b/Libraries/Core/Services/FenceService.cs @@ -760,7 +760,7 @@ public class FenceService( { var priceLimits = traderConfig.Fence.ItemCategoryRoublePriceLimit; var assortRootItems = baseFenceAssortClone.Items - .Where(item => item.ParentId == "hideout" && item.Upd?.SptPresetId == null) + .Where(item => string.Equals(item.ParentId, "hideout", StringComparison.OrdinalIgnoreCase) && item.Upd?.SptPresetId == null) .ToList(); if (assortRootItems.Count == 0) { @@ -887,7 +887,7 @@ public class FenceService( .Where( itemWithChildren => itemWithChildren.FirstOrDefault( item => item.Template == rootItemBeingAdded.Template && - item.ParentId == "hideout" + string.Equals(item.ParentId, "hideout", StringComparison.OrdinalIgnoreCase) ) != null ) diff --git a/Libraries/Core/Services/PostDbLoadService.cs b/Libraries/Core/Services/PostDbLoadService.cs index 06a22277..b60777c2 100644 --- a/Libraries/Core/Services/PostDbLoadService.cs +++ b/Libraries/Core/Services/PostDbLoadService.cs @@ -521,7 +521,7 @@ public class PostDbLoadService( { var dbItems = _databaseService.GetItems().Values.ToList(); foreach (var item in dbItems.Where( - item => item.Type == "Item" && + item => string.Equals(item.Type, "Item", StringComparison.OrdinalIgnoreCase) && !item.Properties.CanSellOnRagfair.GetValueOrDefault(false) && !_ragfairConfig.Dynamic.Blacklist.Custom.Contains(item.Id) )) diff --git a/Libraries/Core/Services/RagfairOfferService.cs b/Libraries/Core/Services/RagfairOfferService.cs index 871cd626..37322c85 100644 --- a/Libraries/Core/Services/RagfairOfferService.cs +++ b/Libraries/Core/Services/RagfairOfferService.cs @@ -276,9 +276,9 @@ public class RagfairOfferService( // Need to regenerate Ids to ensure returned item(s) have correct parent values var newParentId = hashUtil.Generate(); foreach (var item in unstackedItems) - // Refresh root items' parentIds { - if (item.ParentId == "hideout") + // Refresh root items' parentIds + if (string.Equals(item.ParentId, "hideout", StringComparison.OrdinalIgnoreCase)) { item.ParentId = newParentId; } diff --git a/Libraries/Core/Services/RagfairPriceService.cs b/Libraries/Core/Services/RagfairPriceService.cs index e900cd3f..145fbaa6 100644 --- a/Libraries/Core/Services/RagfairPriceService.cs +++ b/Libraries/Core/Services/RagfairPriceService.cs @@ -48,7 +48,7 @@ public class RagfairPriceService( public void RefreshStaticPrices() { _staticPrices = new Dictionary(); - foreach (var item in _databaseService.GetItems().Values.Where(item => item.Type == "Item")) + foreach (var item in _databaseService.GetItems().Values.Where(item => string.Equals(item.Type, "Item", StringComparison.OrdinalIgnoreCase))) { _staticPrices[item.Id] = _handbookHelper.GetTemplatePrice(item.Id); }