From 279ea8bb4fc463f39c0c8151e22579c1a2de3d24 Mon Sep 17 00:00:00 2001 From: WeylonSantana Date: Sat, 15 Mar 2025 00:40:53 -0300 Subject: [PATCH] added in between to static numeric variable comparison --- .../IntegerVariableComparison.cs | 3 +- .../GameObjects/Events/VariableComparator.cs | 2 + .../Conditions/ConditionControl_PlayerStat.cs | 5 +- .../ConditionControl_Variable.Designer.cs | 62 ++++++++++++++----- .../Conditions/ConditionControl_Variable.cs | 37 +++++++++-- Intersect.Editor/Localization/Strings.cs | 21 ++++--- .../Entities/Events/Conditions.cs | 7 +++ 7 files changed, 105 insertions(+), 32 deletions(-) diff --git a/Framework/Intersect.Framework.Core/GameObjects/Conditions/ConditionMetadata/IntegerVariableComparison.cs b/Framework/Intersect.Framework.Core/GameObjects/Conditions/ConditionMetadata/IntegerVariableComparison.cs index 6a24e18f3d..79fd685307 100644 --- a/Framework/Intersect.Framework.Core/GameObjects/Conditions/ConditionMetadata/IntegerVariableComparison.cs +++ b/Framework/Intersect.Framework.Core/GameObjects/Conditions/ConditionMetadata/IntegerVariableComparison.cs @@ -1,4 +1,3 @@ -using Intersect.Enums; using Intersect.Framework.Core.GameObjects.Events; namespace Intersect.Framework.Core.GameObjects.Conditions.ConditionMetadata; @@ -13,5 +12,7 @@ public partial class IntegerVariableComparison : VariableComparison public long Value { get; set; } + public long MaxValue { get; set; } + public bool TimeSystem { get; set; } } \ No newline at end of file diff --git a/Framework/Intersect.Framework.Core/GameObjects/Events/VariableComparator.cs b/Framework/Intersect.Framework.Core/GameObjects/Events/VariableComparator.cs index c250df36e6..86ef0903bb 100644 --- a/Framework/Intersect.Framework.Core/GameObjects/Events/VariableComparator.cs +++ b/Framework/Intersect.Framework.Core/GameObjects/Events/VariableComparator.cs @@ -13,4 +13,6 @@ public enum VariableComparator Less, NotEqual, + + Between, } diff --git a/Intersect.Editor/Forms/Editors/Events/Event Commands/Conditions/ConditionControl_PlayerStat.cs b/Intersect.Editor/Forms/Editors/Events/Event Commands/Conditions/ConditionControl_PlayerStat.cs index 0c0115e129..ed2ab97e34 100644 --- a/Intersect.Editor/Forms/Editors/Events/Event Commands/Conditions/ConditionControl_PlayerStat.cs +++ b/Intersect.Editor/Forms/Editors/Events/Event Commands/Conditions/ConditionControl_PlayerStat.cs @@ -27,10 +27,7 @@ public void InitLocalization() } cmbLevelComparator.Items.Clear(); - for (var i = 0; i < Strings.EventConditional.comparators.Count; i++) - { - cmbLevelComparator.Items.Add(Strings.EventConditional.comparators[i]); - } + cmbLevelComparator.Items.AddRange(Strings.EventConditional.comparators.Values.ToArray()); chkStatIgnoreBuffs.Text = Strings.EventConditional.ignorestatbuffs; } diff --git a/Intersect.Editor/Forms/Editors/Events/Event Commands/Conditions/ConditionControl_Variable.Designer.cs b/Intersect.Editor/Forms/Editors/Events/Event Commands/Conditions/ConditionControl_Variable.Designer.cs index 3f0fa5f2c5..6fec0d3599 100644 --- a/Intersect.Editor/Forms/Editors/Events/Event Commands/Conditions/ConditionControl_Variable.Designer.cs +++ b/Intersect.Editor/Forms/Editors/Events/Event Commands/Conditions/ConditionControl_Variable.Designer.cs @@ -36,6 +36,8 @@ private void InitializeComponent() rdoGlobalVariable = new DarkUI.Controls.DarkRadioButton(); rdoGuildVariable = new DarkUI.Controls.DarkRadioButton(); grpNumericVariable = new DarkUI.Controls.DarkGroupBox(); + nudVariableMaxValue = new DarkUI.Controls.DarkNumericUpDown(); + lblBetweenSeparator = new Label(); rdoTimeSystem = new DarkUI.Controls.DarkRadioButton(); cmbCompareUserVar = new DarkUI.Controls.DarkComboBox(); rdoVarCompareUserVar = new DarkUI.Controls.DarkRadioButton(); @@ -71,6 +73,7 @@ private void InitializeComponent() grpVariable.SuspendLayout(); grpSelectVariable.SuspendLayout(); grpNumericVariable.SuspendLayout(); + ((System.ComponentModel.ISupportInitialize)nudVariableMaxValue).BeginInit(); ((System.ComponentModel.ISupportInitialize)nudVariableValue).BeginInit(); grpStringVariable.SuspendLayout(); grpBooleanVariable.SuspendLayout(); @@ -89,7 +92,7 @@ private void InitializeComponent() grpVariable.Margin = new Padding(4, 3, 4, 3); grpVariable.Name = "grpVariable"; grpVariable.Padding = new Padding(4, 3, 4, 3); - grpVariable.Size = new Size(308, 395); + grpVariable.Size = new Size(308, 435); grpVariable.TabIndex = 25; grpVariable.TabStop = false; grpVariable.Text = "Variable is..."; @@ -185,6 +188,8 @@ private void InitializeComponent() // grpNumericVariable.BackColor = System.Drawing.Color.FromArgb(60, 63, 65); grpNumericVariable.BorderColor = System.Drawing.Color.FromArgb(90, 90, 90); + grpNumericVariable.Controls.Add(nudVariableMaxValue); + grpNumericVariable.Controls.Add(lblBetweenSeparator); grpNumericVariable.Controls.Add(rdoTimeSystem); grpNumericVariable.Controls.Add(cmbCompareUserVar); grpNumericVariable.Controls.Add(rdoVarCompareUserVar); @@ -203,15 +208,38 @@ private void InitializeComponent() grpNumericVariable.Margin = new Padding(4, 3, 4, 3); grpNumericVariable.Name = "grpNumericVariable"; grpNumericVariable.Padding = new Padding(4, 3, 4, 3); - grpNumericVariable.Size = new Size(288, 229); + grpNumericVariable.Size = new Size(288, 264); grpNumericVariable.TabIndex = 51; grpNumericVariable.TabStop = false; grpNumericVariable.Text = "Numeric Variable:"; // + // nudVariableMaxValue + // + nudVariableMaxValue.BackColor = System.Drawing.Color.FromArgb(69, 73, 74); + nudVariableMaxValue.ForeColor = System.Drawing.Color.Gainsboro; + nudVariableMaxValue.Location = new System.Drawing.Point(151, 84); + nudVariableMaxValue.Margin = new Padding(4, 3, 4, 3); + nudVariableMaxValue.Maximum = new decimal(new int[] { -1, -1, -1, 0 }); + nudVariableMaxValue.Minimum = new decimal(new int[] { -1, -1, -1, int.MinValue }); + nudVariableMaxValue.Name = "nudVariableMaxValue"; + nudVariableMaxValue.Size = new Size(130, 23); + nudVariableMaxValue.TabIndex = 54; + nudVariableMaxValue.Value = new decimal(new int[] { 0, 0, 0, 0 }); + // + // lblBetweenSeparator + // + lblBetweenSeparator.AutoSize = true; + lblBetweenSeparator.Location = new System.Drawing.Point(138, 88); + lblBetweenSeparator.Margin = new Padding(4, 0, 4, 0); + lblBetweenSeparator.Name = "lblBetweenSeparator"; + lblBetweenSeparator.Size = new Size(12, 15); + lblBetweenSeparator.TabIndex = 53; + lblBetweenSeparator.Text = "-"; + // // rdoTimeSystem // rdoTimeSystem.AutoSize = true; - rdoTimeSystem.Location = new System.Drawing.Point(12, 206); + rdoTimeSystem.Location = new System.Drawing.Point(9, 236); rdoTimeSystem.Margin = new Padding(4, 3, 4, 3); rdoTimeSystem.Name = "rdoTimeSystem"; rdoTimeSystem.Size = new Size(92, 19); @@ -232,7 +260,7 @@ private void InitializeComponent() cmbCompareUserVar.FlatStyle = FlatStyle.Flat; cmbCompareUserVar.ForeColor = System.Drawing.Color.Gainsboro; cmbCompareUserVar.FormattingEnabled = true; - cmbCompareUserVar.Location = new System.Drawing.Point(170, 180); + cmbCompareUserVar.Location = new System.Drawing.Point(172, 206); cmbCompareUserVar.Margin = new Padding(4, 3, 4, 3); cmbCompareUserVar.Name = "cmbCompareUserVar"; cmbCompareUserVar.Size = new Size(109, 24); @@ -243,7 +271,7 @@ private void InitializeComponent() // rdoVarCompareUserVar // rdoVarCompareUserVar.AutoSize = true; - rdoVarCompareUserVar.Location = new System.Drawing.Point(13, 181); + rdoVarCompareUserVar.Location = new System.Drawing.Point(9, 207); rdoVarCompareUserVar.Margin = new Padding(4, 3, 4, 3); rdoVarCompareUserVar.Name = "rdoVarCompareUserVar"; rdoVarCompareUserVar.Size = new Size(148, 19); @@ -272,17 +300,18 @@ private void InitializeComponent() cmbNumericComparitor.TabIndex = 3; cmbNumericComparitor.Text = "Equal To"; cmbNumericComparitor.TextPadding = new Padding(2); + cmbNumericComparitor.SelectedIndexChanged += cmbNumericComparitor_SelectedIndexChanged; // // nudVariableValue // nudVariableValue.BackColor = System.Drawing.Color.FromArgb(69, 73, 74); nudVariableValue.ForeColor = System.Drawing.Color.Gainsboro; - nudVariableValue.Location = new System.Drawing.Point(134, 55); + nudVariableValue.Location = new System.Drawing.Point(7, 84); nudVariableValue.Margin = new Padding(4, 3, 4, 3); nudVariableValue.Maximum = new decimal(new int[] { -1, -1, -1, 0 }); nudVariableValue.Minimum = new decimal(new int[] { -1, -1, -1, int.MinValue }); nudVariableValue.Name = "nudVariableValue"; - nudVariableValue.Size = new Size(146, 23); + nudVariableValue.Size = new Size(130, 23); nudVariableValue.TabIndex = 49; nudVariableValue.Value = new decimal(new int[] { 0, 0, 0, 0 }); // @@ -309,7 +338,7 @@ private void InitializeComponent() cmbCompareGuildVar.FlatStyle = FlatStyle.Flat; cmbCompareGuildVar.ForeColor = System.Drawing.Color.Gainsboro; cmbCompareGuildVar.FormattingEnabled = true; - cmbCompareGuildVar.Location = new System.Drawing.Point(170, 149); + cmbCompareGuildVar.Location = new System.Drawing.Point(172, 175); cmbCompareGuildVar.Margin = new Padding(4, 3, 4, 3); cmbCompareGuildVar.Name = "cmbCompareGuildVar"; cmbCompareGuildVar.Size = new Size(109, 24); @@ -319,7 +348,7 @@ private void InitializeComponent() // // rdoVarCompareStaticValue // - rdoVarCompareStaticValue.Location = new System.Drawing.Point(12, 55); + rdoVarCompareStaticValue.Location = new System.Drawing.Point(9, 55); rdoVarCompareStaticValue.Margin = new Padding(4, 3, 4, 3); rdoVarCompareStaticValue.Name = "rdoVarCompareStaticValue"; rdoVarCompareStaticValue.Size = new Size(112, 20); @@ -340,7 +369,7 @@ private void InitializeComponent() cmbComparePlayerVar.FlatStyle = FlatStyle.Flat; cmbComparePlayerVar.ForeColor = System.Drawing.Color.Gainsboro; cmbComparePlayerVar.FormattingEnabled = true; - cmbComparePlayerVar.Location = new System.Drawing.Point(170, 87); + cmbComparePlayerVar.Location = new System.Drawing.Point(172, 113); cmbComparePlayerVar.Margin = new Padding(4, 3, 4, 3); cmbComparePlayerVar.Name = "cmbComparePlayerVar"; cmbComparePlayerVar.Size = new Size(109, 24); @@ -351,7 +380,7 @@ private void InitializeComponent() // rdoVarComparePlayerVar // rdoVarComparePlayerVar.AutoSize = true; - rdoVarComparePlayerVar.Location = new System.Drawing.Point(13, 88); + rdoVarComparePlayerVar.Location = new System.Drawing.Point(9, 114); rdoVarComparePlayerVar.Margin = new Padding(4, 3, 4, 3); rdoVarComparePlayerVar.Name = "rdoVarComparePlayerVar"; rdoVarComparePlayerVar.Size = new Size(135, 19); @@ -362,7 +391,7 @@ private void InitializeComponent() // rdoVarCompareGuildVar // rdoVarCompareGuildVar.AutoSize = true; - rdoVarCompareGuildVar.Location = new System.Drawing.Point(13, 150); + rdoVarCompareGuildVar.Location = new System.Drawing.Point(9, 176); rdoVarCompareGuildVar.Margin = new Padding(4, 3, 4, 3); rdoVarCompareGuildVar.Name = "rdoVarCompareGuildVar"; rdoVarCompareGuildVar.Size = new Size(131, 19); @@ -383,7 +412,7 @@ private void InitializeComponent() cmbCompareGlobalVar.FlatStyle = FlatStyle.Flat; cmbCompareGlobalVar.ForeColor = System.Drawing.Color.Gainsboro; cmbCompareGlobalVar.FormattingEnabled = true; - cmbCompareGlobalVar.Location = new System.Drawing.Point(170, 118); + cmbCompareGlobalVar.Location = new System.Drawing.Point(172, 144); cmbCompareGlobalVar.Margin = new Padding(4, 3, 4, 3); cmbCompareGlobalVar.Name = "cmbCompareGlobalVar"; cmbCompareGlobalVar.Size = new Size(109, 24); @@ -394,7 +423,7 @@ private void InitializeComponent() // rdoVarCompareGlobalVar // rdoVarCompareGlobalVar.AutoSize = true; - rdoVarCompareGlobalVar.Location = new System.Drawing.Point(13, 119); + rdoVarCompareGlobalVar.Location = new System.Drawing.Point(9, 145); rdoVarCompareGlobalVar.Margin = new Padding(4, 3, 4, 3); rdoVarCompareGlobalVar.Name = "rdoVarCompareGlobalVar"; rdoVarCompareGlobalVar.Size = new Size(137, 19); @@ -697,12 +726,13 @@ private void InitializeComponent() BackColor = System.Drawing.Color.FromArgb(60, 63, 65); Controls.Add(grpVariable); Name = "ConditionControl_Variable"; - Size = new Size(310, 398); + Size = new Size(310, 437); grpVariable.ResumeLayout(false); grpSelectVariable.ResumeLayout(false); grpSelectVariable.PerformLayout(); grpNumericVariable.ResumeLayout(false); grpNumericVariable.PerformLayout(); + ((System.ComponentModel.ISupportInitialize)nudVariableMaxValue).EndInit(); ((System.ComponentModel.ISupportInitialize)nudVariableValue).EndInit(); grpStringVariable.ResumeLayout(false); grpStringVariable.PerformLayout(); @@ -753,4 +783,6 @@ private void InitializeComponent() internal DarkUI.Controls.DarkRadioButton optBooleanGuildVariable; internal DarkUI.Controls.DarkComboBox cmbBooleanGlobalVariable; internal DarkUI.Controls.DarkRadioButton optBooleanGlobalVariable; + private DarkUI.Controls.DarkNumericUpDown nudVariableMaxValue; + private Label lblBetweenSeparator; } diff --git a/Intersect.Editor/Forms/Editors/Events/Event Commands/Conditions/ConditionControl_Variable.cs b/Intersect.Editor/Forms/Editors/Events/Event Commands/Conditions/ConditionControl_Variable.cs index 3acb850160..f461dc3cd7 100644 --- a/Intersect.Editor/Forms/Editors/Events/Event Commands/Conditions/ConditionControl_Variable.cs +++ b/Intersect.Editor/Forms/Editors/Events/Event Commands/Conditions/ConditionControl_Variable.cs @@ -18,6 +18,9 @@ public ConditionControl_Variable(EventCommandConditionalBranch parent) nudVariableValue.Minimum = long.MinValue; nudVariableValue.Maximum = long.MaxValue; + nudVariableMaxValue.Minimum = long.MinValue; + nudVariableMaxValue.Maximum = long.MaxValue; + InitLocalization(); } @@ -41,11 +44,7 @@ public void InitLocalization() rdoVarCompareGuildVar.Text = Strings.EventConditional.guildvariablevalue; rdoVarCompareUserVar.Text = Strings.EventConditional.UserVariableValue; cmbNumericComparitor.Items.Clear(); - for (var i = 0; i < Strings.EventConditional.comparators.Count; i++) - { - cmbNumericComparitor.Items.Add(Strings.EventConditional.comparators[i]); - } - + cmbNumericComparitor.Items.AddRange(Strings.EventConditional.comparators.Values.ToArray()); cmbNumericComparitor.SelectedIndex = 0; //Boolean Variable @@ -359,6 +358,7 @@ private void TryLoadVariableIntegerComparison(VariableComparison comparison) { rdoVarCompareStaticValue.Checked = true; nudVariableValue.Value = integerComparison.Value; + nudVariableMaxValue.Value = integerComparison.MaxValue; } UpdateNumericVariableElements(); @@ -435,6 +435,10 @@ private IntegerVariableComparison GetNumericVariableComparison() if (rdoVarCompareStaticValue.Checked) { comparison.Value = (long)nudVariableValue.Value; + if (comparison.Comparator == VariableComparator.Between) + { + comparison.MaxValue = (long)nudVariableMaxValue.Value; + } } else if (rdoVarCompareGlobalVar.Checked) { @@ -483,10 +487,23 @@ private StringVariableComparison GetStringVariableComparison() private void UpdateNumericVariableElements() { nudVariableValue.Enabled = rdoVarCompareStaticValue.Checked; + nudVariableMaxValue.Enabled = + rdoVarCompareStaticValue.Checked && + cmbNumericComparitor.SelectedIndex == (int)VariableComparator.Between; + + var isBetween = + rdoVarCompareStaticValue.Checked && + cmbNumericComparitor.SelectedIndex == (int)VariableComparator.Between; + + rdoVarComparePlayerVar.Enabled = rdoVarComparePlayerVar.Checked || !isBetween; cmbComparePlayerVar.Enabled = rdoVarComparePlayerVar.Checked; + rdoVarCompareGlobalVar.Enabled = rdoVarCompareGlobalVar.Checked || !isBetween; cmbCompareGlobalVar.Enabled = rdoVarCompareGlobalVar.Checked; + rdoVarCompareGuildVar.Enabled = rdoVarCompareGuildVar.Checked || !isBetween; cmbCompareGuildVar.Enabled = rdoVarCompareGuildVar.Checked; + rdoVarCompareUserVar.Enabled = rdoVarCompareUserVar.Checked || !isBetween; cmbCompareUserVar.Enabled = rdoVarCompareUserVar.Checked; + rdoTimeSystem.Enabled = rdoTimeSystem.Checked || !isBetween; } #endregion @@ -588,5 +605,15 @@ private void lblStringTextVariables_Click(object sender, EventArgs e) BrowserUtils.Open("http://www.ascensiongamedev.com/community/topic/749-event-text-variables/"); } + private void cmbNumericComparitor_SelectedIndexChanged(object sender, EventArgs e) + { + if (cmbNumericComparitor.SelectedIndex == (int)VariableComparator.Between && !rdoVarCompareStaticValue.Checked) + { + rdoVarCompareStaticValue.Checked = true; + } + + UpdateNumericVariableElements(); + } + #endregion } diff --git a/Intersect.Editor/Localization/Strings.cs b/Intersect.Editor/Localization/Strings.cs index ded5d72ccd..683234e08b 100644 --- a/Intersect.Editor/Localization/Strings.cs +++ b/Intersect.Editor/Localization/Strings.cs @@ -479,6 +479,10 @@ public static string GetVariableComparisonString(IntegerVariableComparison compa case VariableComparator.NotEqual: pVar = EventConditionDesc.notequal.ToString(value); + break; + case VariableComparator.Between: + pVar = EventConditionDesc.Between.ToString(value, comparison.MaxValue); + break; } @@ -2457,14 +2461,15 @@ public partial struct EventConditional {1, @"Contains"} }; - public static Dictionary comparators = new Dictionary + public static Dictionary comparators = new() { - {0, @"Equal To"}, - {1, @"Greater Than or Equal To"}, - {2, @"Less Than or Equal To"}, - {3, @"Greater Than"}, - {4, @"Less Than"}, - {5, @"Does Not Equal"} + {VariableComparator.Equal, @"Equal To"}, + {VariableComparator.GreaterOrEqual, @"Greater Than or Equal To"}, + {VariableComparator.LesserOrEqual, @"Less Than or Equal To"}, + {VariableComparator.Greater, @"Greater Than"}, + {VariableComparator.Less, @"Less Than"}, + {VariableComparator.NotEqual, @"Does Not Equal"}, + {VariableComparator.Between, @"Between"}, }; public static Dictionary conditions = new Dictionary @@ -2663,6 +2668,8 @@ public partial struct EventConditionDesc public static LocalizedString beforetask = @", Before Task: {00}"; + public static LocalizedString Between = @"between {00} and {01}"; + public static LocalizedString checkequippedslot = @"Player has slot {00} occupied"; public static LocalizedString Class = @"Player's class is {00}"; diff --git a/Intersect.Server.Core/Entities/Events/Conditions.cs b/Intersect.Server.Core/Entities/Events/Conditions.cs index d978ed9602..d1f8567ba3 100644 --- a/Intersect.Server.Core/Entities/Events/Conditions.cs +++ b/Intersect.Server.Core/Entities/Events/Conditions.cs @@ -691,6 +691,13 @@ Event instance return true; } + break; + case VariableComparator.Between: + if (varVal >= comparison.Value && varVal <= comparison.MaxValue) + { + return true; + } + break; }