コード例 #1
0
ファイル: frmMain.cs プロジェクト: Sukasa/SeeSharp
        private void SetupPalettes()
        {
            PaletteManager Manager = PaletteManager.Instance();

            Manager.Reload();
            Manager.AutoConfig(_World != null ? _World.Path : "", _SelectedRenderer.RendererName);
            dgPalettes.Rows.Clear();
            foreach (PaletteFile File in Manager.AllPalettes)
            {
                DataGridViewRow Row = dgPalettes.Rows[dgPalettes.Rows.Add(File.Selected, File.Name, File.Version)];
                Row.Tag = File;
                if (File.Version != String.Empty)
                {
                    Row.Cells[1].ToolTipText = string.Format("{0} v{1} by {2}\r\n{3}", File.Name, File.Version, File.Author, File.Description);
                }
                else
                {
                    Row.Cells[1].ToolTipText = string.Format("{0} by {1}\r\n{2}", File.Name, File.Author, File.Description);
                }
            }

            if (chkTrackChanges.Checked && _PaletteWatcher == null)
            {
                // ReSharper disable once AssignNullToNotNullAttribute
                // *** Safe to assume the EXE file isn't going to have a NULL path.
                _PaletteWatcher = new FileSystemWatcher(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location))
                {
                    EnableRaisingEvents   = true,
                    IncludeSubdirectories = true,
                    Filter       = "*.pal",
                    NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.DirectoryName
                };
                _PaletteWatcher.Changed += PaletteFilesUpdated;
            }
        }
コード例 #2
0
ファイル: frmMain.cs プロジェクト: Sukasa/SeeSharp
        private void btnCopyCLI_Click(object Sender, EventArgs E)
        {
            StringBuilder SB = new StringBuilder();

            fbOpenFolder.Description = "Select output folder";
            fbOpenFolder.ShowDialog(this);

            SB.Append("SeeSharp");
            SB.Append(" --world \"" + _World.Path + "\"");
            SB.Append(" --dimension \"" + ((DimensionListEntry)cbDimension.SelectedItem).Value + "\"");

            SB.Append(" --output \"" + fbOpenFolder.SelectedPath + Path.DirectorySeparatorChar + "map.png\"");
            SB.Append(" --light-level " + tbLightLevel.Value.ToString());
            SB.Append(" --render-core " + ((RendererListEntry)cbRenderer.SelectedItem).RendererName);

            if (_CachedConfigForm != null)
            {
                List <KeyValuePair <String, String> > L = _CachedConfigForm.ConfigStrings;
                foreach (KeyValuePair <String, String> ConfigPair in L)
                {
                    SB.Append(" --render-option " + ConfigPair.Key + " \"" + ConfigPair.Value + "\"");
                }
            }

            if (cbCropMap.Checked)
            {
                SB.Append(" --subregion");
                SB.Append(" --subregion-min-x " + nudXMin.Value.ToString(Thread.CurrentThread.CurrentCulture));
                SB.Append(" --subregion-min-z " + nudZMin.Value.ToString(Thread.CurrentThread.CurrentCulture));
                SB.Append(" --subregion-max-x " + nudXMax.Value.ToString(Thread.CurrentThread.CurrentCulture));
                SB.Append(" --subregion-max-z " + nudZMax.Value.ToString(Thread.CurrentThread.CurrentCulture));
            }


            if (nudThreads.Value != 1)
            {
                SB.Append(" --multi-thread --max-threads " + nudThreads.Value.ToString(Thread.CurrentThread.CurrentCulture));
            }

            foreach (PaletteFile Palette in PaletteManager.Instance().AllPalettes.Where(x => x.Selected))
            {
                SB.Append(" --palette " + Palette.PalettePath.ConvertToRelativePath());
            }


            SB.Append("");
            Clipboard.SetText(SB.ToString());

            SetStatus("Copied to Clipboard");
        }
