Esempio n. 1
0
        private void PerformQuickDuplication()
        {
            int?iter1StartObserved = ParsingUtilities.ParseIntNullable(
                _gui.TextBoxQuickDuplication1stIterationStart.Text);
            int?iter2StartObserved = ParsingUtilities.ParseIntNullable(
                _gui.TextBoxQuickDuplication2ndIterationStart.Text);
            int?totalIters = ParsingUtilities.ParseIntNullable(
                _gui.TextBoxQuickDuplicationTotalIterations.Text);

            if (!iter1StartObserved.HasValue ||
                !iter2StartObserved.HasValue ||
                !totalIters.HasValue)
            {
                return;
            }

            int iter1Start   = iter1StartObserved.Value - 1;
            int iter2Start   = iter2StartObserved.Value - 1;
            int multiplicity = totalIters.Value - 1;
            int iter1End     = iter2Start - 1;

            M64CopiedData copiedData = M64CopiedData.CreateCopiedData(
                _gui.DataGridViewInputs, _m64File.CurrentFileName,
                iter1Start, iter1End, true /* useRow */);

            _m64File.Paste(copiedData, iter2Start, true /* insert */, multiplicity);
        }
Esempio n. 2
0
        protected override ContextMenuStrip GetContextMenuStrip(MapTracker targetTracker)
        {
            if (_contextMenuStrip == null)
            {
                _itemUseRelativeAngles        = new ToolStripMenuItem("Use Relative Angles");
                _itemUseRelativeAngles.Click += (sender, e) => _itemUseRelativeAngles.Checked = !_itemUseRelativeAngles.Checked;

                ToolStripMenuItem itemSetAngleDiff = new ToolStripMenuItem("Set Angle Diff");
                itemSetAngleDiff.Click += (sender, e) =>
                {
                    string text      = DialogUtilities.GetStringFromDialog(labelText: "Enter angle diff.");
                    int?   angleDiff = ParsingUtilities.ParseIntNullable(text);
                    if (angleDiff.HasValue && angleDiff.Value > 0)
                    {
                        _angleDiff = angleDiff.Value;
                    }
                };

                _contextMenuStrip = new ContextMenuStrip();
                _contextMenuStrip.Items.Add(_itemUseRelativeAngles);
                _contextMenuStrip.Items.Add(itemSetAngleDiff);
            }

            return(_contextMenuStrip);
        }
Esempio n. 3
0
        public (int, int)? GetPendulumSwingIndexExtendedPair(int amplitude)
        {
            string index = GetPendulumSwingIndexExtended(amplitude);

            if (index == Double.NaN.ToString())
            {
                return(null);
            }
            int plusIndex = index.IndexOf('+');

            int?primaryIndex, secondaryIndex;

            if (plusIndex == -1)
            {
                primaryIndex   = ParsingUtilities.ParseIntNullable(index);
                secondaryIndex = 0;
            }
            else
            {
                primaryIndex   = ParsingUtilities.ParseIntNullable(index.Substring(0, plusIndex));
                secondaryIndex = ParsingUtilities.ParseIntNullable(index.Substring(plusIndex + 1));
            }

            if (primaryIndex == null || secondaryIndex == null)
            {
                return(null);
            }
            return(primaryIndex.Value, secondaryIndex.Value);
        }
Esempio n. 4
0
        public MiscManager(List <WatchVariableControlPrecursor> variables, WatchVariablePanel variableTable, Control miscControl)
            : base(variables, variableTable)
        {
            SplitContainer splitContainerMisc = miscControl.Controls["splitContainerMisc"] as SplitContainer;

            _checkBoxTurnOffMusic = splitContainerMisc.Panel1.Controls["checkBoxTurnOffMusic"] as CheckBox;

            GroupBox groupBoxRNGIndexTester = splitContainerMisc.Panel1.Controls["groupBoxRNGIndexTester"] as GroupBox;
            TextBox  textBoxRNGIndexTester  = groupBoxRNGIndexTester.Controls["textBoxRNGIndexTester"] as TextBox;
            Button   buttonRNGIndexTester   = groupBoxRNGIndexTester.Controls["buttonRNGIndexTester"] as Button;

            buttonRNGIndexTester.Click += (sender, e) =>
            {
                int?rngIndexNullable = ParsingUtilities.ParseIntNullable(textBoxRNGIndexTester.Text);
                if (!rngIndexNullable.HasValue)
                {
                    return;
                }
                int    rngIndex = rngIndexNullable.Value;
                ushort rngValue = RngIndexer.GetRngValue(rngIndex);
                Config.Stream.SetValue(rngValue, MiscConfig.RngAddress);
                int nextRngIndex = rngIndex + 1;
                textBoxRNGIndexTester.Text = nextRngIndex.ToString();
            };
        }
