mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-13 15:34:36 +01:00
begin working on sim room
This commit is contained in:
@@ -82,6 +82,12 @@ namespace EpinelPS.Database
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public long AvailableAt;
|
public long AvailableAt;
|
||||||
}
|
}
|
||||||
|
public class SimroomData
|
||||||
|
{
|
||||||
|
public int CurrentDifficulty;
|
||||||
|
public int CurrentChapter;
|
||||||
|
public bool Entered = false;
|
||||||
|
}
|
||||||
public class ResetableData
|
public class ResetableData
|
||||||
{
|
{
|
||||||
public int WipeoutCount = 0;
|
public int WipeoutCount = 0;
|
||||||
@@ -89,6 +95,7 @@ namespace EpinelPS.Database
|
|||||||
public int InterceptionTickets = 3;
|
public int InterceptionTickets = 3;
|
||||||
public List<int> CompletedDailyMissions = [];
|
public List<int> CompletedDailyMissions = [];
|
||||||
public int DailyMissionPoints;
|
public int DailyMissionPoints;
|
||||||
|
public SimroomData SimRoomData = new();
|
||||||
}
|
}
|
||||||
public class WeeklyResetableData
|
public class WeeklyResetableData
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -7,7 +7,7 @@ namespace EpinelPS.LobbyServer.Event
|
|||||||
{
|
{
|
||||||
protected override async Task HandleAsync()
|
protected override async Task HandleAsync()
|
||||||
{
|
{
|
||||||
var req = await ReadData<ResChallengeEventStageData>();
|
var req = await ReadData<ReqChallengeEventStageData>();
|
||||||
var user = GetUser();
|
var user = GetUser();
|
||||||
|
|
||||||
var response = new ResChallengeEventStageData();
|
var response = new ResChallengeEventStageData();
|
||||||
|
|||||||
26
EpinelPS/LobbyServer/Event/Minigame/CE002/GetCe002Data.cs
Normal file
26
EpinelPS/LobbyServer/Event/Minigame/CE002/GetCe002Data.cs
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
using EpinelPS.Utils;
|
||||||
|
|
||||||
|
namespace EpinelPS.LobbyServer.Event.Minigame.CE002
|
||||||
|
{
|
||||||
|
[PacketPath("/event/minigame/ce002/get")]
|
||||||
|
public class GetCe002Data : LobbyMsgHandler
|
||||||
|
{
|
||||||
|
protected override async Task HandleAsync()
|
||||||
|
{
|
||||||
|
var req = await ReadData<ReqGetMiniGameCe002Data>();
|
||||||
|
var user = GetUser();
|
||||||
|
|
||||||
|
var response = new ResGetMiniGameCe002Data
|
||||||
|
{
|
||||||
|
Data = new()
|
||||||
|
{
|
||||||
|
Ce002Id = req.Ce002Id
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
// TODO implement properly
|
||||||
|
|
||||||
|
await WriteDataAsync(response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -100,9 +100,10 @@ namespace EpinelPS.LobbyServer
|
|||||||
{
|
{
|
||||||
var encryptionToken = new PasetoBuilder().Use(ProtocolVersion.V4, Purpose.Local)
|
var encryptionToken = new PasetoBuilder().Use(ProtocolVersion.V4, Purpose.Local)
|
||||||
.WithKey(JsonDb.Instance.LauncherTokenKey, Encryption.SymmetricKey)
|
.WithKey(JsonDb.Instance.LauncherTokenKey, Encryption.SymmetricKey)
|
||||||
.Decode(token, new PasetoTokenValidationParameters() { ValidateLifetime = true });
|
.Decode(token, new PasetoTokenValidationParameters() { ValidateLifetime = true }) ?? throw new Exception("failed to decrypt");
|
||||||
|
var elem = (encryptionToken.Paseto.Payload["data"] as System.Text.Json.JsonElement?) ?? throw new Exception("expected data field in auth token");
|
||||||
|
|
||||||
var p = ((System.Text.Json.JsonElement)encryptionToken.Paseto.Payload["data"]).GetString() ?? throw new Exception("auth token cannot be null");
|
var p = elem.GetString() ?? throw new Exception("auth token cannot be null");
|
||||||
|
|
||||||
return JsonConvert.DeserializeObject<GameClientInfo>(p ?? throw new Exception("data cannot be null"));
|
return JsonConvert.DeserializeObject<GameClientInfo>(p ?? throw new Exception("data cannot be null"));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ namespace EpinelPS.LobbyServer.Simroom
|
|||||||
protected override async Task HandleAsync()
|
protected override async Task HandleAsync()
|
||||||
{
|
{
|
||||||
var req = await ReadData<ReqGetSimRoom>();
|
var req = await ReadData<ReqGetSimRoom>();
|
||||||
|
var user = GetUser();
|
||||||
|
|
||||||
var response = new ResGetSimRoom
|
var response = new ResGetSimRoom
|
||||||
{
|
{
|
||||||
@@ -55,6 +56,14 @@ namespace EpinelPS.LobbyServer.Simroom
|
|||||||
NextLegacyBuffResetDate = Timestamp.FromDateTimeOffset(DateTime.UtcNow.AddDays(7))
|
NextLegacyBuffResetDate = Timestamp.FromDateTimeOffset(DateTime.UtcNow.AddDays(7))
|
||||||
};
|
};
|
||||||
|
|
||||||
|
if (user.ResetableData.SimRoomData.Entered)
|
||||||
|
{
|
||||||
|
response.Status = SimRoomStatus.Progress;
|
||||||
|
|
||||||
|
response.CurrentDifficulty = user.ResetableData.SimRoomData.CurrentDifficulty;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
await WriteDataAsync(response);
|
await WriteDataAsync(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
26
EpinelPS/LobbyServer/Simroom/Quit.cs
Normal file
26
EpinelPS/LobbyServer/Simroom/Quit.cs
Normal file
@@ -0,0 +1,26 @@
|
|||||||
|
using EpinelPS.Utils;
|
||||||
|
using EpinelPS.Database;
|
||||||
|
|
||||||
|
namespace EpinelPS.LobbyServer.Simroom
|
||||||
|
{
|
||||||
|
[PacketPath("/simroom/quit")]
|
||||||
|
public class Quit : LobbyMsgHandler
|
||||||
|
{
|
||||||
|
protected override async Task HandleAsync()
|
||||||
|
{
|
||||||
|
var req = await ReadData<ReqQuitSimRoom>();
|
||||||
|
var user = GetUser();
|
||||||
|
|
||||||
|
ResQuitSimRoom response = new()
|
||||||
|
{
|
||||||
|
Result = SimRoomResult.SimRoomResultSuccess,
|
||||||
|
};
|
||||||
|
|
||||||
|
user.ResetableData.SimRoomData.Entered = false;
|
||||||
|
|
||||||
|
JsonDb.Save();
|
||||||
|
|
||||||
|
await WriteDataAsync(response);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using EpinelPS.Utils;
|
using EpinelPS.Utils;
|
||||||
|
using EpinelPS.Database;
|
||||||
|
|
||||||
namespace EpinelPS.LobbyServer.Simroom
|
namespace EpinelPS.LobbyServer.Simroom
|
||||||
{
|
{
|
||||||
@@ -8,12 +9,21 @@ namespace EpinelPS.LobbyServer.Simroom
|
|||||||
protected override async Task HandleAsync()
|
protected override async Task HandleAsync()
|
||||||
{
|
{
|
||||||
var req = await ReadData<ReqSelectSimRoomDifficulty>();
|
var req = await ReadData<ReqSelectSimRoomDifficulty>();
|
||||||
|
var user = GetUser();
|
||||||
|
|
||||||
ResSelectSimRoomDifficulty response = new ResSelectSimRoomDifficulty
|
ResSelectSimRoomDifficulty response = new()
|
||||||
{
|
{
|
||||||
Result = SimRoomResult.SimRoomResultSuccess,
|
Result = SimRoomResult.SimRoomResultSuccess,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
user.ResetableData.SimRoomData.Entered = true;
|
||||||
|
user.ResetableData.SimRoomData.CurrentDifficulty = req.Difficulty;
|
||||||
|
user.ResetableData.SimRoomData.CurrentChapter = req.StartingChapter;
|
||||||
|
|
||||||
|
// TODO: generate buffs
|
||||||
|
|
||||||
|
JsonDb.Save();
|
||||||
|
|
||||||
await WriteDataAsync(response);
|
await WriteDataAsync(response);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user