mirror of
https://github.com/MikuLeaks/MikuSB.git
synced 2026-06-04 09:03:58 +00:00
Added several CallGS handlers.
This commit is contained in:
@@ -1,13 +1,14 @@
|
||||
namespace MikuSB.GameServer.Server.CallGS.Handlers.Achievement;
|
||||
|
||||
// Client requests a reward for a completed achievement.
|
||||
// param: {nId}
|
||||
// Response: {}
|
||||
[CallGSApi("Achievement_GetReward")]
|
||||
public class Achievement_GetReward : ICallGSHandler
|
||||
{
|
||||
public async Task Handle(Connection connection, string param, ushort seqNo)
|
||||
{
|
||||
// param: json.encode({nId = nId})
|
||||
// TODO: implement reward logic
|
||||
|
||||
// TODO: validate achievement completion and grant reward items
|
||||
await CallGSRouter.SendScript(connection, "Achievement_GetReward", "{}", seqNo);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace MikuSB.GameServer.Server.CallGS.Handlers.Achievement;
|
||||
|
||||
// Client notifies the server that an achievement trigger condition was met. No response required.
|
||||
// param: {nType}
|
||||
[CallGSApi("Achievement_OnAddSomeOne")]
|
||||
public class Achievement_OnAddSomeOne : ICallGSHandler
|
||||
{
|
||||
public Task Handle(Connection connection, string param, ushort seqNo)
|
||||
{
|
||||
// TODO: process achievement progress for the given nType
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,14 @@
|
||||
namespace MikuSB.GameServer.Server.CallGS.Handlers.Activity;
|
||||
|
||||
// Updates the lobby activity face (presentation effect).
|
||||
// param: {nType(1=equip, 2=unequip, 3=set flag), nId, bFlag}
|
||||
// Response: {nFaceId, nId, nType} — nFaceId=0 means no next face
|
||||
[CallGSApi("ActivityFace_Update")]
|
||||
public class ActivityFace_Update : ICallGSHandler
|
||||
{
|
||||
public async Task Handle(Connection connection, string param, ushort seqNo)
|
||||
{
|
||||
// TODO: process face equip/unequip state and return the next face to display
|
||||
await CallGSRouter.SendScript(connection, "ActivityFace_Update", "{\"nFaceId\":0,\"nId\":0,\"nType\":0}", seqNo);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace MikuSB.GameServer.Server.CallGS.Handlers.Activity;
|
||||
|
||||
// Client requests an activity state refresh. No s2c callback registered on client side.
|
||||
// param: {nId}
|
||||
[CallGSApi("Activity_Refresh")]
|
||||
public class Activity_Refresh : ICallGSHandler
|
||||
{
|
||||
public Task Handle(Connection connection, string param, ushort seqNo)
|
||||
{
|
||||
// TODO: refresh activity state for the given nId
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace MikuSB.GameServer.Server.CallGS.Handlers.Chapter;
|
||||
|
||||
// Client syncs completed guide level data to the server. No response required.
|
||||
// param: {tbData = [{nLevelID, passTime}, ...]}
|
||||
[CallGSApi("Chapter_SyncGuideLevelPassData")]
|
||||
public class Chapter_SyncGuideLevelPassData : ICallGSHandler
|
||||
{
|
||||
public Task Handle(Connection connection, string param, ushort seqNo)
|
||||
{
|
||||
// TODO: persist guide level pass data to player save
|
||||
return Task.CompletedTask;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace MikuSB.GameServer.Server.CallGS.Handlers.Daily;
|
||||
|
||||
// Returns daily activity info for each activity type.
|
||||
// Response: {activityId: tbActivity}
|
||||
[CallGSApi("Daily_GetActivityInfo")]
|
||||
public class Daily_GetActivityInfo : ICallGSHandler
|
||||
{
|
||||
public async Task Handle(Connection connection, string param, ushort seqNo)
|
||||
{
|
||||
// TODO: return actual daily activity data
|
||||
await CallGSRouter.SendScript(connection, "Daily_GetActivityInfo", "{}", seqNo);
|
||||
}
|
||||
}
|
||||
10
GameServer/Server/CallGS/Handlers/Misc/LanguageChange.cs
Normal file
10
GameServer/Server/CallGS/Handlers/Misc/LanguageChange.cs
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace MikuSB.GameServer.Server.CallGS.Handlers.Misc;
|
||||
|
||||
// Client notifies the server of its language setting. No response required.
|
||||
// param: {nType, sLan, sEx}
|
||||
[CallGSApi("LanguageChange")]
|
||||
public class LanguageChange : ICallGSHandler
|
||||
{
|
||||
public Task Handle(Connection connection, string param, ushort seqNo)
|
||||
=> Task.CompletedTask;
|
||||
}
|
||||
16
GameServer/Server/CallGS/Handlers/Misc/ZoneTime_ReqTime.cs
Normal file
16
GameServer/Server/CallGS/Handlers/Misc/ZoneTime_ReqTime.cs
Normal file
@@ -0,0 +1,16 @@
|
||||
using MikuSB.Util.Extensions;
|
||||
|
||||
namespace MikuSB.GameServer.Server.CallGS.Handlers.Misc;
|
||||
|
||||
// Client requests server time to calculate timezone offset.
|
||||
// nTime1/nTime2 are DST transition reference timestamps; returning the same value means no offset.
|
||||
[CallGSApi("ZoneTime_ReqTime")]
|
||||
public class ZoneTime_ReqTime : ICallGSHandler
|
||||
{
|
||||
public async Task Handle(Connection connection, string param, ushort seqNo)
|
||||
{
|
||||
var now = Extensions.GetUnixSec();
|
||||
var arg = $"{{\"nTime1\":{now},\"nTime2\":{now}}}";
|
||||
await CallGSRouter.SendScript(connection, "ZoneTime_ChangeTime", arg, seqNo);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace MikuSB.GameServer.Server.CallGS.Handlers.Preview;
|
||||
|
||||
// Returns the green (unlocked) level for each skin manifestation.
|
||||
// Response: [{skinId, greenLevel}, ...]
|
||||
[CallGSApi("ReqEntranceGreenLevel")]
|
||||
public class ReqEntranceGreenLevel : ICallGSHandler
|
||||
{
|
||||
public async Task Handle(Connection connection, string param, ushort seqNo)
|
||||
{
|
||||
// TODO: return actual skin green levels from player data
|
||||
await CallGSRouter.SendScript(connection, "ReqEntranceGreenLevel", "[]", seqNo);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,13 @@
|
||||
namespace MikuSB.GameServer.Server.CallGS.Handlers.Shop;
|
||||
|
||||
// Returns the open/close timestamps for each shop tab.
|
||||
// Response: {shopId: {nBegin, nEnd}}
|
||||
[CallGSApi("ShopLogic_GetOpenTime")]
|
||||
public class ShopLogic_GetOpenTime : ICallGSHandler
|
||||
{
|
||||
public async Task Handle(Connection connection, string param, ushort seqNo)
|
||||
{
|
||||
// TODO: return actual shop open times from config
|
||||
await CallGSRouter.SendScript(connection, "ShopLogic_GetOpenTime", "{}", seqNo);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user