Esempio n. 5
0
        public SoundManager(TabPage tabPage)
        {
            SplitContainer splitContainerSound = tabPage.Controls["splitContainerSound"] as SplitContainer;

            SplitContainer splitContainerSoundMusic = splitContainerSound.Panel1.Controls["splitContainerSoundMusic"] as SplitContainer;
            ListBox        listBoxSoundMusic        = splitContainerSoundMusic.Panel1.Controls["listBoxSoundMusic"] as ListBox;
            TextBox        textBoxSoundMusic        = splitContainerSoundMusic.Panel2.Controls["textBoxSoundMusic"] as TextBox;
            Button         buttonSoundPlayMusic     = splitContainerSoundMusic.Panel2.Controls["buttonSoundPlayMusic"] as Button;

            SplitContainer splitContainerSoundSoundEffect = splitContainerSound.Panel2.Controls["splitContainerSoundSoundEffect"] as SplitContainer;
            ListBox        listBoxSoundSoundEffect        = splitContainerSoundSoundEffect.Panel1.Controls["listBoxSoundSoundEffect"] as ListBox;
            TextBox        textBoxSoundSoundEffect        = splitContainerSoundSoundEffect.Panel2.Controls["textBoxSoundSoundEffect"] as TextBox;
            Button         buttonSoundPlaySoundEffect     = splitContainerSoundSoundEffect.Panel2.Controls["buttonSoundPlaySoundEffect"] as Button;

            TableConfig.MusicData.GetMusicEntryList().ForEach(musicEntry => listBoxSoundMusic.Items.Add(musicEntry));
            listBoxSoundMusic.Click += (sender, e) =>
            {
                MusicEntry musicEntry = listBoxSoundMusic.SelectedItem as MusicEntry;
                textBoxSoundMusic.Text = musicEntry.Index.ToString();
            };
            buttonSoundPlayMusic.Click += (sender, e) =>
            {
                int?musicIndexNullable = ParsingUtilities.ParseIntNullable(textBoxSoundMusic.Text);
                if (musicIndexNullable == null)
                {
                    return;
                }
                int musicIndex = musicIndexNullable.Value;
                if (musicIndex < 0 || musicIndex > 34)
                {
                    return;
                }
                uint setMusic = RomVersionConfig.SwitchMap(0x80320544, 0x8031F690);
                InGameFunctionCall.WriteInGameFunctionCall(setMusic, 0, (uint)musicIndex, 0);
            };

            foreach (uint soundEffect in _soundEffects)
            {
                string soundEffectString = HexUtilities.FormatValue(soundEffect, 4);
                listBoxSoundSoundEffect.Items.Add(soundEffectString);
            }
            listBoxSoundSoundEffect.Click += (sender, e) =>
            {
                textBoxSoundSoundEffect.Text = listBoxSoundSoundEffect.SelectedItem.ToString() + "FF81";
            };
            buttonSoundPlaySoundEffect.Click += (sender, e) =>
            {
                uint setSound            = RomVersionConfig.SwitchMap(0x8031EB00, 0x8031DC78);
                uint soundArg            = RomVersionConfig.SwitchMap(0x803331F0, 0x803320E0);
                uint?soundEffectNullable = ParsingUtilities.ParseHexNullable(textBoxSoundSoundEffect.Text);
                if (!soundEffectNullable.HasValue)
                {
                    return;
                }
                uint soundEffect = soundEffectNullable.Value;
                InGameFunctionCall.WriteInGameFunctionCall(setSound, soundEffect, soundArg);
            };
        }
Esempio n. 6
0
 public void Goto(int?gotoValueNullable = null)
 {
     gotoValueNullable = gotoValueNullable ?? ParsingUtilities.ParseIntNullable(_gui.TextBoxGoto.Text);
     if (gotoValueNullable.HasValue)
     {
         int gotoValue = M64Utilities.ConvertDisplayedValueToFrame(gotoValueNullable.Value);
         ControlUtilities.TableGoTo(_gui.DataGridViewInputs, gotoValue);
     }
 }
Esempio n. 7
0
        private void SetPositionsAndApplyVariablesToMemory()
        {
            int?xPos   = ParsingUtilities.ParseIntNullable(_textBoxXPosValue.Text);
            int?yPos   = ParsingUtilities.ParseIntNullable(_textBoxYPosValue.Text);
            int?yDelta = ParsingUtilities.ParseIntNullable(_textBoxYDeltaValue.Text);

            if (!xPos.HasValue || !yPos.HasValue || !yDelta.HasValue)
            {
                return;
            }
            _varHackPanel.SetPositions(xPos.Value, yPos.Value, yDelta.Value);
            _varHackPanel.ApplyVariablesToMemory();
        }
Esempio n. 8
0
        private void SetValuesOfSelection(CellSelectionType cellSelectionType, bool value)
        {
            (int?startFrame, int?endFrame) = GetFrameBounds();
            List <M64InputCell> cells = M64Utilities.GetSelectedInputCells(
                _gui.DataGridViewInputs,
                cellSelectionType,
                startFrame,
                endFrame,
                _gui.TextBoxSelectionInputs.Text);
            int?intOnValue = ParsingUtilities.ParseIntNullable(_gui.TextBoxOnValue.Text);

            cells.ForEach(cell => cell.SetValue(value, intOnValue));
            _gui.DataGridViewInputs.Refresh();
        }
