1
0
mirror of synced 2025-02-07 15:01:25 +01:00

Add Double Play Songs Data Control impl

Crown Data / ScoreRank Data size fix
This commit is contained in:
ptmaster 2025-01-16 12:41:34 +08:00
parent e02b19fa2a
commit 66613c9d39
7 changed files with 33 additions and 5 deletions

View File

@ -58,7 +58,7 @@ public class CrownsDataController : BaseController<CrownsDataController>
{
var songBestData = await songBestDatumService.GetAllSongBestData(baid);
var songIdMax = settings.EnableMoreSongs ? Constants.MusicIdMaxExpanded : Constants.MusicIdMax;
var songIdMax = settings.EnableMoreSongs ? settings.MoreSongsSize : Constants.MusicIdMax;
var crown = new ushort[songIdMax + 1];
var dondafulCrown = new byte[songIdMax + 1];

View File

@ -49,7 +49,7 @@ public class GetScoreRankController(ISongBestDatumService songBestDatumService,
private async Task<ScoreRankData> Handle(uint baid)
{
var songIdMax = settings.EnableMoreSongs ? Constants.MusicIdMaxExpanded : Constants.MusicIdMax;
var songIdMax = settings.EnableMoreSongs ? settings.MoreSongsSize : Constants.MusicIdMax;
var kiwamiScores = new byte[songIdMax + 1];
var miyabiScores = new ushort[songIdMax + 1];
var ikiScores = new ushort[songIdMax + 1];

View File

@ -26,8 +26,11 @@ public class UserDataQueryHandler(TaikoDbContext context, IGameDataService gameD
var musicList = gameDataService.GetMusicList();
var lockedSongsList = gameDataService.GetLockedSongsList().Except(unlockedSongIdList).ToList();
var doublePlaySongsList = gameDataService.GetDoublePlaySongsList();
var lockedUraSongsList = gameDataService.GetLockedUraSongsList().Except(unlockedUraSongIdList).ToList();
var enabledMusicList = musicList.Except(lockedSongsList);
// TODO: if user set Unlock DoublePlay disable the follow line
enabledMusicList = enabledMusicList.Except(doublePlaySongsList);
var releaseSongArray =
FlagCalculator.GetBitArrayFromIds(enabledMusicList, songIdMax, logger);

View File

@ -43,6 +43,8 @@ public class GameDataService(IOptions<DataSettings> dataSettings) : IGameDataSer
private List<uint> lockedSongsList = [];
private List<uint> doublePlaySongsList = [];
private List<uint> lockedUraSongsList = [];
private readonly Dictionary<uint, MusicDetail> musicDetailDictionary = new();
@ -119,7 +121,12 @@ public class GameDataService(IOptions<DataSettings> dataSettings) : IGameDataSer
{
return lockedSongsList;
}
public List<uint> GetDoublePlaySongsList()
{
return doublePlaySongsList;
}
public List<uint> GetLockedUraSongsList()
{
return lockedUraSongsList;
@ -201,6 +208,7 @@ public class GameDataService(IOptions<DataSettings> dataSettings) : IGameDataSer
var shopFolderDataPath = Path.Combine(dataPath, settings.ShopFolderDataFileName);
var tokenDataPath = Path.Combine(dataPath, settings.TokenDataFileName);
var lockedSongsDataPath = Path.Combine(dataPath, settings.LockedSongsDataFileName);
var doublePlaySongsDataPath = Path.Combine(dataPath, settings.DoublePlaySongsData);
var qrCodeDataPath = Path.Combine(dataPath, settings.QrCodeDataFileName);
var lockedCostumeDataPath = Path.Combine(dataPath, settings.LockedCostumeDataFileName);
var lockedTitleDataPath = Path.Combine(dataPath, settings.LockedTitleDataFileName);
@ -249,6 +257,7 @@ public class GameDataService(IOptions<DataSettings> dataSettings) : IGameDataSer
await using var shopFolderDataFile = File.OpenRead(shopFolderDataPath);
await using var tokenDataFile = File.OpenRead(tokenDataPath);
await using var lockedSongsDataFile = File.OpenRead(lockedSongsDataPath);
await using var doublePlaySongsDataFile = File.OpenRead(doublePlaySongsDataPath);
await using var donCosRewardFile = File.OpenRead(donCosRewardPath);
await using var shougouFile = File.OpenRead(shougouPath);
await using var neiroFile = File.OpenRead(neiroPath);
@ -267,6 +276,7 @@ public class GameDataService(IOptions<DataSettings> dataSettings) : IGameDataSer
var shopFolderData = await JsonSerializer.DeserializeAsync<List<ShopFolderData>>(shopFolderDataFile);
var tokenData = await JsonSerializer.DeserializeAsync<Dictionary<string, int>>(tokenDataFile);
var lockedSongsData = await JsonSerializer.DeserializeAsync<Dictionary<string, uint[]>>(lockedSongsDataFile);
var doublePlaySongsData = await JsonSerializer.DeserializeAsync<Dictionary<string, uint[]>>(doublePlaySongsDataFile);
var donCosRewardData = await JsonSerializer.DeserializeAsync<DonCosRewards>(donCosRewardFile);
var shougouData = await JsonSerializer.DeserializeAsync<Shougous>(shougouFile);
var neiroData = await JsonSerializer.DeserializeAsync<Neiros>(neiroFile);
@ -394,6 +404,12 @@ public class GameDataService(IOptions<DataSettings> dataSettings) : IGameDataSer
lockedSongsList = lockedSongsData["songNo"].ToList();
lockedUraSongsList = lockedSongsData["uraSongNo"].ToList();
}
private void InitializeDoublePlaySongsData(Dictionary<string, uint[]>? doublePlaySongsData)
{
doublePlaySongsData.ThrowIfNull("Shouldn't happen!");
doublePlaySongsList = doublePlaySongsData["songNo"].ToList();
}
private void InitializeMusicDetails(MusicInfos? musicInfoData, MusicOrder? musicOrderData, WordList? wordlistData)
{

View File

@ -28,6 +28,8 @@ public interface IGameDataService
public Dictionary<string, int> GetTokenDataDictionary();
public List<uint> GetLockedSongsList();
public List<uint> GetDoublePlaySongsList();
public List<uint> GetLockedUraSongsList();

View File

@ -17,8 +17,10 @@ public class DataSettings
public string TokenDataFileName { get; set; } = "token_data.json";
public string LockedSongsDataFileName { get; set; } = "locked_songs_data.json";
public string QrCodeDataFileName { get; set; } = "qrcode_data.json";
public string DoublePlaySongsData { get; set; } = "double_play_songs_data.json";
public string QrCodeDataFileName { get; set; } = "qrcode_data.json";
public string LockedCostumeDataFileName { get; set; } = "locked_costume_data.json";

View File

@ -0,0 +1,5 @@
{
"songNo": [
]
}