diff --git a/EpinelPS/GameData/GameData.cs b/EpinelPS/GameData/GameData.cs index c6d75fd..fe0496b 100644 --- a/EpinelPS/GameData/GameData.cs +++ b/EpinelPS/GameData/GameData.cs @@ -502,7 +502,7 @@ namespace EpinelPS.StaticInfo { this.towerTable.Add(obj.id, obj); } - + var triggerTable = await LoadZip("TriggerTable.json", progress); foreach (var obj in triggerTable.records) { @@ -579,6 +579,33 @@ namespace EpinelPS.StaticInfo } return -1; } + public string? GetMapIdFromDBFieldName(string field) + { + // Get game map ID from DB Field Name (ex: 1_Normal for chapter 1 normal) + string[] keys = field.Split("_"); + if (int.TryParse(keys[0], out int chapterNum)) + { + string difficulty = keys[1]; + + foreach (var item in chapterCampaignData) + { + if (difficulty == "Normal" && item.Value.chapter == chapterNum) + { + return item.Value.field_id; + } + else if (difficulty == "Hard" && item.Value.chapter == chapterNum) + { + return item.Value.hard_field_id; + } + } + + return null; + } + else + { + return keys[0]; // Already a Map ID + } + } public int GetNormalChapterNumberFromFieldName(string field) { foreach (var item in chapterCampaignData) diff --git a/EpinelPS/LobbyServer/Campaign/GetFieldObjectsCount.cs b/EpinelPS/LobbyServer/Campaign/GetFieldObjectsCount.cs new file mode 100644 index 0000000..272454b --- /dev/null +++ b/EpinelPS/LobbyServer/Campaign/GetFieldObjectsCount.cs @@ -0,0 +1,30 @@ +using EpinelPS.Database; +using EpinelPS.LobbyServer.Stage; +using EpinelPS.StaticInfo; +using EpinelPS.Utils; + +namespace EpinelPS.LobbyServer.Campaign +{ + [PacketPath("/campaign/getfieldobjectitemsnum")] + public class GetFieldObjectsCount : LobbyMsgHandler + { + protected override async Task HandleAsync() + { + var req = await ReadData(); + var user = GetUser(); + + var response = new ResGetCampaignFieldObjectItemsNum(); + + foreach (var map in user.FieldInfoNew) + { + response.FieldObjectItemsNum.Add(new NetCampaignFieldObjectItemsNum() + { + MapId = GameData.Instance.GetMapIdFromDBFieldName(map.Key), + Count = map.Value.CompletedObjects.Count + }); + } + + await WriteDataAsync(response); + } + } +} diff --git a/EpinelPS/LobbyServer/LobbyUser/MarkNoticeRead.cs b/EpinelPS/LobbyServer/LobbyUser/MarkNoticeRead.cs new file mode 100644 index 0000000..0b3c3e9 --- /dev/null +++ b/EpinelPS/LobbyServer/LobbyUser/MarkNoticeRead.cs @@ -0,0 +1,20 @@ +using EpinelPS.Utils; +using EpinelPS.StaticInfo; // For GameData access + +namespace EpinelPS.LobbyServer.LobbyUser +{ + [PacketPath("/record/notice")] + public class MarkNoticeRead : LobbyMsgHandler + { + protected override async Task HandleAsync() + { + var req = await ReadData(); + var r = new ResRecordNoticeLog(); + var user = GetUser(); + + // TODO + + await WriteDataAsync(r); + } + } +} diff --git a/ServerSelector.Desktop/ServerSelector.Desktop.csproj b/ServerSelector.Desktop/ServerSelector.Desktop.csproj index 3a3c610..5f667c2 100644 --- a/ServerSelector.Desktop/ServerSelector.Desktop.csproj +++ b/ServerSelector.Desktop/ServerSelector.Desktop.csproj @@ -14,7 +14,7 @@ - + diff --git a/ServerSelector/ServerSelector.csproj b/ServerSelector/ServerSelector.csproj index 28f897e..d81de3e 100644 --- a/ServerSelector/ServerSelector.csproj +++ b/ServerSelector/ServerSelector.csproj @@ -12,11 +12,11 @@ - - + + - - + +