Esempio n. 9
0
        private static void InitializeAddSubtractGetSetFuncionality(
            Button buttonSubtract,
            Button buttonAdd,
            Button buttonGet,
            Button buttonSet,
            TextBox textboxAddSubtract,
            TextBox textboxGetSet,
            Action <int> setterFunction,
            Func <int> getterFunction)
        {
            buttonSubtract.Click += (sender, e) =>
            {
                int?intValueNullable = ParsingUtilities.ParseIntNullable(textboxAddSubtract.Text);
                if (!intValueNullable.HasValue)
                {
                    return;
                }
                int intValue = intValueNullable.Value;
                int newValue = getterFunction() - intValue;
                setterFunction(newValue);
            };

            buttonAdd.Click += (sender, e) =>
            {
                int?intValueNullable = ParsingUtilities.ParseIntNullable(textboxAddSubtract.Text);
                if (!intValueNullable.HasValue)
                {
                    return;
                }
                int intValue = intValueNullable.Value;
                int newValue = getterFunction() + intValue;
                setterFunction(newValue);
            };

            buttonGet.Click += (sender, e) =>
            {
                textboxGetSet.Text = getterFunction().ToString();
            };

            buttonSet.Click += (sender, e) =>
            {
                int?intValueNullable = ParsingUtilities.ParseIntNullable(textboxGetSet.Text);
                if (!intValueNullable.HasValue)
                {
                    return;
                }
                int intValue = intValueNullable.Value;
                setterFunction(intValue);
            };
        }
Esempio n. 10
0
        public override void InitializeTab()
        {
            base.InitializeTab();

            TableConfig.MusicData = XmlConfigParser.OpenMusicTable(@"Config/MusicData.xml");
            TableConfig.MusicData.GetMusicEntryList().ForEach(musicEntry => listBoxSoundMusic.Items.Add(musicEntry));
            listBoxSoundMusic.Click += (sender, e) =>
            {
                MusicEntry musicEntry = listBoxSoundMusic.SelectedItem as MusicEntry;
                textBoxSoundMusic.Text = musicEntry.Index.ToString();
            };
            buttonSoundPlayMusic.Click += (sender, e) =>
            {
                int?musicIndexNullable = ParsingUtilities.ParseIntNullable(textBoxSoundMusic.Text);
                if (musicIndexNullable == null)
                {
                    return;
                }
                int musicIndex = musicIndexNullable.Value;
                if (musicIndex < 0 || musicIndex > 34)
                {
                    return;
                }
                uint setMusic = RomVersionConfig.SwitchMap(0x80320544, 0x8031F690);
                InGameFunctionCall.WriteInGameFunctionCall(setMusic, 0, (uint)musicIndex, 0);
            };

            foreach (uint soundEffect in _soundEffects)
            {
                string soundEffectString = HexUtilities.FormatValue(soundEffect, 4);
                listBoxSoundSoundEffect.Items.Add(soundEffectString);
            }
            listBoxSoundSoundEffect.Click += (sender, e) =>
            {
                textBoxSoundSoundEffect.Text = listBoxSoundSoundEffect.SelectedItem.ToString() + "FF81";
            };
            buttonSoundPlaySoundEffect.Click += (sender, e) =>
            {
                uint setSound            = RomVersionConfig.SwitchMap(0x8031EB00, 0x8031DC78);
                uint soundArg            = RomVersionConfig.SwitchMap(0x803331F0, 0x803320E0);
                uint?soundEffectNullable = ParsingUtilities.ParseHexNullable(textBoxSoundSoundEffect.Text);
                if (!soundEffectNullable.HasValue)
                {
                    return;
                }
                uint soundEffect = soundEffectNullable.Value;
                InGameFunctionCall.WriteInGameFunctionCall(setSound, soundEffect, soundArg);
            };
        }
Esempio n. 11
0
        public static void OpenPopOutForm(XElement element)
        {
            VariablePopOutForm form = new VariablePopOutForm();

            List <XElement>             subElements = element.Elements().ToList();
            List <WatchVariableControl> controls    = subElements
                                                      .ConvertAll(subElement => new WatchVariableControlPrecursor(subElement))
                                                      .ConvertAll(precursor => precursor.CreateWatchVariableControl());

            form.ShowForm();

            bool?borderless = ParsingUtilities.ParseBoolNullable(element.Attribute(XName.Get("borderless"))?.Value);

            if (borderless.HasValue && borderless.Value)
            {
                form.SetBorderless(borderless.Value);
            }

            bool?alwaysOnTop = ParsingUtilities.ParseBoolNullable(element.Attribute(XName.Get("alwaysOnTop"))?.Value);

            if (alwaysOnTop.HasValue && alwaysOnTop.Value)
            {
                form.SetAlwaysOnTop(alwaysOnTop.Value);
            }

            int?locationX = ParsingUtilities.ParseIntNullable(element.Attribute(XName.Get("locationX"))?.Value);
            int?locationY = ParsingUtilities.ParseIntNullable(element.Attribute(XName.Get("locationY"))?.Value);

            if (locationX.HasValue && locationY.HasValue)
            {
                form.Location = new System.Drawing.Point(locationX.Value, locationY.Value);
            }

            int?width = ParsingUtilities.ParseIntNullable(element.Attribute(XName.Get("width"))?.Value);

            if (width.HasValue)
            {
                form.Width = width.Value;
            }

            int?height = ParsingUtilities.ParseIntNullable(element.Attribute(XName.Get("height"))?.Value);

            if (height.HasValue)
            {
                form.Height = height.Value;
            }

            form.Initialize(controls);
        }