コード例 #3
0
ファイル: frmMain.cs プロジェクト: Sukasa/SeeSharp
        internal FrmMain()
        {
            InitializeComponent();

            // *** Why is this here?
            nudZMin.ValueChanged += SetupSubregion;
            nudXMin.ValueChanged += SetupSubregion;
            nudZMax.ValueChanged += SetupSubregion;
            nudXMax.ValueChanged += SetupSubregion;

            _InvokableControlToggler  = ToggleControls;
            _InvokablePaletteSelector = UpdatePaletteSelection;
            PaletteManager.Instance();
        }
コード例 #4
0
ファイル: frmMain.cs プロジェクト: Sukasa/SeeSharp
        private void Render(bool IsPreview)
        {
            _Abort = false;

            ToggleControls(!IsPreview, true, IsPreview);
            SetStatus("Initializing...");
            IRenderer Renderer = null;

            // *** Set up renderer config
            _RenderingConfig.IsPreview       = IsPreview;
            _RenderingConfig.Chunks          = _World.GetChunkManager(_RenderingConfig.Dimension);
            _RenderingConfig.Palette         = new BlockPalette();
            _RenderingConfig.RenderSubregion = cbCropMap.Checked;
            _RenderingConfig.MaxThreads      = cbMultithread.Checked ? (int)nudThreads.Value : 1;

            // ReSharper disable once InconsistentlySynchronizedField
            // *** This section of code is run before the parallel processing begins, so there is no danger of sync issues.
            _SkipErrors.Clear();

            if (IsPreview)
            {
                _RenderingConfig.RenderSubregion = true;
                _RenderingConfig.SubregionChunks = new Rectangle(-15, -15, 31, 31);
            }
            else if (_RenderingConfig.RenderSubregion)
            {
                _RenderingConfig.SubregionChunks = new Rectangle((int)nudXMin.Value, (int)nudZMin.Value, (int)nudXMax.Value - (int)nudXMin.Value + 1, (int)nudZMax.Value - (int)nudZMin.Value + 1);
            }
            else
            {
                _RenderingConfig.SubregionChunks = new Rectangle(_RenderingConfig.Metrics.MinX, _RenderingConfig.Metrics.MinZ, _RenderingConfig.Metrics.MaxX - _RenderingConfig.Metrics.MinX, _RenderingConfig.Metrics.MaxZ - _RenderingConfig.Metrics.MinZ);
            }

            if (_Abort)
            {
                goto Cleanup;
            }

            foreach (DataGridViewRow Row in dgPalettes.Rows)
            {
                ((PaletteFile)Row.Tag).Selected = (bool)Row.Cells[0].Value;
            }


            // *** Set up palettes
            foreach (String Palette in from PaletteFile File in PaletteManager.Instance().AllPalettes where File.Selected select File.PalettePath)
            {
                try
                {
                    _RenderingConfig.Palette.LoadPalette(Palette);
                }
                catch (BlockPalette.PaletteExecutionException Ex)
                {
                    MessageBox.Show(string.Format("The palette file {0} is invalid and will be skipped:\r\n{1}", Path.GetFileName(Palette), Ex.Message), "Palette Error", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    PaletteManager.Instance().AllPalettes.First(x => x.PalettePath == Palette).Selected = false;
                }
            }

            if (_Abort)
            {
                goto Cleanup;
            }

            UpdatePaletteSelection();

            _RenderingConfig.Palette.AssembleLookupTables();

            // *** Initialize renderer
            Renderer = RendererManager.Instance().InstantiateRenderer((_SelectedRenderer).RendererName);

            Renderer.ProgressUpdate += DoUpdate;
            Renderer.RenderError    += HandleError;

            Renderer.Configure(_RenderingConfig);
            Renderer.Initialize();

            _AbortRender = Renderer.Abort;

            // *** Render
            if (IsPreview)
            {
                pbPreview.Image = Renderer.Preview();
            }
            else
            {
                Renderer.Render();
            }


Cleanup:

            // *** Clean up
            if (Renderer != null)
            {
                Renderer.ProgressUpdate -= DoUpdate;
                Renderer.RenderError    -= HandleError;
            }

            ToggleControls(false, _World != null, false);
            SetStatus(_Abort ? "Aborted" : "Finished", "Render " + (_Abort ? "Aborted" : "Finished"));
            SetProgress(0);
            _AbortRender = null;
            _Abort       = false;
        }