public InternalAssetEditor(Asset asset, ArchiveEditorFunctions archive, bool hideHelp)
        {
            InitializeComponent();
            TopMost = true;

            this.asset   = asset;
            this.archive = archive;

            DynamicTypeDescriptor dt = new DynamicTypeDescriptor(asset.GetType());

            asset.SetDynamicProperties(dt);
            propertyGridAsset.SelectedObject = dt.FromComponent(asset);

            labelAssetName.Text = $"[{asset.AHDR.assetType.ToString()}] {asset.ToString()}";

            propertyGridAsset.HelpVisible = !hideHelp;

            if (asset is AssetCAM cam)
            {
                SetupForCam(cam);
            }
            else if (asset is AssetCSN csn)
            {
                SetupForCsn(csn);
            }
            else if (asset is AssetGRUP grup)
            {
                SetupForGrup(grup);
            }
            else if (asset is AssetRenderWareModel arwm)
            {
                SetupForModel(arwm);
            }
            else if (asset is AssetSHRP shrp)
            {
                SetupForShrp(shrp);
            }
            else if (asset is AssetWIRE wire)
            {
                SetupForWire(wire);
            }

            Button buttonHelp = new Button()
            {
                Dock = DockStyle.Fill, Text = "Open Wiki Page", AutoSize = true
            };

            buttonHelp.Click += (object sender, EventArgs e) =>
                                System.Diagnostics.Process.Start(AboutBox.WikiLink + asset.AHDR.assetType.ToString());
            tableLayoutPanel1.Controls.Add(buttonHelp, 0, tableLayoutPanel1.RowCount - 1);

            Button buttonFindCallers = new Button()
            {
                Dock = DockStyle.Fill, Text = "Find Who Targets Me", AutoSize = true
            };

            buttonFindCallers.Click += (object sender, EventArgs e) =>
                                       Program.MainForm.FindWhoTargets(GetAssetID());
            tableLayoutPanel1.Controls.Add(buttonFindCallers, 1, tableLayoutPanel1.RowCount - 1);
        }
Ejemplo n.º 2
0
        private void ApplyDynamicTypeDescriptorToPropertyView()
        {
            if (m_CurrentObject == null)
            {
                return;
            }

            var designerType      = m_CurrentObject.GetType();
            var isDesignerDefault = designerType == typeof(DefaultCommandProperties);

            var command = isDesignerDefault ? ((CommandProperties)m_CurrentObject).Command : null;

            DynamicTypeDescriptor dt = isDesignerDefault ?
                                       new DynamicTypeDescriptor(command.GetType()) :
                                       new DynamicTypeDescriptor(m_CurrentObject.GetType());

            m_CurrentObject.HideProperties(ref dt);
            m_CurrentObject.OnPropertiesModified();

            propertyGrid.SelectedObject = isDesignerDefault ?
                                          dt.FromComponent(command) :
                                          dt.FromComponent(m_CurrentObject);
        }
Ejemplo n.º 3
0
        private void UpdateInterfaceFromRandomizer()
        {
            if (InvokeRequired)
            {
                Invoke(new Action(UpdateInterfaceFromRandomizer));
                return;
            }
            programIsChangingStuff = true;

            comboBoxGame.SelectedIndex = randomizer.game;

            if (string.IsNullOrEmpty(backupDir))
            {
                labelBackupDir.Text = "Backup Directory: None";
            }
            else
            {
                labelBackupDir.Text = "Backup Directory: " + backupDir;
            }

            if (!string.IsNullOrEmpty(randomizer.rootDir))
            {
                if (randomizer.isDir)
                {
                    labelRootDir.Text     = "Game Directory: " + randomizer.rootDir;
                    buttonPerform.Enabled = true;
                }
                else
                {
                    labelRootDir.Text     = "File: " + randomizer.rootDir;
                    buttonPerform.Enabled = true;
                }
            }
            else
            {
                buttonPerform.Enabled = false;
            }

            textBoxSeed.Text = randomizer.seedText;
            labelSeed.Text   = "Seed: " + randomizer.seed.ToString();

            DynamicTypeDescriptor dt = new DynamicTypeDescriptor(randomizer.settings.GetType());

            randomizer.settings.SetDynamicProperties(dt, comboBoxGame.SelectedIndex);
            propertyGridSettings.SelectedObject = dt.FromComponent(randomizer.settings);

            programIsChangingStuff = false;
        }
Ejemplo n.º 4
0
        private void propertyGrid_PropertyValueChanged(object sender, PropertyValueChangedEventArgs e)
        {
            DynamicTypeDescriptor dt = new DynamicTypeDescriptor(m_CurrentObjectType);

            m_CurrentObject.HideProperties(ref dt);

            if (sender != null) // If it was modified from UI, call the callback. In other cases we don't want to do that.
            {
                m_CurrentObject.OnPropertiesModified();
            }

            propertyGrid.BeginInvokeIfCreated(new MethodInvoker(() =>
            {
                propertyGrid.SelectedObject = dt.FromComponent(m_CurrentObject);
            }));
        }
Ejemplo n.º 5
0
        public InternalMultiAssetEditor(Asset[] assets, ArchiveEditorFunctions archive)
        {
            InitializeComponent();
            TopMost = true;

            assetIDs     = (from Asset a in assets select a.assetID).ToArray();
            this.archive = archive;

            var typeDescriptors = new List <DynamicTypeDescriptor>();

            labelAssetName.Text = "";

            foreach (var asset in assets)
            {
                DynamicTypeDescriptor dt = new DynamicTypeDescriptor(asset.GetType());
                asset.SetDynamicProperties(dt);
                typeDescriptors.Add(dt.FromComponent(asset));
            }

            propertyGridAsset.SelectedObjects = typeDescriptors.ToArray();
            labelAssetName.Text = string.Join(" | ", from Asset asset in assets select asset.assetName);
        }