internal static ParsingResult TryParse(string input, out Octave octave)
        {
            octave = null;

            if (string.IsNullOrWhiteSpace(input))
            {
                return(ParsingResult.EmptyInputString);
            }

            var match = ParsingUtilities.Match(input, Patterns);

            if (match == null)
            {
                return(ParsingResult.NotMatched);
            }

            int octaveNumber;

            if (!ParsingUtilities.ParseInt(match, OctaveNumberGroupName, Octave.Middle.Number, out octaveNumber) ||
                octaveNumber < Octave.MinOctaveNumber ||
                octaveNumber > Octave.MaxOctaveNumber)
            {
                return(ParsingResult.Error(OctaveIsOutOfRange));
            }

            octave = Octave.Get(octaveNumber);
            return(ParsingResult.Parsed);
        }
Exemplo n.º 2
0
        public override void InitializeTab()
        {
            base.InitializeTab();

            // Pu Controller initialize and register click events
            buttonPuConHome.Click  += (sender, e) => PuUtilities.SetMarioPu(0, 0, 0);
            buttonPuConZnQpu.Click += (sender, e) => PuUtilities.TranslateMarioPu(0, 0, -4);
            buttonPuConZpQpu.Click += (sender, e) => PuUtilities.TranslateMarioPu(0, 0, 4);
            buttonPuConXnQpu.Click += (sender, e) => PuUtilities.TranslateMarioPu(-4, 0, 0);
            buttonPuConXpQpu.Click += (sender, e) => PuUtilities.TranslateMarioPu(4, 0, 0);
            buttonPuConZnPu.Click  += (sender, e) => PuUtilities.TranslateMarioPu(0, 0, -1);
            buttonPuConZpPu.Click  += (sender, e) => PuUtilities.TranslateMarioPu(0, 0, 1);
            buttonPuConXnPu.Click  += (sender, e) => PuUtilities.TranslateMarioPu(-1, 0, 0);
            buttonPuConXpPu.Click  += (sender, e) => PuUtilities.TranslateMarioPu(1, 0, 0);

            ControlUtilities.InitializeThreeDimensionController(
                CoordinateSystem.Euler,
                false,
                groupBoxMarioPu,
                "MarioPu",
                (float hOffset, float vOffset, float nOffset, bool useQpu) =>
            {
                int hOffsetInt = ParsingUtilities.ParseInt(hOffset);
                int vOffsetInt = ParsingUtilities.ParseInt(vOffset);
                int nOffsetInt = ParsingUtilities.ParseInt(nOffset);
                int multiplier = useQpu ? 4 : 1;
                PuUtilities.TranslateMarioPu(
                    hOffsetInt * multiplier,
                    nOffsetInt * multiplier,
                    -1 * vOffsetInt * multiplier);
            });
        }
Exemplo n.º 3
0
        public WatchVariableControlPrecursor(XElement element)
        {
            /// Watchvariable params
            string typeName    = (element.Attribute(XName.Get("type"))?.Value);
            string specialType = element.Attribute(XName.Get("specialType"))?.Value;
            BaseAddressTypeEnum baseAddressType = WatchVariableUtilities.GetBaseAddressType(element.Attribute(XName.Get("base")).Value);
            uint?offsetUS      = ParsingUtilities.ParseHexNullable(element.Attribute(XName.Get("offsetUS"))?.Value);
            uint?offsetJP      = ParsingUtilities.ParseHexNullable(element.Attribute(XName.Get("offsetJP"))?.Value);
            uint?offsetSH      = ParsingUtilities.ParseHexNullable(element.Attribute(XName.Get("offsetSH"))?.Value);
            uint?offsetEU      = ParsingUtilities.ParseHexNullable(element.Attribute(XName.Get("offsetEU"))?.Value);
            uint?offsetDefault = ParsingUtilities.ParseHexNullable(element.Attribute(XName.Get("offset"))?.Value);
            uint?mask          = element.Attribute(XName.Get("mask")) != null ?
                                 (uint?)ParsingUtilities.ParseHex(element.Attribute(XName.Get("mask")).Value) : null;
            int?shift = element.Attribute(XName.Get("shift")) != null?
                        int.Parse(element.Attribute(XName.Get("shift")).Value) : (int?)null;

            bool handleMapping = (element.Attribute(XName.Get("handleMapping")) != null) ?
                                 bool.Parse(element.Attribute(XName.Get("handleMapping")).Value) : true;
            string name = element.Value;

            WatchVar =
                new WatchVariable(
                    name,
                    typeName,
                    specialType,
                    baseAddressType,
                    offsetUS,
                    offsetJP,
                    offsetSH,
                    offsetEU,
                    offsetDefault,
                    mask,
                    shift,
                    handleMapping);

            Name            = name;
            Subclass        = WatchVariableUtilities.GetSubclass(element.Attribute(XName.Get("subclass"))?.Value);
            GroupList       = WatchVariableUtilities.ParseVariableGroupList(element.Attribute(XName.Get("groupList"))?.Value);
            BackgroundColor = (element.Attribute(XName.Get("color")) != null) ?
                              ColorUtilities.GetColorFromString(element.Attribute(XName.Get("color")).Value) : (Color?)null;
            string displayTypeName = (element.Attribute(XName.Get("display"))?.Value);

            DisplayType   = displayTypeName != null ? TypeUtilities.StringToType[displayTypeName] : null;
            RoundingLimit = (element.Attribute(XName.Get("round")) != null) ?
                            ParsingUtilities.ParseInt(element.Attribute(XName.Get("round")).Value) : (int?)null;
            UseHex = (element.Attribute(XName.Get("useHex")) != null) ?
                     bool.Parse(element.Attribute(XName.Get("useHex")).Value) : (bool?)null;
            InvertBool = element.Attribute(XName.Get("invertBool")) != null?
                         bool.Parse(element.Attribute(XName.Get("invertBool")).Value) : (bool?)null;

            IsYaw = (element.Attribute(XName.Get("yaw")) != null) ?
                    bool.Parse(element.Attribute(XName.Get("yaw")).Value) : (bool?)null;
            Coordinate = element.Attribute(XName.Get("coord")) != null?
                         WatchVariableUtilities.GetCoordinate(element.Attribute(XName.Get("coord")).Value) : (Coordinate?)null;

            FixedAddresses = element.Attribute(XName.Get("fixed")) != null?
                             ParsingUtilities.ParseHexList(element.Attribute(XName.Get("fixed")).Value) : null;

            VerifyState();
        }
