diff --git a/nksrv/LobbyServer/Msgs/Campaign/GetCampaignField.cs b/nksrv/LobbyServer/Msgs/Campaign/GetCampaignField.cs index 39f8c29..6251678 100644 --- a/nksrv/LobbyServer/Msgs/Campaign/GetCampaignField.cs +++ b/nksrv/LobbyServer/Msgs/Campaign/GetCampaignField.cs @@ -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); } } diff --git a/nksrv/LobbyServer/Msgs/Stage/CheckCleared.cs b/nksrv/LobbyServer/Msgs/Stage/CheckCleared.cs index bbf1b81..0581959 100644 --- a/nksrv/LobbyServer/Msgs/Stage/CheckCleared.cs +++ b/nksrv/LobbyServer/Msgs/Stage/CheckCleared.cs @@ -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); } } diff --git a/nksrv/LobbyServer/Msgs/Stage/GetStage.cs b/nksrv/LobbyServer/Msgs/Stage/GetStage.cs index 09d83aa..a8a29a3 100644 --- a/nksrv/LobbyServer/Msgs/Stage/GetStage.cs +++ b/nksrv/LobbyServer/Msgs/Stage/GetStage.cs @@ -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; } } } diff --git a/nksrv/LobbyServer/Msgs/User/EnterLobbyServer.cs b/nksrv/LobbyServer/Msgs/User/EnterLobbyServer.cs index af3caac..0f0415c 100644 --- a/nksrv/LobbyServer/Msgs/User/EnterLobbyServer.cs +++ b/nksrv/LobbyServer/Msgs/User/EnterLobbyServer.cs @@ -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 }); diff --git a/nksrv/LobbyServer/Msgs/User/SetNickname.cs b/nksrv/LobbyServer/Msgs/User/SetNickname.cs new file mode 100644 index 0000000..e67f7e7 --- /dev/null +++ b/nksrv/LobbyServer/Msgs/User/SetNickname.cs @@ -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(); + var user = GetUser(); + user.Nickname = req.Nickname; + + var response = new ResSetNickname(); + response.Result = SetNicknameResult.NicknameOk; + response.Nickname = req.Nickname; + + WriteData(response); + } + } +} diff --git a/nksrv/LobbyServer/Msgs/User/Tutorial/SetTutorial.cs b/nksrv/LobbyServer/Msgs/User/Tutorial/SetTutorial.cs new file mode 100644 index 0000000..2a7963b --- /dev/null +++ b/nksrv/LobbyServer/Msgs/User/Tutorial/SetTutorial.cs @@ -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(); + + Console.WriteLine("TODO - clear tutorial with tid: " + req.LastClearedTid); + var response = new ResSetTutorial(); + WriteData(response); + } + } +} diff --git a/nksrv/Program.cs b/nksrv/Program.cs index c929669..62ffd45 100644 --- a/nksrv/Program.cs +++ b/nksrv/Program.cs @@ -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. diff --git a/nksrv/Protos/allmsgs.proto b/nksrv/Protos/allmsgs.proto index 8c46f5e..cbe3658 100644 --- a/nksrv/Protos/allmsgs.proto +++ b/nksrv/Protos/allmsgs.proto @@ -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; } \ No newline at end of file diff --git a/nksrv/Utils/JsonDb.cs b/nksrv/Utils/JsonDb.cs index 26506ef..c9e8a44 100644 --- a/nksrv/Utils/JsonDb.cs +++ b/nksrv/Utils/JsonDb.cs @@ -37,6 +37,7 @@ namespace nksrv.Utils public ulong ID; public long RegisterTime; public int LastStageCleared; + public string Nickname = "SomePLayer"; // Game data