Skip to content

Commit

Permalink
fix: handle nullable difficulty beatmap on level start
Browse files Browse the repository at this point in the history
  • Loading branch information
roydejong committed Mar 17, 2023
1 parent cbfa97b commit b5b1e40
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 13 deletions.
6 changes: 3 additions & 3 deletions Core/BssbDataCollector.cs
Original file line number Diff line number Diff line change
Expand Up @@ -281,7 +281,7 @@ private void FinishPreConnectHandling()
[AffinityPostfix]
[AffinityPatch(typeof(LobbyGameStateController), "StartMultiplayerLevel")]
private void HandleStartMultiplayerLevel(ILevelGameplaySetupData gameplaySetupData,
IDifficultyBeatmap difficultyBeatmap, Action beforeSceneSwitchCallback)
IDifficultyBeatmap? difficultyBeatmap, Action beforeSceneSwitchCallback)
{
var previewBeatmapLevel = gameplaySetupData.beatmapLevel.beatmapLevel;
var beatmapDifficulty = gameplaySetupData.beatmapLevel.beatmapDifficulty;
Expand All @@ -295,8 +295,8 @@ private void HandleStartMultiplayerLevel(ILevelGameplaySetupData gameplaySetupDa
$"difficulty={beatmapDifficulty}, characteristic={beatmapCharacteristic}, " +
$"modifiers={gameplayModifiers})");

Current.Level = BssbServerLevel.FromDifficultyBeatmap(difficultyBeatmap, gameplayModifiers,
beatmapCharacteristic.serializedName);
Current.Level = BssbServerLevel.FromLevelStartData(previewBeatmapLevel, beatmapDifficulty, difficultyBeatmap,
gameplayModifiers, beatmapCharacteristic.serializedName);

if (Current.Level.Difficulty.HasValue && Current.LobbyDifficulty != BssbDifficulty.All)
Current.LobbyDifficulty = Current.Level.Difficulty.Value.ToBssbDifficulty();
Expand Down
36 changes: 26 additions & 10 deletions Models/BssbServerLevel.cs
Original file line number Diff line number Diff line change
Expand Up @@ -26,20 +26,36 @@ public string CharacteristicText
}
}

public static BssbServerLevel FromDifficultyBeatmap(IDifficultyBeatmap db, GameplayModifiers? modifiers,
string? characteristic)
public static BssbServerLevel FromLevelStartData(IPreviewBeatmapLevel previewBeatmapLevel,
BeatmapDifficulty difficulty, IDifficultyBeatmap? db = null, GameplayModifiers? modifiers = null,
string? characteristic = null)
{
if (db != null)
{
return new BssbServerLevel()
{
LevelId = db.level.levelID,
SongName = db.level.songName,
SongSubName = db.level.songSubName,
SongAuthorName = db.level.songAuthorName,
LevelAuthorName = db.level.levelAuthorName,
Difficulty = db.difficulty,
Modifiers = modifiers,
Characteristic = characteristic
};
}

return new BssbServerLevel()
{
LevelId = db.level.levelID,
SongName = db.level.songName,
SongSubName = db.level.songSubName,
SongAuthorName = db.level.songAuthorName,
LevelAuthorName = db.level.levelAuthorName,
Difficulty = db.difficulty,
LevelId = previewBeatmapLevel.levelID,
SongName = previewBeatmapLevel.songName,
SongSubName = previewBeatmapLevel.songSubName,
SongAuthorName = previewBeatmapLevel.songAuthorName,
LevelAuthorName = previewBeatmapLevel.levelAuthorName,
Difficulty = difficulty,
Modifiers = modifiers,
Characteristic = characteristic
};
Characteristic = characteristic
};
}
}
}

0 comments on commit b5b1e40

Please sign in to comment.