Exemplo n.º 4
0
        internal static ParsingResult TryParse(string input, out Interval interval)
        {
            interval = null;

            if (string.IsNullOrWhiteSpace(input))
            {
                return(ParsingResult.EmptyInputString);
            }

            var match = ParsingUtilities.Match(input, Patterns);

            if (match == null)
            {
                return(ParsingResult.NotMatched);
            }

            int halfSteps;

            if (!ParsingUtilities.ParseInt(match, HalfStepsGroupName, 0, out halfSteps) ||
                !IntervalUtilities.IsIntervalValid(halfSteps))
            {
                return(ParsingResult.Error(HalfStepsNumberIsOutOfRange));
            }

            interval = Interval.FromHalfSteps(halfSteps);
            return(ParsingResult.Parsed);
        }
Exemplo n.º 5
0
        private void ChangeMapPosition(int xSign, int ySign)
        {
            int positionChange = ParsingUtilities.ParseInt(_mapGui.MapBoundsPositionTextBox.Text);
            int xChange        = positionChange * xSign;
            int yChange        = positionChange * ySign;
            int newX           = _mapGui.GLControl.Left - xChange;
            int newY           = _mapGui.GLControl.Top + yChange;

            _mapGui.GLControl.Location = new Point(newX, newY);
        }
Exemplo n.º 6
0
        private void ChangeMapZoom(int sign)
        {
            int change     = ParsingUtilities.ParseInt(_mapGui.MapBoundsZoomTextBox.Text);
            int zoomChange = change * sign;
            int newX       = _mapGui.GLControl.Left - zoomChange;
            int newY       = _mapGui.GLControl.Top - zoomChange;
            int newWidth   = _mapGui.GLControl.Width + 2 * zoomChange;
            int newHeight  = _mapGui.GLControl.Height + 2 * zoomChange;

            _mapGui.GLControl.SetBounds(newX, newY, newWidth, newHeight);
        }
Exemplo n.º 7
0
        public static VarHackContainer CreateFromXml(
            VarHackFlowLayoutPanel varHackPanel,
            XElement element)
        {
            int xPos = ParsingUtilities.ParseInt(element.Attribute(XName.Get("xPos")).Value);
            int yPos = ParsingUtilities.ParseInt(element.Attribute(XName.Get("yPos")).Value);

            string specialType = element.Attribute(XName.Get("specialType"))?.Value;

            if (specialType != null)
            {
                return(new VarHackContainer(
                           varHackPanel,
                           0 /* creationIndex */,
                           false /* useDefaults */,
                           specialType,
                           true /* noNumIn */,
                           null /* varNameIn */,
                           null /* addressIn */,
                           null /* memoryTypeIn */,
                           null /* useHexIn */,
                           null /* pointerOffsetIn */,
                           xPos,
                           yPos));
            }
            else
            {
                string varName       = element.Attribute(XName.Get("name")).Value;
                uint   address       = ParsingUtilities.ParseHex(element.Attribute(XName.Get("address")).Value);
                Type   type          = TypeUtilities.StringToType[element.Attribute(XName.Get("type")).Value];
                bool   useHex        = ParsingUtilities.ParseBool(element.Attribute(XName.Get("useHex")).Value);
                uint?  pointerOffset = ParsingUtilities.ParseHexNullable(element.Attribute(XName.Get("pointerOffset"))?.Value);
                bool   noNum         = ParsingUtilities.ParseBool(element.Attribute(XName.Get("noNum")).Value);

                return(new VarHackContainer(
                           varHackPanel,
                           0 /* creationIndex */,
                           false /* useDefaults */,
                           null /* sepcialTypeIn */,
                           noNum,
                           varName,
                           address,
                           type,
                           useHex,
                           pointerOffset,
                           xPos,
                           yPos));
            }
        }
