Implement side story + move jsondb class

This commit is contained in:
Mikhail
2024-07-25 15:50:51 -04:00
parent 8ea17003e6
commit e83dcdbfa8
43 changed files with 306 additions and 55 deletions

View File

@@ -0,0 +1,21 @@
using nksrv.Net;
using nksrv.Utils;
namespace nksrv.LobbyServer.Msgs.Sidestory
{
[PacketPath("/sidestory/cut/clearbattle")]
public class ClearBattle : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqClearSideStoryCutForBattle>();
var user = GetUser();
var response = new ResClearSideStoryCutForBattle();
// TODO
await WriteDataAsync(response);
}
}
}

View File

@@ -0,0 +1,26 @@
using nksrv.Net;
using nksrv.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace nksrv.LobbyServer.Msgs.Sidestory
{
[PacketPath("/sidestory/cut/clearscenario")]
public class ClearSideStoryCut : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqClearSideStoryCutForScenario>();
var user = GetUser();
var response = new ResClearSideStoryCutForScenario();
// TODO
await WriteDataAsync(response);
}
}
}

View File

@@ -0,0 +1,45 @@
using nksrv.Database;
using nksrv.LobbyServer.Msgs.Stage;
using nksrv.Net;
using nksrv.StaticInfo;
using nksrv.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace nksrv.LobbyServer.Msgs.Sidestory
{
[PacketPath("/sidestory/stage/clear")]
public class ClearSideStoryStage : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqClearSideStoryStage>();
var user = GetUser();
var response = new ResClearSideStoryStage();
if (!user.CompletedSideStoryStages.Contains(req.SideStoryStageId))
{
user.CompletedSideStoryStages.Add(req.SideStoryStageId);
if (StaticDataParser.Instance.SidestoryRewardTable.ContainsKey(req.SideStoryStageId))
{
var rewardData = StaticDataParser.Instance.GetRewardTableEntry(StaticDataParser.Instance.SidestoryRewardTable[req.SideStoryStageId]);
if (rewardData != null)
response.Reward = ClearStage.RegisterRewardsForUser(user, rewardData);
else
throw new Exception("failed to find reward");
}
JsonDb.Save();
}
await WriteDataAsync(response);
}
}
}

View File

@@ -0,0 +1,19 @@
using nksrv.Net;
using nksrv.Utils;
namespace nksrv.LobbyServer.Msgs.Sidestory
{
[PacketPath("/sidestory/cut/enterbattle")]
public class EnterBattle : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqEnterSideStoryCutForBattle>();
var user = GetUser();
var response = new ResEnterSideStoryCutForBattle();
await WriteDataAsync(response);
}
}
}

View File

@@ -0,0 +1,26 @@
using nksrv.Net;
using nksrv.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace nksrv.LobbyServer.Msgs.Sidestory
{
[PacketPath("/sidestory/stage/enter")]
public class EnterSidestoryStage : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqEnterSideStoryStage>();
var user = GetUser();
var response = new ResEnterSideStoryStage();
// TODO
await WriteDataAsync(response);
}
}
}

View File

@@ -1,4 +1,6 @@
using nksrv.Utils;
using Google.Protobuf.WellKnownTypes;
using nksrv.Net;
using nksrv.Utils;
namespace nksrv.LobbyServer.Msgs.Sidestory
{
@@ -12,7 +14,11 @@ namespace nksrv.LobbyServer.Msgs.Sidestory
var response = new ResListSideStory();
// TODO
foreach (var item in user.CompletedSideStoryStages)
{
// TODO cleared at
response.SideStoryStageDataList.Add(new NetSideStoryStageData() { SideStoryStageId = item, ClearedAt = Timestamp.FromDateTime(DateTime.UtcNow) });
}
await WriteDataAsync(response);
}