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)); }
/// <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)); }
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)); } }
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))); }