Exemplo n.º 8
0
        public PuManager(string varFilePath, TabPage tabControl, WatchVariableFlowLayoutPanel watchVariablePanel)
            : base(varFilePath, watchVariablePanel, ALL_VAR_GROUPS, VISIBLE_VAR_GROUPS)
        {
            SplitContainer splitContainerFile = tabControl.Controls["splitContainerPu"] as SplitContainer;

            _puController = splitContainerFile.Panel1.Controls["groupBoxPuController"] as GroupBox;

            // Pu Controller initialize and register click events
            _puController.Controls["buttonPuConHome"].Click  += (sender, e) => PuUtilities.SetMarioPu(0, 0, 0);
            _puController.Controls["buttonPuConZnQpu"].Click += (sender, e) => PuUtilities.TranslateMarioPu(0, 0, -4);
            _puController.Controls["buttonPuConZpQpu"].Click += (sender, e) => PuUtilities.TranslateMarioPu(0, 0, 4);
            _puController.Controls["buttonPuConXnQpu"].Click += (sender, e) => PuUtilities.TranslateMarioPu(-4, 0, 0);
            _puController.Controls["buttonPuConXpQpu"].Click += (sender, e) => PuUtilities.TranslateMarioPu(4, 0, 0);
            _puController.Controls["buttonPuConZnPu"].Click  += (sender, e) => PuUtilities.TranslateMarioPu(0, 0, -1);
            _puController.Controls["buttonPuConZpPu"].Click  += (sender, e) => PuUtilities.TranslateMarioPu(0, 0, 1);
            _puController.Controls["buttonPuConXnPu"].Click  += (sender, e) => PuUtilities.TranslateMarioPu(-1, 0, 0);
            _puController.Controls["buttonPuConXpPu"].Click  += (sender, e) => PuUtilities.TranslateMarioPu(1, 0, 0);

            GroupBox groupBoxMarioPu = splitContainerFile.Panel1.Controls["groupBoxMarioPu"] as GroupBox;

            ControlUtilities.InitializeThreeDimensionController(
                CoordinateSystem.Euler,
                false,
                groupBoxMarioPu,
                groupBoxMarioPu.Controls["buttonMarioPuXn"] as Button,
                groupBoxMarioPu.Controls["buttonMarioPuXp"] as Button,
                groupBoxMarioPu.Controls["buttonMarioPuZn"] as Button,
                groupBoxMarioPu.Controls["buttonMarioPuZp"] as Button,
                groupBoxMarioPu.Controls["buttonMarioPuXnZn"] as Button,
                groupBoxMarioPu.Controls["buttonMarioPuXnZp"] as Button,
                groupBoxMarioPu.Controls["buttonMarioPuXpZn"] as Button,
                groupBoxMarioPu.Controls["buttonMarioPuXpZp"] as Button,
                groupBoxMarioPu.Controls["buttonMarioPuYp"] as Button,
                groupBoxMarioPu.Controls["buttonMarioPuYn"] as Button,
                groupBoxMarioPu.Controls["textBoxMarioPuXZ"] as TextBox,
                groupBoxMarioPu.Controls["textBoxMarioPuY"] as TextBox,
                groupBoxMarioPu.Controls["checkBoxMarioPuQpu"] as CheckBox,
                (float hOffset, float vOffset, float nOffset, bool useQpu) =>
            {
                int hOffsetInt = ParsingUtilities.ParseInt(hOffset);
                int vOffsetInt = ParsingUtilities.ParseInt(vOffset);
                int nOffsetInt = ParsingUtilities.ParseInt(nOffset);
                int multiplier = useQpu ? 4 : 1;
                PuUtilities.TranslateMarioPu(
                    hOffsetInt * multiplier,
                    nOffsetInt * multiplier,
                    -1 * vOffsetInt * multiplier);
            });
        }
Exemplo n.º 9
0
        internal static ParsingResult TryParse(string input, out MetricTimeSpan timeSpan)
        {
            timeSpan = null;

            if (string.IsNullOrWhiteSpace(input))
            {
                return(ParsingResult.EmptyInputString);
            }

            var match = ParsingUtilities.Match(input, Patterns);

            if (match == null)
            {
                return(ParsingResult.NotMatched);
            }

            int hours;

            if (!ParsingUtilities.ParseInt(match, HoursGroupName, 0, out hours))
            {
                return(new ParsingResult(HoursIsOutOfRange));
            }

            int minutes;

            if (!ParsingUtilities.ParseInt(match, MinutesGroupName, 0, out minutes))
            {
                return(new ParsingResult(MinutesIsOutOfRange));
            }

            int seconds;

            if (!ParsingUtilities.ParseInt(match, SecondsGroupName, 0, out seconds))
            {
                return(new ParsingResult(SecondsIsOutOfRange));
            }

            int milliseconds;

            if (!ParsingUtilities.ParseInt(match, MillisecondsGroupName, 0, out milliseconds))
            {
                return(new ParsingResult(MillisecondsIsOutOfRange));
            }

            timeSpan = new MetricTimeSpan(hours, minutes, seconds, milliseconds);
            return(ParsingResult.Parsed);
        }
