mirror of
https://github.com/MikuLeaks/MikuSB.git
synced 2026-06-05 20:13:59 +00:00
more House_Func
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
using MikuSB.Proto;
|
||||
using System.Text.Json.Nodes;
|
||||
|
||||
namespace MikuSB.GameServer.Server.CallGS.Handlers.House;
|
||||
|
||||
// ArcadeGameEnterMainUI
|
||||
// Returns all girl IDs (1-25) as unlocked, and syncs TeachMode + EndlessMode attrs.
|
||||
[HouseFunc("ArcadeGameEnterMainUI")]
|
||||
public class ArcadeGameEnterMainUI : IHouseFuncHandler
|
||||
{
|
||||
private const uint ArcadeGid = 101;
|
||||
private const uint EndlessModeStateSid = 18000 + 5;
|
||||
private const uint TeachModeConditionSid = 18000 + 36 + 8;
|
||||
|
||||
public async Task Handle(Connection connection, string param)
|
||||
{
|
||||
var girlList = new JsonArray();
|
||||
for (int i = 1; i <= 25; i++) girlList.Add(i);
|
||||
|
||||
var rsp = new JsonObject
|
||||
{
|
||||
["FuncName"] = "ArcadeGameEnterMainUI",
|
||||
["tbUnlockGirlList"] = girlList
|
||||
};
|
||||
|
||||
var player = connection.Player!;
|
||||
var sync = new NtfSyncPlayer();
|
||||
sync.Custom[player.ToPackedAttrKey(ArcadeGid, TeachModeConditionSid)] = 1;
|
||||
sync.Custom[player.ToShiftedAttrKey(ArcadeGid, TeachModeConditionSid)] = 1;
|
||||
const uint endlessAllUnlocked = 0x3FFFFFE;
|
||||
sync.Custom[player.ToPackedAttrKey(ArcadeGid, EndlessModeStateSid)] = endlessAllUnlocked;
|
||||
sync.Custom[player.ToShiftedAttrKey(ArcadeGid, EndlessModeStateSid)] = endlessAllUnlocked;
|
||||
|
||||
await CallGSRouter.SendScript(connection, "House_Request", rsp.ToJsonString(), sync);
|
||||
}
|
||||
}
|
||||
|
||||
// ArcadeGameEnter — returns a random seed for level generation.
|
||||
[HouseFunc("ArcadeGameEnter")]
|
||||
public class ArcadeGameEnter : IHouseFuncHandler
|
||||
{
|
||||
private static readonly Random Random = new();
|
||||
|
||||
public async Task Handle(Connection connection, string param)
|
||||
{
|
||||
var rsp = new JsonObject
|
||||
{
|
||||
["FuncName"] = "ArcadeGameEnter",
|
||||
["nSeed"] = Random.Next(1, 1_000_000_000)
|
||||
};
|
||||
await CallGSRouter.SendScript(connection, "House_Request", rsp.ToJsonString());
|
||||
}
|
||||
}
|
||||
|
||||
// ArcadeGameSettlement — acknowledges round end; nAddExp=0 on private server.
|
||||
[HouseFunc("ArcadeGameSettlement")]
|
||||
public class ArcadeGameSettlement : IHouseFuncHandler
|
||||
{
|
||||
public async Task Handle(Connection connection, string param)
|
||||
{
|
||||
var rsp = new JsonObject { ["FuncName"] = "ArcadeGameSettlement", ["nAddExp"] = 0 };
|
||||
await CallGSRouter.SendScript(connection, "House_Request", rsp.ToJsonString());
|
||||
}
|
||||
}
|
||||
|
||||
// ArcadeGameLogSettlement — acknowledges log upload (no client data required).
|
||||
[HouseFunc("ArcadeGameLogSettlement")]
|
||||
public class ArcadeGameLogSettlement : IHouseFuncHandler
|
||||
{
|
||||
public async Task Handle(Connection connection, string param)
|
||||
{
|
||||
var rsp = new JsonObject { ["FuncName"] = "ArcadeGameLogSettlement" };
|
||||
await CallGSRouter.SendScript(connection, "House_Request", rsp.ToJsonString());
|
||||
}
|
||||
}
|
||||
|
||||
// ArcadeGameGetLevelReward — UI refresh only on client side.
|
||||
[HouseFunc("ArcadeGameGetLevelReward")]
|
||||
public class ArcadeGameGetLevelReward : IHouseFuncHandler
|
||||
{
|
||||
public async Task Handle(Connection connection, string param)
|
||||
{
|
||||
var rsp = new JsonObject { ["FuncName"] = "ArcadeGameGetLevelReward" };
|
||||
await CallGSRouter.SendScript(connection, "House_Request", rsp.ToJsonString());
|
||||
}
|
||||
}
|
||||
|
||||
// ArcadeGameGetAchReward — UI refresh only on client side.
|
||||
[HouseFunc("ArcadeGameGetAchReward")]
|
||||
public class ArcadeGameGetAchReward : IHouseFuncHandler
|
||||
{
|
||||
public async Task Handle(Connection connection, string param)
|
||||
{
|
||||
var rsp = new JsonObject { ["FuncName"] = "ArcadeGameGetAchReward" };
|
||||
await CallGSRouter.SendScript(connection, "House_Request", rsp.ToJsonString());
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user