fix namespaces, compiler warnings and messages

This commit is contained in:
Mikhail Tyukin
2025-07-21 09:08:13 -04:00
parent 0af41389ab
commit 84766e1c34
289 changed files with 1669 additions and 1665 deletions

View File

@@ -7,10 +7,10 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqAcquireUserTitle>();
var user = GetUser();
ReqAcquireUserTitle req = await ReadData<ReqAcquireUserTitle>();
Database.User user = GetUser();
var response = new ResAcquireUserTitle();
ResAcquireUserTitle response = new();
// TODO

View File

@@ -8,9 +8,9 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqBuyLobbyDecoBackground>();
var response = new ResBuyLobbyDecoBackground();
var user = GetUser();
ReqBuyLobbyDecoBackground req = await ReadData<ReqBuyLobbyDecoBackground>();
ResBuyLobbyDecoBackground response = new();
User user = GetUser();
user.LobbyDecoBackgroundList.Add(req.LobbyDecoBackgroundId);

View File

@@ -1,4 +1,5 @@
using EpinelPS.Database;
using EpinelPS.Data;
using EpinelPS.Database;
using EpinelPS.Utils;
namespace EpinelPS.LobbyServer.LobbyUser
@@ -8,37 +9,39 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqEnterLobbyServer>();
var user = GetUser();
ReqEnterLobbyServer req = await ReadData<ReqEnterLobbyServer>();
User user = GetUser();
var battleTime = DateTime.UtcNow - user.BattleTime;
var battleTimeMs = (long)(battleTime.TotalNanoseconds / 100);
TimeSpan battleTime = DateTime.UtcNow - user.BattleTime;
long battleTimeMs = (long)(battleTime.TotalNanoseconds / 100);
// NOTE: Keep this in sync with GetUser code
var response = new ResEnterLobbyServer();
response.User = LobbyHandler.CreateNetUserDataFromUser(user);
response.ResetHour = 20;
response.Nickname = user.Nickname;
response.SynchroLv = 1;
response.OutpostBattleLevel = user.OutpostBattleLevel;
response.OutpostBattleTime = new NetOutpostBattleTime() { MaxBattleTime = 864000000000, MaxOverBattleTime = 12096000000000, BattleTime = battleTimeMs };
ResEnterLobbyServer response = new()
{
User = LobbyHandler.CreateNetUserDataFromUser(user),
ResetHour = 20,
Nickname = user.Nickname,
SynchroLv = 1,
OutpostBattleLevel = user.OutpostBattleLevel,
OutpostBattleTime = new NetOutpostBattleTime() { MaxBattleTime = 864000000000, MaxOverBattleTime = 12096000000000, BattleTime = battleTimeMs },
response.Jukeboxv2 = new NetUserJukeboxDataV2() { CommandBgm = new NetJukeboxBgm() { JukeboxTableId = user.CommanderMusic.TableId, Type = NetJukeboxBgmType.JukeboxTableId, Location = NetJukeboxLocation.CommanderRoom } };
Jukeboxv2 = new NetUserJukeboxDataV2() { CommandBgm = new NetJukeboxBgm() { JukeboxTableId = user.CommanderMusic.TableId, Type = NetJukeboxBgmType.JukeboxTableId, Location = NetJukeboxLocation.CommanderRoom } }
};
foreach (var item in user.Currency)
foreach (KeyValuePair<CurrencyType, long> item in user.Currency)
{
response.Currency.Add(new NetUserCurrencyData() { Type = (int)item.Key, Value = item.Value });
}
foreach (var item in user.Characters)
foreach (Database.Character item in user.Characters)
{
response.Character.Add(new NetUserCharacterData() { Default = new() { Csn = item.Csn, Skill1Lv = item.Skill1Lvl, Skill2Lv = item.Skill2Lvl, CostumeId = item.CostumeId, Lv = user.GetCharacterLevel(item.Csn, item.Level), Grade = item.Grade, Tid = item.Tid, UltiSkillLv = item.UltimateLevel}, IsSynchro = user.GetSynchro(item.Csn) });
}
foreach (var item in NetUtils.GetUserItems(user))
foreach (NetUserItemData item in NetUtils.GetUserItems(user))
{
response.Items.Add(item);
}
@@ -46,15 +49,15 @@ namespace EpinelPS.LobbyServer.LobbyUser
// Add squad data if there are characters
if (user.Characters.Count > 0)
{
var highestLevelCharacters = user.Characters.OrderByDescending(x => x.Level).Take(5).ToList();
List<Database.Character> highestLevelCharacters = [.. user.Characters.OrderByDescending(x => x.Level).Take(5)];
response.SynchroLv = user.GetSynchroLevel();
foreach (var item in highestLevelCharacters)
foreach (Database.Character? item in highestLevelCharacters)
{
response.SynchroStandardCharacters.Add(item.Csn);
}
foreach (var teamInfo in user.UserTeams)
foreach (KeyValuePair<int, NetUserTeamData> teamInfo in user.UserTeams)
response.TypeTeams.Add(teamInfo.Value);
}