Exemplo n.º 10
0
        internal static ParsingResult TryParse(string input, out Interval interval)
        {
            interval = null;

            if (string.IsNullOrWhiteSpace(input))
            {
                return(ParsingResult.EmptyInputString);
            }

            var match = ParsingUtilities.Match(input, Patterns, ignoreCase: false);

            if (match == null)
            {
                return(ParsingResult.NotMatched);
            }

            var intervalQualityGroup = match.Groups[IntervalQualityGroupName];

            if (!intervalQualityGroup.Success)
            {
                int halfSteps;
                if (!ParsingUtilities.ParseInt(match, HalfStepsGroupName, 0, out halfSteps) ||
                    !IntervalUtilities.IsIntervalValid(halfSteps))
                {
                    return(ParsingResult.Error(HalfStepsNumberIsOutOfRange));
                }

                interval = Interval.FromHalfSteps(halfSteps);
                return(ParsingResult.Parsed);
            }

            var intervalQuality = IntervalQualitiesByLetters[intervalQualityGroup.Value];

            int intervalNumber;

            if (!ParsingUtilities.ParseInt(match, IntervalNumberGroupName, 0, out intervalNumber) || intervalNumber < 1)
            {
                return(ParsingResult.Error(IntervalNumberIsOutOfRange));
            }

            interval = Interval.Get(intervalQuality, intervalNumber);
            return(ParsingResult.Parsed);
        }
Exemplo n.º 11
0
        internal static ParsingResult TryParse(string input, out Note note)
        {
            note = null;

            if (string.IsNullOrWhiteSpace(input))
            {
                return(ParsingResult.EmptyInputString);
            }

            var match = ParsingUtilities.Match(input, Patterns);

            if (match == null)
            {
                return(ParsingResult.NotMatched);
            }

            var noteNameGroup = match.Groups[NoteNameGroupName];

            NoteName noteName;
            var      noteNameParsingResult = NoteNameParser.TryParse(noteNameGroup.Value, out noteName);

            if (noteNameParsingResult.Status != ParsingStatus.Parsed)
            {
                return(noteNameParsingResult);
            }

            int octaveNumber;

            if (!ParsingUtilities.ParseInt(match, OctaveGroupName, Octave.Middle.Number, out octaveNumber))
            {
                return(ParsingResult.Error(OctaveIsOutOfRange));
            }

            if (!NoteUtilities.IsNoteValid(noteName, octaveNumber))
            {
                return(ParsingResult.Error(NoteIsOutOfRange));
            }

            note = Note.Get(noteName, octaveNumber);
            return(ParsingResult.Parsed);
        }
Exemplo n.º 12
0
        private void PasteTriangles()
        {
            List <List <string> > lines = ParsingUtilities.ParseLines(Clipboard.GetText());

            if (lines.Count != 10)
            {
                return;
            }
            int numWords = lines[0].Count;

            if (numWords == 0)
            {
                return;
            }
            if (lines.Any(line => line.Count != numWords))
            {
                return;
            }

            for (int wordIndex = 0; wordIndex < numWords; wordIndex++)
            {
                uint       triAddress = ParsingUtilities.ParseHexNullable(lines[0][wordIndex]) ?? 0;
                List <int> coords     = lines.Skip(1).ToList().ConvertAll(line => ParsingUtilities.ParseInt(line[wordIndex]));
                TriangleOffsetsConfig.SetX1((short)coords[0], triAddress);
                TriangleOffsetsConfig.SetY1((short)coords[1], triAddress);
                TriangleOffsetsConfig.SetZ1((short)coords[2], triAddress);
                TriangleOffsetsConfig.SetX2((short)coords[3], triAddress);
                TriangleOffsetsConfig.SetY2((short)coords[4], triAddress);
                TriangleOffsetsConfig.SetZ2((short)coords[5], triAddress);
                TriangleOffsetsConfig.SetX3((short)coords[6], triAddress);
                TriangleOffsetsConfig.SetY3((short)coords[7], triAddress);
                TriangleOffsetsConfig.SetZ3((short)coords[8], triAddress);
                UpdateBasedOnCoordinates(
                    triAddress,
                    coords[0], coords[1], coords[2],
                    coords[3], coords[4], coords[5],
                    coords[6], coords[7], coords[8]);
            }
        }