Esempio n. 12
0
        private (int?startFrame, int?endFrame) GetFrameBounds()
        {
            int?startFrame = ParsingUtilities.ParseIntNullable(_gui.TextBoxSelectionStartFrame.Text);
            int?endFrame   = ParsingUtilities.ParseIntNullable(_gui.TextBoxSelectionEndFrame.Text);

            if (startFrame.HasValue)
            {
                startFrame = M64Utilities.ConvertDisplayedValueToFrame(startFrame.Value);
            }
            if (endFrame.HasValue)
            {
                endFrame = M64Utilities.ConvertDisplayedValueToFrame(endFrame.Value);
            }
            return(startFrame, endFrame);
        }
Esempio n. 13
0
        public override void InitializeTab()
        {
            base.InitializeTab();

            _numSnowParticles     = 0;
            _snowParticleControls = new List <List <WatchVariableControl> >();


            buttonSnowRetrieve.Click += (sender, e) =>
            {
                int?snowIndexNullable = ParsingUtilities.ParseIntNullable(textBoxSnowIndex.Text);
                if (!snowIndexNullable.HasValue)
                {
                    return;
                }
                int snowIndex = snowIndexNullable.Value;
                if (snowIndex < 0 || snowIndex > _numSnowParticles)
                {
                    return;
                }
                ButtonUtilities.RetrieveSnow(snowIndex);
            };

            ControlUtilities.InitializeThreeDimensionController(
                CoordinateSystem.Euler,
                true,
                groupBoxSnowPosition,
                "SnowPosition",
                (float hOffset, float vOffset, float nOffset, bool useRelative) =>
            {
                int?snowIndexNullable = ParsingUtilities.ParseIntNullable(textBoxSnowIndex.Text);
                if (!snowIndexNullable.HasValue)
                {
                    return;
                }
                int snowIndex = snowIndexNullable.Value;
                if (snowIndex < 0 || snowIndex > _numSnowParticles)
                {
                    return;
                }
                ButtonUtilities.TranslateSnow(
                    snowIndex,
                    hOffset,
                    nOffset,
                    -1 * vOffset,
                    useRelative);
            });
        }
Esempio n. 14
0
        public override ContextMenuStrip GetContextMenuStrip()
        {
            if (_contextMenuStrip == null)
            {
                _itemUseRelativeAngles        = new ToolStripMenuItem("Use Relative Angles");
                _itemUseRelativeAngles.Click += (sender, e) =>
                {
                    MapObjectSettings settings = new MapObjectSettings(
                        changeAngleRangeUseRelativeAngles: true,
                        newAngleRangeUseRelativeAngles: !_useRelativeAngles);
                    GetParentMapTracker().ApplySettings(settings);
                };

                string suffix = string.Format(" ({0})", _angleDiff);
                _itemSetAngleDiff        = new ToolStripMenuItem(SET_ANGLE_DIFF_TEXT + suffix);
                _itemSetAngleDiff.Click += (sender, e) =>
                {
                    string text      = DialogUtilities.GetStringFromDialog(labelText: "Enter angle diff.");
                    int?   angleDiff = ParsingUtilities.ParseIntNullable(text);
                    if (!angleDiff.HasValue || angleDiff.Value <= 0)
                    {
                        return;
                    }
                    MapObjectSettings settings = new MapObjectSettings(
                        changeAngleRangeAngleDiff: true, newAngleRangeAngleDiff: angleDiff.Value);
                    GetParentMapTracker().ApplySettings(settings);
                };

                _itemUseInGameAngles        = new ToolStripMenuItem("Use In-Game Angles");
                _itemUseInGameAngles.Click += (sender, e) =>
                {
                    MapObjectSettings settings = new MapObjectSettings(
                        changeAngleRangeUseInGameAngles: true,
                        newAngleRangeUseInGameAngles: !_useInGameAngles);
                    GetParentMapTracker().ApplySettings(settings);
                };

                _contextMenuStrip = new ContextMenuStrip();
                _contextMenuStrip.Items.Add(_itemUseRelativeAngles);
                _contextMenuStrip.Items.Add(_itemSetAngleDiff);
                _contextMenuStrip.Items.Add(_itemUseInGameAngles);
            }

            return(_contextMenuStrip);
        }
Esempio n. 15
0
        public MiscManager(List <WatchVariable> watchVariables, NoTearFlowLayoutPanel variableTable, Control miscControl)
            : base(watchVariables, variableTable)
        {
            SplitContainer splitContainerMisc = miscControl.Controls["splitContainerMisc"] as SplitContainer;
            GroupBox       groupBoxRNGIndex   = splitContainerMisc.Panel1.Controls["groupBoxRNGIndex"] as GroupBox;

            _betterTextboxRNGIndex = groupBoxRNGIndex.Controls["betterTextboxRNGIndex"] as BetterTextbox;
            _betterTextboxRNGIndex.AddEnterAction(() =>
            {
                int?index = ParsingUtilities.ParseIntNullable(_betterTextboxRNGIndex.Text);
                if (index.HasValue)
                {
                    ushort rngValue = RngIndexer.GetRngValue(index.Value);
                    Config.Stream.SetValue(rngValue, Config.RngAddress);
                }
            });

            _checkBoxTurnOffMusic = splitContainerMisc.Panel1.Controls["checkBoxTurnOffMusic"] as CheckBox;
        }
