mirror of
https://github.com/EpinelPS/EpinelPS.git
synced 2025-12-12 15:04:36 +01:00
campaign UI working
This commit is contained in:
30
ProtobufViewUtil/Program.cs
Normal file
30
ProtobufViewUtil/Program.cs
Normal file
@@ -0,0 +1,30 @@
|
||||
using Google.Protobuf;
|
||||
using nksrv;
|
||||
using System.Diagnostics;
|
||||
|
||||
namespace ProtobufViewUtil
|
||||
{
|
||||
internal class Program
|
||||
{
|
||||
static void Main(string[] args)
|
||||
{
|
||||
Console.WriteLine("Hello, World!");
|
||||
|
||||
ResGetScenarioList s = new ResGetScenarioList();
|
||||
var inn = File.ReadAllBytes(@"C:\NIKKE\NIKKE\game\ses1\output-49");
|
||||
s.MergeFrom(inn);
|
||||
Console.WriteLine(s.ToString());
|
||||
var outt = s.ToByteArray();
|
||||
|
||||
if (inn.SequenceEqual(outt))
|
||||
{
|
||||
Console.WriteLine("Check OK");
|
||||
}
|
||||
else
|
||||
{
|
||||
Console.WriteLine("Check FAIL");
|
||||
}
|
||||
Debugger.Break();
|
||||
}
|
||||
}
|
||||
}
|
||||
22
ProtobufViewUtil/ProtobufViewUtil.csproj
Normal file
22
ProtobufViewUtil/ProtobufViewUtil.csproj
Normal file
@@ -0,0 +1,22 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net8.0</TargetFramework>
|
||||
<ImplicitUsings>enable</ImplicitUsings>
|
||||
<Nullable>enable</Nullable>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="Grpc.Core" Version="2.46.6" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\nksrv\nksrv.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<Protobuf Include="..\nksrv/Protos/allmsgs.proto" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
1
ProtobufViewUtil/doimport.proto
Normal file
1
ProtobufViewUtil/doimport.proto
Normal file
@@ -0,0 +1 @@
|
||||
|
||||
14
nksrv.sln
14
nksrv.sln
@@ -7,6 +7,8 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "nksrv", "nksrv\nksrv.csproj
|
||||
EndProject
|
||||
Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "DataFixupUtil", "DataFixupUtil\DataFixupUtil.csproj", "{13124DFB-448B-4F4F-A479-537EE067D836}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ProtobufViewUtil", "ProtobufViewUtil\ProtobufViewUtil.csproj", "{FDEDD0D6-9C02-4E58-8110-04E8D5639881}"
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
@@ -41,6 +43,18 @@ Global
|
||||
{13124DFB-448B-4F4F-A479-537EE067D836}.Release|x64.Build.0 = Release|Any CPU
|
||||
{13124DFB-448B-4F4F-A479-537EE067D836}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{13124DFB-448B-4F4F-A479-537EE067D836}.Release|x86.Build.0 = Release|Any CPU
|
||||
{FDEDD0D6-9C02-4E58-8110-04E8D5639881}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{FDEDD0D6-9C02-4E58-8110-04E8D5639881}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{FDEDD0D6-9C02-4E58-8110-04E8D5639881}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{FDEDD0D6-9C02-4E58-8110-04E8D5639881}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{FDEDD0D6-9C02-4E58-8110-04E8D5639881}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{FDEDD0D6-9C02-4E58-8110-04E8D5639881}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{FDEDD0D6-9C02-4E58-8110-04E8D5639881}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{FDEDD0D6-9C02-4E58-8110-04E8D5639881}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{FDEDD0D6-9C02-4E58-8110-04E8D5639881}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{FDEDD0D6-9C02-4E58-8110-04E8D5639881}.Release|x64.Build.0 = Release|Any CPU
|
||||
{FDEDD0D6-9C02-4E58-8110-04E8D5639881}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{FDEDD0D6-9C02-4E58-8110-04E8D5639881}.Release|x86.Build.0 = Release|Any CPU
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
33
nksrv/LobbyServer/Msgs/Campaign/SaveField.cs
Normal file
33
nksrv/LobbyServer/Msgs/Campaign/SaveField.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
39
nksrv/LobbyServer/Msgs/Stage/CheckCleared.cs
Normal file
39
nksrv/LobbyServer/Msgs/Stage/CheckCleared.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
24
nksrv/LobbyServer/Msgs/User/GetFieldTalkList.cs
Normal file
24
nksrv/LobbyServer/Msgs/User/GetFieldTalkList.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
30
nksrv/LobbyServer/Msgs/User/GetScenarioList.cs
Normal file
30
nksrv/LobbyServer/Msgs/User/GetScenarioList.cs
Normal 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -753,7 +753,7 @@ message ReqGetCampaignFieldData {
|
||||
message ResGetCampaignFieldData {
|
||||
NetFieldObjectData field = 2;
|
||||
NetUserTeamData team = 3;
|
||||
NetCampaignTeamPosition teamPositions = 4;
|
||||
repeated NetCampaignTeamPosition teamPositions = 4;
|
||||
string json = 5;
|
||||
}
|
||||
|
||||
@@ -965,4 +965,33 @@ message NetSubQuestData {
|
||||
|
||||
message ResGetSubQuestList {
|
||||
repeated NetSubQuestData subquestList = 2;
|
||||
}
|
||||
|
||||
message ReqCheckStageClear {
|
||||
repeated int32 stageIds = 1;
|
||||
}
|
||||
message ResCheckStageClear {
|
||||
repeated int32 clearedStageIds = 2;
|
||||
}
|
||||
|
||||
message ReqGetScenarioList {
|
||||
|
||||
}
|
||||
message ResGetScenarioList {
|
||||
repeated string scenarioList = 2;
|
||||
repeated string bookmarkScenarioList = 3;
|
||||
}
|
||||
|
||||
message ReqSaveCampaignField{
|
||||
string mapId = 2;
|
||||
string json = 3;
|
||||
}
|
||||
|
||||
message ResSaveCampaignField{
|
||||
|
||||
}
|
||||
|
||||
message ReqGetFieldTalkList {}
|
||||
message ResGetFieldTalkList {
|
||||
repeated string fieldTalkList = 2;
|
||||
}
|
||||
@@ -16,6 +16,18 @@ namespace nksrv.Utils
|
||||
public long ExpirationTime;
|
||||
public ulong UserID;
|
||||
}
|
||||
public class NetworkPosition
|
||||
{
|
||||
public float x;
|
||||
public float y;
|
||||
public float z;
|
||||
}
|
||||
public class FieldInfo
|
||||
{
|
||||
public List<NetFieldStageData> CompletedStages = new();
|
||||
public bool BossEntered = false;
|
||||
public NetworkPosition teamPosition = new();
|
||||
}
|
||||
public class User
|
||||
{
|
||||
// User info
|
||||
@@ -28,7 +40,9 @@ namespace nksrv.Utils
|
||||
|
||||
|
||||
// Game data
|
||||
public List<string> CompletedScenarios = new List<string>();
|
||||
public List<string> CompletedScenarios = new();
|
||||
public Dictionary<int, FieldInfo> FieldInfo = new();
|
||||
public Dictionary<string, string> MapJson = new();
|
||||
}
|
||||
public class CoreInfo
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user