1
0
mirror of synced 2025-02-20 20:51:01 +01:00

Figure out crowns data layout

This commit is contained in:
asesidaa 2022-08-21 20:40:49 +08:00
parent c460bdbd20
commit ce6410c16d
8 changed files with 55 additions and 11 deletions

View File

@ -6,5 +6,9 @@ public static class Constants
public const int MUSIC_ID_MAX = 1600;
public const int MUSIC_FLAG_BYTES = MUSIC_ID_MAX / 8 + 1;
public const int MUSIC_FLAG_ARRAY_SIZE = MUSIC_ID_MAX / 8 + 1;
public const int CROWN_FLAG_ARRAY_SIZE = MUSIC_ID_MAX + 1;
public const int DONDAFUL_CROWN_FLAG_ARRAY_SIZE = MUSIC_ID_MAX + 1;
}

View File

@ -0,0 +1,17 @@
namespace TaikoLocalServer.Common.Enums;
[Flags]
public enum CrownTypeFlag : ushort
{
None = 0,
EasyClear = 0b10,
EasyGold = 0b11,
NormalClear = 0b10_00,
NormalGold = 0b11_00,
HardClear = 0b10_0000,
HardGold = 0b11_0000,
OniClear = 0b10_00_0000,
OniGold = 0b11_00_0000,
UraOniClear = 0b10_00000000,
UraOniGold = 0b11_00000000
}

View File

@ -0,0 +1,12 @@
namespace TaikoLocalServer.Common.Enums;
[Flags]
public enum DondafulCrownTypeFlag : byte
{
None = 0,
Easy = 1,
Normal = 2,
Hard = 4,
Oni = 8,
UraOni = 16
}

View File

@ -1,4 +1,8 @@
using Microsoft.AspNetCore.Http;
using System.Collections;
using System.Collections.Specialized;
using Microsoft.AspNetCore.Http;
using TaikoLocalServer.Common;
using TaikoLocalServer.Common.Enums;
using TaikoLocalServer.Utils;
namespace TaikoLocalServer.Controllers;
@ -8,8 +12,13 @@ namespace TaikoLocalServer.Controllers;
public class CrownsDataController : ControllerBase
{
private readonly ILogger<CrownsDataController> logger;
public CrownsDataController(ILogger<CrownsDataController> logger) {
private readonly IConfiguration configuration;
public CrownsDataController(ILogger<CrownsDataController> logger, IConfiguration configuration)
{
this.logger = logger;
this.configuration = configuration;
}
[HttpPost]
@ -18,13 +27,14 @@ public class CrownsDataController : ControllerBase
{
logger.LogInformation("CrownsData request : {Request}", request.Stringify());
var manager = MusicAttributeManager.Instance;
var crown = new byte[manager.Musics.Count*8];
var crown = new ushort[Constants.CROWN_FLAG_ARRAY_SIZE];
var bytes = new byte[Constants.DONDAFUL_CROWN_FLAG_ARRAY_SIZE];
var response = new CrownsDataResponse
{
Result = 1,
CrownFlg = GZipBytesUtil.GetGZipBytes(crown),
DondafulCrownFlg = GZipBytesUtil.GetGZipBytes(new byte[manager.Musics.Count*8])
DondafulCrownFlg = GZipBytesUtil.GetGZipBytes(bytes)
};
return Ok(response);

View File

@ -23,7 +23,7 @@ public class InitialDataCheckController : ControllerBase
{
logger.LogInformation("InitialDataCheck request: {Request}", request.Stringify());
var enabledArray = new byte[Constants.MUSIC_FLAG_BYTES];
var enabledArray = new byte[Constants.MUSIC_FLAG_ARRAY_SIZE];
var response = new InitialdatacheckResponse
{

View File

@ -19,7 +19,8 @@ public class SongPurchaseController : ControllerBase
var response = new SongPurchaseResponse
{
Result = 1
Result = 1,
TokenCount = (int)(10 - request.Price)
};
return Ok(response);

View File

@ -22,16 +22,15 @@ public class UserDataController : ControllerBase
var musicAttributeManager = MusicAttributeManager.Instance;
var releaseSongArray = new byte[Constants.MUSIC_FLAG_BYTES];
var releaseSongArray = new byte[Constants.MUSIC_FLAG_ARRAY_SIZE];
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 uraSongArray = new byte[Constants.MUSIC_FLAG_BYTES];
var uraSongArray = new byte[Constants.MUSIC_FLAG_ARRAY_SIZE];
test.SetAll(false);
foreach (var music in musicAttributeManager.MusicsWithUra)
{

View File

@ -6,6 +6,7 @@
}
},
"AllowedHosts": "*",
"index": 2,
"Kestrel": {
"Endpoints": {
"Server": {