diff --git a/TaikoLocalServer/Common/Constants.cs b/TaikoLocalServer/Common/Constants.cs index 9f19027..19ce9ec 100644 --- a/TaikoLocalServer/Common/Constants.cs +++ b/TaikoLocalServer/Common/Constants.cs @@ -4,5 +4,7 @@ public static class Constants { public const string DATE_TIME_FORMAT = "yyyyMMddHHmmss"; - public static readonly byte[] ZeroArray = new byte[1000]; + public const int MUSIC_ID_MAX = 1600; + + public const int MUSIC_FLAG_BYTES = MUSIC_ID_MAX / 8 + 1; } \ No newline at end of file diff --git a/TaikoLocalServer/Controllers/CrownsDataController.cs b/TaikoLocalServer/Controllers/CrownsDataController.cs index 3671cf5..d5d69f5 100644 --- a/TaikoLocalServer/Controllers/CrownsDataController.cs +++ b/TaikoLocalServer/Controllers/CrownsDataController.cs @@ -19,11 +19,12 @@ public class CrownsDataController : ControllerBase logger.LogInformation("CrownsData request : {Request}", request.Stringify()); var manager = MusicAttributeManager.Instance; + var crown = new byte[manager.Musics.Count*8]; var response = new CrownsDataResponse { Result = 1, - CrownFlg = GZipBytesUtil.GetGZipBytes(new byte[manager.Musics.Count*4]), - DondafulCrownFlg = GZipBytesUtil.GetGZipBytes(new byte[manager.Musics.Count*4]) + CrownFlg = GZipBytesUtil.GetGZipBytes(crown), + DondafulCrownFlg = GZipBytesUtil.GetGZipBytes(new byte[manager.Musics.Count*8]) }; return Ok(response); diff --git a/TaikoLocalServer/Controllers/GetScoreRankController.cs b/TaikoLocalServer/Controllers/GetScoreRankController.cs index 30bc0e9..23c9083 100644 --- a/TaikoLocalServer/Controllers/GetScoreRankController.cs +++ b/TaikoLocalServer/Controllers/GetScoreRankController.cs @@ -21,9 +21,9 @@ public class GetScoreRankController : ControllerBase var response = new GetScoreRankResponse { Result = 1, - IkiScoreRankFlg = GZipBytesUtil.GetGZipBytes(new byte[manager.Musics.Count * 4]), - KiwamiScoreRankFlg = GZipBytesUtil.GetGZipBytes(new byte[manager.Musics.Count * 4]), - MiyabiScoreRankFlg = GZipBytesUtil.GetGZipBytes(new byte[manager.Musics.Count * 4]) + IkiScoreRankFlg = GZipBytesUtil.GetGZipBytes(new byte[manager.Musics.Count * 9]), + KiwamiScoreRankFlg = GZipBytesUtil.GetGZipBytes(new byte[manager.Musics.Count * 9]), + MiyabiScoreRankFlg = GZipBytesUtil.GetGZipBytes(new byte[manager.Musics.Count * 9]) }; return Ok(response); diff --git a/TaikoLocalServer/Controllers/GetShopFolderController.cs b/TaikoLocalServer/Controllers/GetShopFolderController.cs index fd019c7..e98bc66 100644 --- a/TaikoLocalServer/Controllers/GetShopFolderController.cs +++ b/TaikoLocalServer/Controllers/GetShopFolderController.cs @@ -19,7 +19,9 @@ public class GetShopFolderController : ControllerBase var response = new GetShopFolderResponse { - Result = 1 + Result = 1, + TokenId = 1, + VerupNo = 2 }; response.AryShopFolderDatas.Add(new GetShopFolderResponse.ShopFolderData diff --git a/TaikoLocalServer/Controllers/GetTokenCountController.cs b/TaikoLocalServer/Controllers/GetTokenCountController.cs index bd6dea1..ec2b6d5 100644 --- a/TaikoLocalServer/Controllers/GetTokenCountController.cs +++ b/TaikoLocalServer/Controllers/GetTokenCountController.cs @@ -25,7 +25,7 @@ public class GetTokenCountController : ControllerBase response.AryTokenCountDatas.Add(new GetTokenCountResponse.TokenCountData { TokenCount = 10, - TokenId = 1000 + TokenId = 1 }); return Ok(response); diff --git a/TaikoLocalServer/Controllers/InitialDataCheckController.cs b/TaikoLocalServer/Controllers/InitialDataCheckController.cs index cc92fbb..9a3bcca 100644 --- a/TaikoLocalServer/Controllers/InitialDataCheckController.cs +++ b/TaikoLocalServer/Controllers/InitialDataCheckController.cs @@ -1,4 +1,5 @@ -using Swan.Extensions; +using System.Collections; +using Swan.Extensions; using TaikoLocalServer.Common; using TaikoLocalServer.Utils; @@ -22,16 +23,25 @@ public class InitialDataCheckController : ControllerBase { logger.LogInformation("InitialDataCheck request: {Request}", request.Stringify()); - var enabledArray = new uint[] {1, 2, 7, 11, 14, 17}; + var enabledArray = new byte[Constants.MUSIC_FLAG_BYTES]; + var response = new InitialdatacheckResponse { Result = 1, IsDanplay = false, IsAibattle = false, IsClose = false, - SongIntroductionEndDatetime = (DateTime.Now + TimeSpan.FromDays(999)).ToString(Constants.DATE_TIME_FORMAT), - DefaultSongFlg = GZipBytesUtil.GetGZipBytes(enabledArray), - AryTelopDatas = + //SongIntroductionEndDatetime = (DateTime.Now + TimeSpan.FromDays(999)).ToString(Constants.DATE_TIME_FORMAT), + DefaultSongFlg = enabledArray, + AryShopFolderDatas = + { + new InitialdatacheckResponse.InformationData + { + InfoId = 1, + VerupNo = 2 + } + }, + /*AryTelopDatas = { new InitialdatacheckResponse.InformationData { @@ -47,14 +57,7 @@ public class InitialDataCheckController : ControllerBase VerupNo = 1 } }, - AryShopFolderDatas = - { - new InitialdatacheckResponse.InformationData - { - InfoId = 1, - VerupNo = 1 - } - }, + AryDanOdaiDatas = { new InitialdatacheckResponse.InformationData @@ -88,12 +91,13 @@ public class InitialDataCheckController : ControllerBase VerupNo = 1 } } + };*/ + /*response.AryMovieInfoes.Add(new InitialdatacheckResponse.MovieData + { + MovieId = 2, + EnableDays = 9999 + });*/ }; - /*response.AryMovieInfoes.Add(new InitialdatacheckResponse.MovieData - { - MovieId = 2, - EnableDays = 9999 - });*/ return Ok(response); } diff --git a/TaikoLocalServer/Controllers/SelfBestController.cs b/TaikoLocalServer/Controllers/SelfBestController.cs index 1b0aa00..6978221 100644 --- a/TaikoLocalServer/Controllers/SelfBestController.cs +++ b/TaikoLocalServer/Controllers/SelfBestController.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Http; +using Microsoft.Extensions.Caching.Memory; using TaikoLocalServer.Models; using TaikoLocalServer.Utils; @@ -9,7 +10,9 @@ namespace TaikoLocalServer.Controllers; public class SelfBestController : ControllerBase { private readonly ILogger logger; - public SelfBestController(ILogger logger) { + + public SelfBestController(ILogger logger) + { this.logger = logger; } @@ -25,21 +28,8 @@ public class SelfBestController : ControllerBase Level = request.Level }; - if (request.ArySongNoes.Length == 1) - { - response.ArySelfbestScores.Add(new SelfBestResponse.SelfBestData - { - SongNo = request.ArySongNoes[0], - SelfBestScore = 0, - SelfBestScoreRate = 0, - UraBestScore = 0, - UraBestScoreRate = 0 - }); - return Ok(response); - } - var crashing = new HashSet { 2, 4, 47, 228, 232, 245, 255, 290, 385, 453, 464, 732, 772, 789, 790, 811, 824, 825, 837, 838, 840, 854, 861, 862, 877, 883, 885, 893, 894, 901 }; var manager = MusicAttributeManager.Instance; - /*foreach (var songNo in request.ArySongNoes) + foreach (var songNo in request.ArySongNoes) { if (!manager.MusicAttributes.ContainsKey(songNo)) { @@ -47,23 +37,18 @@ public class SelfBestController : ControllerBase continue; } - if (crashing.Contains(songNo)) - { - logger.LogWarning("Possible crashing song no!"); - continue; - } var selfBestData = new SelfBestResponse.SelfBestData { + SongNo = songNo, SelfBestScore = 0, SelfBestScoreRate = 0, - SongNo = songNo, UraBestScore = 0, UraBestScoreRate = 0 }; response.ArySelfbestScores.Add(selfBestData); - }*/ + } response.ArySelfbestScores.Sort((data, otherData) => data.SongNo.CompareTo(otherData.SongNo)); - + return Ok(response); } } \ No newline at end of file diff --git a/TaikoLocalServer/Controllers/UserDataController.cs b/TaikoLocalServer/Controllers/UserDataController.cs index 315ec49..b5c19aa 100644 --- a/TaikoLocalServer/Controllers/UserDataController.cs +++ b/TaikoLocalServer/Controllers/UserDataController.cs @@ -1,4 +1,7 @@ -using TaikoLocalServer.Utils; +using System.Collections; +using System.Runtime.InteropServices; +using TaikoLocalServer.Common; +using TaikoLocalServer.Utils; namespace TaikoLocalServer.Controllers; @@ -18,17 +21,31 @@ public class UserDataController : ControllerBase logger.LogInformation("UserData request : {Request}", request.Stringify()); var musicAttributeManager = MusicAttributeManager.Instance; + + var releaseSongArray = new byte[Constants.MUSIC_FLAG_BYTES]; + var test = new BitArray(Constants.MUSIC_ID_MAX); + foreach (var music in musicAttributeManager.Musics) + { + test.Set((int)music, true); + } + test.Set(2, false); + test.CopyTo(releaseSongArray, 0); - var releaseSongArray = musicAttributeManager.Musics.ToArray(); - var uraSongArray = musicAttributeManager.MusicsWithUra.ToArray(); + var uraSongArray = new byte[Constants.MUSIC_FLAG_BYTES]; + test.SetAll(false); + foreach (var music in musicAttributeManager.MusicsWithUra) + { + test.Set((int)music, true); + } + test.CopyTo(uraSongArray, 0); var response = new UserDataResponse { Result = 1, - ToneFlg = GZipBytesUtil.GetGZipBytes(new byte[1000]), - TitleFlg = GZipBytesUtil.GetGZipBytes(new byte[1000]), - ReleaseSongFlg = GZipBytesUtil.GetGZipBytes(releaseSongArray), - UraReleaseSongFlg = GZipBytesUtil.GetGZipBytes(uraSongArray), + ToneFlg = new byte[] {9}, + // TitleFlg = GZipBytesUtil.GetGZipBytes(new byte[100]), + ReleaseSongFlg = releaseSongArray, + UraReleaseSongFlg = uraSongArray, DefaultOptionSetting = new byte[] {0b10001001, 0b00000000}, SongRecentCnt = 0, IsVoiceOn = true, diff --git a/TaikoLocalServer/Program.cs b/TaikoLocalServer/Program.cs index 411948b..3a82039 100644 --- a/TaikoLocalServer/Program.cs +++ b/TaikoLocalServer/Program.cs @@ -21,6 +21,7 @@ builder.Services.AddHttpLogging(options => options.LoggingFields = HttpLoggingFields.RequestPropertiesAndHeaders | HttpLoggingFields.ResponsePropertiesAndHeaders; }); +builder.Services.AddMemoryCache(); var app = builder.Build(); app.UseForwardedHeaders(new ForwardedHeadersOptions diff --git a/TaikoLocalServer/Utils/MusicAttributeManager.cs b/TaikoLocalServer/Utils/MusicAttributeManager.cs index d0517a0..589b933 100644 --- a/TaikoLocalServer/Utils/MusicAttributeManager.cs +++ b/TaikoLocalServer/Utils/MusicAttributeManager.cs @@ -32,15 +32,13 @@ public class MusicAttributeManager } MusicAttributes = result.ToDictionary(attribute => attribute.MusicId); - Musics = MusicAttributes - .Where(attribute => attribute.Value.HasUra) - .Select(pair => pair.Key).ToList(); + Musics = MusicAttributes.Select(pair => pair.Key) + .ToList(); Musics.Sort(); - MusicsWithUra = MusicAttributes - .Where(attribute => attribute.Value.HasUra) - .Select(pair => pair.Key) - .ToList(); + MusicsWithUra = MusicAttributes.Where(attribute => attribute.Value.HasUra) + .Select(pair => pair.Key) + .ToList(); MusicsWithUra.Sort(); }