private void AddBuild(Monster mon) { //string compKey = string.Join(",", mon.Current.Runes.Select(r => r.ID.ToString())); var key = new RuneKey(mon.Current.Runes); if (!monsList.ContainsKey(key)) { monsList.AddOrUpdate(key, mon, (k, v) => mon); RegenList(); } }
public Door Constructor( int area1, Point point1InArea1, Point point2InArea1, int area2, Point point1InArea2, Point point2InArea2, Orientation orientation, RuneKey color, Texture2D texture ) { Door target = new Door(area1, point1InArea1, point2InArea1, area2, point1InArea2, point2InArea2, orientation, color, texture); return target; // TODO: add assertions to method DoorTest.Constructor(Int32, Point, Point, Int32, Point, Point, Orientation, RuneKey, Texture2D) }
public void RegenSets() { progState = 0; // delegate Task.Factory.StartNew(() => { // cancel the current worker monSetsCancelled = true; // cancel anyone making builds buildGenCancelled = true; // wait for anyone to stop lock (monSetsLock) { // stop cancelling monSetsCancelled = false; build.RunesUseLocked = Program.Settings.LockTest; build.RunesUseEquipped = Program.Settings.UseEquipped; build.RunesDropHalfSetStat = Program.GoFast; build.RunesOnlyFillEmpty = Program.FillRunes; build.GenRunes(Program.Data); long num = 0; long total = getTotal(); DateTime start = DateTime.Now; var pfer = Parallel.ForEach(build.Runes[0], (r0, loop) => { if (monSetsCancelled) { loop.Break(); } RuneSet?c4set = null; if (!build.AllowBroken && r0.SetIs4) { c4set = r0.Set; } foreach (var r1 in build.Runes[1]) { if (monSetsCancelled) { break; } if (!build.AllowBroken && r1.SetIs4) { if (c4set == null) { c4set = r1.Set; } else if (c4set != r1.Set) { continue; } } foreach (var r2 in build.Runes[2]) { if (monSetsCancelled) { break; } if (!build.AllowBroken && r2.SetIs4) { if (c4set == null) { c4set = r2.Set; } else if (c4set != r2.Set) { continue; } } foreach (var r3 in build.Runes[3]) { if (monSetsCancelled) { break; } if (!build.AllowBroken && r3.SetIs4) { if (c4set != r3.Set) { continue; } } foreach (var r4 in build.Runes[4]) { if (monSetsCancelled) { break; } if (!build.AllowBroken && r4.SetIs4) { if (c4set != r4.Set) { continue; } } foreach (var r5 in build.Runes[5]) { if (monSetsCancelled) { break; } if (!build.AllowBroken && r5.SetIs4) { if (c4set != r5.Set) { continue; } } var key = new RuneKey(r0, r1, r2, r3, r4, r5); /* * var compKey = r0.ID.ToString() + "," + * r1.ID.ToString() + "," + * r2.ID.ToString() + "," + * r3.ID.ToString() + "," + * r4.ID.ToString() + "," + * r5.ID.ToString();*/ //if (!buildsToGen.Contains(compKey) && !monsList.ContainsKey(compKey)) { //monsList.AddOrUpdate(compKey, (Monster)null, (k, v) => v); buildsToGen.Add(key); Interlocked.Increment(ref num); // don't lag the comp } if (DateTime.Now > start.AddSeconds(1)) { if (!IsDisposed) { Invoke((MethodInvoker) delegate { // put the thing in on the main thread and bump the progress bar toolStripProgressBar1.Value = (int)(toolStripProgressBar1.Maximum * num / (double)total); toolStripStatusLabel1.Text = "Generating Sets " + num.ToString("#,##0") + "/" + total.ToString("#,##0") + " [" + buildsToGen.Count.ToString("#,##0") + "]"; }); } Thread.Sleep(20); start = DateTime.Now; } } } } } } }); if (!IsDisposed) { Invoke((MethodInvoker) delegate { toolStripProgressBar1.Value = (int)(toolStripProgressBar1.Maximum * num / (double)total); toolStripStatusLabel1.Text = "Generating Sets " + num.ToString("#,##0") + "/" + total.ToString("#,##0"); }); } progState = 1; } }); }
public bool HasRuneKey(RuneKey runeKey) { return RuneKeys.Contains(runeKey); }
/// <summary> /// Adds /// </summary> /// <param name="runeKey"> /// The rune key. /// </param> public void AddRuneKey(RuneKey runeKey) { Contract.Ensures(HasRuneKey(runeKey)); RuneKeys.Add(runeKey); }