Esempio n. 16
0
        private void PasteData(bool insert)
        {
            M64CopiedData copiedData = _gui.ListBoxCopied.SelectedItem as M64CopiedData;

            if (copiedData == null)
            {
                return;
            }
            (int?startFrame, int?endFrame) = GetFrameBounds();
            if (!startFrame.HasValue)
            {
                return;
            }
            int?multiplicity = ParsingUtilities.ParseIntNullable(_gui.TextBoxPasteMultiplicity.Text);

            if (!multiplicity.HasValue)
            {
                return;
            }
            _m64File.Paste(copiedData, startFrame.Value, insert, multiplicity.Value);
        }
Esempio n. 17
0
        private void InitializePositionControls(
            TextBox valueTextbox,
            TextBox changeTextbox,
            Button subtractButton,
            Button addButton)
        {
            subtractButton.Click += (sender, e) =>
            {
                int?change = ParsingUtilities.ParseIntNullable(changeTextbox.Text);
                if (!change.HasValue)
                {
                    return;
                }
                int?oldValue = ParsingUtilities.ParseIntNullable(valueTextbox.Text);
                if (!oldValue.HasValue)
                {
                    return;
                }
                int newValue = oldValue.Value - change.Value;
                valueTextbox.Text = newValue.ToString();
                SetPositionsAndApplyVariablesToMemory();
            };

            addButton.Click += (sender, e) =>
            {
                int?change = ParsingUtilities.ParseIntNullable(changeTextbox.Text);
                if (!change.HasValue)
                {
                    return;
                }
                int?oldValue = ParsingUtilities.ParseIntNullable(valueTextbox.Text);
                if (!oldValue.HasValue)
                {
                    return;
                }
                int newValue = oldValue.Value + change.Value;
                valueTextbox.Text = newValue.ToString();
                SetPositionsAndApplyVariablesToMemory();
            };
        }
Esempio n. 18
0
        public MiscManager(string varFilePath, WatchVariableFlowLayoutPanel variableTable, Control miscControl)
            : base(varFilePath, variableTable, ALL_VAR_GROUPS, VISIBLE_VAR_GROUPS)
        {
            SplitContainer splitContainerMisc = miscControl.Controls["splitContainerMisc"] as SplitContainer;

            _checkBoxTurnOffMusic = splitContainerMisc.Panel1.Controls["checkBoxTurnOffMusic"] as CheckBox;

            GroupBox groupBoxRNGIndexTester = splitContainerMisc.Panel1.Controls["groupBoxRNGIndexTester"] as GroupBox;
            TextBox  textBoxRNGIndexTester  = groupBoxRNGIndexTester.Controls["textBoxRNGIndexTester"] as TextBox;
            Button   buttonRNGIndexTester   = groupBoxRNGIndexTester.Controls["buttonRNGIndexTester"] as Button;

            buttonRNGIndexTester.Click += (sender, e) =>
            {
                int?rngIndexNullable = ParsingUtilities.ParseIntNullable(textBoxRNGIndexTester.Text);
                if (!rngIndexNullable.HasValue)
                {
                    return;
                }
                int    rngIndex = rngIndexNullable.Value;
                ushort rngValue = RngIndexer.GetRngValue(rngIndex);
                Config.Stream.SetValue(rngValue, MiscConfig.RngAddress);
                int nextRngIndex = rngIndex + 1;
                textBoxRNGIndexTester.Text = nextRngIndex.ToString();
            };

            Button buttonMiscGoToCourse = splitContainerMisc.Panel1.Controls["buttonMiscGoToCourse"] as Button;

            buttonMiscGoToCourse.ContextMenuStrip = new ContextMenuStrip();
            foreach (CourseToGoTo courseToGoTo in _coursesToGoTo)
            {
                ToolStripMenuItem item = new ToolStripMenuItem(courseToGoTo.Name);
                item.Click += (sender, e) => InGameFunctionCall.WriteInGameFunctionCall(
                    RomVersionConfig.SwitchMap(0x8024978C, 0x8024975C), (uint)courseToGoTo.Index);
                buttonMiscGoToCourse.ContextMenuStrip.Items.Add(item);
            }
            buttonMiscGoToCourse.Click += (sender, e) => buttonMiscGoToCourse.ContextMenuStrip.Show(Cursor.Position);
        }
        protected override string HandleHexDisplaying(string stringValue)
        {
            if (!_displayAsHex)
            {
                return(stringValue);
            }

            int?   numHexDigits    = GetHexDigitCount();
            string stringHexDigits = numHexDigits?.ToString() ?? "";

            int?intValueNullable = ParsingUtilities.ParseIntNullable(stringValue);

            if (intValueNullable.HasValue)
            {
                string hexFormat = String.Format("{0:X" + stringHexDigits + "}", intValueNullable.Value);
                if (numHexDigits.HasValue && hexFormat.Length > numHexDigits.Value)
                {
                    hexFormat = hexFormat.Substring(hexFormat.Length - numHexDigits.Value);
                }
                return("0x" + hexFormat);
            }

            uint?uintValueNullable = ParsingUtilities.ParseUIntNullable(stringValue);

            if (uintValueNullable.HasValue)
            {
                string hexFormat = String.Format("{0:X" + stringHexDigits + "}", uintValueNullable.Value);
                if (numHexDigits.HasValue && hexFormat.Length > numHexDigits.Value)
                {
                    hexFormat = hexFormat.Substring(hexFormat.Length - numHexDigits.Value);
                }
                return("0x" + hexFormat);
            }

            return(stringValue);
        }
