From 400937a2ac1c99dbd8cf65c674c1085ba06afd09 Mon Sep 17 00:00:00 2001 From: Janworks Date: Tue, 15 Aug 2017 17:35:05 +0200 Subject: [PATCH] Replaced custom node backgrounds by custom node types, allowing also to configure the legend labels --- AoETechTreeTool/AoETechTreeTool.csproj | 3 - AoETechTreeTool/DesignForm.Designer.cs | 185 +++++++++++++++---------- AoETechTreeTool/DesignForm.cs | 146 +++++++++---------- AoETechTreeTool/DesignForm.resx | 4 +- AoETechTreeTool/MainForm.Designer.cs | 24 ++-- AoETechTreeTool/MainForm.cs | 41 +++--- AoETechTreeTool/age2_x1.techtreedesign | Bin 1237 -> 1262 bytes GenieLibrary | 2 +- IORAMHelper | 2 +- LICENSE | 2 +- README.md | 2 +- 11 files changed, 227 insertions(+), 184 deletions(-) diff --git a/AoETechTreeTool/AoETechTreeTool.csproj b/AoETechTreeTool/AoETechTreeTool.csproj index 5320f12..6ff47ce 100644 --- a/AoETechTreeTool/AoETechTreeTool.csproj +++ b/AoETechTreeTool/AoETechTreeTool.csproj @@ -120,9 +120,6 @@ - - - copy "$(SolutionDir)README.md" "$(ProjectDir)$(OutDir)" diff --git a/AoETechTreeTool/DesignForm.Designer.cs b/AoETechTreeTool/DesignForm.Designer.cs index 393f2b1..f5fc667 100644 --- a/AoETechTreeTool/DesignForm.Designer.cs +++ b/AoETechTreeTool/DesignForm.Designer.cs @@ -68,11 +68,12 @@ private void InitializeComponent() this._scrollRightButtonLabel = new System.Windows.Forms.Label(); this._scrollLeftButtonLabel = new System.Windows.Forms.Label(); this._closeButtonLabel = new System.Windows.Forms.Label(); - this._nodeBackgroundsListBox = new System.Windows.Forms.ListBox(); - this._addNodeBackgroundButton = new System.Windows.Forms.Button(); - this._deleteNodeBackgroundButton = new System.Windows.Forms.Button(); + this._nodeTypesListBox = new System.Windows.Forms.ListBox(); + this._addNodeTypeButton = new System.Windows.Forms.Button(); + this._deleteNodeTypeButton = new System.Windows.Forms.Button(); this._nodeBackgroundNameLabel = new System.Windows.Forms.Label(); this._nodeBackgroundIndexLabel = new System.Windows.Forms.Label(); + this._nodeTypeLegendLabelDllIdLabel = new System.Windows.Forms.Label(); this._scrollSettingsGroupBox = new System.Windows.Forms.GroupBox(); this._keyboardScrollAmountBox = new System.Windows.Forms.NumericUpDown(); this._mouseScrollAmountBox = new System.Windows.Forms.NumericUpDown(); @@ -113,8 +114,9 @@ private void InitializeComponent() this._resolutionSettingsGrid = new System.Windows.Forms.PropertyGrid(); this._minimumResolutionBox = new System.Windows.Forms.NumericUpDown(); this._nodeSettingsGroupBox = new System.Windows.Forms.GroupBox(); - this._nodeBackgroundNameBox = new System.Windows.Forms.TextBox(); - this._nodeBackgroundIndexField = new System.Windows.Forms.NumericUpDown(); + this._nodeTypeNameBox = new System.Windows.Forms.TextBox(); + this._nodeTypeIndexField = new System.Windows.Forms.NumericUpDown(); + this._nodeTypeLegendLabelDllIdBox = new System.Windows.Forms.NumericUpDown(); this._menuPanel.SuspendLayout(); this._slpGroupBox.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this._slpLegendDisabledIdBox)).BeginInit(); @@ -154,7 +156,8 @@ private void InitializeComponent() this._resolutionSettingsGroupBox.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)(this._minimumResolutionBox)).BeginInit(); this._nodeSettingsGroupBox.SuspendLayout(); - ((System.ComponentModel.ISupportInitialize)(this._nodeBackgroundIndexField)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this._nodeTypeIndexField)).BeginInit(); + ((System.ComponentModel.ISupportInitialize)(this._nodeTypeLegendLabelDllIdBox)).BeginInit(); this.SuspendLayout(); // // _menuPanel @@ -576,60 +579,71 @@ private void InitializeComponent() this._infoToolTip.SetToolTip(this._closeButtonLabel, "The position of the close button relative to the bottom right corner of the scree" + "n."); // - // _nodeBackgroundsListBox - // - this._nodeBackgroundsListBox.FormattingEnabled = true; - this._nodeBackgroundsListBox.Location = new System.Drawing.Point(9, 71); - this._nodeBackgroundsListBox.Name = "_nodeBackgroundsListBox"; - this._nodeBackgroundsListBox.Size = new System.Drawing.Size(289, 95); - this._nodeBackgroundsListBox.TabIndex = 6; - this._infoToolTip.SetToolTip(this._nodeBackgroundsListBox, resources.GetString("_nodeBackgroundsListBox.ToolTip")); - this._nodeBackgroundsListBox.SelectedIndexChanged += new System.EventHandler(this._nodeBackgroundsListBox_SelectedIndexChanged); - this._nodeBackgroundsListBox.Format += new System.Windows.Forms.ListControlConvertEventHandler(this._nodeBackgroundsListBox_Format); - // - // _addNodeBackgroundButton - // - this._addNodeBackgroundButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this._addNodeBackgroundButton.Location = new System.Drawing.Point(183, 19); - this._addNodeBackgroundButton.Name = "_addNodeBackgroundButton"; - this._addNodeBackgroundButton.Size = new System.Drawing.Size(55, 22); - this._addNodeBackgroundButton.TabIndex = 20; - this._addNodeBackgroundButton.Text = "add"; - this._infoToolTip.SetToolTip(this._addNodeBackgroundButton, "Adds a new node background setting."); - this._addNodeBackgroundButton.UseVisualStyleBackColor = true; - this._addNodeBackgroundButton.Click += new System.EventHandler(this._addNodeBackgroundButton_Click); - // - // _deleteNodeBackgroundButton - // - this._deleteNodeBackgroundButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); - this._deleteNodeBackgroundButton.Location = new System.Drawing.Point(244, 19); - this._deleteNodeBackgroundButton.Name = "_deleteNodeBackgroundButton"; - this._deleteNodeBackgroundButton.Size = new System.Drawing.Size(55, 22); - this._deleteNodeBackgroundButton.TabIndex = 21; - this._deleteNodeBackgroundButton.Text = "delete"; - this._infoToolTip.SetToolTip(this._deleteNodeBackgroundButton, "Deletes a node background setting."); - this._deleteNodeBackgroundButton.UseVisualStyleBackColor = true; - this._deleteNodeBackgroundButton.Click += new System.EventHandler(this._deleteNodeBackgroundButton_Click); + // _nodeTypesListBox + // + this._nodeTypesListBox.FormattingEnabled = true; + this._nodeTypesListBox.Location = new System.Drawing.Point(9, 71); + this._nodeTypesListBox.Name = "_nodeTypesListBox"; + this._nodeTypesListBox.Size = new System.Drawing.Size(289, 95); + this._nodeTypesListBox.TabIndex = 6; + this._infoToolTip.SetToolTip(this._nodeTypesListBox, resources.GetString("_nodeTypesListBox.ToolTip")); + this._nodeTypesListBox.SelectedIndexChanged += new System.EventHandler(this._nodeTypesListBox_SelectedIndexChanged); + this._nodeTypesListBox.Format += new System.Windows.Forms.ListControlConvertEventHandler(this._nodeTypesListBox_Format); + // + // _addNodeTypeButton + // + this._addNodeTypeButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this._addNodeTypeButton.Location = new System.Drawing.Point(183, 19); + this._addNodeTypeButton.Name = "_addNodeTypeButton"; + this._addNodeTypeButton.Size = new System.Drawing.Size(55, 22); + this._addNodeTypeButton.TabIndex = 20; + this._addNodeTypeButton.Text = "add"; + this._infoToolTip.SetToolTip(this._addNodeTypeButton, "Adds a new node type setting."); + this._addNodeTypeButton.UseVisualStyleBackColor = true; + this._addNodeTypeButton.Click += new System.EventHandler(this._addNodeTypeButton_Click); + // + // _deleteNodeTypeButton + // + this._deleteNodeTypeButton.Font = new System.Drawing.Font("Microsoft Sans Serif", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0))); + this._deleteNodeTypeButton.Location = new System.Drawing.Point(244, 19); + this._deleteNodeTypeButton.Name = "_deleteNodeTypeButton"; + this._deleteNodeTypeButton.Size = new System.Drawing.Size(55, 22); + this._deleteNodeTypeButton.TabIndex = 21; + this._deleteNodeTypeButton.Text = "delete"; + this._infoToolTip.SetToolTip(this._deleteNodeTypeButton, "Deletes a node type setting."); + this._deleteNodeTypeButton.UseVisualStyleBackColor = true; + this._deleteNodeTypeButton.Click += new System.EventHandler(this._deleteNodeTypeButton_Click); // // _nodeBackgroundNameLabel // this._nodeBackgroundNameLabel.AutoSize = true; - this._nodeBackgroundNameLabel.Location = new System.Drawing.Point(6, 48); + this._nodeBackgroundNameLabel.Location = new System.Drawing.Point(6, 23); this._nodeBackgroundNameLabel.Name = "_nodeBackgroundNameLabel"; - this._nodeBackgroundNameLabel.Size = new System.Drawing.Size(97, 13); + this._nodeBackgroundNameLabel.Size = new System.Drawing.Size(88, 13); this._nodeBackgroundNameLabel.TabIndex = 18; - this._nodeBackgroundNameLabel.Text = "Background name:"; - this._infoToolTip.SetToolTip(this._nodeBackgroundNameLabel, "The name of the background setting. Only for display in this editor."); + this._nodeBackgroundNameLabel.Text = "Node type name:"; + this._infoToolTip.SetToolTip(this._nodeBackgroundNameLabel, "The name of the node type. Only for display in this editor."); // // _nodeBackgroundIndexLabel // this._nodeBackgroundIndexLabel.AutoSize = true; - this._nodeBackgroundIndexLabel.Location = new System.Drawing.Point(6, 22); + this._nodeBackgroundIndexLabel.Location = new System.Drawing.Point(6, 48); this._nodeBackgroundIndexLabel.Name = "_nodeBackgroundIndexLabel"; this._nodeBackgroundIndexLabel.Size = new System.Drawing.Size(125, 13); this._nodeBackgroundIndexLabel.TabIndex = 2; this._nodeBackgroundIndexLabel.Text = "Background frame index:"; this._infoToolTip.SetToolTip(this._nodeBackgroundIndexLabel, resources.GetString("_nodeBackgroundIndexLabel.ToolTip")); + // + // _nodeTypeLegendLabelDllIdLabel + // + this._nodeTypeLegendLabelDllIdLabel.AutoSize = true; + this._nodeTypeLegendLabelDllIdLabel.Location = new System.Drawing.Point(182, 48); + this._nodeTypeLegendLabelDllIdLabel.Name = "_nodeTypeLegendLabelDllIdLabel"; + this._nodeTypeLegendLabelDllIdLabel.Size = new System.Drawing.Size(44, 13); + this._nodeTypeLegendLabelDllIdLabel.TabIndex = 23; + this._nodeTypeLegendLabelDllIdLabel.Text = "DLL-ID:"; + this._infoToolTip.SetToolTip(this._nodeTypeLegendLabelDllIdLabel, "The language DLL string ID of the node label displayed at the bottom of the legen" + + "d.\r\nDefaults:\r\n20120 - \"TECHNOLOGIES\"\r\n20121 - \"UNITS\"\r\n20122 - \"BUILDINGS\""); // // _scrollSettingsGroupBox // @@ -1222,6 +1236,7 @@ private void InitializeComponent() // // _resolutionSettingsGrid // + this._resolutionSettingsGrid.LineColor = System.Drawing.SystemColors.ControlDark; this._resolutionSettingsGrid.Location = new System.Drawing.Point(5, 49); this._resolutionSettingsGrid.Name = "_resolutionSettingsGrid"; this._resolutionSettingsGrid.Size = new System.Drawing.Size(415, 430); @@ -1249,12 +1264,14 @@ private void InitializeComponent() // // _nodeSettingsGroupBox // - this._nodeSettingsGroupBox.Controls.Add(this._deleteNodeBackgroundButton); - this._nodeSettingsGroupBox.Controls.Add(this._addNodeBackgroundButton); - this._nodeSettingsGroupBox.Controls.Add(this._nodeBackgroundsListBox); - this._nodeSettingsGroupBox.Controls.Add(this._nodeBackgroundNameBox); + this._nodeSettingsGroupBox.Controls.Add(this._nodeTypeLegendLabelDllIdBox); + this._nodeSettingsGroupBox.Controls.Add(this._nodeTypeLegendLabelDllIdLabel); + this._nodeSettingsGroupBox.Controls.Add(this._deleteNodeTypeButton); + this._nodeSettingsGroupBox.Controls.Add(this._addNodeTypeButton); + this._nodeSettingsGroupBox.Controls.Add(this._nodeTypesListBox); + this._nodeSettingsGroupBox.Controls.Add(this._nodeTypeNameBox); this._nodeSettingsGroupBox.Controls.Add(this._nodeBackgroundNameLabel); - this._nodeSettingsGroupBox.Controls.Add(this._nodeBackgroundIndexField); + this._nodeSettingsGroupBox.Controls.Add(this._nodeTypeIndexField); this._nodeSettingsGroupBox.Controls.Add(this._nodeBackgroundIndexLabel); this._nodeSettingsGroupBox.Controls.Add(this._nodeFontBox); this._nodeSettingsGroupBox.Controls.Add(this._nodeFontLabel); @@ -1265,36 +1282,59 @@ private void InitializeComponent() this._nodeSettingsGroupBox.TabStop = false; this._nodeSettingsGroupBox.Text = "Node settings"; // - // _nodeBackgroundNameBox + // _nodeTypeNameBox // - this._nodeBackgroundNameBox.Location = new System.Drawing.Point(109, 45); - this._nodeBackgroundNameBox.Name = "_nodeBackgroundNameBox"; - this._nodeBackgroundNameBox.Size = new System.Drawing.Size(189, 20); - this._nodeBackgroundNameBox.TabIndex = 19; - this._nodeBackgroundNameBox.TextChanged += new System.EventHandler(this._nodeBackgroundNameBox_TextChanged); + this._nodeTypeNameBox.Location = new System.Drawing.Point(97, 20); + this._nodeTypeNameBox.Name = "_nodeTypeNameBox"; + this._nodeTypeNameBox.Size = new System.Drawing.Size(80, 20); + this._nodeTypeNameBox.TabIndex = 19; + this._nodeTypeNameBox.TextChanged += new System.EventHandler(this._nodeTypeNameBox_TextChanged); // - // _nodeBackgroundIndexField + // _nodeTypeIndexField // - this._nodeBackgroundIndexField.Location = new System.Drawing.Point(137, 20); - this._nodeBackgroundIndexField.Maximum = new decimal(new int[] { + this._nodeTypeIndexField.Location = new System.Drawing.Point(137, 46); + this._nodeTypeIndexField.Maximum = new decimal(new int[] { 999, 0, 0, 0}); - this._nodeBackgroundIndexField.Minimum = new decimal(new int[] { + this._nodeTypeIndexField.Minimum = new decimal(new int[] { 1, 0, 0, -2147483648}); - this._nodeBackgroundIndexField.Name = "_nodeBackgroundIndexField"; - this._nodeBackgroundIndexField.Size = new System.Drawing.Size(39, 20); - this._nodeBackgroundIndexField.TabIndex = 17; - this._nodeBackgroundIndexField.Value = new decimal(new int[] { + this._nodeTypeIndexField.Name = "_nodeTypeIndexField"; + this._nodeTypeIndexField.Size = new System.Drawing.Size(39, 20); + this._nodeTypeIndexField.TabIndex = 17; + this._nodeTypeIndexField.Value = new decimal(new int[] { 999, 0, 0, 0}); - this._nodeBackgroundIndexField.ValueChanged += new System.EventHandler(this._nodeBackgroundIndexField_ValueChanged); + this._nodeTypeIndexField.ValueChanged += new System.EventHandler(this._nodeTypeIndexField_ValueChanged); + // + // _nodeTypeLegendLabelDllIdBox + // + this._nodeTypeLegendLabelDllIdBox.Location = new System.Drawing.Point(232, 46); + this._nodeTypeLegendLabelDllIdBox.Maximum = new decimal(new int[] { + 9999999, + 0, + 0, + 0}); + this._nodeTypeLegendLabelDllIdBox.Minimum = new decimal(new int[] { + 1, + 0, + 0, + -2147483648}); + this._nodeTypeLegendLabelDllIdBox.Name = "_nodeTypeLegendLabelDllIdBox"; + this._nodeTypeLegendLabelDllIdBox.Size = new System.Drawing.Size(66, 20); + this._nodeTypeLegendLabelDllIdBox.TabIndex = 24; + this._nodeTypeLegendLabelDllIdBox.Value = new decimal(new int[] { + 9999999, + 0, + 0, + 0}); + this._nodeTypeLegendLabelDllIdBox.ValueChanged += new System.EventHandler(this._nodeTypeLegendLabelDllIdBox_ValueChanged); // // DesignForm // @@ -1359,7 +1399,8 @@ private void InitializeComponent() ((System.ComponentModel.ISupportInitialize)(this._minimumResolutionBox)).EndInit(); this._nodeSettingsGroupBox.ResumeLayout(false); this._nodeSettingsGroupBox.PerformLayout(); - ((System.ComponentModel.ISupportInitialize)(this._nodeBackgroundIndexField)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this._nodeTypeIndexField)).EndInit(); + ((System.ComponentModel.ISupportInitialize)(this._nodeTypeLegendLabelDllIdBox)).EndInit(); this.ResumeLayout(false); } @@ -1446,10 +1487,12 @@ private void InitializeComponent() private System.Windows.Forms.GroupBox _nodeSettingsGroupBox; private System.Windows.Forms.Label _nodeBackgroundIndexLabel; private System.Windows.Forms.Label _nodeBackgroundNameLabel; - private System.Windows.Forms.NumericUpDown _nodeBackgroundIndexField; - private System.Windows.Forms.TextBox _nodeBackgroundNameBox; - private System.Windows.Forms.ListBox _nodeBackgroundsListBox; - private System.Windows.Forms.Button _addNodeBackgroundButton; - private System.Windows.Forms.Button _deleteNodeBackgroundButton; + private System.Windows.Forms.NumericUpDown _nodeTypeIndexField; + private System.Windows.Forms.TextBox _nodeTypeNameBox; + private System.Windows.Forms.ListBox _nodeTypesListBox; + private System.Windows.Forms.Button _addNodeTypeButton; + private System.Windows.Forms.Button _deleteNodeTypeButton; + private System.Windows.Forms.Label _nodeTypeLegendLabelDllIdLabel; + private System.Windows.Forms.NumericUpDown _nodeTypeLegendLabelDllIdBox; } } \ No newline at end of file diff --git a/AoETechTreeTool/DesignForm.cs b/AoETechTreeTool/DesignForm.cs index 78823e4..60c278b 100644 --- a/AoETechTreeTool/DesignForm.cs +++ b/AoETechTreeTool/DesignForm.cs @@ -43,7 +43,7 @@ public DesignForm(GenieLibrary.GenieFile datFile) InitializeComponent(); // Load existing design, fill controls - _datFile=datFile; + _datFile = datFile; RefillControlsFromData(); } @@ -102,17 +102,17 @@ private void RefillControlsFromData() foreach(var currRes in _datFile.TechTreeNew.DesignData.ResolutionData) _resolutionListBox.Items.Add(currRes.Key); - // Fill node background list box - _nodeBackgroundsListBox.Items.Clear(); - foreach(var currNB in _datFile.TechTreeNew.DesignData.NodeBackgrounds) - _nodeBackgroundsListBox.Items.Add(currNB); + // Fill node type list box + _nodeTypesListBox.Items.Clear(); + foreach(var currNB in _datFile.TechTreeNew.DesignData.NodeTypes) + _nodeTypesListBox.Items.Add(currNB); // Updating finished _updating = false; // Select 0 elements _resolutionListBox.SelectedItem = 0; - _nodeBackgroundsListBox.SelectedIndex = 0; + _nodeTypesListBox.SelectedIndex = 0; } #endregion @@ -158,7 +158,7 @@ private void _importDesignButton_Click(object sender, EventArgs e) return; // Load data and update tree view - try + //try { // Load data from file IORAMHelper.RAMBuffer buffer = new IORAMHelper.RAMBuffer(_openDesignDialog.FileName); @@ -168,10 +168,10 @@ private void _importDesignButton_Click(object sender, EventArgs e) // Update view RefillControlsFromData(); } - catch(Exception ex) + //catch(Exception ex) { // Message - MessageBox.Show("Error importing tech tree design: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); + // MessageBox.Show("Error importing tech tree design: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } } @@ -407,7 +407,10 @@ private void _addResolutionButton_Click(object sender, EventArgs e) CivBonusLabelRectangle = selectedResConf.CivBonusLabelRectangle, CivSelectionComboBoxRectangle = selectedResConf.CivSelectionComboBoxRectangle, CivSelectionTitleLabelRectangle = selectedResConf.CivSelectionTitleLabelRectangle, - LegendLabelRectangles = new List(selectedResConf.LegendLabelRectangles), + LegendNotResearchedLabelRectangle = selectedResConf.LegendNotResearchedLabelRectangle, + LegendResearchedLabelRectangle = selectedResConf.LegendResearchedLabelRectangle, + LegendNodeTypeLabelRectangles = new List(selectedResConf.LegendNodeTypeLabelRectangles), + LegendDisabledLabelRectangle = selectedResConf.LegendDisabledLabelRectangle, AgeLabelRectangles = new List(selectedResConf.AgeLabelRectangles), VerticalDrawOffsets = new List(selectedResConf.VerticalDrawOffsets) }; @@ -463,7 +466,23 @@ private void _resolutionSettingsGrid_Leave(object sender, EventArgs e) MessageBox.Show("Warning: There must be at least three age draw offsets!", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); } - private void _nodeBackgroundIndexField_ValueChanged(object sender, EventArgs e) + private void _nodeTypeIndexField_ValueChanged(object sender, EventArgs e) + { + // Updating + if(_updating) + return; + _updating = true; + + // Fetch and update current element + TechTreeNew.TechTreeDesign.NodeType selectedNodeType = _datFile.TechTreeNew.DesignData.NodeTypes[_nodeTypesListBox.SelectedIndex]; + selectedNodeType.FrameIndex = (int)_nodeTypeIndexField.Value; + _nodeTypesListBox.Items[_nodeTypesListBox.SelectedIndex] = selectedNodeType; + + // Finished + _updating = false; + } + + private void _nodeTypeNameBox_TextChanged(object sender, EventArgs e) { // Updating if(_updating) @@ -471,15 +490,15 @@ private void _nodeBackgroundIndexField_ValueChanged(object sender, EventArgs e) _updating = true; // Fetch and update current element - TechTreeNew.TechTreeDesign.NodeBackground selectedNodeBackground = _datFile.TechTreeNew.DesignData.NodeBackgrounds[_nodeBackgroundsListBox.SelectedIndex]; - selectedNodeBackground.FrameIndex = (int)_nodeBackgroundIndexField.Value; - _nodeBackgroundsListBox.Items[_nodeBackgroundsListBox.SelectedIndex] = selectedNodeBackground; + TechTreeNew.TechTreeDesign.NodeType selectedNodeType = _datFile.TechTreeNew.DesignData.NodeTypes[_nodeTypesListBox.SelectedIndex]; + selectedNodeType.Name = _nodeTypeNameBox.Text; + _nodeTypesListBox.Items[_nodeTypesListBox.SelectedIndex] = selectedNodeType; // Finished _updating = false; } - private void _nodeBackgroundNameBox_TextChanged(object sender, EventArgs e) + private void _nodeTypeLegendLabelDllIdBox_ValueChanged(object sender, EventArgs e) { // Updating if(_updating) @@ -487,15 +506,15 @@ private void _nodeBackgroundNameBox_TextChanged(object sender, EventArgs e) _updating = true; // Fetch and update current element - TechTreeNew.TechTreeDesign.NodeBackground selectedNodeBackground = _datFile.TechTreeNew.DesignData.NodeBackgrounds[_nodeBackgroundsListBox.SelectedIndex]; - selectedNodeBackground.Name = _nodeBackgroundNameBox.Text; - _nodeBackgroundsListBox.Items[_nodeBackgroundsListBox.SelectedIndex] = selectedNodeBackground; + TechTreeNew.TechTreeDesign.NodeType selectedNodeType = _datFile.TechTreeNew.DesignData.NodeTypes[_nodeTypesListBox.SelectedIndex]; + selectedNodeType.LegendLabelDllId = (int)_nodeTypeLegendLabelDllIdBox.Value; + _nodeTypesListBox.Items[_nodeTypesListBox.SelectedIndex] = selectedNodeType; // Finished _updating = false; } - private void _nodeBackgroundsListBox_SelectedIndexChanged(object sender, EventArgs e) + private void _nodeTypesListBox_SelectedIndexChanged(object sender, EventArgs e) { // Prevent accidental changes if(_updating) @@ -503,52 +522,54 @@ private void _nodeBackgroundsListBox_SelectedIndexChanged(object sender, EventAr _updating = true; // Select first item if none is selected - if(_nodeBackgroundsListBox.SelectedItem == null) - _nodeBackgroundsListBox.SelectedIndex = 0; + if(_nodeTypesListBox.SelectedItem == null) + _nodeTypesListBox.SelectedIndex = 0; // Fill controls - TechTreeNew.TechTreeDesign.NodeBackground selectedNodeBackground = _datFile.TechTreeNew.DesignData.NodeBackgrounds[_nodeBackgroundsListBox.SelectedIndex]; - _nodeBackgroundNameBox.Text = selectedNodeBackground.Name; - _nodeBackgroundIndexField.Value = selectedNodeBackground.FrameIndex; + TechTreeNew.TechTreeDesign.NodeType selectedNodeType = _datFile.TechTreeNew.DesignData.NodeTypes[_nodeTypesListBox.SelectedIndex]; + _nodeTypeNameBox.Text = selectedNodeType.Name; + _nodeTypeIndexField.Value = selectedNodeType.FrameIndex; + _nodeTypeLegendLabelDllIdBox.Value = selectedNodeType.LegendLabelDllId; // Finished _updating = false; } - private void _nodeBackgroundsListBox_Format(object sender, ListControlConvertEventArgs e) + private void _nodeTypesListBox_Format(object sender, ListControlConvertEventArgs e) { // Display whole element data - var selectedNodeBackground = (TechTreeNew.TechTreeDesign.NodeBackground)e.ListItem; + var selectedNodeType = (TechTreeNew.TechTreeDesign.NodeType)e.ListItem; if(e.DesiredType == typeof(string)) - e.Value = $"[{_nodeBackgroundsListBox.Items.IndexOf(selectedNodeBackground)}] Frame {selectedNodeBackground.FrameIndex}: {selectedNodeBackground.Name}"; + e.Value = $"[{_nodeTypesListBox.Items.IndexOf(selectedNodeType)}] Frame {selectedNodeType.FrameIndex}: {selectedNodeType.Name}, DLL: {selectedNodeType.LegendLabelDllId}"; } - private void _addNodeBackgroundButton_Click(object sender, EventArgs e) + private void _addNodeTypeButton_Click(object sender, EventArgs e) { - // Create new node background data object based on selected one - TechTreeNew.TechTreeDesign.NodeBackground selectedNodeBackground = _datFile.TechTreeNew.DesignData.NodeBackgrounds[_nodeBackgroundsListBox.SelectedIndex]; - TechTreeNew.TechTreeDesign.NodeBackground newNodeBackground = new TechTreeNew.TechTreeDesign.NodeBackground() + // Create new node type data object based on selected one + TechTreeNew.TechTreeDesign.NodeType selectedNodeType = _datFile.TechTreeNew.DesignData.NodeTypes[_nodeTypesListBox.SelectedIndex]; + TechTreeNew.TechTreeDesign.NodeType newNodeType = new TechTreeNew.TechTreeDesign.NodeType() { - Name = selectedNodeBackground.Name, - FrameIndex = selectedNodeBackground.FrameIndex + Name = selectedNodeType.Name, + FrameIndex = selectedNodeType.FrameIndex, + LegendLabelDllId = selectedNodeType.LegendLabelDllId }; // Add object to list box and to internal list - _datFile.TechTreeNew.DesignData.NodeBackgrounds.Add(newNodeBackground); - _nodeBackgroundsListBox.Items.Add(newNodeBackground); - _nodeBackgroundsListBox.SelectedItem = newNodeBackground; + _datFile.TechTreeNew.DesignData.NodeTypes.Add(newNodeType); + _nodeTypesListBox.Items.Add(newNodeType); + _nodeTypesListBox.SelectedItem = newNodeType; } - private void _deleteNodeBackgroundButton_Click(object sender, EventArgs e) + private void _deleteNodeTypeButton_Click(object sender, EventArgs e) { // Element selected? // Also deny deletion if there are only three elements left - if(_nodeBackgroundsListBox.SelectedItems.Count == 0 || _nodeBackgroundsListBox.Items.Count <= 3) + if(_nodeTypesListBox.SelectedItems.Count == 0 || _nodeTypesListBox.Items.Count <= 3) return; // Delete element - _datFile.TechTreeNew.DesignData.NodeBackgrounds.Remove((TechTreeNew.TechTreeDesign.NodeBackground)_nodeBackgroundsListBox.SelectedItem); - _nodeBackgroundsListBox.Items.Remove(_nodeBackgroundsListBox.SelectedItem); + _datFile.TechTreeNew.DesignData.NodeTypes.Remove((TechTreeNew.TechTreeDesign.NodeType)_nodeTypesListBox.SelectedItem); + _nodeTypesListBox.Items.Remove(_nodeTypesListBox.SelectedItem); } #endregion @@ -598,32 +619,22 @@ public class PropertyGridResolutionData [Category("Legend bottom")] [DisplayName("\"Not researched\" label rectangle")] [Description("The rectangle of the \"Not researched\" label.")] - public Rectangle LegendLabelRectangle1 { get; set; } + public Rectangle LegendNotResearchedLabelRectangle { get; set; } [Category("Legend bottom")] [DisplayName("\"Researched\" label rectangle")] [Description("The rectangle of the \"Researched\" label.")] - public Rectangle LegendLabelRectangle2 { get; set; } - - [Category("Legend bottom")] - [DisplayName("\"Units\" label rectangle")] - [Description("The rectangle of the \"Units\" label.")] - public Rectangle LegendLabelRectangle3 { get; set; } - - [Category("Legend bottom")] - [DisplayName("\"Buildings\" label rectangle")] - [Description("The rectangle of the \"Buildings\" label.")] - public Rectangle LegendLabelRectangle4 { get; set; } + public Rectangle LegendResearchedLabelRectangle { get; set; } [Category("Legend bottom")] - [DisplayName("\"Technologies\" label rectangle")] - [Description("The rectangle of the \"Technologies\" label.")] - public Rectangle LegendLabelRectangle5 { get; set; } + [DisplayName("Node type label rectangles")] + [Description("The rectangles of the different node type labels.")] + public List LegendNodeTypeLabelRectangles { get; set; } // RectangleF because the collection editor does not work properly with Rectangle for strange reasons [Category("Legend bottom")] [DisplayName("\"Not available\" label rectangle")] [Description("The rectangle of the \"Not available\" label.")] - public Rectangle LegendLabelRectangle6 { get; set; } + public Rectangle LegendDisabledLabelRectangle { get; set; } [Category("Tree drawing related")] [DisplayName("Age label rectangles")] @@ -645,12 +656,10 @@ public PropertyGridResolutionData(TechTreeNew.TechTreeDesign.ResolutionConfigura CivBonusLabelRectangle = config.CivBonusLabelRectangle; CivSelectionComboBoxRectangle = config.CivSelectionComboBoxRectangle; CivSelectionTitleLabelRectangle = config.CivSelectionTitleLabelRectangle; - LegendLabelRectangle1 = config.LegendLabelRectangles[0]; - LegendLabelRectangle2 = config.LegendLabelRectangles[1]; - LegendLabelRectangle3 = config.LegendLabelRectangles[2]; - LegendLabelRectangle4 = config.LegendLabelRectangles[3]; - LegendLabelRectangle5 = config.LegendLabelRectangles[4]; - LegendLabelRectangle6 = config.LegendLabelRectangles[5]; + LegendNotResearchedLabelRectangle = config.LegendNotResearchedLabelRectangle; + LegendResearchedLabelRectangle = config.LegendResearchedLabelRectangle; + LegendNodeTypeLabelRectangles = new List(CastRectangleList(config.LegendNodeTypeLabelRectangles)); + LegendDisabledLabelRectangle = config.LegendDisabledLabelRectangle; AgeLabelRectangles = new List(CastRectangleList(config.AgeLabelRectangles)); VerticalDrawOffsets = new List(config.VerticalDrawOffsets); } @@ -667,15 +676,10 @@ public static implicit operator TechTreeNew.TechTreeDesign.ResolutionConfigurati CivBonusLabelRectangle = data.CivBonusLabelRectangle, CivSelectionComboBoxRectangle = data.CivSelectionComboBoxRectangle, CivSelectionTitleLabelRectangle = data.CivSelectionTitleLabelRectangle, - LegendLabelRectangles = new List(new Rectangle[] - { - data.LegendLabelRectangle1, - data.LegendLabelRectangle2, - data.LegendLabelRectangle3, - data.LegendLabelRectangle4, - data.LegendLabelRectangle5, - data.LegendLabelRectangle6 - }), + LegendNotResearchedLabelRectangle = data.LegendNotResearchedLabelRectangle, + LegendResearchedLabelRectangle = data.LegendResearchedLabelRectangle, + LegendNodeTypeLabelRectangles = new List(CastRectangleFList(data.LegendNodeTypeLabelRectangles)), + LegendDisabledLabelRectangle = data.LegendDisabledLabelRectangle, AgeLabelRectangles = new List(CastRectangleFList(data.AgeLabelRectangles)), VerticalDrawOffsets = new List(data.VerticalDrawOffsets) }; diff --git a/AoETechTreeTool/DesignForm.resx b/AoETechTreeTool/DesignForm.resx index ba80f64..bb7ac3e 100644 --- a/AoETechTreeTool/DesignForm.resx +++ b/AoETechTreeTool/DesignForm.resx @@ -150,8 +150,8 @@ Default frames: 4 - Research enabled (64x64) 5 - Research disabled (64x64) - - The different node backgrounds. Their index [*] is their ID at the same time, so the order is important. + + The different node types. Their index [*] is their ID at the same time, so the order is important. Restrictions: - [0] should always be Research - [1] should always be Unit diff --git a/AoETechTreeTool/MainForm.Designer.cs b/AoETechTreeTool/MainForm.Designer.cs index 358f977..a7a3325 100644 --- a/AoETechTreeTool/MainForm.Designer.cs +++ b/AoETechTreeTool/MainForm.Designer.cs @@ -38,7 +38,7 @@ private void InitializeComponent() this._treeGroupBox = new System.Windows.Forms.GroupBox(); this._editPanel = new System.Windows.Forms.Panel(); this._nodeBoxGroupBox = new System.Windows.Forms.GroupBox(); - this._nodeBackgroundField = new System.Windows.Forms.ComboBox(); + this._nodeTypeField = new System.Windows.Forms.ComboBox(); this._requirementsGroupBox = new System.Windows.Forms.GroupBox(); this._requirementsView = new System.Windows.Forms.DataGridView(); this._requirementsViewTypeColumn = new System.Windows.Forms.DataGridViewComboBoxColumn(); @@ -189,23 +189,23 @@ private void InitializeComponent() // // _nodeBoxGroupBox // - this._nodeBoxGroupBox.Controls.Add(this._nodeBackgroundField); + this._nodeBoxGroupBox.Controls.Add(this._nodeTypeField); this._nodeBoxGroupBox.Location = new System.Drawing.Point(10, 192); this._nodeBoxGroupBox.Name = "_nodeBoxGroupBox"; this._nodeBoxGroupBox.Size = new System.Drawing.Size(218, 50); this._nodeBoxGroupBox.TabIndex = 17; this._nodeBoxGroupBox.TabStop = false; - this._nodeBoxGroupBox.Text = "Node background"; + this._nodeBoxGroupBox.Text = "Node background type"; // - // _nodeBackgroundField + // _nodeTypeField // - this._nodeBackgroundField.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; - this._nodeBackgroundField.FormattingEnabled = true; - this._nodeBackgroundField.Location = new System.Drawing.Point(8, 19); - this._nodeBackgroundField.Name = "_nodeBackgroundField"; - this._nodeBackgroundField.Size = new System.Drawing.Size(202, 21); - this._nodeBackgroundField.TabIndex = 0; - this._nodeBackgroundField.SelectedIndexChanged += new System.EventHandler(this._nodeBackgroundField_SelectedIndexChanged); + this._nodeTypeField.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList; + this._nodeTypeField.FormattingEnabled = true; + this._nodeTypeField.Location = new System.Drawing.Point(8, 19); + this._nodeTypeField.Name = "_nodeTypeField"; + this._nodeTypeField.Size = new System.Drawing.Size(202, 21); + this._nodeTypeField.TabIndex = 0; + this._nodeTypeField.SelectedIndexChanged += new System.EventHandler(this._nodeBackgroundField_SelectedIndexChanged); // // _requirementsGroupBox // @@ -663,7 +663,7 @@ private void InitializeComponent() private System.Windows.Forms.ToolStripMenuItem _entryDeleteMenuButton; private System.Windows.Forms.Button _designFormButton; private System.Windows.Forms.GroupBox _nodeBoxGroupBox; - private System.Windows.Forms.ComboBox _nodeBackgroundField; + private System.Windows.Forms.ComboBox _nodeTypeField; } } diff --git a/AoETechTreeTool/MainForm.cs b/AoETechTreeTool/MainForm.cs index dc0e6d8..df7b3ee 100644 --- a/AoETechTreeTool/MainForm.cs +++ b/AoETechTreeTool/MainForm.cs @@ -167,7 +167,7 @@ private void BuildTechTreeStructure() ElementType = nodeElement.ElementType, RenderMode = nodeElement.RenderMode, RequiredElements = new List>(nodeElement.RequiredElements), - NodeBackgroundIndex = nodeElement.NodeBackgroundIndex + NodeTypeIndex = nodeElement.NodeTypeIndex }; // Run through children @@ -352,8 +352,8 @@ private void _loadDataButton_Click(object sender, EventArgs e) _civsList.Items.Add(new KeyValuePair(i, _datFile.Civs[i].Name.Trim())); // Fill node background list box - _nodeBackgroundField.Items.Clear(); - _datFile.TechTreeNew.DesignData.NodeBackgrounds.ForEach(n => _nodeBackgroundField.Items.Add($"{n.Name}")); + _nodeTypeField.Items.Clear(); + _datFile.TechTreeNew.DesignData.NodeTypes.ForEach(n => _nodeTypeField.Items.Add($"{n.Name}")); } private void _saveDataButton_Click(object sender, EventArgs e) @@ -477,10 +477,10 @@ private void _treeView_AfterSelect(object sender, TreeViewEventArgs e) _requirementsView.Rows.Add("Unit", req.Item2.ToString()); else _requirementsView.Rows.Add("Research", req.Item2.ToString()); - if(_selectedElement.NodeBackgroundIndex < _nodeBackgroundField.Items.Count) - _nodeBackgroundField.SelectedIndex = _selectedElement.NodeBackgroundIndex; + if(_selectedElement.NodeTypeIndex < _nodeTypeField.Items.Count) + _nodeTypeField.SelectedIndex = _selectedElement.NodeTypeIndex; else - _nodeBackgroundField.SelectedIndex = _selectedElement.NodeBackgroundIndex = (int)_selectedElement.ElementType; + _nodeTypeField.SelectedIndex = _selectedElement.NodeTypeIndex = (int)_selectedElement.ElementType; _entryContextMenu.Tag = e.Node; // Update civs @@ -663,8 +663,8 @@ private void _typeUnitButton_CheckedChanged(object sender, EventArgs e) return; // Update item background index, if default one is selected - if(_nodeBackgroundField.SelectedIndex == (int)_selectedElement.ElementType) - _nodeBackgroundField.SelectedIndex = (int)TechTreeNew.TechTreeElement.ItemType.Creatable; + if(_nodeTypeField.SelectedIndex == (int)_selectedElement.ElementType) + _nodeTypeField.SelectedIndex = (int)TechTreeNew.TechTreeElement.ItemType.Creatable; // Change item type if(_typeUnitButton.Checked) @@ -681,8 +681,8 @@ private void _typeBuildingButton_CheckedChanged(object sender, EventArgs e) return; // Update item background index, if default one is selected - if(_nodeBackgroundField.SelectedIndex == (int)_selectedElement.ElementType) - _nodeBackgroundField.SelectedIndex = (int)TechTreeNew.TechTreeElement.ItemType.Building; + if(_nodeTypeField.SelectedIndex == (int)_selectedElement.ElementType) + _nodeTypeField.SelectedIndex = (int)TechTreeNew.TechTreeElement.ItemType.Building; // Change item type if(_typeBuildingButton.Checked) @@ -699,8 +699,8 @@ private void _typeResearchButton_CheckedChanged(object sender, EventArgs e) return; // Update item background index, if default one is selected - if(_nodeBackgroundField.SelectedIndex == (int)_selectedElement.ElementType) - _nodeBackgroundField.SelectedIndex = (int)TechTreeNew.TechTreeElement.ItemType.Research; + if(_nodeTypeField.SelectedIndex == (int)_selectedElement.ElementType) + _nodeTypeField.SelectedIndex = (int)TechTreeNew.TechTreeElement.ItemType.Research; // Change item type if(_typeResearchButton.Checked) @@ -975,8 +975,7 @@ private void _requirementsView_CellEndEdit(object sender, DataGridViewCellEventA ((DataGridViewComboBoxCell)row.Cells[0]).Value = "Research"; // Convert ID - short id; - if(!short.TryParse((string)row.Cells[1].Value, out id)) + if(!short.TryParse((string)row.Cells[1].Value, out short id)) { // Error if(!string.IsNullOrEmpty((string)row.Cells[1].Value)) @@ -1230,15 +1229,15 @@ private void _designFormButton_Click(object sender, EventArgs e) // Show form new DesignForm(_datFile).ShowDialog(); - // Update node background list + // Update node type list _updating = true; - _nodeBackgroundField.Items.Clear(); - _datFile.TechTreeNew.DesignData.NodeBackgrounds.ForEach(n => _nodeBackgroundField.Items.Add($"{n.Name}")); + _nodeTypeField.Items.Clear(); + _datFile.TechTreeNew.DesignData.NodeTypes.ForEach(n => _nodeTypeField.Items.Add($"{n.Name}")); if(_selectedElement != null) - if(_selectedElement.NodeBackgroundIndex < _nodeBackgroundField.Items.Count) - _nodeBackgroundField.SelectedIndex = _selectedElement.NodeBackgroundIndex; + if(_selectedElement.NodeTypeIndex < _nodeTypeField.Items.Count) + _nodeTypeField.SelectedIndex = _selectedElement.NodeTypeIndex; else - _nodeBackgroundField.SelectedIndex = _selectedElement.NodeBackgroundIndex = (int)_selectedElement.ElementType; + _nodeTypeField.SelectedIndex = _selectedElement.NodeTypeIndex = (int)_selectedElement.ElementType; _updating = false; } @@ -1249,7 +1248,7 @@ private void _nodeBackgroundField_SelectedIndexChanged(object sender, EventArgs return; // Update value - _selectedElement.NodeBackgroundIndex = _nodeBackgroundField.SelectedIndex; + _selectedElement.NodeTypeIndex = _nodeTypeField.SelectedIndex; } #endregion Event handlers diff --git a/AoETechTreeTool/age2_x1.techtreedesign b/AoETechTreeTool/age2_x1.techtreedesign index f15fe05ec0b25255882db9a4e730ab5d16faffc1..796b7da0ad1b5682aa78cd59d7e8aeac1dc08e5d 100644 GIT binary patch delta 130 zcmcc0`Hqv3aRV2lATt94!*U>IVq#!e0Hh@+vok7hwqjI(NbLa%)xxF1nUptoF+rtH z0Hs=i+9A4@Gb>NN#e835h93h13s5FBFS7)wk6|W|&jF;JN;7j(GV{`bOomxNF#x`V B7t{a% delta 82 zcmaFId6jb`BNyXjc}4}c^H+L{;GfqCvtiXB#$Zef` fhxwHZ3y>9>ms!FDq&a}tsWdYuB{MG_$YcNjKJOD9 diff --git a/GenieLibrary b/GenieLibrary index 19d155d..f8f34a3 160000 --- a/GenieLibrary +++ b/GenieLibrary @@ -1 +1 @@ -Subproject commit 19d155d46d9ebf251fba0385f4bfaec96bb0a8da +Subproject commit f8f34a3c82a228e105855b40f56d38d968e213f9 diff --git a/IORAMHelper b/IORAMHelper index ff415a3..8e0798b 160000 --- a/IORAMHelper +++ b/IORAMHelper @@ -1 +1 @@ -Subproject commit ff415a310d6c41ea2b9b293b463dbce910bed048 +Subproject commit 8e0798b8a250b95649704678a70d3f71f6dfe2d7 diff --git a/LICENSE b/LICENSE index 5cc2b2b..f24a02a 100644 --- a/LICENSE +++ b/LICENSE @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2016 Jan Wichelmann +Copyright (c) 2016-2017 Jan Wichelmann Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index e41a74f..94165b3 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ The files age2_x1.techtreedata and age2_x1.techtreedesign contain the vanilla te ## SYSTEM REQUIREMENTS -This software depends on the .NET Framework 4.0. It should already be installed on current windows systems; if not, you can find it here: https://www.microsoft.com/en-us/download/details.aspx?id=17718 +This software depends on the .NET Framework 4.5. It should already be installed on current Windows systems; if not, you can find it here: https://www.microsoft.com/en-us/download/details.aspx?id=30653 To find out if it is installed just start the program, it will tell you when the appropriate .NET Framework version is not found.