/// <summary> /// Sends the requested screenshot /// </summary> public static void SendScreenshot(ClientStructure client, ScreenshotDownloadRequestMsgData data) { var file = Path.Combine(ScreenshotPath, data.FolderName, $"{data.DateTaken}.png"); if (FileHandler.FileExists(file)) { var contents = FileHandler.ReadFile(file); var msgData = ServerContext.ServerMessageFactory.CreateNewMessageData <ScreenshotDataMsgData>(); msgData.Screenshot.DateTaken = data.DateTaken; msgData.Screenshot.Data = contents; msgData.Screenshot.NumBytes = msgData.Screenshot.Data.Length; msgData.Screenshot.Height = LunaMath.UShortFromBytes(contents[18], contents[19]); msgData.Screenshot.Width = LunaMath.UShortFromBytes(contents[22], contents[23]); msgData.Screenshot.FolderName = data.FolderName; LunaLog.Debug($"Sending screenshot ({ByteSize.FromBytes(msgData.Screenshot.NumBytes).KiloBytes}{ByteSize.KiloByteSymbol}): {data.DateTaken} to: {client.PlayerName}."); MessageQueuer.SendToClient <ScreenshotSrvMsg>(client, msgData); } }
/// <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); }