private string GetRandomNonCraftableItemName(RandomizableStore availableItems, string itemType) { int availableItemCount = availableItems.AvailableNonCraftableItemCountByType(itemType); int randomIndex = _randomizerService.GetRandomItemIndex(availableItemCount); string randomItemName = availableItems.TakeAllNonCraftableItem(itemType, randomIndex); return(randomItemName); }
private void RandomizeDropItems(List <DropItemEntry> dropList, RandomizableStore availableItems) { foreach (DropItemEntry dropEntry in dropList) { if (IsEntryRandomizableForOutput(dropEntry)) { string randomItemName = GetRandomItem(availableItems, dropEntry.GetItemType()); SetNewItemForDrop(dropEntry, randomItemName); } } }
private void RandomizeQuestItems(List <QuestItemEntry> questList, RandomizableStore availableItems) { foreach (QuestItemEntry questEntry in questList) { if (IsEntryRandomizableForOutput(questEntry)) { questEntry.Value.RewardItem01 = GetRandomItem(availableItems, questEntry.GetItemType()); questEntry.Value.RewardNum01 = 1; } } }
public void RandomizeItems(GameFiles gameFilesToModify) { var randomizableItemStore = new RandomizableStore(); AddAllRandomizableItems(gameFilesToModify.DropList, randomizableItemStore); AddAllRandomizableItems(gameFilesToModify.QuestList, randomizableItemStore); AddAllGourmandQuestFoods(gameFilesToModify.QuestList, randomizableItemStore); AddAllCraftableItemsToRandomize(gameFilesToModify.CraftList, randomizableItemStore); RandomizeDropItems(gameFilesToModify.DropList, randomizableItemStore); RandomizeQuestItems(gameFilesToModify.QuestList, randomizableItemStore); RandomizeCraftItems(gameFilesToModify.CraftList, randomizableItemStore); }
private Dictionary <string, ICollection <string> > FindAllItemsToReplace(RandomizableStore availableItems) { var itemsToReplaceDict = new Dictionary <string, ICollection <string> >(); foreach (string itemType in availableItems.AvailableItemTypes().Where(IsItemTypeRandomizableForCraftOutput)) { List <string> alreadyAssignedCraftItems = availableItems.GetAllUnavailableCraftableItemNames(itemType); int numberOfItemsLeftToAssign = availableItems.AvailableNonCraftableItemCountByType(itemType); itemsToReplaceDict[itemType] = _randomizerService.GetRandomEntriesFromList(alreadyAssignedCraftItems, numberOfItemsLeftToAssign); } return(itemsToReplaceDict); }
private string GetRandomItem(RandomizableStore availableItems, string itemType) { int availableItemCount = availableItems.AvailableItemCountByType(itemType); int randomIndex = _randomizerService.GetRandomItemIndex(availableItemCount); if (Constants.ItemTypeConsumable.Equals(itemType)) { const int decrementAmount = 0; return(availableItems.TakeNumberOfItem(itemType, randomIndex, decrementAmount)); } return(availableItems.TakeSingleItem(itemType, randomIndex)); }
private void RandomizeCraftItems(List <CraftItemEntry> craftList, RandomizableStore availableItems) { Dictionary <string, ICollection <string> > itemsToReplaceByType = FindAllItemsToReplace(availableItems); var newCraftEntries = new List <CraftItemEntry>(); foreach (CraftItemEntry entry in craftList.Where(IsCraftEntryRandomizableForOutput)) { IEnumerable <string> itemsToReplace = itemsToReplaceByType[entry.GetItemType()]; if (itemsToReplace.Contains(entry.GetItemName())) { string randomItemName = GetRandomNonCraftableItemName(availableItems, entry.GetItemType()); newCraftEntries.Add(CreateReplacementCraftEntry(entry, randomItemName)); } } craftList.AddRange(newCraftEntries); }
private void AddAllCraftableItemsToRandomize(IEnumerable <CraftItemEntry> craftList, RandomizableStore storeToAddTo) { craftList.Where(IsEntryRandomizableForCraftInput) .ToList() .ForEach(entry => storeToAddTo.AddCraftableItem(entry.GetItemName(), entry.GetItemType())); }
private static void AddAllGourmandQuestFoods(List <QuestItemEntry> questList, RandomizableStore storeToAddTo) { questList.Where(entry => entry.IsGourmandQuest()) .ToList() .ForEach(entry => storeToAddTo.AddItem(entry.Value.Item01, Constants.ItemTypeFood)); }
private void AddAllRandomizableItems(IEnumerable <IItemEntry> itemList, RandomizableStore storeToAddTo) { itemList.Where(IsEntryRandomizableForInput) .ToList() .ForEach(entry => storeToAddTo.AddItem(entry.GetItemName(), entry.GetItemType())); }