コード例 #1
0
        public async Task<int> GetTotalManufacturingTime(IndustryJob job, int runs)
        {
            var time = 0;

            time += await job.GetManufacturingTime(0.75, runs);

            var prints = await _blueprintRepository.GetBlueprintsAsync();

            var materials = await job.GetMaterialNeeds(runs);

            foreach (var mat in materials)
            {
                var print = await _staticService.GetBlueprintInfoByProductTypeIdAsync(mat.TypeId);

                if (print == null)
                    continue;

                var bp = prints.Where(p => p.TypeId == print.BlueprintId).OrderByDescending(p => p.MaterialEfficiency).FirstOrDefault();

                if (bp == null)
                    continue;

                time += await GetTotalManufacturingTime(new Domains.IndustryJob(print, bp), (int)(runs * mat.Quantity));
            }
            return time;
        }
コード例 #2
0
        public async Task<IEnumerable<Material>> GetRawMaterials(IndustryJob job, long runs)
        {
            var list = new List<Material>();

            var prints = await _blueprintRepository.GetBlueprintsAsync();

            var materials = await job.GetMaterialNeeds((int)runs);
            foreach (var mat in materials)
            {
                var bpinfo = await _staticService.GetBlueprintInfoByProductTypeIdAsync(mat.TypeId);
                if (bpinfo == null)
                {
                    list.Add(mat);
                    continue;
                }

                var print = prints.OrderByDescending(p => p.MaterialEfficiency).FirstOrDefault(p => p.TypeId == bpinfo.BlueprintId);

                if (print == null)
                {
                    list.Add(mat);
                    continue;
                }
                var newJob = new IndustryJob(bpinfo, print);
                list.AddRange(await GetRawMaterials(newJob, mat.Quantity));
            }
            return list;
        }