Пример #1
0
        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();
            }
        }
Пример #2
0
 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)
 }
Пример #3
0
        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;
                }
            });
        }
Пример #4
0
 public bool HasRuneKey(RuneKey runeKey)
 {
     return RuneKeys.Contains(runeKey);
 }
Пример #5
0
 /// <summary>
 /// Adds 
 /// </summary>
 /// <param name="runeKey">
 /// The rune key.
 /// </param>
 public void AddRuneKey(RuneKey runeKey)
 {
     Contract.Ensures(HasRuneKey(runeKey));
     RuneKeys.Add(runeKey);
 }