bool _anyCornerBlocked( int dimX, int dimY, Vector position) { var topLeft = position.AddXY(-1, -1); var topRight = position.AddXY(dimX + 1, -1); var bottomLeft = position.AddXY(-1, dimY + 1); var bottomRight = position.AddXY(dimY + 1, dimY + 1); return(Rooms.TileIsBlockedForRequirements(topLeft) || Rooms.TileIsBlockedForRequirements(topRight) || Rooms.TileIsBlockedForRequirements(bottomLeft) || Rooms.TileIsBlockedForRequirements(bottomRight)); }
void _checkForSideStates( int dimX, int dimY, Vector position, out SideState upState, out SideState downState, out SideState leftState, out SideState rightState) { upState = SideState.None; downState = SideState.None; leftState = SideState.None; rightState = SideState.None; var noContinueStates = SideState.Blocked | SideState.Partial; for (int wOff = 0; ((upState & noContinueStates) == 0 || (downState & noContinueStates) == 0) && wOff < dimX; wOff++) { var up = position.AddXY(wOff, -1); var down = position.AddXY(wOff, dimY); upState = _changeStatusForSide(upState, up, wOff == 0 ? true : false); downState = _changeStatusForSide(downState, down, wOff == 0 ? true : false); } for (int hOff = 0; ((leftState & noContinueStates) == 0 || (rightState & noContinueStates) == 0) && hOff < dimY; hOff++) { var left = position.AddXY(-1, hOff); var right = position.AddXY(dimX, hOff); leftState = _changeStatusForSide(leftState, left, hOff == 0 ? true : false); rightState = _changeStatusForSide(rightState, right, hOff == 0 ? true : false); } }