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/Get")] public class GetUser : LobbyMsgHandler { protected override async Task HandleAsync() { var req = await ReadData(); var response = new ResGetUserData(); var user = GetUser(); var battleTime = DateTime.UtcNow - user.BattleTime; var battleTimeMs = (long)(battleTime.TotalNanoseconds / 100); response.User = LobbyHandler.CreateNetUserDataFromUser(user); response.ResetHour = 20; response.OutpostBattleTime = new NetOutpostBattleTime() { MaxBattleTime = 864000000000, MaxOverBattleTime = 12096000000000, BattleTime = battleTimeMs }; response.IsSimple = req.IsSimple; foreach (var item in user.Currency) { response.Currency.Add(new NetUserCurrencyData() { Type = (int)item.Key, Value = item.Value }); } response.RepresentationTeam = user.RepresentationTeamData; response.LastClearedNormalMainStageId = user.LastNormalStageCleared; // Restore completed tutorials. GroupID is the first 4 digits of the Table ID. foreach (var item in user.ClearedTutorials) { var groupId = int.Parse(item.ToString().Substring(0, 4)); int tutorialVersion = item == 1020101 ? 1 : 0; // TODO response.User.Tutorials.Add(new NetTutorialData() { GroupId = groupId, LastClearedTid = item, LastClearedVersion = tutorialVersion }); } response.CommanderRoomJukeboxBgm = new NetJukeboxBgm() { JukeboxTableId = 2, Type = NetJukeboxBgmType.JukeboxTableId, Location = NetJukeboxLocation.CommanderRoom }; response.LobbyJukeboxBgm = new NetJukeboxBgm() { JukeboxTableId = 2, Type = NetJukeboxBgmType.JukeboxTableId, Location = NetJukeboxLocation.Lobby }; WriteData(response); } } }