Esempio n. 20
0
        public override void InitializeTab()
        {
            base.InitializeTab();
            // Misc Image
            pictureBoxMisc.Image      = Config.ObjectAssociations.MiscImage.Value;
            panelMiscBorder.BackColor = Config.ObjectAssociations.MiscColor;
            pictureBoxMisc.BackColor  = Config.ObjectAssociations.MiscColor.Lighten(0.5);

            watchVariablePanelMisc.SetGroups(ALL_VAR_GROUPS, VISIBLE_VAR_GROUPS);


            buttonRNGIndexTester.Click += (sender, e) =>
            {
                int?rngIncrementullable = ParsingUtilities.ParseIntNullable(txtRNGIncrement.Text);
                int?rngIndexNullable    = ParsingUtilities.ParseIntNullable(textBoxRNGIndexTester.Text);
                if (!rngIndexNullable.HasValue || !rngIncrementullable.HasValue)
                {
                    return;
                }
                int    rngIndex = rngIndexNullable.Value;
                ushort rngValue = RngIndexer.GetRngValue(rngIndex);
                Config.Stream.SetValue(rngValue, MiscConfig.RngAddress);
                int nextRngIndex = rngIndex + rngIncrementullable.Value;
                textBoxRNGIndexTester.Text = nextRngIndex.ToString();
            };

            buttonMiscGoToCourse.ContextMenuStrip = new ContextMenuStrip();
            foreach (CourseToGoTo courseToGoTo in _coursesToGoTo)
            {
                ToolStripMenuItem item = new ToolStripMenuItem(courseToGoTo.Name);
                item.Click += (sender, e) => InGameFunctionCall.WriteInGameFunctionCall(
                    RomVersionConfig.SwitchMap(0x8024978C, 0x8024975C), (uint)courseToGoTo.Index);
                buttonMiscGoToCourse.ContextMenuStrip.Items.Add(item);
            }
            buttonMiscGoToCourse.Click += (sender, e) => buttonMiscGoToCourse.ContextMenuStrip.Show(Cursor.Position);
        }
Esempio n. 21
0
        private bool ValueQualifies(object memoryObject, object oldMemoryObject, object searchObject1, object searchObject2, Type type)
        {
            if (type == typeof(byte))
            {
                byte?memoryValue = ParsingUtilities.ParseByteNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                byte?oldMemoryValue = ParsingUtilities.ParseByteNullable(oldMemoryObject);
                byte?searchValue1   = ParsingUtilities.ParseByteNullable(searchObject1);
                byte?searchValue2   = ParsingUtilities.ParseByteNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(sbyte))
            {
                sbyte?memoryValue = ParsingUtilities.ParseSByteNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                sbyte?            oldMemoryValue    = ParsingUtilities.ParseSByteNullable(oldMemoryObject);
                sbyte?            searchValue1      = ParsingUtilities.ParseSByteNullable(searchObject1);
                sbyte?            searchValue2      = ParsingUtilities.ParseSByteNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(short))
            {
                short?memoryValue = ParsingUtilities.ParseShortNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                short?            oldMemoryValue    = ParsingUtilities.ParseShortNullable(oldMemoryObject);
                short?            searchValue1      = ParsingUtilities.ParseShortNullable(searchObject1);
                short?            searchValue2      = ParsingUtilities.ParseShortNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(ushort))
            {
                ushort?memoryValue = ParsingUtilities.ParseUShortNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                ushort?           oldMemoryValue    = ParsingUtilities.ParseUShortNullable(oldMemoryObject);
                ushort?           searchValue1      = ParsingUtilities.ParseUShortNullable(searchObject1);
                ushort?           searchValue2      = ParsingUtilities.ParseUShortNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(int))
            {
                int?memoryValue = ParsingUtilities.ParseIntNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                int?oldMemoryValue = ParsingUtilities.ParseIntNullable(oldMemoryObject);
                int?searchValue1   = ParsingUtilities.ParseIntNullable(searchObject1);
                int?searchValue2   = ParsingUtilities.ParseIntNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(uint))
            {
                uint?memoryValue = ParsingUtilities.ParseUIntNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                uint?oldMemoryValue = ParsingUtilities.ParseUIntNullable(oldMemoryObject);
                uint?searchValue1   = ParsingUtilities.ParseUIntNullable(searchObject1);
                uint?searchValue2   = ParsingUtilities.ParseUIntNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(float))
            {
                float?memoryValue = ParsingUtilities.ParseFloatNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                float?            oldMemoryValue    = ParsingUtilities.ParseFloatNullable(oldMemoryObject);
                float?            searchValue1      = ParsingUtilities.ParseFloatNullable(searchObject1);
                float?            searchValue2      = ParsingUtilities.ParseFloatNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            if (type == typeof(double))
            {
                double?memoryValue = ParsingUtilities.ParseDoubleNullable(memoryObject);
                if (!memoryValue.HasValue)
                {
                    return(false);
                }
                double?           oldMemoryValue    = ParsingUtilities.ParseDoubleNullable(oldMemoryObject);
                double?           searchValue1      = ParsingUtilities.ParseDoubleNullable(searchObject1);
                double?           searchValue2      = ParsingUtilities.ParseDoubleNullable(searchObject2);
                ValueRelationship valueRelationship = (ValueRelationship)comboBoxSearchValueRelationship.SelectedItem;
                switch (valueRelationship)
                {
                case ValueRelationship.EqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == searchValue1.Value);

                case ValueRelationship.NotEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != searchValue1.Value);

                case ValueRelationship.GreaterThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > searchValue1.Value);

                case ValueRelationship.LessThan:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < searchValue1.Value);

                case ValueRelationship.GreaterThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value >= searchValue1.Value);

                case ValueRelationship.LessThanOrEqualTo:
                    if (!searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value <= searchValue1.Value);

                case ValueRelationship.Changed:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value != oldMemoryValue.Value);

                case ValueRelationship.DidNotChange:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value);

                case ValueRelationship.Increased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value > oldMemoryValue.Value);

                case ValueRelationship.Decreased:
                    if (!oldMemoryValue.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value < oldMemoryValue.Value);

                case ValueRelationship.IncreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value + searchValue1.Value);

                case ValueRelationship.DecreasedBy:
                    if (!oldMemoryValue.HasValue || !searchValue1.HasValue)
                    {
                        return(false);
                    }
                    return(memoryValue.Value == oldMemoryValue.Value - searchValue1.Value);

                case ValueRelationship.BetweenExclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value < memoryValue.Value && memoryValue.Value < searchValue2.Value);

                case ValueRelationship.BetweenInclusive:
                    if (!searchValue1.HasValue || !searchValue2.HasValue)
                    {
                        return(false);
                    }
                    return(searchValue1.Value <= memoryValue.Value && memoryValue.Value <= searchValue2.Value);

                case ValueRelationship.EverythingPasses:
                    return(true);

                default:
                    throw new ArgumentOutOfRangeException();
                }
            }
            throw new ArgumentOutOfRangeException();
        }
