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; }
public VarHackManager(Control varHackControlControl, VarHackFlowLayoutPanel varHackPanel) { _varHackPanel = varHackPanel; // Top buttons SplitContainer splitContainerVarHack = varHackControlControl.Controls["splitContainerVarHack"] as SplitContainer; Button buttonVarHackAddNewVariable = splitContainerVarHack.Panel1.Controls["buttonVarHackAddNewVariable"] as Button; buttonVarHackAddNewVariable.Click += (sender, e) => _varHackPanel.AddNewControl(); ControlUtilities.AddContextMenuStripFunctions( buttonVarHackAddNewVariable, new List <string>() { "RNG Index", "Floor YNorm", "Defacto Speed", "Sliding Speed", "Mario Action", "Mario Animation", "DYaw Intended - Facing", "DYaw Intended - Facing (HAU)", }, new List <Action>() { () => AddVariable("RngIndex"), () => AddVariable("FloorYNorm"), () => AddVariable("DefactoSpeed"), () => AddVariable("SlidingSpeed"), () => AddVariable("MarioAction"), () => AddVariable("MarioAnimation"), () => AddVariable("DYawIntendFacing"), () => AddVariable("DYawIntendFacingHau"), }); Button buttonVarHackOpenVars = splitContainerVarHack.Panel1.Controls["buttonVarHackOpenVars"] as Button; buttonVarHackOpenVars.Click += (sender, e) => _varHackPanel.OpenVariables(); Button buttonVarHackSaveVars = splitContainerVarHack.Panel1.Controls["buttonVarHackSaveVars"] as Button; buttonVarHackSaveVars.Click += (sender, e) => _varHackPanel.SaveVariables(); Button buttonVarHackClearVariables = splitContainerVarHack.Panel1.Controls["buttonVarHackClearVars"] as Button; buttonVarHackClearVariables.Click += (sender, e) => _varHackPanel.ClearVariables(); Button buttonVarHackShowVariableBytesInLittleEndian = splitContainerVarHack.Panel1.Controls["buttonVarHackShowVariableBytesInLittleEndian"] as Button; buttonVarHackShowVariableBytesInLittleEndian.Click += (sender, e) => _varHackPanel.ShowVariableBytesInLittleEndian(); Button buttonVarHackShowVariableBytesInBigEndian = splitContainerVarHack.Panel1.Controls["buttonVarHackShowVariableBytesInBigEndian"] as Button; buttonVarHackShowVariableBytesInBigEndian.Click += (sender, e) => _varHackPanel.ShowVariableBytesInBigEndian(); // Bottom buttons Button buttonVarHackApplyVariablesToMemory = splitContainerVarHack.Panel1.Controls["buttonVarHackApplyVariablesToMemory"] as Button; buttonVarHackApplyVariablesToMemory.Click += (sender, e) => _varHackPanel.ApplyVariablesToMemory(); Button buttonVarHackClearVariablesInMemory = splitContainerVarHack.Panel1.Controls["buttonVarHackClearVariablesInMemory"] as Button; buttonVarHackClearVariablesInMemory.Click += (sender, e) => _varHackPanel.ClearVariablesInMemory(); _buttonEnableDisableRomHack = splitContainerVarHack.Panel1.Controls["buttonEnableDisableRomHack"] as BinaryButton; _buttonEnableDisableRomHack.Initialize( "Enable ROM Hack", "Disable ROM Hack", () => VarHackConfig.ShowVarRomHack.LoadPayload(), () => VarHackConfig.ShowVarRomHack.ClearPayload(), () => VarHackConfig.ShowVarRomHack.Enabled); ControlUtilities.AddContextMenuStripFunctions( _buttonEnableDisableRomHack, new List <string>() { "1f Delay Hack (Standard)", "0f Delay Hack (Experimental)" }, new List <Action>() { () => VarHackConfig.ShowVarRomHack.LoadPayload(), () => VarHackConfig.ShowVarRomHack2.LoadPayload(), }); // Middle buttons _textBoxXPosValue = splitContainerVarHack.Panel1.Controls["textBoxXPosValue"] as BetterTextbox; _textBoxXPosValue.AddEnterAction(() => SetPositionsAndApplyVariablesToMemory()); _textBoxXPosValue.Text = VarHackConfig.DefaultXPos.ToString(); InitializePositionControls( _textBoxXPosValue, splitContainerVarHack.Panel1.Controls["textBoxXPosChange"] as TextBox, splitContainerVarHack.Panel1.Controls["buttonXPosSubtract"] as Button, splitContainerVarHack.Panel1.Controls["buttonXPosAdd"] as Button); _textBoxYPosValue = splitContainerVarHack.Panel1.Controls["textBoxYPosValue"] as BetterTextbox; _textBoxYPosValue.AddEnterAction(() => SetPositionsAndApplyVariablesToMemory()); _textBoxYPosValue.Text = VarHackConfig.DefaultYPos.ToString(); InitializePositionControls( _textBoxYPosValue, splitContainerVarHack.Panel1.Controls["textBoxYPosChange"] as TextBox, splitContainerVarHack.Panel1.Controls["buttonYPosSubtract"] as Button, splitContainerVarHack.Panel1.Controls["buttonYPosAdd"] as Button); _textBoxYDeltaValue = splitContainerVarHack.Panel1.Controls["textBoxYDeltaValue"] as BetterTextbox; _textBoxYDeltaValue.AddEnterAction(() => SetPositionsAndApplyVariablesToMemory()); _textBoxYDeltaValue.Text = VarHackConfig.DefaultYDelta.ToString(); InitializePositionControls( _textBoxYDeltaValue, splitContainerVarHack.Panel1.Controls["textBoxYDeltaChange"] as TextBox, splitContainerVarHack.Panel1.Controls["buttonYDeltaSubtract"] as Button, splitContainerVarHack.Panel1.Controls["buttonYDeltaAdd"] as Button); Button buttonSetPositionsAndApplyVariablesToMemory = splitContainerVarHack.Panel1.Controls["buttonSetPositionsAndApplyVariablesToMemory"] as Button; buttonSetPositionsAndApplyVariablesToMemory.Click += (sender, e) => SetPositionsAndApplyVariablesToMemory(); }
public TriangleManager(Control tabControl, string varFilePath, WatchVariableFlowLayoutPanel watchVariablePanel) : base(varFilePath, watchVariablePanel, ALL_VAR_GROUPS, VISIBLE_VAR_GROUPS) { _recordedTriangleAddresses = new List <uint>(); SplitContainer splitContainerTriangles = tabControl.Controls["splitContainerTriangles"] as SplitContainer; _addressBox = splitContainerTriangles.Panel1.Controls["textBoxCustomTriangle"] as BetterTextbox; _useMisalignmentOffsetCheckbox = splitContainerTriangles.Panel1.Controls["checkBoxVertexMisalignment"] as CheckBox; _addressBox.AddEnterAction(() => AddressBoxEnter()); _radioButtonTriFloor = splitContainerTriangles.Panel1.Controls["radioButtonTriFloor"] as RadioButton; _radioButtonTriFloor.Click += (sender, e) => Mode_Click(sender, e, TriangleMode.Floor); _radioButtonTriWall = splitContainerTriangles.Panel1.Controls["radioButtonTriWall"] as RadioButton; _radioButtonTriWall.Click += (sender, e) => Mode_Click(sender, e, TriangleMode.Wall); _radioButtonTriCeiling = splitContainerTriangles.Panel1.Controls["radioButtonTriCeiling"] as RadioButton; _radioButtonTriCeiling.Click += (sender, e) => Mode_Click(sender, e, TriangleMode.Ceiling); _radioButtonTriCustom = splitContainerTriangles.Panel1.Controls["radioButtonTriCustom"] as RadioButton; _radioButtonTriCustom.Click += (sender, e) => Mode_Click(sender, e, TriangleMode.Custom); ControlUtilities.AddContextMenuStripFunctions( _radioButtonTriCustom, new List <string>() { "Paste Addresses", }, new List <Action>() { () => EnterCustomText(Clipboard.GetText()), }); Label labelTriangleSelection = splitContainerTriangles.Panel1.Controls["labelTriangleSelection"] as Label; ControlUtilities.AddContextMenuStripFunctions( labelTriangleSelection, new List <string>() { "Update Based on Coordinates", "Paste Triangles", }, new List <Action>() { () => UpdateBasedOnCoordinates(), () => PasteTriangles(), }); (splitContainerTriangles.Panel1.Controls["buttonGotoV1"] as Button).Click += (sender, e) => ButtonUtilities.GotoTriangleVertex(TriangleAddresses[0], 1, _useMisalignmentOffsetCheckbox.Checked); (splitContainerTriangles.Panel1.Controls["buttonGotoV2"] as Button).Click += (sender, e) => ButtonUtilities.GotoTriangleVertex(TriangleAddresses[0], 2, _useMisalignmentOffsetCheckbox.Checked); (splitContainerTriangles.Panel1.Controls["buttonGotoV3"] as Button).Click += (sender, e) => ButtonUtilities.GotoTriangleVertex(TriangleAddresses[0], 3, _useMisalignmentOffsetCheckbox.Checked); (splitContainerTriangles.Panel1.Controls["buttonGotoVClosest"] as Button).Click += (sender, e) => ButtonUtilities.GotoTriangleVertexClosest(TriangleAddresses[0], _useMisalignmentOffsetCheckbox.Checked); (splitContainerTriangles.Panel1.Controls["buttonRetrieveTriangle"] as Button).Click += (sender, e) => ButtonUtilities.RetrieveTriangle(TriangleAddresses); Button buttonNeutralizeTriangle = splitContainerTriangles.Panel1.Controls["buttonNeutralizeTriangle"] as Button; buttonNeutralizeTriangle.Click += (sender, e) => ButtonUtilities.NeutralizeTriangle(TriangleAddresses); ControlUtilities.AddContextMenuStripFunctions( buttonNeutralizeTriangle, new List <string>() { "Neutralize", "Neutralize with 0", "Neutralize with 0x15" }, new List <Action>() { () => ButtonUtilities.NeutralizeTriangle(TriangleAddresses), () => ButtonUtilities.NeutralizeTriangle(TriangleAddresses, false), () => ButtonUtilities.NeutralizeTriangle(TriangleAddresses, true), }); Button buttonAnnihilateTriangle = splitContainerTriangles.Panel1.Controls["buttonAnnihilateTriangle"] as Button; buttonAnnihilateTriangle.Click += (sender, e) => ButtonUtilities.AnnihilateTriangle(TriangleAddresses); ControlUtilities.AddContextMenuStripFunctions( buttonAnnihilateTriangle, new List <string>() { "Annihilate All Tri But Death Barriers", "Annihilate All Ceilings", }, new List <Action>() { () => TriangleUtilities.AnnihilateAllTrianglesButDeathBarriers(), () => TriangleUtilities.AnnihilateAllCeilings(), }); var trianglePosGroupBox = splitContainerTriangles.Panel1.Controls["groupBoxTrianglePos"] as GroupBox; ControlUtilities.InitializeThreeDimensionController( CoordinateSystem.Euler, true, trianglePosGroupBox, trianglePosGroupBox.Controls["buttonTrianglePosXn"] as Button, trianglePosGroupBox.Controls["buttonTrianglePosXp"] as Button, trianglePosGroupBox.Controls["buttonTrianglePosZn"] as Button, trianglePosGroupBox.Controls["buttonTrianglePosZp"] as Button, trianglePosGroupBox.Controls["buttonTrianglePosXnZn"] as Button, trianglePosGroupBox.Controls["buttonTrianglePosXnZp"] as Button, trianglePosGroupBox.Controls["buttonTrianglePosXpZn"] as Button, trianglePosGroupBox.Controls["buttonTrianglePosXpZp"] as Button, trianglePosGroupBox.Controls["buttonTrianglePosYp"] as Button, trianglePosGroupBox.Controls["buttonTrianglePosYn"] as Button, trianglePosGroupBox.Controls["textBoxTrianglePosXZ"] as TextBox, trianglePosGroupBox.Controls["textBoxTrianglePosY"] as TextBox, trianglePosGroupBox.Controls["checkBoxTrianglePosRelative"] as CheckBox, (float hOffset, float vOffset, float nOffset, bool useRelative) => { ButtonUtilities.MoveTriangle( TriangleAddresses, hOffset, nOffset, -1 * vOffset, useRelative); }); var triangleNormalGroupBox = splitContainerTriangles.Panel1.Controls["groupBoxTriangleNormal"] as GroupBox; ControlUtilities.InitializeScalarController( triangleNormalGroupBox.Controls["buttontriangleNormalN"] as Button, triangleNormalGroupBox.Controls["buttontriangleNormalP"] as Button, triangleNormalGroupBox.Controls["textBoxTriangleNormal"] as TextBox, (float normalValue) => { ButtonUtilities.MoveTriangleNormal(TriangleAddresses, normalValue); }); _checkBoxNeutralizeTriangle = splitContainerTriangles.Panel1.Controls["checkBoxNeutralizeTriangle"] as CheckBox; (splitContainerTriangles.Panel1.Controls["buttonTriangleShowCoords"] as Button).Click += (sender, e) => ShowTriangleCoordinates(); (splitContainerTriangles.Panel1.Controls["buttonTriangleShowEquation"] as Button).Click += (sender, e) => ShowTriangleEquation(); _recordTriangleDataCheckbox = splitContainerTriangles.Panel1.Controls["checkBoxRecordTriangleData"] as CheckBox; _recordTriangleCountLabel = splitContainerTriangles.Panel1.Controls["labelRecordTriangleCount"] as Label; (splitContainerTriangles.Panel1.Controls["buttonTriangleShowData"] as Button).Click += (sender, e) => ShowTriangleData(); (splitContainerTriangles.Panel1.Controls["buttonTriangleShowVertices"] as Button).Click += (sender, e) => ShowTriangleVertices(); (splitContainerTriangles.Panel1.Controls["buttonTriangleShowAddresses"] as Button).Click += (sender, e) => ShowTriangleAddresses(); (splitContainerTriangles.Panel1.Controls["buttonTriangleClearData"] as Button).Click += (sender, e) => ClearTriangleData(); _repeatFirstVertexCheckbox = splitContainerTriangles.Panel1.Controls["checkBoxRepeatFirstVertex"] as CheckBox; (splitContainerTriangles.Panel1.Controls["buttonTriangleShowLevelTris"] as Button).Click += (sender, e) => TriangleUtilities.ShowTriangles(TriangleUtilities.GetLevelTriangles()); Button buttonTriangleShowObjTris = splitContainerTriangles.Panel1.Controls["buttonTriangleShowObjTris"] as Button; buttonTriangleShowObjTris.Click += (sender, e) => TriangleUtilities.ShowTriangles(TriangleUtilities.GetObjectTriangles()); ControlUtilities.AddContextMenuStripFunctions( buttonTriangleShowObjTris, new List <string>() { "Show All Object Tris", "Show Selected Object Tris" }, new List <Action>() { () => TriangleUtilities.ShowTriangles(TriangleUtilities.GetObjectTriangles()), () => TriangleUtilities.ShowTriangles(TriangleUtilities.GetSelectedObjectTriangles()), }); (splitContainerTriangles.Panel1.Controls["buttonTriangleShowAllTris"] as Button).Click += (sender, e) => TriangleUtilities.ShowTriangles(TriangleUtilities.GetAllTriangles()); var buttonTriangleNeutralizeAllTriangles = splitContainerTriangles.Panel1.Controls["buttonTriangleNeutralizeAllTriangles"] as Button; buttonTriangleNeutralizeAllTriangles.Click += (sender, e) => TriangleUtilities.NeutralizeTriangles(); ControlUtilities.AddContextMenuStripFunctions( buttonTriangleNeutralizeAllTriangles, new List <string>() { "Neutralize All Triangles", "Neutralize Wall Triangles", "Neutralize Floor Triangles", "Neutralize Ceiling Triangles", "Neutralize Death Barriers", "Neutralize Lava", "Neutralize Sleeping", "Neutralize Loading Zones" }, new List <Action>() { () => TriangleUtilities.NeutralizeTriangles(), () => TriangleUtilities.NeutralizeTriangles(TriangleClassification.Wall), () => TriangleUtilities.NeutralizeTriangles(TriangleClassification.Floor), () => TriangleUtilities.NeutralizeTriangles(TriangleClassification.Ceiling), () => TriangleUtilities.NeutralizeTriangles(0x0A), () => TriangleUtilities.NeutralizeTriangles(0x01), () => TriangleUtilities.NeutralizeSleeping(), () => { TriangleUtilities.NeutralizeTriangles(0x1B); TriangleUtilities.NeutralizeTriangles(0x1C); TriangleUtilities.NeutralizeTriangles(0x1D); TriangleUtilities.NeutralizeTriangles(0x1E); }, }); var buttonTriangleDisableAllCamCollision = splitContainerTriangles.Panel1.Controls["buttonTriangleDisableAllCamCollision"] as Button; buttonTriangleDisableAllCamCollision.Click += (sender, e) => TriangleUtilities.DisableCamCollision(); ControlUtilities.AddContextMenuStripFunctions( buttonTriangleDisableAllCamCollision, new List <string>() { "Disable Cam Collision for All Triangles", "Disable Cam Collision for Wall Triangles", "Disable Cam Collision for Floor Triangles", "Disable Cam Collision for Ceiling Triangles", }, new List <Action>() { () => TriangleUtilities.DisableCamCollision(), () => TriangleUtilities.DisableCamCollision(TriangleClassification.Wall), () => TriangleUtilities.DisableCamCollision(TriangleClassification.Floor), () => TriangleUtilities.DisableCamCollision(TriangleClassification.Ceiling), }); GroupBox groupBoxTriangleTypeConversion = splitContainerTriangles.Panel1.Controls["groupBoxTriangleTypeConversion"] as GroupBox; ComboBox comboBoxTriangleTypeConversionConvert = groupBoxTriangleTypeConversion.Controls["comboBoxTriangleTypeConversionConvert"] as ComboBox; TextBox textBoxTriangleTypeConversionFromType = groupBoxTriangleTypeConversion.Controls["textBoxTriangleTypeConversionFromType"] as TextBox; TextBox textBoxTriangleTypeConversionToType = groupBoxTriangleTypeConversion.Controls["textBoxTriangleTypeConversionToType"] as TextBox; Button buttonTriangleTypeConversionConvert = groupBoxTriangleTypeConversion.Controls["buttonTriangleTypeConversionConvert"] as Button; comboBoxTriangleTypeConversionConvert.DataSource = EnumUtilities.GetEnumValues <TriangleClassificationExtended>(typeof(TriangleClassificationExtended)); buttonTriangleTypeConversionConvert.Click += (sender, e) => { TriangleClassificationExtended classification = (TriangleClassificationExtended)comboBoxTriangleTypeConversionConvert.SelectedItem; short?fromType = (short?)ParsingUtilities.ParseHexNullable(textBoxTriangleTypeConversionFromType.Text); short?toType = (short?)ParsingUtilities.ParseHexNullable(textBoxTriangleTypeConversionToType.Text); if (!fromType.HasValue || !toType.HasValue) { return; } TriangleUtilities.ConvertSurfaceTypes(classification, fromType.Value, toType.Value); }; }
public VarHackManager(Control varHackControlControl, VarHackPanel varHackPanel) { _varHackPanel = varHackPanel; // Top buttons SplitContainer splitContainerVarHack = varHackControlControl.Controls["splitContainerVarHack"] as SplitContainer; Button buttonVarHackAddNewVariable = splitContainerVarHack.Panel1.Controls["buttonVarHackAddNewVariable"] as Button; buttonVarHackAddNewVariable.Click += (sender, e) => _varHackPanel.AddNewControl(); ControlUtilities.AddContextMenuStripFunctions( buttonVarHackAddNewVariable, new List <string>() { "RNG Index", "Floor YNorm", "Defacto Speed", "Mario Action", "Mario Animation", }, new List <Action>() { () => AddVariable(() => "Index " + RngIndexer.GetRngIndex()), () => AddVariable(() => { uint triFloorAddress = Config.Stream.GetUInt32(MarioConfig.StructAddress + MarioConfig.FloorTriangleOffset); float yNorm = Config.Stream.GetSingle(triFloorAddress + TriangleOffsetsConfig.NormY); return("YNorm " + FormatDouble(yNorm, 4, true)); }), () => AddVariable(() => "Defacto " + FormatInteger(WatchVariableSpecialUtilities.GetMarioDeFactoSpeed())), () => AddVariable(() => "Action " + TableConfig.MarioActions.GetActionName()), () => AddVariable(() => "Animation " + TableConfig.MarioAnimations.GetAnimationName()), }); Button buttonVarHackClearVariables = splitContainerVarHack.Panel1.Controls["buttonVarHackClearVariables"] as Button; buttonVarHackClearVariables.Click += (sender, e) => _varHackPanel.ClearControls(); Button buttonVarHackShowVariableBytesInLittleEndian = splitContainerVarHack.Panel1.Controls["buttonVarHackShowVariableBytesInLittleEndian"] as Button; buttonVarHackShowVariableBytesInLittleEndian.Click += (sender, e) => _varHackPanel.ShowVariableBytesInLittleEndian(); Button buttonVarHackShowVariableBytesInBigEndian = splitContainerVarHack.Panel1.Controls["buttonVarHackShowVariableBytesInBigEndian"] as Button; buttonVarHackShowVariableBytesInBigEndian.Click += (sender, e) => _varHackPanel.ShowVariableBytesInBigEndian(); // Bottom buttons Button buttonVarHackApplyVariablesToMemory = splitContainerVarHack.Panel1.Controls["buttonVarHackApplyVariablesToMemory"] as Button; buttonVarHackApplyVariablesToMemory.Click += (sender, e) => _varHackPanel.ApplyVariablesToMemory(); Button buttonVarHackClearVariablesInMemory = splitContainerVarHack.Panel1.Controls["buttonVarHackClearVariablesInMemory"] as Button; buttonVarHackClearVariablesInMemory.Click += (sender, e) => _varHackPanel.ClearVariablesInMemory(); _buttonEnableDisableRomHack = splitContainerVarHack.Panel1.Controls["buttonEnableDisableRomHack"] as BinaryButton; _buttonEnableDisableRomHack.Initialize( "Enable ROM Hack", "Disable ROM Hack", () => VarHackConfig.ShowVarRomHack.LoadPayload(), () => VarHackConfig.ShowVarRomHack.ClearPayload(), () => VarHackConfig.ShowVarRomHack.Enabled); // Middle buttons _textBoxXPosValue = splitContainerVarHack.Panel1.Controls["textBoxXPosValue"] as BetterTextbox; _textBoxXPosValue.AddEnterAction(() => SetPositionsAndApplyVariablesToMemory()); _textBoxXPosValue.Text = VarHackConfig.DefaultXPos.ToString(); InitializePositionControls( _textBoxXPosValue, splitContainerVarHack.Panel1.Controls["textBoxXPosChange"] as TextBox, splitContainerVarHack.Panel1.Controls["buttonXPosSubtract"] as Button, splitContainerVarHack.Panel1.Controls["buttonXPosAdd"] as Button); _textBoxYPosValue = splitContainerVarHack.Panel1.Controls["textBoxYPosValue"] as BetterTextbox; _textBoxYPosValue.AddEnterAction(() => SetPositionsAndApplyVariablesToMemory()); _textBoxYPosValue.Text = VarHackConfig.DefaultYPos.ToString(); InitializePositionControls( _textBoxYPosValue, splitContainerVarHack.Panel1.Controls["textBoxYPosChange"] as TextBox, splitContainerVarHack.Panel1.Controls["buttonYPosSubtract"] as Button, splitContainerVarHack.Panel1.Controls["buttonYPosAdd"] as Button); _textBoxYDeltaValue = splitContainerVarHack.Panel1.Controls["textBoxYDeltaValue"] as BetterTextbox; _textBoxYDeltaValue.AddEnterAction(() => SetPositionsAndApplyVariablesToMemory()); _textBoxYDeltaValue.Text = VarHackConfig.DefaultYDelta.ToString(); InitializePositionControls( _textBoxYDeltaValue, splitContainerVarHack.Panel1.Controls["textBoxYDeltaChange"] as TextBox, splitContainerVarHack.Panel1.Controls["buttonYDeltaSubtract"] as Button, splitContainerVarHack.Panel1.Controls["buttonYDeltaAdd"] as Button); Button buttonSetPositionsAndApplyVariablesToMemory = splitContainerVarHack.Panel1.Controls["buttonSetPositionsAndApplyVariablesToMemory"] as Button; buttonSetPositionsAndApplyVariablesToMemory.Click += (sender, e) => SetPositionsAndApplyVariablesToMemory(); }