Files
EpinelPS/EpinelPS/LobbyServer/Character/GetCharacterData.cs
qmengz 24f6de8704 feat: Implement SimRoom Overclock-实现模拟室超频 (#68)
- Added GetAcquireBuffFunction to handle buff acquisition requests in the simulation room.
- Added InfinitePopupCheck to manage infinite popup checks for users.
- Added ProceedSkipFunction to process skip requests in the simulation room.
- Updated SelectDifficulty to handle overclock options and season data.
- Enhanced SimRoomHelper to support overclock mechanics and event group logic.
- Modified GetSimRoomData to include buffs and legacy buffs in the response.
- Updated Quit functionality to reset overclock state upon quitting the simulation room.
- Added logic to handle overclock rewards and high score updates.
- Refactored user model to retain current season data and legacy buffs during resets.
- Introduced new OverclockData and OverclockHighScoreData models to manage overclock states.
2025-12-05 15:26:14 -05:00

50 lines
1.6 KiB
C#

using EpinelPS.Utils;
namespace EpinelPS.LobbyServer.Character
{
[PacketPath("/character/get")]
public class GetCharacterData : LobbyMsgHandler
{
protected override async Task HandleAsync()
{
ReqGetCharacterData req = await ReadData<ReqGetCharacterData>();
User user = GetUser();
ResGetCharacterData response = new();
foreach (CharacterModel 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)
});
// Check if character is main force
if (item.IsMainForce)
{
response.MainForceCsnList.Add(item.Csn);
}
}
List<CharacterModel> highestLevelCharacters = [.. user.Characters.OrderByDescending(x => x.Level).Take(5)];
foreach (CharacterModel? c in highestLevelCharacters)
{
response.SynchroStandardCharacters.Add(c.Csn);
}
await WriteDataAsync(response);
}
}
}