private StaircaseDoor FindFreeStairsDown(int level) { for (int i = 0; i < building[level].Count; ++i) { if (building[level][i] is StairsBuildingSegment) { StairsBuildingSegment segment = (StairsBuildingSegment)building[level][i]; if (segment.SegmentType == FloorSegmentType.stairsDown && !segment.isTaken) { segment.isTaken = true; return(segment.Door); } } } return(null); }
private void BindStairs() { for (int i = 0; i < building.Count; ++i) { for (int j = 0; j < building[i].Count; ++j) { if (building[i][j] is StairsBuildingSegment) { StairsBuildingSegment segment = (StairsBuildingSegment)building[i][j]; if (segment.SegmentType == FloorSegmentType.stairsUp) { segment.SetRelatedStairs(FindFreeStairsDown(i + 1)); } if (segment.SegmentType == FloorSegmentType.stairsDown) { segment.SetRelatedStairs(FindFreeStairsUp(i - 1)); } } } } }