mirror of
https://github.com/MikuLeaks/MikuSB.git
synced 2026-06-04 05:23:59 +00:00
61 lines
2.2 KiB
C#
61 lines
2.2 KiB
C#
using MikuSB.Proto;
|
|
using System.Text.Json.Nodes;
|
|
|
|
namespace MikuSB.GameServer.Server.CallGS.Handlers.House;
|
|
|
|
[HouseFunc("SetPlayerRingInfo")]
|
|
public class SetPlayerRingInfo : IHouseFuncHandler
|
|
{
|
|
public async Task Handle(Connection connection, string param)
|
|
{
|
|
var root = HouseJson.ParseObject(param);
|
|
if (root == null) return;
|
|
|
|
var ringId = HouseJson.NumField(root, "RingId");
|
|
var ringPos = HouseJson.NumField(root, "RingPos");
|
|
var ringOffset = HouseJson.NumField(root, "RingOffset");
|
|
var sync = new NtfSyncPlayer();
|
|
if (ringPos is >= 1 and <= 10 && ringOffset is >= 0 and <= 2)
|
|
{
|
|
var sid = HouseAttr.PlayerRingInfoSidBase + (uint)ringPos;
|
|
var prev = HouseAttr.Read(connection.Player!, sid);
|
|
var shift = ringOffset * 10;
|
|
var mask = ~(0x3ffu << shift);
|
|
var next = (prev & mask) | (((uint)ringId & 0x3ffu) << shift);
|
|
await HouseAttr.SetAsync(connection, sid, next, sync, deleteIfZero: true, sendImmediate: true);
|
|
}
|
|
|
|
await CallGSRouter.SendScript(connection, "House_Request", HouseRequestScript.Synthesize(root), sync);
|
|
}
|
|
}
|
|
|
|
[HouseFunc("ReadGirlLoveStory")]
|
|
public class ReadGirlLoveStory : IHouseFuncHandler
|
|
{
|
|
public async Task Handle(Connection connection, string param)
|
|
{
|
|
var root = HouseJson.ParseObject(param);
|
|
if (root == null) return;
|
|
|
|
var girlId = HouseJson.NumField(root, "GirlId");
|
|
var index = HouseJson.NumField(root, "Index");
|
|
var sync = new NtfSyncPlayer();
|
|
if (girlId > 0 && index is >= 0 and <= 30)
|
|
{
|
|
var sid = (uint)(girlId * 50 + 2);
|
|
var prev = HouseAttr.Read(connection.Player!, sid);
|
|
var next = prev | (1u << index);
|
|
await HouseAttr.SetAsync(connection, sid, next, sync, sendImmediate: true);
|
|
}
|
|
|
|
var rsp = new JsonObject
|
|
{
|
|
["GirlId"] = girlId,
|
|
["Index"] = index,
|
|
["tbReward"] = new JsonArray(),
|
|
["FuncName"] = "ReadGirlLoveStorySuccess"
|
|
};
|
|
await CallGSRouter.SendScript(connection, "House_Request", HouseRequestScript.Success(rsp), sync);
|
|
}
|
|
}
|