add nickname support, try to fix campaign stage save

This commit is contained in:
Mikhail Thompson
2024-06-26 23:01:45 +03:00
parent d5d6844c97
commit 49d77bb5f7
9 changed files with 101 additions and 28 deletions

View File

@@ -1,4 +1,5 @@
using nksrv.Utils;
using nksrv.LobbyServer.Msgs.Stage;
using nksrv.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -18,7 +19,7 @@ namespace nksrv.LobbyServer.Msgs.Campaign
Console.WriteLine("Map ID: " + req.MapId);
var response = new ResGetCampaignFieldData();
response.Field = new NetFieldObjectData();
response.Field = GetStage.CreateFieldInfo(user, 0); // TODO dont hardcode chapter
// todo save this data
response.Team = new NetUserTeamData() { LastContentsTeamNumber = 1, Type = 1 };
@@ -36,7 +37,7 @@ namespace nksrv.LobbyServer.Msgs.Campaign
response.Json = resultingJson;
WriteData(response);
}
}

View File

@@ -17,21 +17,16 @@ namespace nksrv.LobbyServer.Msgs.Stage
var response = new ResCheckStageClear();
var user = GetUser();
foreach (var stageIds in req.StageIds)
foreach (var fields in user.FieldInfo)
{
foreach (var fields in user.FieldInfo)
foreach (var stages in fields.Value.CompletedStages)
{
foreach (var stages in fields.Value.CompletedStages)
{
if (stages.StageId == stageIds)
{
response.ClearedStageIds.Add(stages.StageId);
}
}
response.ClearedStageIds.Add(stages.StageId);
}
}
WriteData(response);
}
}

View File

@@ -4,6 +4,8 @@ using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using static Google.Rpc.Context.AttributeContext.Types;
using static System.Net.Mime.MediaTypeNames;
namespace nksrv.LobbyServer.Msgs.Stage
{
@@ -16,39 +18,42 @@ namespace nksrv.LobbyServer.Msgs.Stage
var user = GetUser();
var response = new ResGetStageData();
response.Field = new NetFieldObjectData();
response.Field = CreateFieldInfo(user, req.Chapter);
response.SquadData = "";
// locate chapter
response.Field.Stages.Clear();
WriteData(response);
}
public static NetFieldObjectData CreateFieldInfo(Utils.User user, int chapter)
{
var f = new NetFieldObjectData();
bool found = false;
retry:
foreach (var item in user.FieldInfo)
{
if (item.Key == req.Chapter)
if (item.Key == chapter)
{
found = true;
foreach (var stage in item.Value.CompletedStages)
{
response.Field.Stages.Add(stage);
f.Stages.Add(stage);
}
response.HasChapterBossEntered = item.Value.BossEntered;
break;
}
}
if (!found)
{
Console.WriteLine("chapter not found: " + req.Chapter);
Console.WriteLine("chapter not found: " + chapter);
user.FieldInfo.Add(req.Chapter, new FieldInfo());
goto retry;
user.FieldInfo.Add(chapter, new FieldInfo());
return CreateFieldInfo(user, chapter);
}
response.SquadData = "";
WriteData(response);
return f;
}
}
}

View File

@@ -24,7 +24,7 @@ namespace nksrv.LobbyServer.Msgs.User
response.User.Icon = 39900;
response.User.LobbyJukebox = 2;
response.ResetHour = 20;
response.Nickname = "USER11143417";
response.Nickname = user.Nickname;
response.OutpostBattleTime = new NetOutpostBattleTime() { MaxBattleTime = 864000000000 ,MaxOverBattleTime = 12096000000000 };
response.RepresentationTeam = new NetWholeUserTeamData() { TeamNumber = 1, Type = 2};
response.RepresentationTeam.Slots.Add(new NetWholeTeamSlot() { Slot = 1 });

View File

@@ -0,0 +1,26 @@
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/setnickname")]
public class SetNickname : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqSetNickname>();
var user = GetUser();
user.Nickname = req.Nickname;
var response = new ResSetNickname();
response.Result = SetNicknameResult.NicknameOk;
response.Nickname = req.Nickname;
WriteData(response);
}
}
}

View File

@@ -0,0 +1,22 @@
using nksrv.Utils;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace nksrv.LobbyServer.Msgs.User.Tutorial
{
[PacketPath("/tutorial/set")]
public class SetTutorial : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqSetTutorial>();
Console.WriteLine("TODO - clear tutorial with tid: " + req.LastClearedTid);
var response = new ResSetTutorial();
WriteData(response);
}
}
}

View File

@@ -53,6 +53,7 @@ namespace nksrv
.WithModule(new ActionModule("/prdenv/", HttpVerbs.Any, HandleAsset))
.WithModule(new ActionModule("/account/", HttpVerbs.Any, IntlHandler.Handle))
.WithModule(new ActionModule("/data/", HttpVerbs.Any, HandleDataEndpoint))
.WithModule(new ActionModule("/media/", HttpVerbs.Any, HandleAsset))
.WithModule(new ActionModule("/$batch", HttpVerbs.Any, HandleBatchRequests));
// Listen for state changes.

View File

@@ -994,4 +994,26 @@ message ResSaveCampaignField{
message ReqGetFieldTalkList {}
message ResGetFieldTalkList {
repeated string fieldTalkList = 2;
}
message ReqSetTutorial {
int32 lastClearedTid = 2;
}
message ResSetTutorial {
}
enum SetNicknameResult {
NicknameOk = 0;
Inappropriate = 1;
}
message ReqSetNickname {
string nickname = 2;
}
message ResSetNickname {
SetNicknameResult result = 1;
string nickname = 2;
repeated NetUserCurrencyData currencies = 3;
}

View File

@@ -37,6 +37,7 @@ namespace nksrv.Utils
public ulong ID;
public long RegisterTime;
public int LastStageCleared;
public string Nickname = "SomePLayer";
// Game data