public void Load(AuroraAsset.AssetFile asset)
 {
     _assetFile.SetIcon(asset);
     _assetFile.SetBanner(asset);
     Dispatcher.Invoke(new Action(() => SetPreview(_assetFile.GetIcon(), true)));
     Dispatcher.Invoke(new Action(() => SetPreview(_assetFile.GetBanner(), false)));
 }
 private void LoadAuroraAsset(string filename)
 {
     try {
         var asset = new AuroraAsset.AssetFile(File.ReadAllBytes(filename));
         if (asset.HasBoxArt)
         {
             _boxart.Load(asset);
             Dispatcher.Invoke(new Action(() => BoxartTab.IsSelected = true));
         }
         else if (asset.HasBackground)
         {
             _background.Load(asset);
             Dispatcher.Invoke(new Action(() => BackgroundTab.IsSelected = true));
         }
         else if (asset.HasScreenshots)
         {
             _screenshots.Load(asset);
             Dispatcher.Invoke(new Action(() => ScreenshotsTab.IsSelected = true));
         }
         else if (asset.HasIconBanner)
         {
             _iconBanner.Load(asset);
             Dispatcher.Invoke(new Action(() => IconBannerTab.IsSelected = true));
         }
         else
         {
             MessageBox.Show(string.Format("Error: {0} doesn't contain any assets...", filename), "Error!", MessageBoxButton.OK, MessageBoxImage.Error);
         }
     }
     catch (Exception ex) {
         SaveError(ex);
         MessageBox.Show(string.Format("Error: While processing {0}{1}{2}{1}. See the log for more details about this error.", filename, Environment.NewLine, ex.Message), "Error!",
                         MessageBoxButton.OK, MessageBoxImage.Error);
     }
 }
Exemplo n.º 3
0
 public void Reset()
 {
     SetPreview(null);
     _assetFile         = new AuroraAsset.AssetFile();
     _screenshots       = new Image[AuroraAsset.AssetType.ScreenshotEnd - AuroraAsset.AssetType.ScreenshotStart];
     CBox.SelectedIndex = 0;
 }
Exemplo n.º 4
0
 public void Load(AuroraAsset.AssetFile asset)
 {
     _assetFile.SetScreenshots(asset);
     Dispatcher.Invoke(new Action(() => {
         _screenshots = _assetFile.GetScreenshots();
         CBox_SelectionChanged(null, null);
     }));
 }
 public ScreenshotsControl(MainWindow main)
 {
     InitializeComponent();
     _main = main;
     _assetFile = new AuroraAsset.AssetFile();
     _screenshots = new Image[AuroraAsset.AssetType.ScreenshotEnd - AuroraAsset.AssetType.ScreenshotStart];
     CBox.Items.Clear();
     for(var i = 0; i < _screenshots.Length; i++)
         CBox.Items.Add(new ScreenshotDisplay(i));
     CBox.SelectedIndex = 0;
 }