Exemplo n.º 13
0
        public static List <uint> GetObjectAddresses()
        {
            List <uint>      addresses = new List <uint>();
            Func <int, uint> getOffset = (int i) => (uint)i * 0x260;

            for (int i = 0; i < 6; i++)
            {
                addresses.Add(TtcObjectConfig.TtcRotatingBlockAddress + getOffset(i));
            }
            for (int i = 0; i < 2; i++)
            {
                addresses.Add(TtcObjectConfig.TtcRotatingTriangularPrismAddress + getOffset(i));
            }
            for (int i = 0; i < 4; i++)
            {
                addresses.Add(TtcObjectConfig.TtcPendulumAddress + getOffset(i));
            }
            for (int i = 0; i < 5; i++)
            {
                addresses.Add(TtcObjectConfig.TtcTreadmill1Address + getOffset(i));
            }
            for (int i = 0; i < 12; i++)
            {
                addresses.Add(TtcObjectConfig.TtcPusherAddress + getOffset(i));
            }
            for (int i = 0; i < 5; i++)
            {
                addresses.Add(TtcObjectConfig.TtcCog1Address + getOffset(i));
            }
            for (int i = 0; i < 2; i++)
            {
                addresses.Add(TtcObjectConfig.TtcSpinningTriangleAddress + getOffset(i));
            }
            for (int i = 0; i < 1; i++)
            {
                addresses.Add(TtcObjectConfig.TtcPitBlockAddress + getOffset(i));
            }
            for (int i = 0; i < 2; i++)
            {
                addresses.Add(TtcObjectConfig.TtcHandAddress + getOffset(i));
            }
            for (int i = 0; i < 14; i++)
            {
                addresses.Add(TtcObjectConfig.TtcSpinnerAddress + getOffset(i));
            }
            for (int i = 0; i < 6; i++)
            {
                addresses.Add(TtcObjectConfig.TtcWheelAddress + getOffset(i));
            }
            for (int i = 0; i < 2; i++)
            {
                addresses.Add(TtcObjectConfig.TtcElevatorAddress + getOffset(i));
            }
            for (int i = 0; i < 1; i++)
            {
                addresses.Add(TtcObjectConfig.TtcCog2Address + getOffset(i));
            }
            for (int i = 0; i < 2; i++)
            {
                addresses.Add(TtcObjectConfig.TtcTreadmill2Address + getOffset(i));
            }
            for (int i = 0; i < 1; i++)
            {
                addresses.Add(TtcObjectConfig.TtcThwompAddress + getOffset(i));
            }
            for (int i = 0; i < 2; i++)
            {
                if (i == 0)
                {
                    addresses.Add(TtcObjectConfig.TtcAmp1Address);
                }
                if (i == 1)
                {
                    addresses.Add(TtcObjectConfig.TtcAmp2Address);
                }
            }
            List <ObjectDataModel> bobombs = Config.ObjectSlotsManager.GetLoadedObjectsWithName("Bob-omb");

            bobombs.Sort((obj1, obj2) =>
            {
                string label1 = Config.ObjectSlotsManager.GetSlotLabelFromObject(obj1);
                string label2 = Config.ObjectSlotsManager.GetSlotLabelFromObject(obj2);
                int pos1      = ParsingUtilities.ParseInt(label1);
                int pos2      = ParsingUtilities.ParseInt(label2);
                return(pos1 - pos2);
            });
            for (int i = 0; i < bobombs.Count; i++)
            {
                addresses.Add(bobombs[i].Address);
            }
            return(addresses);
        }
Exemplo n.º 14
0
        public static List <TtcObject> CreateRngObjectsFromGame(TtcRng rng, List <int> dustFrames = null)
        {
            Func <int, uint> getOffset = (int i) => (uint)i * 0x260;

            List <TtcObject> rngObjects = new List <TtcObject>();

            for (int i = 0; i < 6; i++)
            {
                rngObjects.Add(new TtcRotatingBlock(rng, TtcObjectConfig.TtcRotatingBlockAddress + getOffset(i)).SetIndex(i + 1));
            }
            for (int i = 0; i < 2; i++)
            {
                rngObjects.Add(new TtcRotatingTriangularPrism(rng, TtcObjectConfig.TtcRotatingTriangularPrismAddress + getOffset(i)).SetIndex(i + 1));
            }
            for (int i = 0; i < 4; i++)
            {
                rngObjects.Add(new TtcPendulum(rng, TtcObjectConfig.TtcPendulumAddress + getOffset(i)).SetIndex(i + 1));
            }
            for (int i = 0; i < 5; i++)
            {
                rngObjects.Add(new TtcTreadmill(rng, TtcObjectConfig.TtcTreadmill1Address + getOffset(i)).SetIndex(i + 1));
            }
            for (int i = 0; i < 12; i++)
            {
                rngObjects.Add(new TtcPusher(rng, TtcObjectConfig.TtcPusherAddress + getOffset(i)).SetIndex(i + 1));
            }
            for (int i = 0; i < 5; i++)
            {
                rngObjects.Add(new TtcCog(rng, TtcObjectConfig.TtcCog1Address + getOffset(i)).SetIndex(i + 1));
            }
            for (int i = 0; i < 2; i++)
            {
                rngObjects.Add(new TtcSpinningTriangle(rng, TtcObjectConfig.TtcSpinningTriangleAddress + getOffset(i)).SetIndex(i + 1));
            }
            for (int i = 0; i < 1; i++)
            {
                rngObjects.Add(new TtcPitBlock(rng, TtcObjectConfig.TtcPitBlockAddress + getOffset(i)).SetIndex(i + 1));
            }
            for (int i = 0; i < 2; i++)
            {
                rngObjects.Add(new TtcHand(rng, TtcObjectConfig.TtcHandAddress + getOffset(i)).SetIndex(i + 1));
            }
            for (int i = 0; i < 14; i++)
            {
                rngObjects.Add(new TtcSpinner(rng, TtcObjectConfig.TtcSpinnerAddress + getOffset(i)).SetIndex(i + 1));
            }
            for (int i = 0; i < 6; i++)
            {
                rngObjects.Add(new TtcWheel(rng, TtcObjectConfig.TtcWheelAddress + getOffset(i)).SetIndex(i + 1));
            }
            for (int i = 0; i < 2; i++)
            {
                rngObjects.Add(new TtcElevator(rng, TtcObjectConfig.TtcElevatorAddress + getOffset(i)).SetIndex(i + 1));
            }
            for (int i = 0; i < 1; i++)
            {
                rngObjects.Add(new TtcCog(rng, TtcObjectConfig.TtcCog2Address + getOffset(i)).SetIndex(i + 6));
            }
            for (int i = 0; i < 2; i++)
            {
                rngObjects.Add(new TtcTreadmill(rng, TtcObjectConfig.TtcTreadmill2Address + getOffset(i)).SetIndex(i + 6));
            }
            for (int i = 0; i < 1; i++)
            {
                rngObjects.Add(new TtcThwomp(rng, TtcObjectConfig.TtcThwompAddress + getOffset(i)).SetIndex(i + 1));
            }
            for (int i = 0; i < 2; i++)
            {
                if (i == 0)
                {
                    rngObjects.Add(new TtcAmp(rng, TtcObjectConfig.TtcAmp1Address).SetIndex(i + 1));
                }
                if (i == 1)
                {
                    rngObjects.Add(new TtcAmp(rng, TtcObjectConfig.TtcAmp2Address).SetIndex(i + 1));
                }
            }
            List <ObjectDataModel> bobombs = Config.ObjectSlotsManager.GetLoadedObjectsWithName("Bob-omb");

            bobombs.Sort((obj1, obj2) =>
            {
                string label1 = Config.ObjectSlotsManager.GetSlotLabelFromObject(obj1);
                string label2 = Config.ObjectSlotsManager.GetSlotLabelFromObject(obj2);
                int pos1      = ParsingUtilities.ParseInt(label1);
                int pos2      = ParsingUtilities.ParseInt(label2);
                return(pos1 - pos2);
            });
            for (int i = 0; i < bobombs.Count; i++)
            {
                rngObjects.Add(new TtcBobomb(rng, bobombs[i].Address).SetIndex(i + 1));
            }
            for (int i = 0; i < 1; i++)
            {
                TtcDust dust = new TtcDust(rng).SetIndex(i + 1) as TtcDust;
                if (dustFrames != null)
                {
                    dust.AddDustFrames(dustFrames);
                }
                rngObjects.Add(dust);
            }
            return(rngObjects);
        }
