Example #1
0
        public CommonItem(BaseResorcedRequirement[] craftingRequirements,
                          ItemMarket itemMarket,
                          CraftBuilding craftingBuilding,
                          int qualityLevel,
                          ITownManager buyTownManager,
                          ITownManager sellTownManager
                          )
        {
            QualityLevel         = qualityLevel;
            CraftingRequirements = craftingRequirements;

            IsArtefacted = CraftingRequirements.SelectMany(x => x.Resources)
                           .Any(r => r.Item.ShopCategory == ShopCategory.Artefacts || r.Item.ShopCategory == ShopCategory.Token);

            CraftingBuilding = craftingBuilding;
            ItemMarket       = itemMarket;

            _longBuyRequirement = new LongBuyRequirement(buyTownManager);
            _fastBuyRequirement = new FastBuyRequirement(buyTownManager);

            LongSellProfit   = new LongSellProfit(this, sellTownManager);
            FastSellProfit   = new FastSellProfit(this, sellTownManager);
            BmFastSellProfit = new BmFastSellProfit(this);
            BmLongSellProfit = new BmLongSellProfit(this);

            CostCalcOptions.Instance.Changed        += RequirementsOnUpdated;
            CostCalcOptions.Instance.ProfitsChanged += ProfitsOnUpdated;
        }
Example #2
0
        public ArtefactStat(CraftBuilding craftingBuilding, CommonItem material, CommonItem[] artefacts)
        {
            CraftingBuilding = craftingBuilding;
            Material         = material;
            Artefacts        = artefacts;

            Material.CostUpdate += MaterialOnCostUpdate;
            //            foreach (var item in Artefacts.Select(x => x.CraftingRequirements[0]).Distinct())
            //                item.UpdateCost += MaterialOnUpdateCost;

            foreach (var item in Artefacts)
            {
                item.FastSellProfit.Updated += FastSellProfitOnCostUpdate;
                item.LongSellProfit.Updated += LongSellProfitOnCostUpdate;
            }

            FastSellProfitOnCostUpdate();
            LongSellProfitOnCostUpdate();
            MaterialOnCostUpdate();
        }
Example #3
0
        public int LoadModel()
        {
            Localization = LoadLocalizationXml();

            NoneBuilding = new CraftBuilding(new ItemBuilding(), _craftTownManager);
            var resourcesDb = LoadResourcesXml();
            var buildingsDb = LoadBuildingsXml();
            var itemsDb     = LoadItemsXml();

            var xmlCraftBuildings = buildingsDb.Items.OfType <craftBuilding>().Where(x =>
                                                                                     x.tier == 8 && x.favoritedish != null && x.craftingitemlist != null &&
                                                                                     x.craftingitemlist[0].craftitem != null);

            ResourceItemValues = resourcesDb
                                 .SelectMany(x => x.ResourceTier.Select(z => new {
                name = $"T{z.value}_{x.name}",
                val  = z
            })).ToDictionary(k => k.name, v => v.val);

            ItemIdToCraftBuildingId = xmlCraftBuildings
                                      .SelectMany(x =>
                                                  x.craftingitemlist[0].craftitem
                                                  .Select(ci => new
            {
                itemId     = ci.uniquename,
                buildingId = x.uniquename
            }))
                                      .ToDictionary(k => k.itemId, v => v.buildingId);

            CraftBuildings = xmlCraftBuildings.Select(CreateCraftBuilding).ToDictionary(k => k.Id);

            //            buildingsDb.Items.OfType<CraftBuilding>()

            XmlItems = itemsDb.Items.Cast <IItem>().ToDictionary(GetId, v => v);

            Items         = new Dictionary <string, CommonItem>();
            Journals      = new Dictionary <string, Journal>();
            JournalsItems = new Dictionary <string, Journal>();

            //Journalitems _EMPTY
            foreach (var journalitem in XmlItems.Values.OfType <ItemsJournalitem>().Select(CreateOrGetItem))
            {
            }
            //Journalitems _FULL
            foreach (var journalitem in XmlItems.Values.OfType <ItemsJournalitem>().Select(CreateOrGetItem))
            {
            }

            var enItems = XmlItems.Values.OfType <IItemEnchantments>().SelectMany(CreateEnchantedItems);

            var items = XmlItems.Values.Where(x => !(x is ItemsJournalitem)).Select(CreateOrGetItem).Concat(enItems);

            var cnt = items.Count();

/*            var rocks = Items.Values.Where(x => x.ShopSubCategory == ShopSubCategory.Rock);
 *          foreach (var item in rocks)
 *          {
 *              item.CraftingRequirements = EmptyCraftingRequirements;
 *          }*/

            Artefacts = Items.Values.SelectMany(x => x.CraftingRequirements).SelectMany(x => x.Resources
                                                                                        .Where(a => a.Item.CraftingRequirements.Length > 0 && a.Item.ShopCategory == ShopCategory.Artefacts).Select(
                                                                                            a =>
                                                                                            new
            {
                x.Item.CraftingBuilding,
                art = a.Item
            }))
                        .Distinct()
//                .GroupBy(x=>new {x.CraftingBuilding, x.art.CraftingRequirements[0].Resources[0].Item})
                        .GroupBy(x => x.art.CraftingRequirements[0].Resources[0].Item)
                        .Select(v => new ArtefactStat(null, v.Key, v.Select(a => a.art).ToArray()))
                        .ToArray();

            return(cnt);
        }