Ejemplo n.º 1
0
        protected void GenerateLine(IFrameBreeding frame)
        {
            foreach (int columnIndex in selectedColumns)
            {
                if (dataGrid.Columns[columnIndex].Name == "Flips")
                {
                    sb.AppendFormat("{0:" + dataGrid.Columns[columnIndex].DefaultCellStyle.Format + "}",
                                    frame.GetType().GetProperty(dataGrid.Columns[columnIndex].DataPropertyName).GetValue
                                        (frame, null).ToString().Replace(", ", "\t"));
                    sb.Append("\t");
                }
                else
                {
                    sb.AppendFormat("{0:" + dataGrid.Columns[columnIndex].DefaultCellStyle.Format + "}",
                                    frame.GetType().GetProperty(dataGrid.Columns[columnIndex].DataPropertyName).GetValue
                                        (frame, null));
                    sb.Append("\t");
                }
            }

            sb.Append(Environment.NewLine);
        }
Ejemplo n.º 2
0
        private void generateAdjacentToolStripMenuItem_Click(object sender, EventArgs e)
        {
            var initialiframe = (IFrameBreeding) dataGridViewEggIVValues.SelectedRows[0].DataBoundItem;

            //  We need to display a dialog that is going to let the user
            //  decide which adjacent spreads that we want to show here.
            var adjacent = new PlatinumTimeAdjacent(initialiframe.Seed, initialiframe.Offset,
                                                    DateTime.Now.Year);

            if (adjacent.ShowDialog() == DialogResult.OK)
            {
                //  Instantiate our Generator and a dummy frame compare record
                //  one time here so we can re-use it for all of our later work
                var adjacentGenerator = new FrameGenerator();

                var parentA = new uint[6];
                var parentB = new uint[6];

                uint.TryParse(maskedTextBoxHPA.Text, out parentA[0]);
                uint.TryParse(maskedTextBoxAtkA.Text, out parentA[1]);
                uint.TryParse(maskedTextBoxDefA.Text, out parentA[2]);
                uint.TryParse(maskedTextBoxSpAA.Text, out parentA[3]);
                uint.TryParse(maskedTextBoxSpDA.Text, out parentA[4]);
                uint.TryParse(maskedTextBoxSpeA.Text, out parentA[5]);

                uint.TryParse(maskedTextBoxHPB.Text, out parentB[0]);
                uint.TryParse(maskedTextBoxAtkB.Text, out parentB[1]);
                uint.TryParse(maskedTextBoxDefB.Text, out parentB[2]);
                uint.TryParse(maskedTextBoxSpAB.Text, out parentB[3]);
                uint.TryParse(maskedTextBoxSpDB.Text, out parentB[4]);
                uint.TryParse(maskedTextBoxSpeB.Text, out parentB[5]);

                adjacentGenerator.ParentA = parentA;
                adjacentGenerator.ParentB = parentB;

                var adjacentFrameCompare = new FrameCompare(
                    0, CompareType.None,
                    0, CompareType.None,
                    0, CompareType.None,
                    0, CompareType.None,
                    0, CompareType.None,
                    0, CompareType.None,
                    null,
                    -1,
                    false,
                    false,
                    false,
                    null,
                    new NoGenderFilter());

                var adjacentFrames = new List<IFrameBreeding>();

                int matchCount = 0;

                //  Now we need to get the values back from this and run a special generation
                //  with just these variables.  We want it to be sorted by date (with delay)
                //  and for items to be put in offset order.
                foreach (DateTime adjacentTime in adjacent.AdjacentTimeList)
                {
                    for (uint rdelay = adjacent.ReturnMinDelay; rdelay <= adjacent.ReturnMaxDelay; rdelay++)
                    {
                        //  Get the information (year, month, date from the frame) and build
                        //  our initial seed to feed to the Frame Generator so that we can
                        uint seed =
                            ((((uint) adjacentTime.Month*
                               (uint) adjacentTime.Day +
                               (uint) adjacentTime.Minute +
                               (uint) adjacentTime.Second)%0x100) << 24) +
                            ((uint) adjacentTime.Hour << 16) +
                            ((uint) adjacentTime.Year - 2000 + rdelay);

                        //  Call a generator with a dummy compare object and go
                        //  up to the max delay and after this iterate through
                        //  the results to include min-max in a new list of frames
                        //  to show on the grid.
                        adjacentGenerator.InitialFrame = adjacent.ReturnMinOffset;
                        adjacentGenerator.MaxResults = adjacent.ReturnMaxOffset - adjacent.ReturnMinOffset + 1;
                        adjacentGenerator.InitialSeed = seed;
                        adjacentGenerator.FrameType = initialiframe.FrameType;

                        List<Frame> frames = adjacentGenerator.Generate(adjacentFrameCompare, 0, 0);

                        foreach (Frame frame in frames)
                        {
                            //  Create our PlatinumIFrame and then add this to the
                            //  master collection that we are going to display to
                            //  the user.
                            var iframe = new IFrameBreeding
                                {
                                    Seed = seed,
                                    Offset = frame.Number,
                                    Delay = rdelay,
                                    Hp = frame.DisplayHpAlt,
                                    Atk = frame.DisplayAtkAlt,
                                    Def = frame.DisplayDefAlt,
                                    Spa = frame.DisplaySpaAlt,
                                    Spd = frame.DisplaySpdAlt,
                                    Spe = frame.DisplaySpeAlt,
                                    DisplayHpInh = frame.DisplayHp,
                                    DisplayAtkInh = frame.DisplayAtk,
                                    DisplayDefInh = frame.DisplayDef,
                                    DisplaySpaInh = frame.DisplaySpa,
                                    DisplaySpdInh = frame.DisplaySpd,
                                    DisplaySpeInh = frame.DisplaySpe,
                                    SeedTime = adjacentTime,
                                    FrameType = adjacentGenerator.FrameType
                                };

                            if (initialiframe.Seed == iframe.Seed)
                            {
                                if (targetFrameIndex != 0)
                                {
                                    if (initialiframe.Offset == iframe.Offset)
                                        targetFrameIndex = matchCount;
                                }
                                else
                                    targetFrameIndex = matchCount;
                            }

                            adjacentFrames.Add(iframe);

                            matchCount++;
                        }
                    }
                }

                Date.Visible = true;
                dataGridViewEggIVValues.DataSource = adjacentFrames;
                returnToResultsToolStripMenuItem.Visible = true;

                //  Select the row of the initial frame that was
                //  selected when the adjacent command was run

                dataGridViewEggIVValues.FirstDisplayedScrollingRowIndex = targetFrameIndex;
                dataGridViewEggIVValues.Rows[targetFrameIndex].Selected = true;
            }
        }
