示例#1
0
    private List <BuildingSegment> GenerateFloor(int level)
    {
        List <BuildingSegment> newFloor = new List <BuildingSegment>();
        float floorWidth = 0;

        for (int i = 0; i < floor.Segments[level].segments.Count; ++i)
        {
            FloorSegmentType segmentType = floor.Segments[level].segments[i];
            if (level == 0 && segmentType == FloorSegmentType.stairsDown)
            {
                segmentType = FloorSegmentType.empty;
            }
            if (level == floorsNumber - 1 && segmentType == FloorSegmentType.stairsUp)
            {
                segmentType = FloorSegmentType.empty;
            }

            BuildingSegment segment = Instantiate(floor.GetSegmentPrefab(segmentType), buildingParent);
            segment.transform.localPosition = new Vector3(floorWidth + segment.GetRoomWidth() / 2, ((float)level + .5f) * segment.GetSegmentHeight());
            segment.SetApartmentRoomBounds(segment.transform.position.x + segment.GetHallWidth() / 2 - segment.GetSegmentWidth() / 2 + 1.5f, segment.transform.position.x + segment.GetHallWidth() / 2 + segment.GetSegmentWidth() / 2 - 3);

            newFloor.Add(segment);
            floorWidth += segment.GetSegmentWidth();
        }

        for (int i = 0; i < newFloor.Count; ++i)
        {
            newFloor[i].SetApartmentCorridorBounds(0, floorWidth);
        }

        return(newFloor);
    }
示例#2
0
    public BuildingSegment GetSegmentPrefab(FloorSegmentType segmentType)
    {
        switch (segmentType)
        {
        case FloorSegmentType.empty:
            return(EmptySegment);

        case FloorSegmentType.apartment:
            return(GetRandomApartment());

        case FloorSegmentType.stairsUp:
            return(stairsUpSegment);

        case FloorSegmentType.stairsDown:
            return(stairsDownSegment);

        case FloorSegmentType.caretakerRoom:
            return(caretakerRoomSegment);

        case FloorSegmentType.roofLeft:
            return(RoofLeft);

        case FloorSegmentType.roofRight:
            return(RoofRight);

        case FloorSegmentType.roofCenterWide:
            return(RoofCenterWide);

        case FloorSegmentType.roofCenterNarrow:
            return(RoofCenterNarrow);

        default:
            return(null);
        }
    }