Exemplo n.º 15
0
        internal static ParsingResult TryParseChordName(Match match, NoteName rootNoteName, out Chord chord)
        {
            chord = null;

            //

            Quality?quality = null;

            var qualityGroup = match.Groups[ChordQualityGroupName];

            if (qualityGroup.Success)
            {
                quality = GroupsQualities.FirstOrDefault(gq => match.Groups[gq.Key].Success).Value;
            }

            //

            var             extensionIntervalNumber  = -1;
            IntervalQuality?extensionIntervalQuality = null;

            var extensionGroup = match.Groups[ExtensionGroupName];

            if (extensionGroup.Success && !string.IsNullOrWhiteSpace(extensionGroup.Value))
            {
                if (match.Groups[ExtensionQualityGroupName].Success)
                {
                    extensionIntervalQuality = GroupsExtensionQualities.FirstOrDefault(gq => match.Groups[gq.Key].Success).Value;
                }

                if (!ParsingUtilities.ParseInt(match, ExtensionNumberGroupName, -1, out extensionIntervalNumber) ||
                    extensionIntervalNumber < 5)
                {
                    return(ParsingResult.Error(ExtensionNumberIsOutOfRange));
                }
            }

            if (quality == Quality.HalfDiminished || quality == Quality.Dominant)
            {
                if (extensionIntervalNumber >= 0 && extensionIntervalNumber != 7)
                {
                    return(ParsingResult.Error(HalfDiminishedOrDominantIsNotSeventh));
                }

                if (extensionIntervalNumber < 0)
                {
                    extensionIntervalNumber = 7;
                }
            }

            var extensionNotes   = new List <NoteName>();
            var extensionNumbers = new List <int>();

            if (extensionIntervalNumber >= 0)
            {
                var extensionNotesDictionary = GetExtensionNotes(quality, rootNoteName, extensionIntervalNumber, extensionIntervalQuality);
                extensionNotes.AddRange(extensionNotesDictionary.Keys);
                extensionNumbers.AddRange(extensionNotesDictionary.Values);
            }

            if (quality == Quality.HalfDiminished)
            {
                quality = Quality.Diminished;
            }
            else if (quality == Quality.Dominant)
            {
                quality = Quality.Major;
            }

            if (quality == null)
            {
                quality = Quality.Major;
            }

            //

            var notes = new List <NoteName>(Chord.GetByTriad(rootNoteName, ChordQualities[quality.Value]).NotesNames);

            notes.AddRange(extensionNotes);
            extensionNumbers.InsertRange(0, new[] { 1, 3, 5 });
            if (extensionIntervalNumber == 5)
            {
                notes.Clear();
                notes.AddRange(new[] { rootNoteName, extensionNotes.First() });

                extensionNumbers.Clear();
                extensionNumbers.AddRange(new[] { 1, 5 });
            }

            //

            var alteredToneGroup = match.Groups[AlteredToneGroupName];

            if (alteredToneGroup.Success)
            {
                int alteredToneNumber;
                if (!ParsingUtilities.ParseInt(match, AlteredToneNumberGroupName, -1, out alteredToneNumber))
                {
                    return(ParsingResult.Error(AlteredToneNumberIsOutOfRange));
                }

                var transposeBy = 0;

                var accidental = match.Groups[AlteredToneAccidentalGroupName].Value;
                switch (accidental)
                {
                case "#":
                case "+":
                    transposeBy = 1;
                    break;

                case "b":
                case "-":
                    transposeBy = -1;
                    break;
                }

                var maxExtensionNumber = extensionNumbers.Max();
                if (maxExtensionNumber < alteredToneNumber)
                {
                    var extensionNotesDictionary = GetExtensionNotes(quality, rootNoteName, alteredToneNumber, null)
                                                   .Where(kv => kv.Value > maxExtensionNumber);

                    notes.AddRange(extensionNotesDictionary.Select(kv => kv.Key));
                    extensionNumbers.AddRange(extensionNotesDictionary.Select(kv => kv.Value));
                }

                var index = extensionNumbers.IndexOf(alteredToneNumber);
                if (index >= 0)
                {
                    notes[index] = notes[index].Transpose(Interval.FromHalfSteps(transposeBy));
                }
            }

            //

            var suspendedGroup = match.Groups[SuspendedGroupName];

            if (suspendedGroup.Success)
            {
                int suspensionNumber;
                if (!ParsingUtilities.ParseInt(match, SuspendedNumberGroupName, -1, out suspensionNumber) ||
                    suspensionNumber != 2 && suspensionNumber != 4)
                {
                    return(ParsingResult.Error(SuspensionNumberIsOutOfRange));
                }

                var interval = suspensionNumber == 2
                    ? Interval.Get(IntervalQuality.Major, 2)
                    : Interval.Get(IntervalQuality.Perfect, 4);
                notes[1] = rootNoteName.Transpose(interval);
            }

            //

            var addedToneGroup = match.Groups[AddedToneGroupName];

            if (addedToneGroup.Success)
            {
                int addedToneNumber;
                if (!ParsingUtilities.ParseInt(match, AddedToneNumberGroupName, -1, out addedToneNumber))
                {
                    return(ParsingResult.Error(AddedToneNumberIsOutOfRange));
                }

                var interval = Interval.IsPerfect(addedToneNumber)
                    ? Interval.Get(IntervalQuality.Perfect, addedToneNumber)
                    : Interval.Get(IntervalQuality.Major, addedToneNumber);
                notes.Add(rootNoteName.Transpose(interval));
            }

            //

            var bassNoteNameGroup = match.Groups[BassNoteNameGroupName];

            if (bassNoteNameGroup.Success)
            {
                NoteName bassNoteName;
                var      bassNoteNameParsingResult = NoteNameParser.TryParse(bassNoteNameGroup.Value, out bassNoteName);
                if (bassNoteNameParsingResult.Status != ParsingStatus.Parsed)
                {
                    return(bassNoteNameParsingResult);
                }

                notes.Insert(0, bassNoteName);
            }

            //

            chord = new Chord(notes);
            return(ParsingResult.Parsed);
        }
