示例#1
0
        //Compute price modifier based on category of entity
        public static double GetProductionPriceModifier(this IProductionDataAccess dataAccess, int targetDefinition)
        {
            if (!EntityDefault.TryGet(targetDefinition, out EntityDefault ed))
            {
                Logger.Error("definition was not found: " + targetDefinition);
                return(1.0);
            }

            var modifier = 1.0;

            if (CategoryFlagsExtensions.IsAny(ed.CategoryFlags, lights))
            {
                modifier = BotClassMods[0];
            }
            else if (CategoryFlagsExtensions.IsAny(ed.CategoryFlags, assaults))
            {
                modifier = BotClassMods[1];
            }
            else if (CategoryFlagsExtensions.IsAny(ed.CategoryFlags, mechs))
            {
                modifier = BotClassMods[2];
            }
            else if (CategoryFlagsExtensions.IsAny(ed.CategoryFlags, heavies))
            {
                modifier = BotClassMods[3];
            }
            else
            {
                var techLevel = Math.Min(Math.Max(1, ed.Tier.level) - 1, TechLevelMods.Length - 1);
                modifier = TechLevelMods[techLevel];
            }

            return(modifier);
        }
示例#2
0
        public static bool IsPrototypeDefinition(this IProductionDataAccess dataAccess, int definition)
        {
            var res = dataAccess.Prototypes.Any(t => t.Value == definition);

            Logger.Info("input is prototype: " + res);
            return(res);
        }
示例#3
0
        public static int GetResultingDefinitionFromCalibrationDefinition(this IProductionDataAccess dataAccess, int definition)
        {
            var target = (dataAccess.ResearchLevels.Values.Where(ir => ir.calibrationProgramDefinition == definition).Select(ir => ir.definition)).FirstOrDefault();

            if (target == 0)
            {
                Logger.Error("no target definition was found for calibration program: " + EntityDefault.Get(definition).Name + " " + definition);
            }

            return(target);
        }
 public ProductionProcessor(IProductionDataAccess productionDataAccess,
                            IProductionInProgressRepository pipRepository,
                            ProductionDescription.Factory productionDescFactory,
                            IEntityServices entityServices,
                            InsuranceHelper insuranceHelper, MissionProcessor missionProcessor)
 {
     _productionDataAccess  = productionDataAccess;
     _pipRepository         = pipRepository;
     _productionDescFactory = productionDescFactory;
     _entityServices        = entityServices;
     _insuranceHelper       = insuranceHelper;
     _missionProcessor      = missionProcessor;
 }
示例#5
0
        public static void GetCalibrationDefault(this IProductionDataAccess dataAccess, int definition, out int materialEfficiency, out int timeEfficiency)
        {
            if (dataAccess.CalibrationDefaults.TryGetValue(definition, out CalibrationDefault calibrationDefault))
            {
                materialEfficiency = (int)calibrationDefault.materialEfficiency;
                timeEfficiency     = (int)calibrationDefault.timeEfficiency;
            }
            else
            {
                materialEfficiency = 50;
                timeEfficiency     = 50;
#if DEBUG
                Logger.Error("consistency error. no default was found for calibration program: " + definition);
#endif
            }
        }
示例#6
0
        public static double GetProductionDuration(this IProductionDataAccess dataAccess, int targetDefinition)
        {
            if (!EntityDefault.TryGet(targetDefinition, out EntityDefault ed))
            {
                Logger.Error("definition was not found: " + targetDefinition);
                return(1.0);
            }

            foreach (var cf in ed.CategoryFlags.GetCategoryFlagsTree())
            {
                if (dataAccess.ProductionDurations.TryGetValue(cf, out double durationModifier))
                {
                    return(durationModifier);
                }
            }

            Logger.Error("consistency error. production duration modifier was not found for definition: " + targetDefinition + " " + ed.CategoryFlags);
            return(1.0);
        }
示例#7
0
 public static int GetPrototypePair(this IProductionDataAccess dataAccess, int definition)
 {
     return(!dataAccess.Prototypes.ContainsKey(definition) ? definition : dataAccess.Prototypes[definition]);
 }
示例#8
0
 public static void GetCalibrationDefault(this IProductionDataAccess dataAccess, EntityDefault ed, out int materialEfficiency, out int timeEfficiency)
 {
     dataAccess.GetCalibrationDefault(ed.Definition, out materialEfficiency, out timeEfficiency);
 }
示例#9
0
 public ResearchKit(IProductionDataAccess productionDataAccess)
 {
     _productionDataAccess = productionDataAccess;
 }
示例#10
0
 public CalibrationProgram(IProductionDataAccess productionDataAccess)
 {
     _productionDataAccess = productionDataAccess;
 }
 public GetResearchLevels(IProductionDataAccess productionDataAccess)
 {
     _researchLevelInfos = productionDataAccess.ResearchLevels.Values.ToDictionary("r", r => r.ToDictionary());
 }
示例#12
0
 public static ItemResearchLevel GetItemReserchLevelByCalibrationProgram(this IProductionDataAccess dataAccess, CalibrationProgram calibrationProgram)
 {
     return(dataAccess.ResearchLevels.Values.FirstOrDefault(i => i.calibrationProgramDefinition == calibrationProgram.Definition));
 }
示例#13
0
        public static int GetOriginalDefinitionFromPrototype(this IProductionDataAccess dataAccess, int prototypeDefinition)
        {
            var x = dataAccess.Prototypes.FirstOrDefault(p => p.Value == prototypeDefinition).Key;

            return(x == 0 ? prototypeDefinition : x);
        }
示例#14
0
 public DynamicCalibrationProgram(IProductionDataAccess productionDataAccess) : base(productionDataAccess)
 {
 }
示例#15
0
 public ProductionDescription(IProductionDataAccess productionDataAccess, int definition)
 {
     _productionDataAccess = productionDataAccess;
     this.definition       = definition;
 }
示例#16
0
 public ProductionComponentCollector(IProductionDataAccess productionDataAccess)
 {
     _productionDataAccess = productionDataAccess;
 }
 public PriceCalculator(MarketHandler marketHandler, IProductionDataAccess productionDataAccess, IRobotTemplateRelations robotTemplateRelations)
 {
     _marketHandler          = marketHandler;
     _productionDataAccess   = productionDataAccess;
     _robotTemplateRelations = robotTemplateRelations;
 }
示例#18
0
 public static bool IsItemResearchable(this IProductionDataAccess dataAccess, int definition)
 {
     return(dataAccess.ResearchLevels.ContainsKey(definition));
 }
 public ProductionLine(IProductionDataAccess productionDataAccess, ItemHelper itemHelper)
 {
     _productionDataAccess = productionDataAccess;
     _itemHelper           = itemHelper;
 }
示例#20
0
 public static int GetResearchLevel(this IProductionDataAccess dataAccess, int definition)
 {
     return(dataAccess.ResearchLevels.TryGetValue(definition, out ItemResearchLevel researchLevel) ? researchLevel.researchLevel : 0);
 }
示例#21
0
 public RandomCalibrationProgram(IProductionDataAccess productionDataAccess, IGangManager gangManager) : base(productionDataAccess)
 {
     _gangManager = gangManager;
 }
示例#22
0
 public RandomResearchKit(IProductionDataAccess productionDataAccess) : base(productionDataAccess)
 {
 }