Exemple #1
0
        public static IEnumerable <ValueTuple <int, int> > smethod_0(int int_0, int int_1, MapGrid mapGrid_0)
        {
            MapNavigator.< > c__DisplayClass12_0 CS$ < > 8__locals1;

            CS$ < > 8__locals1.grid = mapGrid_0;
            bool left  = MapNavigator.smethod_1(int_0 - 1, int_1, ref CS$ < > 8__locals1);
            bool right = MapNavigator.smethod_1(int_0 + 1, int_1, ref CS$ < > 8__locals1);
            bool up    = MapNavigator.smethod_1(int_0, int_1 - 1, ref CS$ < > 8__locals1);
            bool down  = MapNavigator.smethod_1(int_0, int_1 + 1, ref CS$ < > 8__locals1);

            if (left)
            {
                yield return(new ValueTuple <int, int>(int_0 - 1, int_1));
            }
            if (right)
            {
                yield return(new ValueTuple <int, int>(int_0 + 1, int_1));
            }
            if (up)
            {
                yield return(new ValueTuple <int, int>(int_0, int_1 - 1));
            }
            if (down)
            {
                yield return(new ValueTuple <int, int>(int_0, int_1 + 1));
            }
            if (up && left && MapNavigator.smethod_1(int_0 - 1, int_1 - 1, ref CS$ < > 8__locals1))
            {
                yield return(new ValueTuple <int, int>(int_0 - 1, int_1 - 1));
            }
            if (up && right && MapNavigator.smethod_1(int_0 + 1, int_1 - 1, ref CS$ < > 8__locals1))
            {
                yield return(new ValueTuple <int, int>(int_0 + 1, int_1 - 1));
            }
            if (down && left && MapNavigator.smethod_1(int_0 - 1, int_1 + 1, ref CS$ < > 8__locals1))
            {
                yield return(new ValueTuple <int, int>(int_0 - 1, int_1 + 1));
            }
            if (down && right && MapNavigator.smethod_1(int_0 + 1, int_1 + 1, ref CS$ < > 8__locals1))
            {
                yield return(new ValueTuple <int, int>(int_0 + 1, int_1 + 1));
            }
            yield break;
        }
Exemple #2
0
        private IEnumerable <ValueTuple <int, int> > method_2(int int_0, int int_1)
        {
            int num = this.method_1(int_0, int_1);

            if (this.items[num].Parent != -1)
            {
                goto IL_B5;
            }
            IEnumerator <ValueTuple <int, int> > enumerator = MapNavigator.smethod_0(int_0, int_1, this.Grid).GetEnumerator();
            int  dx;
            int  dy;
            bool both;
            bool bottomWalkable;

            for (;;)
            {
                try
                {
IL_294:
                    if (!enumerator.MoveNext())
                    {
                        break;
                    }
                    goto IL_2B5;
IL_B5:
                    int num2;
                    int num3;
                    this.hEmzxAaTll(this.items[num].Parent, out num2, out num3);
                    dx = (int_0 - num2) / Math.Max(Math.Abs(int_0 - num2), 1);
                    dy = (int_1 - num3) / Math.Max(Math.Abs(int_1 - num3), 1);
                    if ((dx & dy) == 0)
                    {
                        goto IL_17C;
                    }
                    if (!(both = this.method_7(int_0, int_1 + dy)))
                    {
                        goto IL_2DF;
                    }
                    yield return(new ValueTuple <int, int>(int_0, int_1 + dy));

                    goto IL_2D8;
IL_17C:
                    if (dx == 0)
                    {
                        goto IL_202;
                    }
                    bool flag = this.method_7(int_0 + dx, int_1);
                    both           = this.method_7(int_0, int_1 + 1);
                    bottomWalkable = this.method_7(int_0, int_1 - 1);
                    if (!flag)
                    {
                        goto IL_3FB;
                    }
                    yield return(new ValueTuple <int, int>(int_0 + dx, int_1));

                    goto IL_37A;
IL_202:
                    if (dy == 0)
                    {
                        goto IL_558;
                    }
                    bool flag2 = this.method_7(int_0, int_1 + dy);
                    bottomWalkable = this.method_7(int_0 + 1, int_1);
                    both           = this.method_7(int_0 - 1, int_1);
                    if (!flag2)
                    {
                        goto IL_4F0;
                    }
                    yield return(new ValueTuple <int, int>(int_0, int_1 + dy));

                    goto IL_470;
IL_28C:
                    goto IL_294;
                }
                finally
                {
                    if (enumerator != null)
                    {
                        enumerator.Dispose();
                    }
                }
                break;
IL_2B5:
                ValueTuple <int, int> valueTuple = enumerator.Current;
                yield return(valueTuple);

                goto IL_28C;
            }
            enumerator = null;
            yield break;
IL_2D8:
IL_2DF:
            if (!this.method_7(int_0 + dx, int_1))
            {
                goto IL_558;
            }
            yield return(new ValueTuple <int, int>(int_0 + dx, int_1));

            if (both)
            {
                yield return(new ValueTuple <int, int>(int_0 + dx, int_1 + dy));

                goto IL_558;
            }
            goto IL_558;
IL_37A:
            if (both)
            {
                yield return(new ValueTuple <int, int>(int_0 + dx, int_1 + 1));
            }
            if (bottomWalkable)
            {
                yield return(new ValueTuple <int, int>(int_0 + dx, int_1 - 1));
            }
IL_3FB:
            if (both)
            {
                yield return(new ValueTuple <int, int>(int_0, int_1 + 1));
            }
            if (bottomWalkable)
            {
                yield return(new ValueTuple <int, int>(int_0, int_1 - 1));

                goto IL_558;
            }
            goto IL_558;
IL_470:
            if (bottomWalkable)
            {
                yield return(new ValueTuple <int, int>(int_0 + 1, int_1 + dy));
            }
            if (both)
            {
                yield return(new ValueTuple <int, int>(int_0 - 1, int_1 + dy));
            }
IL_4F0:
            if (bottomWalkable)
            {
                yield return(new ValueTuple <int, int>(int_0 + 1, int_1));
            }
            if (both)
            {
                yield return(new ValueTuple <int, int>(int_0 - 1, int_1));
            }
IL_558:
            yield break;
            yield break;
        }