Пример #1
0
        public void ShowProductionTrace(ILogger logger, string slotName, SlotStatus status, PPDCalculation ppdCalculation, BonusCalculation bonusCalculation)
        {
            // test the level
            if (!logger.IsDebugEnabled)
            {
                return;
            }

            if (ProteinIsUnknown(CurrentProtein))
            {
                logger.Debug(String.Format(Logger.NameFormat, slotName, "Protein is unknown... 0 PPD."));
                return;
            }

            switch (bonusCalculation)
            {
            case BonusCalculation.DownloadTime:
                logger.Debug(String.Format(Logger.NameFormat, slotName,
                                           status == SlotStatus.RunningNoFrameTimes
                            ? "Calculate Bonus PPD by Frame Time."
                            : "Calculate Bonus PPD by Download Time."));
                break;

            case BonusCalculation.FrameTime:
                logger.Debug(String.Format(Logger.NameFormat, slotName, "Calculate Bonus PPD by Frame Time."));
                break;

            default:
                logger.Debug(String.Format(Logger.NameFormat, slotName, "Calculate Standard PPD."));
                break;
            }

            TimeSpan frameTime = GetFrameTime(ppdCalculation);
            var      noBonus   = CurrentProtein.GetProteinProduction(frameTime, TimeSpan.Zero);
            TimeSpan unitTimeByDownloadTime = GetUnitTimeByDownloadTime(frameTime);
            var      bonusByDownload        = CurrentProtein.GetProteinProduction(frameTime, unitTimeByDownloadTime);
            TimeSpan unitTimeByFrameTime    = GetUnitTimeByFrameTime(frameTime);
            var      bonusByFrame           = CurrentProtein.GetProteinProduction(frameTime, unitTimeByFrameTime);

            logger.Debug(CreateProductionDebugOutput(WorkUnit.ToShortProjectString(), frameTime, CurrentProtein, noBonus,
                                                     unitTimeByDownloadTime, bonusByDownload,
                                                     unitTimeByFrameTime, bonusByFrame));
        }
Пример #2
0
        /// <summary>
        /// Points per day (PPD) rating for this unit
        /// </summary>
        public double GetPPD(SlotStatus status, PPDCalculation ppdCalculation, BonusCalculation calculateBonus)
        {
            TimeSpan frameTime = GetFrameTime(ppdCalculation);

            return(GetPPD(frameTime, GetUnitTimeByDownloadTime(frameTime), GetUnitTimeByFrameTime(frameTime), status, calculateBonus));
        }
Пример #3
0
        private double GetPPD(TimeSpan frameTime, TimeSpan unitTimeByDownloadTime, TimeSpan unitTimeByFrameTime, SlotStatus status, BonusCalculation calculateBonus)
        {
            if (ProteinIsUnknown(CurrentProtein))
            {
                return(0.0);
            }

            switch (calculateBonus)
            {
            case BonusCalculation.DownloadTime when status == SlotStatus.RunningNoFrameTimes:
                return(CurrentProtein.GetBonusPPD(frameTime, unitTimeByFrameTime));

            case BonusCalculation.DownloadTime:
                return(CurrentProtein.GetBonusPPD(frameTime, unitTimeByDownloadTime));

            case BonusCalculation.FrameTime:
                return(CurrentProtein.GetBonusPPD(frameTime, unitTimeByFrameTime));

            default:
                return(CurrentProtein.GetPPD(frameTime));
            }
        }
Пример #4
0
        private static IEnumerable <string> EnumerateSlotInformation(SlotModel slot, string numberFormat, BonusCalculation bonusCalculation)
        {
            if (slot is null)
            {
                yield break;
            }

            var workUnit = slot.WorkUnitModel;
            var status   = slot.Status;

            yield return(String.Format(CultureInfo.InvariantCulture, " Cur. Time / Frame : {0} - {1} PPD",
                                       workUnit.GetFrameTime(PPDCalculation.LastFrame), workUnit.GetPPD(status, PPDCalculation.LastFrame, bonusCalculation).ToString(numberFormat)));

            yield return(String.Format(CultureInfo.InvariantCulture, " R3F. Time / Frame : {0} - {1} PPD",
                                       workUnit.GetFrameTime(PPDCalculation.LastThreeFrames), workUnit.GetPPD(status, PPDCalculation.LastThreeFrames, bonusCalculation).ToString(numberFormat)));

            yield return(String.Format(CultureInfo.InvariantCulture, " All  Time / Frame : {0} - {1} PPD",
                                       workUnit.GetFrameTime(PPDCalculation.AllFrames), workUnit.GetPPD(status, PPDCalculation.AllFrames, bonusCalculation).ToString(numberFormat)));

            yield return(String.Format(CultureInfo.InvariantCulture, " Eff. Time / Frame : {0} - {1} PPD",
                                       workUnit.GetFrameTime(PPDCalculation.EffectiveRate), workUnit.GetPPD(status, PPDCalculation.EffectiveRate, bonusCalculation).ToString(numberFormat)));
        }