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