示例#1
0
        private void RecordHitValueSecondary(CutScoreBuffer score, NoteData data, ScoreFinishEventHandler fn)
        {
            float newEnergy;

            switch (PluginConfig.Instance.secondaryMode)
            {
            case PluginConfig.MeasurementMode.None:
                return;

            case PluginConfig.MeasurementMode.Energy:
                newEnergy = energyCounter.energy;
                break;

            case PluginConfig.MeasurementMode.PercentModified:
                newEnergy = (float)scoreController.modifiedScore / scoreController.immediateMaxPossibleModifiedScore;
                break;

            case PluginConfig.MeasurementMode.PercentRaw:
                newEnergy = rankCounter.relativeScore;
                break;

            case PluginConfig.MeasurementMode.CutValue:
                if (score == null)
                {
                    return;
                }

                newEnergy = score.cutScore / 115.0f;
                break;

            case PluginConfig.MeasurementMode.AvgCutValue:
                if (score == null)
                {
                    return;
                }

                secondaryAverageHitValue = ((secondaryAverageHitValue * secondaryAverageHitValueSize) + score.cutScore / 115.0f) / ++secondaryAverageHitValueSize;
                newEnergy = secondaryAverageHitValue;
                break;

            default:
                Logger.log.Error("An invalid mode was specified! PerformanceMeter will not record scores, resulting in a blank graph. Check the readme for the valid modes.");
                return;
            }

            if (secondaryEnergyList.Count == 0)
            {
                secondaryEnergyList.Add(new Pair <float, float>(0, newEnergy));
            }
            secondaryEnergyList.Add(new Pair <float, float>(data.time, newEnergy));

            if (score != null)
            {
                score.UnregisterDidFinishReceiver(fn);
            }
        }