Пример #1
0
        public static double GetEfficiencyChangeForOneReport(EfficiencySpeedData data)
        {
            if (data.TransportCount == 0)
            {
                data.TransportCount = 1;
            }

            return(Math.Abs((data.MinEfficiency - data.MaxEfficiency) / data.TransportCount));
        }
Пример #2
0
        /*
         * public double GetReportsAdded(int generatorId, double managerEfficiencyChange) {
         *
         *
         *  if(managerEfficiencyChange < 0) {
         *
         *      UnitStrengthData strengthData = Services.ResourceService.UnitStrengthDataRepository.GetStrengthData(generatorId);
         *      int unitCount = Services.TransportService.GetUnitTotalCount(generatorId);
         *      if(unitCount == 0 ) {
         *          unitCount = 1;
         *      }
         *
         *      if(strengthData != null ) {
         *          if(generatorId == 0 ) {
         *              UDebug.Log($"handle adding report eff change: {managerEfficiencyChange}, ch * 2 * str * uCnt: {Math.Abs(managerEfficiencyChange) * 3 * strengthData.Strength * unitCount}".Attrib(bold: true, color: "cyan", italic: true));
         *          }
         *          return Math.Abs(managerEfficiencyChange) * 3.0 * strengthData.Strength * unitCount;
         *      } else {
         *          UDebug.Log($"strength data for unit => {generatorId} not found".Colored(ConsoleTextColor.red));
         *      }
         *  }
         *  return 0.0;
         *
         *  IManagerService mgrService = Services.ManagerService;
         *  ReportGenerationData data = new ReportGenerationData {
         *      CurrentEfficiency = mgrService.CurrentEfficiency(generatorId),
         *      MinEfficiency = mgrService.MinManagerEfficiency,
         *      MaxEfficiency = mgrService.MaxEfficiency(generatorId),
         *      TransportCount = Services.TransportService.GetUnitTotalCount(generatorId),
         *      CurrentReportCount = GetReportCount(generatorId)
         *  };
         *  return ReportUtils.GetGeneratedReports(data);
         * }*/

        public double GetEfficiencyChangeForOneReport(int generatorId)
        {
            int unitCount = Services.TransportService.GetUnitTotalCount(generatorId);

            if (unitCount == 0)
            {
                unitCount = 1;
            }
            IManagerService     mgrService = Services.ManagerService;
            EfficiencySpeedData data       = new EfficiencySpeedData {
                MinEfficiency  = mgrService.MinManagerEfficiency,
                MaxEfficiency  = mgrService.MaxEfficiency(generatorId),
                TransportCount = unitCount
            };

            return(ReportUtils.GetEfficiencyChangeForOneReport(data));


            /*
             * UnitStrengthData strengthData = null;
             *
             * try {
             *  strengthData = Services.ResourceService.UnitStrengthDataRepository.GetStrengthData(generatorId);
             *  int unitCount = Services.TransportService.GetUnitTotalCount(generatorId);
             *  if (unitCount == 0) {
             *      unitCount = 1;
             *  }
             *
             *  if (strengthData != null) {
             *      return 1.0 / (3.0 * strengthData.Strength * unitCount);
             *  } else {
             *      return 0;
             *  }
             *
             * } catch(Exception exc) {
             *  UDebug.Log($"exception strength is null { strengthData == null } for gen {generatorId}");
             *  return 0;
             * }*/
        }