示例#1
0
        private void ClearOldData()
        {
            //Wipe score data
            beatmapObjectSpawnController.SetField("_halfJumpDurationInBeats", 4f); //In the disassembly, it looks like this field is usually initialized to 1f, however in practice, when the game starts, it is always 4f. Blame Beat Games.

            beatmapObjectExecutionRatingsRecorder.beatmapObjectExecutionRatings.Clear();
            beatmapObjectExecutionRatingsRecorder.GetField <HashSet <int> >("_hitObstacles").Clear();
            beatmapObjectExecutionRatingsRecorder.GetField <List <ObstacleController> >("_prevIntersectingObstacles").Clear();

            multiplierValuesRecorder.GetField <List <MultiplierValuesRecorder.MultiplierValue> >("_multiplierValues").Clear();

            scoreController.SetField("_baseRawScore", 0);
            scoreController.SetField("_prevFrameRawScore", 0);
            scoreController.SetField("_multiplier", 1);
            scoreController.SetField("_multiplierIncreaseProgress", 0);
            scoreController.SetField("_multiplierIncreaseMaxProgress", 2);
            scoreController.SetField("_combo", 0);
            scoreController.SetField("_maxCombo", 0);
            scoreController.SetField("_feverIsActive", false);
            scoreController.SetField("_feverStartTime", 0f);
            scoreController.SetField("_feverCombo", 0);
            scoreController.SetField("_playerHeadWasInObstacle", false);
            scoreController.SetField("_immediateMaxPossibleRawScore", 0);
            scoreController.SetField("_cutOrMissedNotes", 0);
            scoreController.GetField <List <CutScoreBuffer> >("_cutScoreBuffers").Clear();

            /*saberActivityCounter.GetField<MovementHistoryRecorder>("_saberMovementHistoryRecorder").SetField("_accum", 0);
             * saberActivityCounter.GetField<MovementHistoryRecorder>("_handMovementHistoryRecorder").SetField("_accum", 0);*/

            saberActivityCounter.SetField("_saberMovementHistoryRecorder", new MovementHistoryRecorder(saberActivityCounter.GetField <float>("_averageWindowDuration"), saberActivityCounter.GetField <float>("_valuesPerSecond"), saberActivityCounter.GetField <float>("_increaseSpeed"), saberActivityCounter.GetField <float>("_deceraseSpeed")));
            saberActivityCounter.SetField("_handMovementHistoryRecorder", new MovementHistoryRecorder(saberActivityCounter.GetField <float>("_averageWindowDuration"), saberActivityCounter.GetField <float>("_valuesPerSecond"), saberActivityCounter.GetField <float>("_increaseSpeed"), saberActivityCounter.GetField <float>("_deceraseSpeed")));
            saberActivityCounter.SetField("_leftSaberMovementDistance", 0f);
            saberActivityCounter.SetField("_rightSaberMovementDistance", 0f);
            saberActivityCounter.SetField("_leftHandMovementDistance", 0f);
            saberActivityCounter.SetField("_rightHandMovementDistance", 0f);
            saberActivityCounter.SetField("_hasPrevPos", false);

            /*saberActivityCounter.saberMovementAveragingValueRecorder.GetField<Queue<AveragingValueRecorder.AverageValueData>>("_averageWindowValues").Clear();
             * saberActivityCounter.saberMovementAveragingValueRecorder.GetField<Queue<float>>("_historyValues").Clear();
             * saberActivityCounter.saberMovementAveragingValueRecorder.SetField("_time", 0);
             * saberActivityCounter.saberMovementAveragingValueRecorder.SetField("_historyTime", 0);
             * saberActivityCounter.saberMovementAveragingValueRecorder.SetField("_averageValue", 0);
             * saberActivityCounter.saberMovementAveragingValueRecorder.SetField("_averageWindowValuesDuration", 0);
             * saberActivityCounter.saberMovementAveragingValueRecorder.SetField("_lastValue", 0);
             *
             * saberActivityCounter.handMovementAveragingValueRecorder.GetField<Queue<AveragingValueRecorder.AverageValueData>>("_averageWindowValues").Clear();
             * saberActivityCounter.handMovementAveragingValueRecorder.GetField<Queue<float>>("_historyValues").Clear();
             * saberActivityCounter.handMovementAveragingValueRecorder.SetField("_time", 0);
             * saberActivityCounter.handMovementAveragingValueRecorder.SetField("_historyTime", 0);
             * saberActivityCounter.handMovementAveragingValueRecorder.SetField("_averageValue", 0);
             * saberActivityCounter.handMovementAveragingValueRecorder.SetField("_averageWindowValuesDuration", 0);
             * saberActivityCounter.handMovementAveragingValueRecorder.SetField("_lastValue", 0);*/

            noteCutSoundEffectManager.SetField("_prevNoteATime", -1f);
            noteCutSoundEffectManager.SetField("_prevNoteBTime", -1f);

            //Wipe notes
            var noteAPool    = beatmapObjectSpawnController.GetField <NoteController.Pool>("_noteAPool");
            var noteBPool    = beatmapObjectSpawnController.GetField <NoteController.Pool>("_noteBPool");
            var bombNotePool = beatmapObjectSpawnController.GetField <NoteController.Pool>("_bombNotePool");
            var obstaclePool = beatmapObjectSpawnController.GetField <ObstacleController.Pool>("_obstaclePool");

            noteAPool.activeItems.ToList().ForEach(x => beatmapObjectSpawnController.Despawn(x));
            noteBPool.activeItems.ToList().ForEach(x => beatmapObjectSpawnController.Despawn(x));
            bombNotePool.activeItems.ToList().ForEach(x => beatmapObjectSpawnController.Despawn(x));
            obstaclePool.activeItems.ToList().ForEach(x => beatmapObjectSpawnController.Despawn(x));
        }