some changes

- girl favorite
- immediately read new item
- save database on request login
This commit is contained in:
Naruse
2026-04-26 10:48:29 +08:00
parent 665da256d9
commit f4692a771d
11 changed files with 116 additions and 26 deletions

View File

@@ -0,0 +1,15 @@
namespace MikuSB.GameServer.Server.CallGS.Handlers.Daily;
// Success response shape expected by Lua:
// { nSeed = random_number }
[CallGSApi("Daily_EnterLevel")]
public class Daily_EnterLevel : ICallGSHandler
{
private static readonly Random Random = new();
public async Task Handle(Connection connection, string param, ushort seqNo)
{
var rsp = $"{{\"nSeed\":{Random.Next(1, 1000000000)}}}";
await CallGSRouter.SendScript(connection, "Daily_EnterLevel", rsp);
}
}

View File

@@ -0,0 +1,40 @@
using MikuSB.Enums.Item;
using MikuSB.Proto;
using System.Text.Json;
using System.Text.Json.Serialization;
namespace MikuSB.GameServer.Server.CallGS.Handlers.Girl;
[CallGSApi("GirlCard_SetRoleLikeFlag")]
public class GirlCard_SetRoleLikeFlag : ICallGSHandler
{
public async Task Handle(Connection connection, string param, ushort seqNo)
{
var player = connection.Player!;
var girlData = JsonSerializer.Deserialize<SetRoleLikeFlagParam>(param);
if (girlData == null) return;
var cardData = player.CharacterManager.GetCharacterByGUID(girlData.CardId);
if (cardData == null) return;
cardData.Flag = girlData.Flag == 1
? ItemFlagEnum.FLAG_ROLE_LIKE
: ItemFlagEnum.FLAG_READED;
var sync = new NtfSyncPlayer
{
Items = { cardData.ToProto() }
};
await CallGSRouter.SendScript(connection, "GirlCard_SetRoleLikeFlag", "{}", sync);
}
}
internal sealed class SetRoleLikeFlagParam
{
[JsonPropertyName("nFlag")]
public int Flag { get; set; }
[JsonPropertyName("nCardID")]
public uint CardId { get; set; }
}

View File

@@ -1,7 +1,7 @@
using MikuSB.Proto;
using System.Text.Json;
namespace MikuSB.GameServer.Server.CallGS.Handlers.Daily;
namespace MikuSB.GameServer.Server.CallGS.Handlers.Girl;
[CallGSApi("GirlSkin_Change")]
public class GirlSkin_Change : ICallGSHandler

View File

@@ -0,0 +1,30 @@
using System.Text.Json;
using System.Text.Json.Nodes;
using System.Text.Json.Serialization;
namespace MikuSB.GameServer.Server.CallGS.Handlers.Girl;
[CallGSApi("GirlSkin_ChangeSkinType")]
public class GirlSkin_ChangeSkinType : ICallGSHandler
{
public async Task Handle(Connection connection, string param, ushort seqNo)
{
var req = JsonSerializer.Deserialize<ChangeSkinTypeParam>(param);
var response = new JsonObject
{
["nType"] = req?.Type ?? 1,
["nSkinId"] = req?.SkinId
};
// TODO change type in proto Item ??
await CallGSRouter.SendScript(connection, "GirlSkin_ChangeSkinType", response.ToJsonString());
}
}
internal sealed class ChangeSkinTypeParam
{
[JsonPropertyName("nType")]
public int? Type { get; set; }
[JsonPropertyName("nSkinId")]
public uint? SkinId { get; set; }
}

View File

@@ -46,5 +46,6 @@ public class HandlerReqLogin : Handler
await connection.Player.OnEnterGame();
connection.Player.Connection = connection;
await connection.SendPacket(new PacketRspLogin(connection.Player!));
await connection.Player.OnHeartBeat();
}
}