/// <summary> /// Sends the screenshots in a folder /// </summary> public static void SendScreenshotList(ClientStructure client, ScreenshotListRequestMsgData data) { Task.Run(() => { var screenshots = new List <ScreenshotInfo>(); var folder = Path.Combine(ScreenshotFolder, data.FolderName); var msgData = ServerContext.ServerMessageFactory.CreateNewMessageData <ScreenshotListReplyMsgData>(); foreach (var file in Directory.GetFiles(folder).Where(f => Path.GetFileNameWithoutExtension(f).StartsWith(SmallFilePrefix))) { if (long.TryParse(Path.GetFileNameWithoutExtension(file).Substring(SmallFilePrefix.Length), out var dateTaken)) { if (data.AlreadyOwnedPhotoIds.Contains(dateTaken)) { continue; } var bitmap = new Bitmap(file); var contents = File.ReadAllBytes(file); screenshots.Add(new ScreenshotInfo { Data = contents, DateTaken = dateTaken, NumBytes = contents.Length, Height = (ushort)bitmap.Height, Width = (ushort)bitmap.Width, FolderName = data.FolderName, }); } } msgData.FolderName = data.FolderName; msgData.Screenshots = screenshots.ToArray(); msgData.NumScreenshots = screenshots.Count; MessageQueuer.SendToClient <ScreenshotSrvMsg>(client, msgData); if (msgData.NumScreenshots > 0) { LunaLog.Debug($"Sending {msgData.NumScreenshots} ({data.FolderName}) screenshots to: {client.PlayerName}"); } }); }
/// <summary> /// Sends the screenshots in a folder /// </summary> public static void SendScreenshotList(ClientStructure client, ScreenshotListRequestMsgData data) { var screenshots = new List <ScreenshotInfo>(); foreach (var file in FileHandler.GetFilesInPath(Path.Combine(ScreenshotPath, data.FolderName)).Where(f => thumbnail_handler(f))) { if (long.TryParse(Path.GetFileNameWithoutExtension(file).Replace("small_", string.Empty), out var dateTaken)) { if (data.AlreadyOwnedPhotoIds.Contains(dateTaken)) { continue; } var contents = FileHandler.ReadFile(file); LunaLog.Debug("IMG: " + LunaMath.UShortFromBytes(contents[18], contents[19]) + " X " + LunaMath.UShortFromBytes(contents[22], contents[23])); screenshots.Add(new ScreenshotInfo { Data = contents, DateTaken = dateTaken, NumBytes = contents.Length, Height = LunaMath.UShortFromBytes(contents[18], contents[19]), Width = LunaMath.UShortFromBytes(contents[22], contents[23]), FolderName = data.FolderName, }); } else { LunaLog.Error("Failed to parse data on screenshot: " + file); } } var msgData = ServerContext.ServerMessageFactory.CreateNewMessageData <ScreenshotListReplyMsgData>(); msgData.FolderName = data.FolderName; msgData.Screenshots = screenshots.ToArray(); msgData.NumScreenshots = screenshots.Count; LunaLog.Debug($"Sending {msgData.NumScreenshots} ({data.FolderName}) screenshots to: {client.PlayerName}"); MessageQueuer.SendToClient <ScreenshotSrvMsg>(client, msgData); }