Optimise loot generation code by merging multiple loops into one
This commit is contained in:
parent
e77214b2de
commit
f5b1d3ad34
@ -1,4 +1,5 @@
|
|||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.Linq;
|
||||||
using Common.Extensions;
|
using Common.Extensions;
|
||||||
using Common.Models.Input;
|
using Common.Models.Input;
|
||||||
using Common.Models.Output;
|
using Common.Models.Output;
|
||||||
@ -36,15 +37,17 @@ namespace Generator
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var rawParsedBot in rawBotsOfSameType)
|
AddLootToContainers(botToUpdate, rawBotsOfSameType);
|
||||||
{
|
|
||||||
AddPocketLoot(botToUpdate, rawParsedBot);
|
|
||||||
}
|
|
||||||
|
|
||||||
AddTacticalVestLoot(botToUpdate, rawBotsOfSameType);
|
//foreach (var rawParsedBot in rawBotsOfSameType)
|
||||||
AddBackpackLoot(botToUpdate, rawBotsOfSameType);
|
//{
|
||||||
AddSecureContainerLoot(botToUpdate, rawBotsOfSameType);
|
// AddPocketLoot(botToUpdate, rawParsedBot);
|
||||||
AddSpecialLoot(botToUpdate);
|
//}
|
||||||
|
|
||||||
|
//AddTacticalVestLoot(botToUpdate, rawBotsOfSameType);
|
||||||
|
//AddBackpackLoot(botToUpdate, rawBotsOfSameType);
|
||||||
|
//AddSecureContainerLoot(botToUpdate, rawBotsOfSameType);
|
||||||
|
//AddSpecialLoot(botToUpdate);
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -89,6 +92,77 @@ namespace Generator
|
|||||||
botToUpdate.inventory.items.SecuredContainer.AddRange(tacVestItems);
|
botToUpdate.inventory.items.SecuredContainer.AddRange(tacVestItems);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static void AddLootToContainers(Bot botToUpdate, List<Datum> rawBotsOfSameType)
|
||||||
|
{
|
||||||
|
var containerDict = new Dictionary<string, List<string>>();
|
||||||
|
foreach (var bot in rawBotsOfSameType)
|
||||||
|
{
|
||||||
|
var backpack = bot.Inventory.items.FirstOrDefault(x => x.slotId == "Backpack");
|
||||||
|
if (backpack != null)
|
||||||
|
{
|
||||||
|
containerDict.Add(backpack._id, new List<string>());
|
||||||
|
}
|
||||||
|
var pocket = bot.Inventory.items.FirstOrDefault(x => x.slotId == "Pockets");
|
||||||
|
if (pocket != null)
|
||||||
|
{
|
||||||
|
containerDict.Add(pocket._id, new List<string>());
|
||||||
|
}
|
||||||
|
var secure = bot.Inventory.items.FirstOrDefault(x => x.slotId == "SecuredContainer");
|
||||||
|
if (secure != null)
|
||||||
|
{
|
||||||
|
containerDict.Add(secure._id, new List<string>());
|
||||||
|
}
|
||||||
|
|
||||||
|
var tacVest = bot.Inventory.items.FirstOrDefault(x => x.slotId == "TacticalVest");
|
||||||
|
if (tacVest != null)
|
||||||
|
{
|
||||||
|
containerDict.Add(tacVest._id, new List<string>());
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var item in bot.Inventory.items)
|
||||||
|
{
|
||||||
|
if (item.parentId == null)
|
||||||
|
{
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Container (backpack etc) exists in dict
|
||||||
|
if (containerDict.ContainsKey(item.parentId))
|
||||||
|
{
|
||||||
|
containerDict[item.parentId].AddUnique(item._tpl);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (backpack != null)
|
||||||
|
{
|
||||||
|
botToUpdate.inventory.items.Backpack.AddUniqueRange(containerDict[backpack._id]);
|
||||||
|
|
||||||
|
// Add generic keys to bosses
|
||||||
|
if (botToUpdate.botType.IsBoss())
|
||||||
|
{
|
||||||
|
botToUpdate.inventory.items.Backpack.AddUniqueRange(SpecialLootHelper.GetGenericBossKeys().ToList());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (pocket != null)
|
||||||
|
{
|
||||||
|
botToUpdate.inventory.items.Pockets.AddUniqueRange(containerDict[pocket._id]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (secure != null)
|
||||||
|
{
|
||||||
|
botToUpdate.inventory.items.SecuredContainer.AddUniqueRange(containerDict[secure._id]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (tacVest != null)
|
||||||
|
{
|
||||||
|
botToUpdate.inventory.items.TacticalVest.AddUniqueRange(containerDict[tacVest._id]);
|
||||||
|
}
|
||||||
|
|
||||||
|
containerDict.Clear();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
private static void AddSpecialLoot(Bot botToUpdate)
|
private static void AddSpecialLoot(Bot botToUpdate)
|
||||||
{
|
{
|
||||||
botToUpdate.inventory.items.SpecialLoot.AddRange(SpecialLootHelper.GetSpecialLootForBotType(botToUpdate.botType));
|
botToUpdate.inventory.items.SpecialLoot.AddRange(SpecialLootHelper.GetSpecialLootForBotType(botToUpdate.botType));
|
||||||
@ -103,9 +177,9 @@ namespace Generator
|
|||||||
// find the container type we want on this bot (backpack etc)
|
// find the container type we want on this bot (backpack etc)
|
||||||
// Add to list
|
// Add to list
|
||||||
var botContainers = bot.Inventory.items.Where(x => x.slotId == containerName);
|
var botContainers = bot.Inventory.items.Where(x => x.slotId == containerName);
|
||||||
foreach (var c in botContainers)
|
foreach (var container in botContainers)
|
||||||
{
|
{
|
||||||
containers.AddUnique(c._id);
|
containers.AddUnique(container._id);
|
||||||
}
|
}
|
||||||
|
|
||||||
foreach (var item in bot.Inventory.items)
|
foreach (var item in bot.Inventory.items)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user