Exemplo n.º 16
0
        internal static ParsingResult TryParse(string input, out MusicalTimeSpan timeSpan)
        {
            timeSpan = null;

            if (string.IsNullOrWhiteSpace(input))
            {
                return(ParsingResult.EmptyInputString);
            }

            var match = ParsingUtilities.Match(input, Patterns);

            if (match == null)
            {
                return(ParsingResult.NotMatched);
            }

            // Fraction

            long numerator;

            if (!ParsingUtilities.ParseLong(match, NumeratorGroupName, 1, out numerator))
            {
                return(new ParsingResult(NumeratorIsOutOfRange));
            }

            long denominator;

            if (!ParsingUtilities.ParseLong(match, DenominatorGroupName, 1, out denominator))
            {
                return(new ParsingResult(DenominatorIsOutOfRange));
            }

            var fractionMnemonicGroup = match.Groups[FractionMnemonicGroupName];

            if (fractionMnemonicGroup.Success)
            {
                var fractionDefinition = Fractions[fractionMnemonicGroup.Value];
                numerator   = fractionDefinition.Item1;
                denominator = fractionDefinition.Item2;
            }

            // Tuplet

            int tupletNotesCount;

            if (!ParsingUtilities.ParseInt(match, TupletNotesCountGroupName, 1, out tupletNotesCount))
            {
                return(new ParsingResult(TupletNotesCountIsOutOfRange));
            }

            int tupletSpaceSize;

            if (!ParsingUtilities.ParseInt(match, TupletSpaceSizeGroupName, 1, out tupletSpaceSize))
            {
                return(new ParsingResult(TupletSpaceSizeIsOutOfRange));
            }

            var tupletMnemonicGroup = match.Groups[TupletMnemonicGroupName];

            if (tupletMnemonicGroup.Success)
            {
                var tupletDefinition = Tuplets[tupletMnemonicGroup.Value];
                tupletNotesCount = tupletDefinition.Item1;
                tupletSpaceSize  = tupletDefinition.Item2;
            }

            // Dots

            var dotsGroup = match.Groups[DotsGroupName];
            var dots      = dotsGroup.Success
                ? dotsGroup.Value.Length
                : 0;

            //

            timeSpan = new MusicalTimeSpan(numerator, denominator).Dotted(dots).Tuplet(tupletNotesCount, tupletSpaceSize);
            return(ParsingResult.Parsed);
        }
