-
-
Notifications
You must be signed in to change notification settings - Fork 23
/
AbstractReplayUtils.cs
69 lines (60 loc) · 3.06 KB
/
AbstractReplayUtils.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
using System.Linq;
using BeatLeader.Models;
using BeatLeader.Models.AbstractReplay;
using UnityEngine;
namespace BeatLeader.Utils {
internal static class AbstractReplayUtils {
private static readonly EnvironmentTypeSO normalEnvironmentType = Resources.FindObjectsOfTypeAll<EnvironmentTypeSO>()
.FirstOrDefault(x => x.typeNameLocalizationKey == "NORMAL_ENVIRONMENT_TYPE")!;
private static readonly StandardLevelScenesTransitionSetupDataSO standardLevelScenesTransitionSetupDataSo =
Resources.FindObjectsOfTypeAll<StandardLevelScenesTransitionSetupDataSO>().FirstOrDefault()!;
public static StandardLevelScenesTransitionSetupDataSO CreateTransitionData(this ReplayLaunchData launchData, PlayerDataModel playerModel) {
var transitionData = standardLevelScenesTransitionSetupDataSo;
var playerData = playerModel.playerData;
var overrideEnv = launchData.EnvironmentInfo != null;
var envSettings = overrideEnv ? new() {
overrideEnvironments = true
} : playerData.overrideEnvironmentSettings;
if (overrideEnv) {
envSettings.SetEnvironmentInfoForType(
normalEnvironmentType, launchData.EnvironmentInfo);
}
var replay = launchData.MainReplay;
var practiceSettings = launchData.IsBattleRoyale ? null
: launchData.MainReplay.ReplayData.PracticeSettings;
var beatmap = launchData.DifficultyBeatmap;
transitionData.Init("Solo", beatmap, beatmap.level, envSettings,
playerData.colorSchemesSettings.GetSelectedColorScheme(),
playerData.colorSchemesSettings.GetOverrideColorScheme(),
replay.ReplayData.GameplayModifiers,
playerData.playerSpecificSettings.GetPlayerSettingsByReplay(replay),
practiceSettings, "Menu");
return transitionData;
}
public static NoteCutInfo SaturateNoteCutInfo(this NoteCutInfo cutInfo, NoteData data) {
return new NoteCutInfo(
data,
cutInfo.speedOK,
cutInfo.directionOK,
cutInfo.saberTypeOK,
cutInfo.wasCutTooSoon,
cutInfo.saberSpeed,
cutInfo.saberDir,
cutInfo.saberType,
cutInfo.timeDeviation,
cutInfo.cutDirDeviation,
cutInfo.cutPoint,
cutInfo.cutNormal,
cutInfo.cutDistanceToCenter,
cutInfo.cutAngle,
cutInfo.worldRotation,
cutInfo.inverseWorldRotation,
cutInfo.noteRotation,
cutInfo.notePosition,
cutInfo.saberMovementData);
}
private static PlayerSpecificSettings GetPlayerSettingsByReplay(this PlayerSpecificSettings settings, IReplay replay) {
return settings.CopyWith(replay.ReplayData.LeftHanded, replay.ReplayData.FixedHeight, replay.ReplayData.FixedHeight is null);
}
}
}