Esempio n. 22
0
        public SnowManager(string varFilePath, WatchVariableFlowLayoutPanel variableTable, TabPage tabPageSnow)
            : base(varFilePath, variableTable, ALL_VAR_GROUPS, VISIBLE_VAR_GROUPS)
        {
            _numSnowParticles     = 0;
            _snowParticleControls = new List <List <WatchVariableControl> >();

            SplitContainer splitContainerSnow = tabPageSnow.Controls["splitContainerSnow"] as SplitContainer;

            TextBox textBoxSnowIndex = splitContainerSnow.Panel1.Controls["textBoxSnowIndex"] as TextBox;

            Button buttonSnowRetrieve = splitContainerSnow.Panel1.Controls["buttonSnowRetrieve"] as Button;

            buttonSnowRetrieve.Click += (sender, e) =>
            {
                int?snowIndexNullable = ParsingUtilities.ParseIntNullable(textBoxSnowIndex.Text);
                if (!snowIndexNullable.HasValue)
                {
                    return;
                }
                int snowIndex = snowIndexNullable.Value;
                if (snowIndex < 0 || snowIndex > _numSnowParticles)
                {
                    return;
                }
                ButtonUtilities.RetrieveSnow(snowIndex);
            };

            GroupBox groupBoxSnowPosition = splitContainerSnow.Panel1.Controls["groupBoxSnowPosition"] as GroupBox;

            ControlUtilities.InitializeThreeDimensionController(
                CoordinateSystem.Euler,
                true,
                groupBoxSnowPosition,
                groupBoxSnowPosition.Controls["buttonSnowPositionXn"] as Button,
                groupBoxSnowPosition.Controls["buttonSnowPositionXp"] as Button,
                groupBoxSnowPosition.Controls["buttonSnowPositionZn"] as Button,
                groupBoxSnowPosition.Controls["buttonSnowPositionZp"] as Button,
                groupBoxSnowPosition.Controls["buttonSnowPositionXnZn"] as Button,
                groupBoxSnowPosition.Controls["buttonSnowPositionXnZp"] as Button,
                groupBoxSnowPosition.Controls["buttonSnowPositionXpZn"] as Button,
                groupBoxSnowPosition.Controls["buttonSnowPositionXpZp"] as Button,
                groupBoxSnowPosition.Controls["buttonSnowPositionYp"] as Button,
                groupBoxSnowPosition.Controls["buttonSnowPositionYn"] as Button,
                groupBoxSnowPosition.Controls["textBoxSnowPositionXZ"] as TextBox,
                groupBoxSnowPosition.Controls["textBoxSnowPositionY"] as TextBox,
                groupBoxSnowPosition.Controls["checkBoxSnowPositionRelative"] as CheckBox,
                (float hOffset, float vOffset, float nOffset, bool useRelative) =>
            {
                int?snowIndexNullable = ParsingUtilities.ParseIntNullable(textBoxSnowIndex.Text);
                if (!snowIndexNullable.HasValue)
                {
                    return;
                }
                int snowIndex = snowIndexNullable.Value;
                if (snowIndex < 0 || snowIndex > _numSnowParticles)
                {
                    return;
                }
                ButtonUtilities.TranslateSnow(
                    snowIndex,
                    hOffset,
                    nOffset,
                    -1 * vOffset,
                    useRelative);
            });
        }