Ejemplo n.º 3
0
        private void Generate4thGenEggIVsJob(uint minDelay, uint maxDelay, uint year)
        {
            uint searchRange = generator.MaxResults;

            //  Iterate through all AB
            for (uint ab = 0; ab <= 255; ab++)
            {
                waitHandle.WaitOne();
                //  Iterate through all CD
                for (uint cd = 0; cd <= 23; cd++)
                {
                    //  Iterate through delay range + year
                    for (uint delay = minDelay; delay <= maxDelay; delay++)
                    {
                        //  First we need to build a seed for this iteration
                        //  based on all of our information.  This should be
                        //  fairly easy since we are not using dates ;)
                        uint seed = (ab << 24) | (cd << 16) | (delay + year - 2000);

                        //  Set this to our seed here
                        generator.InitialSeed = seed;

                        if (iframesEggIVs.Count > 1000000)
                            break;

                        //  This is where we actually go ahead and call our
                        //  generator for a list of egg PIDs based on parameters
                        //  that have been passed in.
                        List<Frame> frames = generator.Generate(frameCompare, id, sid);

                        progressSearched += searchRange;
                        progressFound += (uint) frames.Count;

                        //  Now we need to iterate through each result here
                        //  and create a collection of the information that
                        //  we are going to place into our grid.
                        foreach (Frame frame in frames)
                        {
                            var iframeEgg = new IFrameBreeding
                                {
                                    Offset = frame.Number,
                                    Seed = seed,
                                    FrameType = generator.FrameType,
                                    Delay = delay,
                                    Hp = frame.DisplayHpAlt,
                                    Atk = frame.DisplayAtkAlt,
                                    Def = frame.DisplayDefAlt,
                                    Spa = frame.DisplaySpaAlt,
                                    Spd = frame.DisplaySpdAlt,
                                    Spe = frame.DisplaySpeAlt,
                                    DisplayHpInh = frame.DisplayHp,
                                    DisplayAtkInh = frame.DisplayAtk,
                                    DisplayDefInh = frame.DisplayDef,
                                    DisplaySpaInh = frame.DisplaySpa,
                                    DisplaySpdInh = frame.DisplaySpd,
                                    DisplaySpeInh = frame.DisplaySpe
                                };

                            lock (threadLock)
                            {
                                iframesEggIVs.Add(iframeEgg);
                            }
                            refreshQueue = true;
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
        protected void GenerateLine(IFrameBreeding frame)
        {
            foreach (int columnIndex in selectedColumns)
            {
                if (dataGrid.Columns[columnIndex].Name == "Flips")
                {
                    sb.AppendFormat("{0:" + dataGrid.Columns[columnIndex].DefaultCellStyle.Format + "}",
                                    frame.GetType().GetProperty(dataGrid.Columns[columnIndex].DataPropertyName).GetValue
                                        (frame, null).ToString().Replace(", ", "\t"));
                    sb.Append("\t");
                }
                else
                {
                    sb.AppendFormat("{0:" + dataGrid.Columns[columnIndex].DefaultCellStyle.Format + "}",
                                    frame.GetType().GetProperty(dataGrid.Columns[columnIndex].DataPropertyName).GetValue
                                        (frame, null));
                    sb.Append("\t");
                }
            }

            sb.Append(Environment.NewLine);
        }