private CollectionBulkOrderDeed CreateCollectionBulkOrderDeed(ImportableBulkOrderDeed bulkOrderDeed) { CollectionBulkOrderDeed retVal = null; var bulkOrderDeedType = bulkOrderDeed is ImportableSmallBulkOrderDeed ? BulkOrderDeedType.Small : BulkOrderDeedType.Large; string professionName = null; if (bulkOrderDeed.Profession == "Tailor") { professionName = "Tailoring"; } else if (bulkOrderDeed.Profession == "Blacksmith") { professionName = "Blacksmithing"; } var materialName = bulkOrderDeed.Material; if (materialName == "Golden") { materialName = "Gold"; } if (professionName != null) { var profession = BulkOrderDeedManager.Instance.Professions.FirstOrDefault(p => String.Compare(p.Name, professionName, true) == 0); var bulkOrderDeedDefinition = BulkOrderDeedManager.Instance.GetBulkOrderDeedDefinition(profession.Name, bulkOrderDeed.Name, bulkOrderDeedType); var material = profession.BulkOrderDeedMaterials.Materials.FirstOrDefault(m => String.Compare(m.Name, materialName, true) == 0); if (bulkOrderDeed is ImportableSmallBulkOrderDeed smallBulkOrderDeed) { retVal = new SmallCollectionBulkOrderDeed(smallBulkOrderDeed.Id, profession.Name, bulkOrderDeedDefinition.DisplayName, smallBulkOrderDeed.Quantity, smallBulkOrderDeed.Exceptional, material.Name, Guid.Empty, smallBulkOrderDeed.BulkOrderDeedBook, smallBulkOrderDeed.CompletedCount); } else if (bulkOrderDeed is ImportableLargeBulkOrderDeed largeBulkOrderDeed) { var combined = new List <CollectionBulkOrderDeedItem>(); foreach (var smallBulkOrderDeedDefinition in ((LargeBulkOrderDeedDefinition)bulkOrderDeedDefinition).SmallBulkOrderDeedDefinitions) { var combinedSmallBulkOrderDeed = BulkOrderDeedManager.Instance.GetBulkOrderDeedDefinition(profession.Name, smallBulkOrderDeedDefinition.Name, BulkOrderDeedType.Small); var isCombined = (largeBulkOrderDeed.Combined.Contains(combinedSmallBulkOrderDeed?.DisplayName)); combined.Add(new CollectionBulkOrderDeedItem(smallBulkOrderDeedDefinition.Name, largeBulkOrderDeed.Quantity, isCombined)); } retVal = new LargeCollectionBulkOrderDeed(largeBulkOrderDeed.Id, profession.Name, bulkOrderDeedDefinition.DisplayName, largeBulkOrderDeed.Quantity, largeBulkOrderDeed.Exceptional, material.Name, Guid.Empty, largeBulkOrderDeed.BulkOrderDeedBook, combined); } } return(retVal); }
private void OnAddRandomItemsCommand(object parameter) { var collection = new List <CollectionBulkOrderDeed>(BulkOrderDeedManager.Instance.Collection); if (collection.Count > 0) { BulkOrderDeedManager.Instance.RemoveBulkOrderDeeds(collection); } var vendors = new List <Vendor>(BulkOrderDeedManager.Instance.Vendors); foreach (var vendor in vendors) { BulkOrderDeedManager.Instance.RemoveVendor(vendor); } var bulkOrderDeedBooks = new List <BulkOrderDeedBook>(BulkOrderDeedManager.Instance.BulkOrderDeedBooks); foreach (var bulkOrderDeedBook in bulkOrderDeedBooks) { BulkOrderDeedManager.Instance.RemoveBulkOrderDeedBook(bulkOrderDeedBook); } if (!int.TryParse(_Count, out int count)) { count = _DefaultCount; } // Add a standalone BOD Book. var unsortedBook = new BulkOrderDeedBook("Unsorted"); BulkOrderDeedManager.Instance.AddBulkOrderDeedBook(unsortedBook); // Add a Vendor with a BOD Book. var chloeVendor = new Vendor("Chloe"); var forSaleBook = new BulkOrderDeedBook("For Sale"); chloeVendor.AddBulkOrderDeedBook(forSaleBook); BulkOrderDeedManager.Instance.AddVendor(chloeVendor); var bulkOrderDeeds = new List <CollectionBulkOrderDeed>(); var random = new Random(); for (var index = 0; index < count; index++) { var professionIndex = random.Next(BulkOrderDeedManager.Instance.Professions.Count()); var profession = BulkOrderDeedManager.Instance.Professions.ToArray()[professionIndex]; var bulkOrderDeedDefinitionIndex = random.Next(profession.BulkOrderDeedDefinitions.Definitions.Count()); var bulkOrderDeedDefinition = profession.BulkOrderDeedDefinitions.Definitions.ToArray()[bulkOrderDeedDefinitionIndex]; var exceptional = bulkOrderDeedDefinition.CanBeExceptional ? random.Next(2) == 1 : false; var bulkOrderDeedMaterial = profession.BulkOrderDeedMaterials?.Materials?.FirstOrDefault(); var quantity = BulkOrderDeedManager.PossibleQuantities[random.Next(BulkOrderDeedManager.PossibleQuantities.Length)]; var vendor = Vendor.None; var bulkOrderDeedBook = BulkOrderDeedBook.None; var onVendor = random.Next(2) == 1; if (onVendor) { vendor = chloeVendor; var inBook = random.Next(2) == 1; if (inBook) { bulkOrderDeedBook = chloeVendor.BulkOrderDeedBooks.First(); } } else { var standaloneBook = random.Next(2) == 1; if (standaloneBook) { bulkOrderDeedBook = unsortedBook; } } if (bulkOrderDeedDefinition.CanHaveMaterial) { var bulkOrderDeedMaterialIndex = random.Next(profession.BulkOrderDeedMaterials.Materials.Count()); bulkOrderDeedMaterial = profession.BulkOrderDeedMaterials.Materials.ToArray()[bulkOrderDeedMaterialIndex]; } if (bulkOrderDeedDefinition is SmallBulkOrderDeedDefinition smallBulkOrderDeedDefinition) { var collectionBulkOrderDeed = new SmallCollectionBulkOrderDeed(profession, smallBulkOrderDeedDefinition, quantity, exceptional, bulkOrderDeedMaterial, vendor, bulkOrderDeedBook, random.Next(quantity)); bulkOrderDeeds.Add(collectionBulkOrderDeed); } if (bulkOrderDeedDefinition is LargeBulkOrderDeedDefinition largeBulkOrderDeedDefinition) { var completedStates = new Dictionary <SmallBulkOrderDeedDefinition, bool>(); foreach (var largeBulkOrderDeedDefinitionItem in largeBulkOrderDeedDefinition.SmallBulkOrderDeedDefinitions) { completedStates[largeBulkOrderDeedDefinitionItem] = random.Next(2) == 1; } var collectionBulkOrderDeed = new LargeCollectionBulkOrderDeed(profession, largeBulkOrderDeedDefinition, quantity, exceptional, bulkOrderDeedMaterial, vendor, bulkOrderDeedBook, completedStates); bulkOrderDeeds.Add(collectionBulkOrderDeed); } } BulkOrderDeedManager.Instance.AddBulkOrderDeeds(bulkOrderDeeds); ((Window)parameter).Close(); }
public SmallBulkOrderDeedViewModel(SmallCollectionBulkOrderDeed smallCollectionBulkOrderDeed) : base(smallCollectionBulkOrderDeed) { _SmallCollectionBulkOrderDeed = smallCollectionBulkOrderDeed; }