예제 #1
0
        public void Update(ProductType[] prodTypes, City city)
        {
            foreach (var prod in city.CurrentCityStorage.CurrentInventory)
            {
            //                foreach (var prod2 in city.RequiredProducts)
            //                    prod2.StorageQuantity = storageProduct.Quantity;
                UpdateProductStorageQuantity(city.RequiredProducts, prod);
                UpdateProductStorageQuantity(city.AvailableStorage, prod);
                UpdateProductStorageQuantity(city.TotalProductsRequired, prod);
            }

            UpdateKeywords(city.RequiredProducts, prodTypes, city.BuildingUpgrades, null);

            foreach (var bu in city.BuildingUpgrades)
            {
                UpdateKeywords(bu.Products, prodTypes, null, bu);
                var buildingUpgradeTooltip = new StringBuilder();
                buildingUpgradeTooltip.Append("<div>");
                //add total hours remaining
                buildingUpgradeTooltip.AppendFormat("{0}:{1} hrs of {2}:{3} hrs time remaining<br/>", (bu.RemainingUpgradeTime / 60), (bu.RemainingUpgradeTime % 60), (bu.TotalUpgradeTime / 60), (bu.TotalUpgradeTime % 60));

                foreach (var requiredProduct in bu.Products)
                {
                    var prodType = prodTypes.First(x => x.Id == requiredProduct.ProductTypeId);
                    var strgProd = city.CurrentCityStorage.CurrentInventory.FirstOrDefault(x => x.ProductTypeId == requiredProduct.ProductTypeId);

                    var reequiredProductTootip = new StringBuilder();
                    if (strgProd != null)
                    {
                        requiredProduct.StorageQuantity = strgProd.Quantity ?? 0;
                        requiredProduct.RequiredProducts = Enumerable.ToArray(prodType.RequiredProducts.ToArray().Select(Mapper.Map<Product>));
                        var notInStorage = strgProd.Quantity < requiredProduct.Quantity;
                        var style = notInStorage
                            ? "display: block; color: red"
                            : "display: block";
                        buildingUpgradeTooltip.AppendFormat("<span style='{0}'>{1} {2} required of {3} in storage</span>", style, requiredProduct.Quantity, requiredProduct.Name, strgProd.Quantity);
                        reequiredProductTootip.AppendFormat("<span style='{0}'>{1} {2} required of {3} in storage</span>", style, requiredProduct.Quantity, requiredProduct.Name, strgProd.Quantity);
                        if (notInStorage)
                        {

                            foreach (var requiredSubProduct in requiredProduct.RequiredProducts)
                            {
                                var subStrgProd = city.CurrentCityStorage.CurrentInventory.FirstOrDefault(x => x.ProductTypeId == requiredSubProduct.ProductTypeId);
                                if (subStrgProd != null)
                                {
                                    requiredSubProduct.StorageQuantity = subStrgProd.Quantity ?? 0;
                                    var totalQuantityRequired = requiredSubProduct.Quantity * requiredProduct.Quantity;
                                    var subStyle = subStrgProd.Quantity < totalQuantityRequired
                                        ? "display: block; color: red"
                                        : "display: block";
                                    reequiredProductTootip.AppendFormat("<span style='{0}'>{1} {2} required of {3} in storage</span>", subStyle, totalQuantityRequired, subStrgProd.Name, subStrgProd.Quantity);
                                }
                                else
                                {
                                    buildingUpgradeTooltip.AppendFormat("<span style='display: block'>{0} {1} required", requiredSubProduct.Quantity,
                                        prodTypes.First(x => x.Id == requiredSubProduct.ProductTypeId).Name);
                                }
                            }
                        }
                    }
                    else
                        buildingUpgradeTooltip.AppendFormat("<span style='display: block'>{0} {1} required", requiredProduct.Quantity, requiredProduct.Name);

                    requiredProduct.RequiredProductsToolTip = reequiredProductTootip.ToString();
                }
                buildingUpgradeTooltip.Append("</div>");
                bu.Tooltip = buildingUpgradeTooltip.ToString();
            }
        }
예제 #2
0
        public City Get(SupplyChainRequest request)
        {
            var logStart = LogHelper.StartLog("Begin Supply Chain Get", Logger);
            //Get the current city from the database.
            var currentCity = ConvertRequestToHandlerCity(request);
            var prodTypes = _dbContext.ProductTypes
                                    .AsQueryable()
                                    .Include(x=>x.RequiredProducts)
                                    .Include(y=>y.ManufacturerType.ProductTypes)
                                    .ToArray();

            var calcRequest = new BuildingUpgradeHandlerRequest
            {
                ReturnInventory = true,
                ReturnFaciltiyAssignment = request.ReturnFacilityAssignment,
                City = Mapper.Map<Handler.Entities.City>(currentCity),
                ProductTypes = prodTypes
            };
            var strgResults = CalculateNewCityStorageAmounts(request, calcRequest, prodTypes);

            var ret = _buldingUpgradeHandler.CalculateBuildQueue(calcRequest);

            var city = new City
            {
                CurrentCityStorage = Mapper.Map<CityStorage>(strgResults.CityStorage),
                RequiredProducts = ret.RequiredProductQueue.Select(Mapper.Map<Product>).ToArray(),
                RequiredProductsInCityStorage = ret.RequiredProductsInCityStorageQueue.Select(Mapper.Map<Product>).ToArray(),
                TotalProducts = ret.TotalProductQueue.Select(Mapper.Map<Product>).ToArray(),
                AvailableStorage = ret.AvailableStorage.Select(Mapper.Map<Product>).ToArray(),
                BuildingUpgrades = ret.OrderedUpgrades.Select(Mapper.Map<BuildingUpgrade>).ToArray().OrderBy(x=>x.Name).ToArray()
            };
            UpdateBuildingUpgradeUiInfo(prodTypes, city);
            return LogHelper.EndLog(logStart, city);
        }
 public void Update(ProductType[] prodTypes, City city)
 {
     throw new System.NotImplementedException();
 }
예제 #4
0
 private void UpdateBuildingUpgradeUiInfo(ProductType[] prodTypes, City city)
 {
     _buildingUiInfoUpdater.Update(prodTypes, city);
 }