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); }
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; } }
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; } } } } }