Exemplo n.º 6
0
 public ScreenshotsControl(MainWindow main)
 {
     InitializeComponent();
     _main        = main;
     _assetFile   = new AuroraAsset.AssetFile();
     _screenshots = new Image[AuroraAsset.AssetType.ScreenshotEnd - AuroraAsset.AssetType.ScreenshotStart];
     CBox.Items.Clear();
     for (var i = 0; i < _screenshots.Length; i++)
     {
         CBox.Items.Add(new ScreenshotDisplay(i));
     }
     CBox.SelectedIndex = 0;
 }
 public void Reset()
 {
     SetPreview(null, true);
     SetPreview(null, false);
     _assetFile = new AuroraAsset.AssetFile();
 }
        private void ProcessAsset(Task task, bool shouldHideWhenDone = true)
        {
            _isError = false;
            AuroraDbManager.ContentItem asset = null;
            Dispatcher.InvokeIfRequired(() => asset = FtpAssetsBox.SelectedItem as AuroraDbManager.ContentItem, DispatcherPriority.Normal);
            if (asset == null)
            {
                return;
            }
            var bw = new BackgroundWorker();

            bw.DoWork += (sender, args) => {
                try {
                    switch (task)
                    {
                    case Task.GetBoxart:
                        _buffer = asset.GetBoxart();
                        break;

                    case Task.GetBackground:
                        _buffer = asset.GetBackground();
                        break;

                    case Task.GetIconBanner:
                        _buffer = asset.GetIconBanner();
                        break;

                    case Task.GetScreenshots:
                        _buffer = asset.GetScreenshots();
                        break;

                    case Task.SetBoxart:
                        asset.SaveAsBoxart(_buffer);
                        break;

                    case Task.SetBackground:
                        asset.SaveAsBackground(_buffer);
                        break;

                    case Task.SetIconBanner:
                        asset.SaveAsIconBanner(_buffer);
                        break;

                    case Task.SetScreenshots:
                        asset.SaveAsScreenshots(_buffer);
                        break;
                    }
                    args.Result = true;
                }
                catch (Exception ex) {
                    MainWindow.SaveError(ex);
                    args.Result = false;
                }
            };
            bw.RunWorkerCompleted += (sender, args) => {
                if (shouldHideWhenDone)
                {
                    Dispatcher.InvokeIfRequired(() => _main.BusyIndicator.Visibility = Visibility.Collapsed, DispatcherPriority.Normal);
                }
                var isGet = true;
                if ((bool)args.Result)
                {
                    if (_buffer.Length > 0)
                    {
                        var aurora = new AuroraAsset.AssetFile(_buffer);
                        switch (task)
                        {
                        case Task.GetBoxart:
                            _boxart.Load(aurora);
                            Dispatcher.InvokeIfRequired(() => _main.BoxartTab.IsSelected = true, DispatcherPriority.Normal);
                            break;

                        case Task.GetBackground:
                            _background.Load(aurora);
                            Dispatcher.InvokeIfRequired(() => _main.BackgroundTab.IsSelected = true, DispatcherPriority.Normal);
                            break;

                        case Task.GetIconBanner:
                            _iconBanner.Load(aurora);
                            Dispatcher.InvokeIfRequired(() => _main.IconBannerTab.IsSelected = true, DispatcherPriority.Normal);
                            break;

                        case Task.GetScreenshots:
                            _screenshots.Load(aurora);
                            Dispatcher.InvokeIfRequired(() => _main.ScreenshotsTab.IsSelected = true, DispatcherPriority.Normal);
                            break;

                        default:
                            isGet = false;
                            break;
                        }
                    }
                    if (shouldHideWhenDone && isGet)
                    {
                        Dispatcher.InvokeIfRequired(() => Status.Text = "Finished grabbing assets from FTP", DispatcherPriority.Normal);
                    }
                    else if (shouldHideWhenDone)
                    {
                        Dispatcher.InvokeIfRequired(() => Status.Text = "Finished saving assets to FTP", DispatcherPriority.Normal);
                    }
                }
                else
                {
                    switch (task)
                    {
                    case Task.GetBoxart:
                    case Task.GetBackground:
                    case Task.GetIconBanner:
                    case Task.GetScreenshots:
                        break;

                    default:
                        isGet = false;
                        break;
                    }
                    if (isGet)
                    {
                        Dispatcher.InvokeIfRequired(() => Status.Text = "Failed getting asset data... See error.log for more information...", DispatcherPriority.Normal);
                    }
                    else
                    {
                        Dispatcher.InvokeIfRequired(() => Status.Text = "Failed saving asset data... See error.log for more information...", DispatcherPriority.Normal);
                    }
                    _isError = true;
                }
                _isBusy = false;
            };
            Dispatcher.InvokeIfRequired(() => _main.BusyIndicator.Visibility = Visibility.Visible, DispatcherPriority.Normal);
            _isBusy = true;
            bw.RunWorkerAsync();
        }
 public BackgroundControl(MainWindow main)
 {
     InitializeComponent();
     _main = main;
     _assetFile = new AuroraAsset.AssetFile();
 }
 public void Reset()
 {
     SetPreview(null);
     _assetFile = new AuroraAsset.AssetFile();
 }
 public void Reset()
 {
     SetPreview(null);
     _assetFile = new AuroraAsset.AssetFile();
 }
 public void Load(AuroraAsset.AssetFile asset)
 {
     _assetFile.SetBoxart(asset);
     Dispatcher.Invoke(new Action(() => SetPreview(_assetFile.GetBoxart())));
 }
 public void Reset()
 {
     SetPreview(null, true);
     SetPreview(null, false);
     _assetFile = new AuroraAsset.AssetFile();
 }
 public BoxartControl(MainWindow main)
 {
     InitializeComponent();
     _main      = main;
     _assetFile = new AuroraAsset.AssetFile();
 }
 public IconBannerControl(MainWindow main)
 {
     InitializeComponent();
     _main = main;
     _assetFile = new AuroraAsset.AssetFile();
 }