Exemplo n.º 17
0
        private void AddItemsToContextMenuStrip()
        {
            ToolStripMenuItem resetVariablesItem = new ToolStripMenuItem("Reset Variables");

            resetVariablesItem.Click += (sender, e) => ResetVariables();

            ToolStripMenuItem clearAllButHighlightedItem = new ToolStripMenuItem("Clear All But Highlighted");

            clearAllButHighlightedItem.Click += (sender, e) => ClearAllButHighlightedVariables();

            ToolStripMenuItem fixVerticalScrollItem = new ToolStripMenuItem("Fix Vertical Scroll");

            fixVerticalScrollItem.Click += (sender, e) => FixVerticalScroll();

            ToolStripMenuItem addCustomVariablesItem = new ToolStripMenuItem("Add Custom Variables");

            addCustomVariablesItem.Click += (sender, e) =>
            {
                VariableCreationForm form = new VariableCreationForm();
                form.Initialize(this);
                form.Show();
            };

            ToolStripMenuItem addMappingVariablesItem = new ToolStripMenuItem("Add Mapping Variables");

            addMappingVariablesItem.Click += (sender, e) => AddVariables(MappingConfig.GetVariables());

            ToolStripMenuItem addDummyVariableItem = new ToolStripMenuItem("Add Dummy Variable...");
            List <string>     types = new List <string>(TypeUtilities.InGameTypeList);

            types.Add("string");
            foreach (string typeString in types)
            {
                ToolStripMenuItem typeItem = new ToolStripMenuItem(typeString);
                addDummyVariableItem.DropDownItems.Add(typeItem);
                typeItem.Click += (sender, e) =>
                {
                    int numEntries = 1;
                    if (KeyboardUtilities.IsCtrlHeld())
                    {
                        string numEntriesString = DialogUtilities.GetStringFromDialog(labelText: "Enter Num Vars:");
                        if (numEntriesString == null)
                        {
                            return;
                        }
                        int parsed = ParsingUtilities.ParseInt(numEntriesString);
                        parsed     = Math.Max(parsed, 0);
                        numEntries = parsed;
                    }

                    List <WatchVariableControl> controls = new List <WatchVariableControl>();
                    for (int i = 0; i < numEntries; i++)
                    {
                        string        specialType   = WatchVariableSpecialUtilities.AddDummyEntry(typeString);
                        WatchVariable watchVariable =
                            new WatchVariable(
                                name: specialType,
                                memoryTypeName: null,
                                specialType: specialType,
                                baseAddressType: BaseAddressTypeEnum.None,
                                offsetUS: null,
                                offsetJP: null,
                                offsetSH: null,
                                offsetEU: null,
                                offsetDefault: null,
                                mask: null,
                                shift: null,
                                handleMapping: true);
                        WatchVariableControlPrecursor precursor =
                            new WatchVariableControlPrecursor(
                                name: specialType,
                                watchVar: watchVariable,
                                subclass: typeString == "string" ? WatchVariableSubclass.String : WatchVariableSubclass.Number,
                                backgroundColor: null,
                                displayType: null,
                                roundingLimit: null,
                                useHex: null,
                                invertBool: null,
                                isYaw: null,
                                coordinate: null,
                                groupList: new List <VariableGroup>()
                        {
                            VariableGroup.Custom
                        });
                        WatchVariableControl control = precursor.CreateWatchVariableControl();
                        controls.Add(control);
                    }
                    AddVariables(controls);
                };
            }

            ToolStripMenuItem openSaveClearItem = new ToolStripMenuItem("Open / Save / Clear ...");

            ControlUtilities.AddDropDownItems(
                openSaveClearItem,
                new List <string>()
            {
                "Open", "Open as Pop Out", "Save in Place", "Save As", "Clear"
            },
                new List <Action>()
            {
                () => OpenVariables(),
                () => OpenVariablesAsPopOut(),
                () => SaveVariablesInPlace(),
                () => SaveVariables(),
                () => ClearVariables(),
            });

            ToolStripMenuItem doToAllVariablesItem = new ToolStripMenuItem("Do to all variables...");

            WatchVariableSelectionUtilities.CreateSelectionToolStripItems(
                () => GetCurrentVariableControls(), this)
            .ForEach(item => doToAllVariablesItem.DropDownItems.Add(item));

            ToolStripMenuItem filterVariablesItem = new ToolStripMenuItem("Filter Variables...");

            _filteringDropDownItems = _allGroups.ConvertAll(varGroup => CreateFilterItem(varGroup));
            UpdateFilterItemCheckedStatuses();
            _filteringDropDownItems.ForEach(item => filterVariablesItem.DropDownItems.Add(item));
            filterVariablesItem.DropDown.MouseEnter += (sender, e) =>
            {
                filterVariablesItem.DropDown.AutoClose = false;
            };
            filterVariablesItem.DropDown.MouseLeave += (sender, e) =>
            {
                filterVariablesItem.DropDown.AutoClose = true;
                filterVariablesItem.DropDown.Close();
            };

            ContextMenuStrip.Items.Add(resetVariablesItem);
            ContextMenuStrip.Items.Add(clearAllButHighlightedItem);
            ContextMenuStrip.Items.Add(fixVerticalScrollItem);
            ContextMenuStrip.Items.Add(addCustomVariablesItem);
            ContextMenuStrip.Items.Add(addMappingVariablesItem);
            ContextMenuStrip.Items.Add(addDummyVariableItem);
            ContextMenuStrip.Items.Add(openSaveClearItem);
            ContextMenuStrip.Items.Add(doToAllVariablesItem);
            ContextMenuStrip.Items.Add(filterVariablesItem);
        }