Ejemplo n.º 1
0
        /// <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}");
                }
            });
        }
Ejemplo n.º 2
0
        /// <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);
        }