Esempio n. 23
0
 private void textBoxOpacity_EnterAction()
 {
     SetOpacity(ParsingUtilities.ParseIntNullable(textBoxOpacity.Text));
 }
Esempio n. 24
0
        private void CalculateCoinTrajectories()
        {
            ClearCoinTrajectories();

            double?hSpeedScale          = ParsingUtilities.ParseIntNullable(textBoxCoinHSpeedScale.Text);
            double?vSpeedScale          = ParsingUtilities.ParseIntNullable(textBoxCoinVSpeedScale.Text);
            double?vSpeedOffset         = ParsingUtilities.ParseIntNullable(textBoxCoinVSpeedOffset.Text);
            bool   coinParamOrderParsed = Enum.TryParse(textBoxCoinParamOrder.Text, out CoinParamOrder coinParamOrder);
            int?   numCoins             = ParsingUtilities.ParseIntNullable(textBoxCoinNumCoins.Text);

            if (!hSpeedScale.HasValue ||
                !vSpeedScale.HasValue ||
                !vSpeedOffset.HasValue ||
                !coinParamOrderParsed ||
                !numCoins.HasValue)
            {
                DialogUtilities.DisplayMessage(
                    "Could not parse coin param fields.",
                    "Parsing Error");
                return;
            }

            CoinObject coinObject = new CoinObject(
                hSpeedScale: hSpeedScale.Value,
                vSpeedScale: vSpeedScale.Value,
                vSpeedOffset: vSpeedOffset.Value,
                coinParamOrder: coinParamOrder,
                numCoins: numCoins.Value,
                name: "Dummy");

            int?startingRngIndexNullable = ParsingUtilities.ParseIntNullable(
                textBoxCoinCustomizatonStartingRngIndex.Text);
            int startingRngIndex = startingRngIndexNullable ?? RngIndexer.GetRngIndex();

            int?numDecimalDigitsNullable = ParsingUtilities.ParseIntNullable(
                textBoxCoinCustomizatonNumDecimalDigits.Text);
            int numDecimalDigits = numDecimalDigitsNullable ?? 3;

            List <int> rngIndexes = Enumerable.Range(0, 65114).ToList();

            foreach (int rngIndex in rngIndexes)
            {
                // rng based values
                ushort rngValue = RngIndexer.GetRngValue(rngIndex);
                int    rngToGo  = MoreMath.NonNegativeModulus(rngIndex - startingRngIndex, 65114);

                // coin trajectory
                List <CoinTrajectory> coinTrajectories = coinObject.CalculateCoinTrajectories(rngIndex);

                // filter the values
                CoinTrajectoryFilter filter = new CoinTrajectoryFilter(
                    ParsingUtilities.ParseDoubleNullable(textBoxCoinFilterHSpeedMin.Text),
                    ParsingUtilities.ParseDoubleNullable(textBoxCoinFilterHSpeedMax.Text),
                    ParsingUtilities.ParseDoubleNullable(textBoxCoinFilterVSpeedMin.Text),
                    ParsingUtilities.ParseDoubleNullable(textBoxCoinFilterVSpeedMax.Text),
                    ParsingUtilities.ParseDoubleNullable(textBoxCoinFilterAngleMin.Text),
                    ParsingUtilities.ParseDoubleNullable(textBoxCoinFilterAngleMax.Text),
                    ParsingUtilities.ParseIntNullable(textBoxCoinFilterRequiredNumOfQualifiedCoins.Text));
                if (!filter.Qualifies(coinTrajectories))
                {
                    continue;
                }

                if (!checkBoxCoinCustomizatonDisplayNonQualifiedCoinsOfAQualifiedCoinGroup.Checked)
                {
                    coinTrajectories = coinTrajectories.FindAll(
                        coinTrajectory => filter.Qualifies(coinTrajectory));
                }

                List <double> hSpeedList = coinTrajectories.ConvertAll(
                    coinTrajectory => Math.Round(coinTrajectory.HSpeed, numDecimalDigits));
                List <double> vSpeedList = coinTrajectories.ConvertAll(
                    coinTrajectory => Math.Round(coinTrajectory.VSpeed, numDecimalDigits));
                List <ushort> angleList = coinTrajectories.ConvertAll(
                    coinTrajectory => coinTrajectory.Angle);

                object hSpeedJoined = hSpeedList.Count == 1 ? hSpeedList[0] : (object)String.Join(", ", hSpeedList);
                object vSpeedJoined = vSpeedList.Count == 1 ? vSpeedList[0] : (object)String.Join(", ", vSpeedList);
                object angleJoined  = angleList.Count == 1 ? angleList[0] : (object)String.Join(", ", angleList);

                // add a new row to the table
                dataGridViewCoin.Rows.Add(
                    rngIndex, rngValue, rngToGo, hSpeedJoined, vSpeedJoined, angleJoined);
            }
        }