View File

@@ -7,9 +7,9 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetAllFeatureFlags>();
ReqGetAllFeatureFlags req = await ReadData<ReqGetAllFeatureFlags>();
var response = new ResGetAllFeatureFlags();
ResGetAllFeatureFlags response = new();
response.Flags.AddRange([
new NetFeatureFlag() { FeatureKind = NetFeatureKind.UnionRaid, IsOpen = true },
new NetFeatureFlag() { FeatureKind = NetFeatureKind.CooperationEvent, IsOpen = true },

View File

@@ -7,17 +7,17 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetContentsOpenData>();
var user = GetUser();
ReqGetContentsOpenData req = await ReadData<ReqGetContentsOpenData>();
Database.User user = GetUser();
// this request returns a list of "special" stages that mark when something is unlocked, ex: the shop or interception
List<int> specialStages = [6003003, 6002008, 6002016, 6005003, 6003021, 6011018, 6007021, 6004018, 6005013, 6003009, 6003012, 6009017, 6016039, 6001004, 6000003, 6000001, 6002001, 6004023, 6005026, 6020050, 6006004, 6006023,6022049];
var response = new ResGetContentsOpenData();
foreach (var field in user.FieldInfoNew.Values)
ResGetContentsOpenData response = new();
foreach (Database.FieldInfoNew field in user.FieldInfoNew.Values)
{
foreach (var stage in field.CompletedStages)
foreach (int stage in field.CompletedStages)
{
if (specialStages.Contains(stage))
response.ClearStageList.Add(stage);

View File

@@ -7,10 +7,10 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetFieldTalkList>();
var user = GetUser();
ReqGetFieldTalkList req = await ReadData<ReqGetFieldTalkList>();
Database.User user = GetUser();
var response = new ResGetFieldTalkList();
ResGetFieldTalkList response = new();
// TODO
await WriteDataAsync(response);

View File

@@ -1,4 +1,5 @@
using EpinelPS.Utils;
using EpinelPS.Data;
using EpinelPS.Utils;
namespace EpinelPS.LobbyServer.LobbyUser
{
@@ -7,9 +8,9 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetMailData>();
ReqGetMailData req = await ReadData<ReqGetMailData>();
var r = new ResGetMailData();
ResGetMailData r = new();
r.Mail.Add(new NetUserMailData()
{

View File

@@ -7,9 +7,9 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqProfileCardObjectList>();
ReqProfileCardObjectList req = await ReadData<ReqProfileCardObjectList>();
var response = new ResProfileCardObjectList();
ResProfileCardObjectList response = new();
// TODO
await WriteDataAsync(response);
}

View File

@@ -7,12 +7,16 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqProfileCardDecorationLayout>();
ReqProfileCardDecorationLayout req = await ReadData<ReqProfileCardDecorationLayout>();
var r = new ResProfileCardDecorationLayout();
r.Layout = new ProfileCardDecorationLayout();
r.Layout.BackgroundId = 101002;
r.Layout.ShowCharacterSpine = true;
ResProfileCardDecorationLayout r = new()
{
Layout = new ProfileCardDecorationLayout
{
BackgroundId = 101002,
ShowCharacterSpine = true
}
};
await WriteDataAsync(r);
}
}

View File

@@ -8,10 +8,10 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetProfileFrame>();
var response = new ResGetProfileFrame();
ReqGetProfileFrame req = await ReadData<ReqGetProfileFrame>();
ResGetProfileFrame response = new();
foreach (var frameRecord in GameData.Instance.userFrameTable.Values)
foreach (UserFrameTableRecord frameRecord in GameData.Instance.userFrameTable.Values)
{
response.Frames.Add(frameRecord.id);
}

View File

@@ -7,14 +7,14 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetScenarioList>();
var user = GetUser();
ReqGetScenarioList req = await ReadData<ReqGetScenarioList>();
Database.User 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)
ResGetScenarioList response = new();
foreach (string item in user.CompletedScenarios)
{
response.ScenarioList.Add(item);
}

View File

@@ -12,9 +12,9 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetSpecialLobbySlotData>();
ReqGetSpecialLobbySlotData req = await ReadData<ReqGetSpecialLobbySlotData>();
var response = new ResGetSpecialLobbySlotData();
ResGetSpecialLobbySlotData response = new();
// TODO
await WriteDataAsync(response);
}

View File

@@ -1,5 +1,6 @@
using EpinelPS.Utils;
using EpinelPS.Database;
using EpinelPS.Data;
namespace EpinelPS.LobbyServer.LobbyUser
{
@@ -8,12 +9,12 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetUserData>();
var response = new ResGetUserData();
var user = GetUser();
ReqGetUserData req = await ReadData<ReqGetUserData>();
ResGetUserData response = new();
User user = GetUser();
var battleTime = DateTime.UtcNow - user.BattleTime;
var battleTimeMs = (long)(battleTime.TotalNanoseconds / 100);
TimeSpan battleTime = DateTime.UtcNow - user.BattleTime;
long battleTimeMs = (long)(battleTime.TotalNanoseconds / 100);
response.User = LobbyHandler.CreateNetUserDataFromUser(user);
@@ -22,7 +23,7 @@ namespace EpinelPS.LobbyServer.LobbyUser
response.OutpostBattleLevel = user.OutpostBattleLevel;
response.IsSimple = req.IsSimple;
foreach (var item in user.Currency)
foreach (KeyValuePair<CurrencyType, long> item in user.Currency)
{
response.Currency.Add(new NetUserCurrencyData() { Type = (int)item.Key, Value = item.Value });
}
@@ -31,7 +32,7 @@ namespace EpinelPS.LobbyServer.LobbyUser
response.LastClearedNormalMainStageId = user.LastNormalStageCleared;
// Restore completed tutorials. GroupID is the first 4 digits of the Table ID.
foreach (var item in user.ClearedTutorialData)
foreach (KeyValuePair<int, Data.ClearedTutorialData> item in user.ClearedTutorialData)
{
int groupId = item.Value.GroupId;
int version = item.Value.VersionGroup;

View File

@@ -7,10 +7,10 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetProfileData>();
var callingUser = GetUser();
var user = GetUser((ulong)req.TargetUsn);
var response = new ResGetProfileData();
ReqGetProfileData req = await ReadData<ReqGetProfileData>();
Database.User callingUser = GetUser();
Database.User? user = GetUser((ulong)req.TargetUsn);
ResGetProfileData response = new();
if (user != null)
{
@@ -28,7 +28,7 @@ namespace EpinelPS.LobbyServer.LobbyUser
for (int i = 0; i < user.RepresentationTeamDataNew.Length; i++)
{
long csn = user.RepresentationTeamDataNew[i];
var c = user.GetCharacterBySerialNumber(csn);
Database.Character? c = user.GetCharacterBySerialNumber(csn);
if (c != null)
{

View File

@@ -7,17 +7,17 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqExistScenario>();
ReqExistScenario req = await ReadData<ReqExistScenario>();
// TODO: Check response from real server
var response = new ResExistScenario();
ResExistScenario response = new();
var user = GetUser();
Database.User user = GetUser();
foreach (var item in req.ScenarioGroupIds)
foreach (string? item in req.ScenarioGroupIds)
{
foreach (var completed in user.CompletedScenarios)
foreach (string completed in user.CompletedScenarios)
{
// story thingy was completed
if (completed == item)

View File

@@ -8,13 +8,13 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetUserTitleList>();
var r = new ResGetUserTitleList();
ReqGetUserTitleList req = await ReadData<ReqGetUserTitleList>();
ResGetUserTitleList r = new();
// Access GameData and get all UserTitle IDs
var userTitleRecords = GameData.Instance.userTitleRecords;
Dictionary<int, UserTitleRecord> userTitleRecords = GameData.Instance.userTitleRecords;
foreach (var titleId in userTitleRecords.Keys)
foreach (int titleId in userTitleRecords.Keys)
{
r.UserTitleList.Add(new ResGetUserTitleList.Types.NetUserTitle() { UserTitleId = titleId });
}

View File

@@ -7,9 +7,9 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetUserTitleCounterList>();
ReqGetUserTitleCounterList req = await ReadData<ReqGetUserTitleCounterList>();
var r = new ResGetUserTitleCounterList();
ResGetUserTitleCounterList r = new();
await WriteDataAsync(r);
}

View File

@@ -7,9 +7,9 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetWallpaper>();
var response = new ResGetWallpaper();
var user = GetUser();
ReqGetWallpaper req = await ReadData<ReqGetWallpaper>();
ResGetWallpaper response = new();
Database.User user = GetUser();
response.WallpaperList.AddRange(user.WallpaperList);

View File

@@ -7,14 +7,14 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqGetWallpaperInventory>();
ReqGetWallpaperInventory req = await ReadData<ReqGetWallpaperInventory>();
// Prepare the response
var r = new ResGetWallpaperInventory();
ResGetWallpaperInventory r = new();
// Fetch all the wallpaper IDs from the LiveWallpaperTable,
// excluding records where livewallpaper_type is "SkillCutScene"
var wallpaperIds = GameData.Instance.lwptablemgrs.Where(w => w.Value.livewallpaper_type != "SkillCutScene").Select(w => w.Key).ToList();
List<int> wallpaperIds = [.. GameData.Instance.lwptablemgrs.Where(w => w.Value.livewallpaper_type != "SkillCutScene").Select(w => w.Key)];
// Add the filtered wallpaper IDs to the LivewallpaperIds field
r.LivewallpaperIds.AddRange(wallpaperIds);

View File

@@ -8,9 +8,9 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqRecordNoticeLog>();
var r = new ResRecordNoticeLog();
var user = GetUser();
ReqRecordNoticeLog req = await ReadData<ReqRecordNoticeLog>();
ResRecordNoticeLog r = new();
Database.User user = GetUser();
// TODO

View File

@@ -7,9 +7,9 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqReadMail>();
ReqReadMail req = await ReadData<ReqReadMail>();
var r = new ResReadMail();
ResReadMail r = new();
//TODO
await WriteDataAsync(r);
}

View File

@@ -8,13 +8,15 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqSetNickname>();
var user = GetUser();
ReqSetNickname req = await ReadData<ReqSetNickname>();
User user = GetUser();
user.Nickname = req.Nickname;
var response = new ResSetNickname();
response.Result = SetNicknameResult.Okay;
response.Nickname = req.Nickname;
ResSetNickname response = new()
{
Result = SetNicknameResult.Okay,
Nickname = req.Nickname
};
JsonDb.Save();

View File

@@ -8,11 +8,11 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqSetNicknameFree>();
var user = GetUser();
ReqSetNicknameFree req = await ReadData<ReqSetNicknameFree>();
User user = GetUser();
user.Nickname = req.Nickname;
var response = new ResSetNicknameFree
ResSetNicknameFree response = new()
{
Result = SetNicknameResult.Okay,
Nickname = req.Nickname

View File

@@ -8,11 +8,11 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqSetNicknameInTutorial>();
var user = GetUser();
ReqSetNicknameInTutorial req = await ReadData<ReqSetNicknameInTutorial>();
User user = GetUser();
user.Nickname = req.Nickname;
var response = new ResSetNicknameInTutorial
ResSetNicknameInTutorial response = new()
{
Result = SetNicknameResult.Okay,
Nickname = req.Nickname

View File

@@ -13,14 +13,14 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqSetProfileData>();
var user = GetUser();
ReqSetProfileData req = await ReadData<ReqSetProfileData>();
User user = GetUser();
user.ProfileIconId = req.Icon;
user.ProfileIconIsPrism = req.IsPrism;
user.ProfileFrame = req.Frame;
JsonDb.Save();
var response = new ResSetProfileData();
ResSetProfileData response = new();
await WriteDataAsync(response);
}

View File

@@ -8,12 +8,12 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqSetProfileIcon>();
var user = GetUser();
ReqSetProfileIcon req = await ReadData<ReqSetProfileIcon>();
User user = GetUser();
user.ProfileIconId = req.Icon;
user.ProfileIconIsPrism = req.IsPrism;
JsonDb.Save();
var response = new ResSetProfileIcon();
ResSetProfileIcon response = new();
await WriteDataAsync(response);
}

View File

@@ -13,17 +13,17 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqSetProfileTeam>();
var user = GetUser();
ReqSetProfileTeam req = await ReadData<ReqSetProfileTeam>();
User user = GetUser();
for (int i = 0; i < req.Team.Slots.Count - 1; i++)
{
var slot = req.Team.Slots[i];
NetTeamSlot slot = req.Team.Slots[i];
user.RepresentationTeamDataNew[i] = slot.Value;
}
JsonDb.Save();
var response = new ResSetProfileTeam();
ResSetProfileTeam response = new();
await WriteDataAsync(response);
}

View File

@@ -9,10 +9,10 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqSetScenarioComplete>();
var user = GetUser();
ReqSetScenarioComplete req = await ReadData<ReqSetScenarioComplete>();
User user = GetUser();
var response = new ResSetScenarioComplete
ResSetScenarioComplete response = new()
{
Reward = new NetRewardData()
};

View File

@@ -7,11 +7,11 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqSetUserTitle>();
var user = GetUser();
ReqSetUserTitle req = await ReadData<ReqSetUserTitle>();
User user = GetUser();
user.TitleId = req.UserTitleId;
JsonDb.Save();
var response = new ResSetUserTitle();
ResSetUserTitle response = new();
await WriteDataAsync(response);
}

View File

@@ -8,9 +8,9 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqSetWallpaper>();
var response = new ResSetWallpaper();
var user = GetUser();
ReqSetWallpaper req = await ReadData<ReqSetWallpaper>();
ResSetWallpaper response = new();
User user = GetUser();
user.WallpaperList = [.. req.WallpaperList];
user.WallpaperBackground = [.. req.WallpaperBackgroundList];
user.WallpaperFavoriteList = [.. req.WallpaperFavoriteList];

View File

@@ -9,18 +9,18 @@ namespace EpinelPS.LobbyServer.LobbyUser.Tutorial
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqSetTutorial>();
var user = GetUser();
ReqSetTutorial req = await ReadData<ReqSetTutorial>();
User user = GetUser();
if (!user.ClearedTutorialData.ContainsKey(req.LastClearedTid))
{
var cleared = GameData.Instance.GetTutorialDataById(req.LastClearedTid);
ClearedTutorialData cleared = GameData.Instance.GetTutorialDataById(req.LastClearedTid);
cleared.id = req.LastClearedTid;
user.ClearedTutorialData.Add(req.LastClearedTid, cleared);
}
JsonDb.Save();
var response = new ResSetTutorial();
ResSetTutorial response = new();
await WriteDataAsync(response);
}
}

View File

@@ -7,10 +7,10 @@ namespace EpinelPS.LobbyServer.LobbyUser
{
protected override async Task HandleAsync()
{
var req = await ReadData<ReqUnMarkUserTitleBadge>();
var user = GetUser();
ReqUnMarkUserTitleBadge req = await ReadData<ReqUnMarkUserTitleBadge>();
Database.User user = GetUser();
var response = new ResUnMarkUserTitleBadge();
ResUnMarkUserTitleBadge response = new();
// TODO