Exemplo n.º 16
0
 private void LoadAuroraAsset(string filename)
 {
     try {
         var asset = new AuroraAsset.AssetFile(File.ReadAllBytes(filename));
         if(asset.HasBoxArt) {
             _boxart.Load(asset);
             Dispatcher.Invoke(new Action(() => BoxartTab.IsSelected = true));
             }
         else if(asset.HasBackground) {
             _background.Load(asset);
             Dispatcher.Invoke(new Action(() => BackgroundTab.IsSelected = true));
             }
         else if(asset.HasScreenshots) {
             _screenshots.Load(asset);
             Dispatcher.Invoke(new Action(() => ScreenshotsTab.IsSelected = true));
             }
         else if(asset.HasIconBanner) {
             _iconBanner.Load(asset);
             Dispatcher.Invoke(new Action(() => IconBannerTab.IsSelected = true));
             }
         else
             MessageBox.Show(string.Format("ERROR: {0} Doesn't contain any Assets", filename), "ERROR", MessageBoxButton.OK, MessageBoxImage.Error);
         }
     catch(Exception ex) {
         SaveError(ex);
         MessageBox.Show(string.Format("ERROR: While processing {0}{1}{2}{1}See error.log for more details about this error", filename, Environment.NewLine, ex.Message), "ERROR",
                         MessageBoxButton.OK, MessageBoxImage.Error);
         }
 }
 public void Reset()
 {
     SetPreview(null);
     _assetFile = new AuroraAsset.AssetFile();
     _screenshots = new Image[AuroraAsset.AssetType.ScreenshotEnd - AuroraAsset.AssetType.ScreenshotStart];
     CBox.SelectedIndex = 0;
 }
        public LocalAssetsControl(MainWindow main, BoxartControl boxart, BackgroundControl background, IconBannerControl iconBanner, ScreenshotsControl screenshots)
        {
            InitializeComponent();
            _main = main;
            _boxart = boxart;
            _background = background;
            _iconBanner = iconBanner;
            _screenshots = screenshots;

            FtpAssetsBox.ItemsSource = _assetsList;

            onlyNewSync.IsChecked = Settings.Default.OnlyNew;
            sliderScreens.Value = Settings.Default.NumScreens;

            #region Xbox.com Worker

            _xboxWorker.WorkerReportsProgress = true;
            _xboxWorker.WorkerSupportsCancellation = true;

            var xboxMarketDataResult = new ConcurrentBag<XboxTitleInfo>();
            var omitedTitles = new ConcurrentBag<AuroraDbManager.ContentItem>();

            _xboxWorker.DoWork += (sender, args) => {

                var bgWork = sender as BackgroundWorker;

                try {

                    if(_assetsList.Count ==0) {
                        Dispatcher.Invoke(new Action(() => Status.Text = "No games..."));
                        return;
                        }

                    xboxMarketDataResult = new ConcurrentBag<XboxTitleInfo>();
                    omitedTitles = new ConcurrentBag<AuroraDbManager.ContentItem>();
                    XboxLocale loc = args.Argument as XboxLocale;

                    var _assetsToGo = _assetsList.Where(p => p.TitleIdNumber > 0);

                    Dispatcher.Invoke(new Action(() => _main.busyProgress.Visibility = Visibility.Visible));
                    Dispatcher.Invoke(new Action(() => _main.busyProgress.Text= "0 / " + _assetsToGo.Count()));

                    var maxScreens = Settings.Default.NumScreens;

                    int progressCount = 0;
                    Object progressLock = new Object();

                    Ts.Parallel.ForEach(_assetsToGo, (contentItem) => {

                        if(bgWork.CancellationPending) {
                            args.Cancel = true;
                            }

                        XboxTitleInfo _titleResult = _xboxAssetDownloader.GetTitleInfoSingle(contentItem.TitleIdNumber, loc);

                        if(_titleResult.AssetsInfo!= null) {

                            var unityCovers = XboxUnity.GetUnityCoverInfo(contentItem.TitleId);

                            if(unityCovers.Count() > 0) {
                                var cover = unityCovers.FirstOrDefault(p => p._unityResponse.Official == true);
                                if(cover!= null) {
                                    _titleResult.CoverAsset = cover;
                                    }
                                }

                            xboxMarketDataResult.Add(_titleResult);
                            }
                        else {
                            omitedTitles.Add(contentItem);
                            }

                        lock (progressLock) {
                            bgWork.ReportProgress(1, (++progressCount) + " / " + _assetsToGo.Count());
                            }
                    });

                    progressCount = 0;

                    Ts.Parallel.ForEach(xboxMarketDataResult, (titleItem) => {
                        AuroraDbManager.ContentItem contentItem = _assetsToGo.FirstOrDefault(p => p.TitleId == titleItem.TitleId);
                        if(contentItem!= null) {

                            lock (progressLock) {
                                bgWork.ReportProgress(1, (++progressCount) + " / " + xboxMarketDataResult.Count);
                                }

                            var itemWrap = new ContentItemLocal(contentItem);

                            if(titleItem.CoverAsset!= null) {

                                var assetFileC = new AuroraAsset.AssetFile();

                                assetFileC.SetBoxart(titleItem.CoverAsset.GetCover(), true);

                                itemWrap.SaveAsBoxart(assetFileC.FileData);

                                assetFileC.Dispose();
                                }

                            int screenCount = 0;

                            Ts.Parallel.ForEach(titleItem.AssetsInfo, (assetInfo) => {

                                if(!assetInfo.HaveAsset) {

                                    if(assetInfo.AssetType == XboxTitleInfo.XboxAssetType.Screenshot && screenCount >= maxScreens) {
                                        return;
                                        }
                                    var XboxAsset = assetInfo.GetAsset();
                                    var assetFile = new AuroraAsset.AssetFile();

                                    switch(assetInfo.AssetType) {
                                        case XboxTitleInfo.XboxAssetType.Icon:
                                        assetFile.SetIcon(XboxAsset.Image, true);
                                        itemWrap.SaveAsIconBanner(assetFile.FileData);
                                        break;
                                        case XboxTitleInfo.XboxAssetType.Banner:
                                        assetFile.SetBanner(XboxAsset.Image, true);
                                        itemWrap.SaveAsIconBanner(assetFile.FileData);
                                        break;
                                        case XboxTitleInfo.XboxAssetType.Background:
                                        assetFile.SetBackground(XboxAsset.Image, true);
                                        itemWrap.SaveAsBackground(assetFile.FileData);
                                        break;
                                        case XboxTitleInfo.XboxAssetType.Screenshot:
                                        // _screenshots.Load(XboxAsset.Image, false);
                                        // itemWrap.SaveAsScreenshots(assetFile.FileData);
                                        screenCount++;
                                        break;
                                        default:
                                        break;
                                        }
                                    //  XboxAsset.Dispose();
                                    assetFile.Dispose();

                                    }

                                GC.Collect();

                            });

                            }
                        titleItem.Dispose();
                    });

                    Dispatcher.Invoke(new Action(() => Status.Text = "Finished downloading asset information..."));

                    }
                catch(Exception ex) {
                    MainWindow.SaveError(ex);
                    Dispatcher.Invoke(new Action(() => Status.Text = "An error has occured, check error.log for more information..."));
                    }
            };
            _xboxWorker.RunWorkerCompleted += (sender, args) => {

                _main.busyProgress.Visibility = Visibility.Collapsed;
                _main.BusyIndicator.Visibility = Visibility.Collapsed;
                syncDb.IsEnabled = true;

                if(omitedTitles.Count >0) {

                    var logPath = Path.GetTempPath() + Path.DirectorySeparatorChar + "omittedTitlesLog.log";

                    string logcontent = "";
                    foreach(var item in omitedTitles) {
                        logcontent += "Title name: " + item.TitleName + @"

            TitleID: " + item.TitleId + @"

            Title int: " + item.TitleIdNumber + @"

            MediaID: " + item.MediaId + @"
            -----------------------------------------------

            ";
                        }

                    File.WriteAllText(logPath, logcontent);

                    var msgresult = MessageBox.Show("Omitted titles " + omitedTitles.Count + @"

            Show log?", "Action", MessageBoxButton.OKCancel, MessageBoxImage.Information, MessageBoxResult.Cancel);

                    if(msgresult == MessageBoxResult.OK) {
                        try {
                            Process.Start(logPath);
                            }
                        catch {

                            }
                        }

                    }
                // var disp = new List<XboxTitleInfo.XboxAssetInfo>();

            };

            _xboxWorker.ProgressChanged+=_xboxWorker_ProgressChanged;

            #endregion
        }
        private void ProcessAsset(Task task, bool shouldHideWhenDone = true)
        {
            _isError = false;
            AuroraDbManager.ContentItem asset = null;
            Dispatcher.InvokeIfRequired(() => asset = FtpAssetsBox.SelectedItem as AuroraDbManager.ContentItem, DispatcherPriority.Normal);
            if(asset == null)
                return;

            ContentItemLocal assetWrapper = new ContentItemLocal(asset);

            var bw = new BackgroundWorker();
            bw.DoWork += (sender, args) => {
                try {
                    switch(task) {
                        case Task.GetBoxart:
                        _buffer = assetWrapper.GetBoxart();
                        break;
                        case Task.GetBackground:
                        _buffer = assetWrapper.GetBackground();
                        break;
                        case Task.GetIconBanner:
                        _buffer = assetWrapper.GetIconBanner();
                        break;
                        case Task.GetScreenshots:
                        _buffer = assetWrapper.GetScreenshots();
                        break;
                        case Task.SetBoxart:
                        assetWrapper.SaveAsBoxart(_buffer);
                        break;
                        case Task.SetBackground:
                        assetWrapper.SaveAsBackground(_buffer);
                        break;
                        case Task.SetIconBanner:
                        assetWrapper.SaveAsIconBanner(_buffer);
                        break;
                        case Task.SetScreenshots:
                        assetWrapper.SaveAsScreenshots(_buffer);
                        break;
                        }
                    args.Result = true;
                    }
                catch(Exception ex) {
                    MainWindow.SaveError(ex);
                    args.Result = false;
                    }
            };
            bw.RunWorkerCompleted += (sender, args) => {
                if(shouldHideWhenDone)
                    Dispatcher.InvokeIfRequired(() => _main.BusyIndicator.Visibility = Visibility.Collapsed, DispatcherPriority.Normal);
                var isGet = true;
                if((bool)args.Result) {
                    if(_buffer.Length > 0) {
                        var aurora = new AuroraAsset.AssetFile(_buffer);
                        switch(task) {
                            case Task.GetBoxart:
                            _boxart.Load(aurora);
                            Dispatcher.InvokeIfRequired(() => _main.BoxartTab.IsSelected = true, DispatcherPriority.Normal);
                            break;
                            case Task.GetBackground:
                            _background.Load(aurora);
                            Dispatcher.InvokeIfRequired(() => _main.BackgroundTab.IsSelected = true, DispatcherPriority.Normal);
                            break;
                            case Task.GetIconBanner:
                            _iconBanner.Load(aurora);
                            Dispatcher.InvokeIfRequired(() => _main.IconBannerTab.IsSelected = true, DispatcherPriority.Normal);
                            break;
                            case Task.GetScreenshots:
                            _screenshots.Load(aurora);
                            Dispatcher.InvokeIfRequired(() => _main.ScreenshotsTab.IsSelected = true, DispatcherPriority.Normal);
                            break;
                            default:
                            isGet = false;
                            break;
                            }
                        }
                    if(shouldHideWhenDone && isGet)
                        Dispatcher.InvokeIfRequired(() => Status.Text = "Finished grabbing assets from FTP", DispatcherPriority.Normal);
                    else if(shouldHideWhenDone)
                        Dispatcher.InvokeIfRequired(() => Status.Text = "Finished saving assets to FTP", DispatcherPriority.Normal);
                    }
                else {
                    switch(task) {
                        case Task.GetBoxart:
                        case Task.GetBackground:
                        case Task.GetIconBanner:
                        case Task.GetScreenshots:
                        break;
                        default:
                        isGet = false;
                        break;
                        }
                    if(isGet)
                        Dispatcher.InvokeIfRequired(() => Status.Text = "Failed getting asset data... See error.log for more information...", DispatcherPriority.Normal);
                    else
                        Dispatcher.InvokeIfRequired(() => Status.Text = "Failed saving asset data... See error.log for more information...", DispatcherPriority.Normal);
                    _isError = true;
                    }
                _isBusy = false;
            };
            Dispatcher.InvokeIfRequired(() => _main.BusyIndicator.Visibility = Visibility.Visible, DispatcherPriority.Normal);
            _isBusy = true;
            bw.RunWorkerAsync();
        }