campaign UI working

This commit is contained in:
Mikhail Thompson
2024-06-26 22:02:09 +03:00
parent ce0b5bf040
commit 7c6e57bd63
15 changed files with 306 additions and 9 deletions

View File

@@ -12,9 +12,29 @@ namespace nksrv.LobbyServer.Msgs.Campaign
{
protected override async Task HandleAsync()
{
var req = ReadData<ReqGetCampaignFieldData>();
var req = await ReadData<ReqGetCampaignFieldData>();
var user = GetUser();
Console.WriteLine("Map ID: " + req.MapId);
var response = new ResGetCampaignFieldData();
response.Field = new NetFieldObjectData();
// todo save this data
response.Team = new NetUserTeamData() { LastContentsTeamNumber = 1, Type = 1 };
string resultingJson;
if (!user.MapJson.ContainsKey(req.MapId))
{
resultingJson = "{\"_mapID\":\"" + req.MapId + "\",\"_triggerDataList\":[],\"_interactionActionTriggerDataList\":[],\"_interactionObjectDataList\":[],\"_questObjectDataList\":[],\"_togglePortalDataList\":[],\"_squadDataList\":[{\"UniqueKey\":\"a365d3ab-2961-4eb8-940b-f68629957b48\",\"IsValid\":true,\"TeamType\":1,\"Number\":1,\"Position\":{\"x\":-14.899999618530274,\"y\":0.08333173394203186,\"z\":-3.2200000286102297}}]}";
user.MapJson.Add(req.MapId, resultingJson);
}
else
{
resultingJson = user.MapJson[req.MapId];
}
WriteData(response);
}
}

View File

@@ -0,0 +1,33 @@
using nksrv.Utils;
namespace nksrv.LobbyServer.Msgs.Campaign
{
[PacketPath("/campaign/savefield")]
public class SaveField : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqSaveCampaignField>();
var user = GetUser();
Console.WriteLine("Map ID: " + req.MapId);
var response = new ResGetFieldTalkList();
Console.WriteLine($"todo save {req.MapId} with {req.Json}");
if (!user.MapJson.ContainsKey(req.MapId))
{
user.MapJson.Add(req.MapId, req.Json);
}
else
{
user.MapJson[req.MapId] = req.Json;
}
WriteData(response);
}
}
}

View File

@@ -0,0 +1,39 @@
using nksrv.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace nksrv.LobbyServer.Msgs.Stage
{
[PacketPath("/stage/checkclear")]
public class CheckCleared : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqCheckStageClear>();
var response = new ResCheckStageClear();
var user = GetUser();
foreach (var stageIds in req.StageIds)
{
foreach (var fields in user.FieldInfo)
{
foreach (var stages in fields.Value.CompletedStages)
{
if (stages.StageId == stageIds)
{
response.ClearedStageIds.Add(stages.StageId);
}
}
}
}
WriteData(response);
}
}
}

View File

@@ -15,13 +15,22 @@ namespace nksrv.LobbyServer.Msgs.Stage
var req = await ReadData<ReqClearStage>();
var response = new ResClearStage();
var user = GetUser();
// TOOD: save to user info
Console.WriteLine($"Stage " + req.StageId + " completed, result is " + req.BattleResult);
if (req.BattleResult == 1)
{
GetUser().LastStageCleared = req.StageId;
user.LastStageCleared = req.StageId;
if (user.FieldInfo.Count == 0)
{
user.FieldInfo.Add(0, new FieldInfo() { });
}
// TODO: figure out how stageid corresponds to chapter
user.FieldInfo[0].CompletedStages.Add(new NetFieldStageData() { StageId = req.StageId });
JsonDb.Save();
}

View File

@@ -12,9 +12,41 @@ namespace nksrv.LobbyServer.Msgs.Stage
{
protected override async Task HandleAsync()
{
var req = ReadData<ReqGetStageData>();
var req = await ReadData<ReqGetStageData>();
var user = GetUser();
var response = new ResGetStageData();
response.Field = new NetFieldObjectData();
// locate chapter
bool found = false;
retry:
foreach (var item in user.FieldInfo)
{
if (item.Key == req.Chapter)
{
found = true;
foreach (var stage in item.Value.CompletedStages)
{
response.Field.Stages.Add(stage);
}
response.HasChapterBossEntered = item.Value.BossEntered;
break;
}
}
if (!found)
{
Console.WriteLine("chapter not found: " + req.Chapter);
user.FieldInfo.Add(req.Chapter, new FieldInfo());
goto retry;
}
response.SquadData = "";
WriteData(response);
}

View File

@@ -8,10 +8,10 @@ namespace nksrv.LobbyServer.Msgs.System
protected override async Task HandleAsync()
{
var req = await ReadData<CheckVersionRequest>();
var r = new CheckVersionResponse();
r.Availability = 0; // None = 0, Available = 1, Mandatory = 2
var response = new CheckVersionResponse();
response.Availability = 0; // None = 0, Available = 1, Mandatory = 2
WriteData(r);
WriteData(response);
}
}
}

View File

@@ -18,7 +18,7 @@ namespace nksrv.LobbyServer.Msgs.Team
// TODO: assume that team data did not change
var resp = new ResGetTeamData();
//resp.TypeTeams
WriteData(req);
WriteData(resp);
}
}
}

View File

@@ -0,0 +1,24 @@
using nksrv.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace nksrv.LobbyServer.Msgs.User
{
[PacketPath("/user/getfieldtalklist")]
public class GetFieldTalkList : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetFieldTalkList>();
var user = GetUser();
var response = new ResGetFieldTalkList();
// TODO
WriteData(response);
}
}
}

View File

@@ -0,0 +1,30 @@
using nksrv.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace nksrv.LobbyServer.Msgs.User
{
[PacketPath("/User/GetScenarioList")]
public class GetScenarioList : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetScenarioList>();
var user = GetUser();
// todo what are bookmark scenarios?
// this returns a list of scenarios that user has completed
var response = new ResGetScenarioList();
foreach (var item in user.CompletedScenarios)
{
response.ScenarioList.Add(item);
}
WriteData(response);
}
}
}