コード例 #1
0
        private void SmoothSlope(int x, int y)
        {
            Slab slab = _slabs[x, y];

            if (slab.IsSolid)
            {
                bool ısSolid  = _slabs[x, y - 1].IsSolid;
                bool ısSolid2 = _slabs[x, y + 1].IsSolid;
                bool ısSolid3 = _slabs[x - 1, y].IsSolid;
                bool ısSolid4 = _slabs[x + 1, y].IsSolid;
                switch (((ısSolid ? 1 : 0) << 3) | ((ısSolid2 ? 1 : 0) << 2) | ((ısSolid3 ? 1 : 0) << 1) | (ısSolid4 ? 1 : 0))
                {
                case 10:
                    _slabs[x, y] = slab.WithState(SlabStates.TopLeftFilled);
                    break;

                case 9:
                    _slabs[x, y] = slab.WithState(SlabStates.TopRightFilled);
                    break;

                case 6:
                    _slabs[x, y] = slab.WithState(SlabStates.BottomLeftFilled);
                    break;

                case 5:
                    _slabs[x, y] = slab.WithState(SlabStates.BottomRightFilled);
                    break;

                case 4:
                    _slabs[x, y] = slab.WithState(SlabStates.HalfBrick);
                    break;

                default:
                    _slabs[x, y] = slab.WithState(SlabStates.Solid);
                    break;
                }
            }
        }
コード例 #2
0
        private void SmoothSlope(int x, int y)
        {
            Slab slab = _slabs[x, y];

            if (!slab.IsSolid)
            {
                return;
            }

            switch ((_slabs[x, y - 1].IsSolid ? 1 : 0) << 3 | (_slabs[x, y + 1].IsSolid ? 1 : 0) << 2 | (_slabs[x - 1, y].IsSolid ? 1 : 0) << 1 | (_slabs[x + 1, y].IsSolid ? 1 : 0))
            {
            case 4:
                _slabs[x, y] = slab.WithState(new SlabState(SlabStates.HalfBrick));
                break;

            case 5:
                _slabs[x, y] = slab.WithState(new SlabState(SlabStates.BottomRightFilled));
                break;

            case 6:
                _slabs[x, y] = slab.WithState(new SlabState(SlabStates.BottomLeftFilled));
                break;

            case 9:
                _slabs[x, y] = slab.WithState(new SlabState(SlabStates.TopRightFilled));
                break;

            case 10:
                _slabs[x, y] = slab.WithState(new SlabState(SlabStates.TopLeftFilled));
                break;

            default:
                _slabs[x, y] = slab.WithState(new SlabState(SlabStates.Solid));
                break;
            }
        }