Add Event Folder handling
This commit is contained in:
parent
2e26b68cb0
commit
6ecca59095
18
SharedProject/Models/EventFolderData.cs
Normal file
18
SharedProject/Models/EventFolderData.cs
Normal file
@ -0,0 +1,18 @@
|
||||
using System.Text.Json.Serialization;
|
||||
|
||||
namespace SharedProject.Models;
|
||||
|
||||
public class EventFolderData
|
||||
{
|
||||
[JsonPropertyName("folderId")]
|
||||
public uint FolderId { get; set; }
|
||||
|
||||
[JsonPropertyName("verupNo")]
|
||||
public uint VerupNo { get; set; }
|
||||
|
||||
[JsonPropertyName("priority")]
|
||||
public uint Priority { get; set; }
|
||||
|
||||
[JsonPropertyName("songNo")]
|
||||
public uint[]? SongNo { get; set; }
|
||||
}
|
@ -14,8 +14,12 @@ public static class Constants
|
||||
public const string MUSIC_ATTRIBUTE_COMPRESSED_FILE_NAME = "music_attribute.bin";
|
||||
|
||||
public const string DAN_DATA_FILE_NAME = "dan_data.json";
|
||||
|
||||
public const string INTRO_DATA_FILE_NAME = "intro_data.json";
|
||||
public const string EVENT_FOLDER_DATA_FILE_NAME = "event_folder_data.json";
|
||||
|
||||
public static readonly int[] EVENT_FOLDER_IDS = {
|
||||
1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14
|
||||
};
|
||||
|
||||
public const int MIN_DAN_ID = 1;
|
||||
public const int MAX_DAN_ID = 19;
|
||||
|
@ -1,7 +1,7 @@
|
||||
{
|
||||
"DataSettings" : {
|
||||
"DanDataFileName" : "dan_data.json",
|
||||
"EventDataFileName" : "event_data.json",
|
||||
"EventFolderDataFileName" : "event_folder_data.json",
|
||||
"IntroDataFileName" : "intro_data.json"
|
||||
}
|
||||
}
|
@ -4,6 +4,12 @@
|
||||
[ApiController]
|
||||
public class GetFolderController : BaseController<GetFolderController>
|
||||
{
|
||||
private readonly IGameDataService gameDataService;
|
||||
public GetFolderController(IGameDataService gameDataService)
|
||||
{
|
||||
this.gameDataService = gameDataService;
|
||||
}
|
||||
|
||||
[HttpPost]
|
||||
[Produces("application/protobuf")]
|
||||
public IActionResult GetFolder([FromBody] GetfolderRequest request)
|
||||
@ -17,13 +23,14 @@ public class GetFolderController : BaseController<GetFolderController>
|
||||
|
||||
foreach (var folderId in request.FolderIds)
|
||||
{
|
||||
response.AryEventfolderDatas.Add(new GetfolderResponse.EventfolderData
|
||||
gameDataService.GetFolderDictionary().TryGetValue(folderId, out var folderData);
|
||||
if (folderData is null)
|
||||
{
|
||||
FolderId = folderId,
|
||||
Priority = 1,
|
||||
SongNoes = new uint[] {1,2},
|
||||
VerupNo = 1
|
||||
});
|
||||
Logger.LogWarning("Requested folder id {Id} does not exist!", folderId);
|
||||
continue;
|
||||
}
|
||||
|
||||
response.AryEventfolderDatas.Add(folderData);
|
||||
}
|
||||
|
||||
return Ok(response);
|
||||
|
@ -47,6 +47,16 @@ public class InitialDataCheckController : BaseController<InitialDataCheckControl
|
||||
});
|
||||
}
|
||||
|
||||
var eventFolderData = new List<InitialdatacheckResponse.InformationData>();
|
||||
foreach (var folderId in Constants.EVENT_FOLDER_IDS)
|
||||
{
|
||||
eventFolderData.Add(new InitialdatacheckResponse.InformationData
|
||||
{
|
||||
InfoId = (uint)folderId,
|
||||
VerupNo = 0
|
||||
});
|
||||
}
|
||||
|
||||
var response = new InitialdatacheckResponse
|
||||
{
|
||||
Result = 1,
|
||||
@ -63,7 +73,7 @@ public class InitialDataCheckController : BaseController<InitialDataCheckControl
|
||||
InfoId = 1,
|
||||
VerupNo = 2
|
||||
}
|
||||
}
|
||||
},
|
||||
/*AryTelopDatas =
|
||||
{
|
||||
new InitialdatacheckResponse.InformationData
|
||||
@ -72,16 +82,6 @@ public class InitialDataCheckController : BaseController<InitialDataCheckControl
|
||||
VerupNo = 1
|
||||
}
|
||||
},
|
||||
ArySongIntroductionDatas =
|
||||
{
|
||||
new InitialdatacheckResponse.InformationData
|
||||
{
|
||||
InfoId = 1,
|
||||
VerupNo = 1
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
AryDanextraOdaiDatas =
|
||||
{
|
||||
new InitialdatacheckResponse.InformationData
|
||||
@ -90,7 +90,6 @@ public class InitialDataCheckController : BaseController<InitialDataCheckControl
|
||||
VerupNo = 1
|
||||
}
|
||||
},
|
||||
|
||||
AryAiEventDatas =
|
||||
{
|
||||
new InitialdatacheckResponse.AiEventData
|
||||
@ -99,23 +98,19 @@ public class InitialDataCheckController : BaseController<InitialDataCheckControl
|
||||
TokenId = 1
|
||||
}
|
||||
},
|
||||
AryEventfolderDatas =
|
||||
AryMovieInfos =
|
||||
{
|
||||
new InitialdatacheckResponse.InformationData
|
||||
new InitialdatacheckResponse.MovieData
|
||||
{
|
||||
InfoId = 1,
|
||||
VerupNo = 1
|
||||
MovieId = 2,
|
||||
EnableDays = 9999
|
||||
}
|
||||
}
|
||||
};*/
|
||||
/*response.AryMovieInfoes.Add(new InitialdatacheckResponse.MovieData
|
||||
{
|
||||
MovieId = 2,
|
||||
EnableDays = 9999
|
||||
});*/
|
||||
}*/
|
||||
};
|
||||
|
||||
response.AryDanOdaiDatas.AddRange(danData);
|
||||
response.ArySongIntroductionDatas.AddRange(introData);
|
||||
response.AryEventfolderDatas.AddRange(eventFolderData);
|
||||
return Ok(response);
|
||||
}
|
||||
|
||||
|
@ -21,6 +21,9 @@ public class GameDataService : IGameDataService
|
||||
private ImmutableDictionary<uint, MusicAttributeEntry> musicAttributes =
|
||||
ImmutableDictionary<uint, MusicAttributeEntry>.Empty;
|
||||
|
||||
private ImmutableDictionary<uint, GetfolderResponse.EventfolderData> folderDictionary =
|
||||
ImmutableDictionary<uint, GetfolderResponse.EventfolderData>.Empty;
|
||||
|
||||
private List<uint> musics = new();
|
||||
|
||||
private List<uint> musicsWithUra = new();
|
||||
@ -57,6 +60,11 @@ public class GameDataService : IGameDataService
|
||||
return introDataDictionary;
|
||||
}
|
||||
|
||||
public ImmutableDictionary<uint, GetfolderResponse.EventfolderData> GetFolderDictionary()
|
||||
{
|
||||
return folderDictionary;
|
||||
}
|
||||
|
||||
public async Task InitializeAsync()
|
||||
{
|
||||
var dataPath = PathHelper.GetDataPath();
|
||||
@ -64,6 +72,7 @@ public class GameDataService : IGameDataService
|
||||
var compressedMusicAttributePath = Path.Combine(dataPath, Constants.MUSIC_ATTRIBUTE_COMPRESSED_FILE_NAME);
|
||||
var danDataPath = Path.Combine(dataPath, settings.DanDataFileName);
|
||||
var songIntroDataPath = Path.Combine(dataPath, settings.IntroDataFileName);
|
||||
var eventFolderDataPath = Path.Combine(dataPath, settings.EventFolderDataFileName);
|
||||
|
||||
if (File.Exists(compressedMusicAttributePath))
|
||||
{
|
||||
@ -72,16 +81,20 @@ public class GameDataService : IGameDataService
|
||||
await using var musicAttributeFile = File.OpenRead(musicAttributePath);
|
||||
await using var danDataFile = File.OpenRead(danDataPath);
|
||||
await using var songIntroDataFile = File.OpenRead(songIntroDataPath);
|
||||
await using var eventFolderDataFile = File.OpenRead(eventFolderDataPath);
|
||||
|
||||
var attributesData = await JsonSerializer.DeserializeAsync<MusicAttributes>(musicAttributeFile);
|
||||
var danData = await JsonSerializer.DeserializeAsync<List<DanData>>(danDataFile);
|
||||
var introData = await JsonSerializer.DeserializeAsync<List<SongIntroductionData>>(songIntroDataFile);
|
||||
var eventFolderData = await JsonSerializer.DeserializeAsync<List<EventFolderData>>(eventFolderDataFile);
|
||||
|
||||
InitializeMusicAttributes(attributesData);
|
||||
|
||||
InitializeDanData(danData);
|
||||
|
||||
InitializeIntroData(introData);
|
||||
|
||||
InitializeEventFolderData(eventFolderData);
|
||||
}
|
||||
|
||||
private static void TryDecompressMusicAttribute()
|
||||
@ -108,6 +121,12 @@ public class GameDataService : IGameDataService
|
||||
danDataDictionary = danData.ToImmutableDictionary(data => data.DanId, ToResponseOdaiData);
|
||||
}
|
||||
|
||||
private void InitializeEventFolderData(List<EventFolderData>? eventFolderData)
|
||||
{
|
||||
eventFolderData.ThrowIfNull("Shouldn't happen!");
|
||||
folderDictionary = eventFolderData.ToImmutableDictionary(data => data.FolderId, ToResponseEventFolderData);
|
||||
}
|
||||
|
||||
private void InitializeMusicAttributes(MusicAttributes? attributesData)
|
||||
{
|
||||
attributesData.ThrowIfNull("Shouldn't happen!");
|
||||
@ -154,4 +173,17 @@ public class GameDataService : IGameDataService
|
||||
|
||||
return responseOdaiData;
|
||||
}
|
||||
|
||||
private static GetfolderResponse.EventfolderData ToResponseEventFolderData(EventFolderData data)
|
||||
{
|
||||
var responseEventFolderData = new GetfolderResponse.EventfolderData
|
||||
{
|
||||
FolderId = data.FolderId,
|
||||
VerupNo = data.VerupNo,
|
||||
Priority = data.Priority,
|
||||
SongNoes = data.SongNo
|
||||
};
|
||||
|
||||
return responseEventFolderData;
|
||||
}
|
||||
}
|
@ -15,4 +15,7 @@ public interface IGameDataService
|
||||
public ImmutableDictionary<uint, GetDanOdaiResponse.OdaiData> GetDanDataDictionary();
|
||||
|
||||
public ImmutableDictionary<uint, GetSongIntroductionResponse.SongIntroductionData> GetSongIntroDictionary();
|
||||
|
||||
public ImmutableDictionary<uint, GetfolderResponse.EventfolderData> GetFolderDictionary();
|
||||
}
|
||||
|
||||
|
@ -4,7 +4,7 @@ public class DataSettings
|
||||
{
|
||||
public string DanDataFileName { get; set; } = "dan_data.json";
|
||||
|
||||
public string EventDataFileName { get; set; } = "event_data.json";
|
||||
public string EventFolderDataFileName { get; set; } = "event_folder_data.json";
|
||||
|
||||
public string IntroDataFileName { get; set; } = "intro_data.json";
|
||||
}
|
@ -64,6 +64,9 @@
|
||||
<Content Update="wwwroot\data\dan_data.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\data\event_folder_data.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Update="wwwroot\data\intro_data.json">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
|
84
TaikoLocalServer/wwwroot/data/event_folder_data.json
Normal file
84
TaikoLocalServer/wwwroot/data/event_folder_data.json
Normal file
@ -0,0 +1,84 @@
|
||||
[
|
||||
{
|
||||
"folderId": 1,
|
||||
"verupNo": 1,
|
||||
"priority": 1,
|
||||
"songNo": []
|
||||
},
|
||||
{
|
||||
"folderId": 2,
|
||||
"verupNo": 1,
|
||||
"priority": 1,
|
||||
"songNo": [
|
||||
478, 153, 200, 482, 511, 672, 675, 646, 644, 645, 676, 671, 479,
|
||||
707, 480, 481, 203, 204, 483, 205, 202, 241, 14, 387, 197, 281, 226,
|
||||
484, 543, 512, 709, 35
|
||||
]
|
||||
},
|
||||
{
|
||||
"folderId": 3,
|
||||
"verupNo": 1,
|
||||
"priority": 1,
|
||||
"songNo": [
|
||||
1485, 1404, 1580, 1730, 1750, 1277, 1478, 1481, 1482, 1484, 1500,
|
||||
1890, 2349, 2604, 2640, 1176, 1419, 1596, 1693, 2248, 1049, 1221,
|
||||
1222, 1223, 1224, 1493, 1578, 1719, 2650, 1595, 1964, 1469, 1217,
|
||||
1314, 1406, 1565, 1745, 2120, 2200, 2324, 2785, 1631, 2301, 2802,
|
||||
1490, 2088, 2268, 2309, 2507, 2126, 1630, 2509, 1263, 2495, 2642,
|
||||
2745, 1054, 2583, 1271, 1266, 1267, 2923
|
||||
]
|
||||
},
|
||||
{
|
||||
"folderId": 4,
|
||||
"verupNo": 1,
|
||||
"priority": 1,
|
||||
"songNo": [
|
||||
1361, 1366, 1373, 1379, 1337, 1345, 1357, 1362, 1367, 1368, 1369,
|
||||
1374, 1375, 1388, 1390, 1579, 2225, 1354, 1394, 2804, 1340, 1341,
|
||||
1370, 1376, 1384, 1359, 1385, 2416, 2756, 1363, 1920, 1353, 1360,
|
||||
1381, 1389, 1364, 1391, 1342, 1546, 1931
|
||||
]
|
||||
},
|
||||
{
|
||||
"folderId": 5,
|
||||
"verupNo": 1,
|
||||
"priority": 1,
|
||||
"songNo": [242, 430, 368, 604, 333]
|
||||
},
|
||||
{
|
||||
"folderId": 6,
|
||||
"verupNo": 1,
|
||||
"priority": 1,
|
||||
"songNo": [841, 767, 658, 467, 468, 466, 460, 157, 465]
|
||||
},
|
||||
{
|
||||
"folderId": 7,
|
||||
"verupNo": 1,
|
||||
"priority": 1,
|
||||
"songNo": [733, 732, 44, 790, 894]
|
||||
},
|
||||
{
|
||||
"folderId": 8,
|
||||
"verupNo": 1,
|
||||
"priority": 1,
|
||||
"songNo": []
|
||||
},
|
||||
{
|
||||
"folderId": 12,
|
||||
"verupNo": 1,
|
||||
"priority": 1,
|
||||
"songNo": []
|
||||
},
|
||||
{
|
||||
"folderId": 13,
|
||||
"verupNo": 1,
|
||||
"priority": 1,
|
||||
"songNo": []
|
||||
},
|
||||
{
|
||||
"folderId": 14,
|
||||
"verupNo": 1,
|
||||
"priority": 1,
|
||||
"songNo": []
|
||||
}
|
||||
]
|
Loading…
Reference in New Issue
Block a user