public BuildingPlot(BuildingPlotBuilder buildingPlotBuilder)
 {
     Id             = buildingPlotBuilder.id;
     SerialNumber   = buildingPlotBuilder.serialNumber;
     Price          = buildingPlotBuilder.price;
     Area           = buildingPlotBuilder.area;
     Description    = buildingPlotBuilder.description;
     Street         = buildingPlotBuilder.street;
     Place          = buildingPlotBuilder.place;
     District       = buildingPlotBuilder.district;
     Image          = buildingPlotBuilder.image;
     ImageThumbnail = buildingPlotBuilder.imageThumbnail;
     Region         = buildingPlotBuilder.region;
 }
    void Awake()
    {
        Instance                 = this;
        InBuildMode              = false;
        InDeleteObjectMode       = false;
        PointerIsOnAvailablePlot = false;

        SelectedRoom = null;

        //Guard.CheckIsNull(Room1Prefab, "Room1Prefab");
        Guard.CheckIsNull(BuildPlotPrefab, "BuildPlotPrefab");
        Guard.CheckIsNull(RoomsContainer, "RoomsContainer");
        Guard.CheckIsNull(BuildHallwayTriggerPrefab, "BuildHallwayTriggerPrefab");
        Guard.CheckIsNull(DeleteRoomTriggerPrefab, "DeleteRoomTriggerPrefab");

        BuildingPlots.Clear();
        BuildingPlotLocations.Clear();

        //////////////////
        // Room prefabs
        //////////////////

        RegisterRooms();
        LoadRoomPrefabs();

        //////////////////
        // Room object prefabs
        //////////////////

        RegisterPlaceableRoomObjects();
        LoadPlaceableRoomObjects();



        _buildingPlotBuilder = new BuildingPlotBuilder();
        _buildingTileBuilder = new BuildingTileBuilder();
        _roomBuilder         = new RoomBuilder();
        _roomObjectBuilder   = new RoomObjectBuilder();
    }
Esempio n. 3
0
 public void BuildRoom(RoomBlueprint roomBlueprint, BuildingTileBuilder buildingTileBuilder, BuildingPlotBuilder buildingPlotBuilder, BuildingPlot buildingPlot)
 {
     BuildRoom(roomBlueprint, buildingTileBuilder, buildingPlotBuilder, buildingPlot.StartingPoint, buildingPlot.PlotRotation);
 }
Esempio n. 4
0
    public void FollowUpRoomBuilding(RoomBlueprint roomBlueprint, Dictionary <Direction, Vector2> roomCorners, BuildingPlotBuilder buildingPlotBuilder)
    {
        switch (roomBlueprint.RoomName)
        {
        case RoomName.Hallway:
            // create follow up icons for longer hallways
            Vector2 pointLeftUp    = roomCorners[Direction.Left];
            Vector2 pointLeftDown  = GridHelper.GridToVectorLocation(roomCorners[Direction.Down], -3, 0);
            Vector2 pointRightDown = GridHelper.GridToVectorLocation(roomCorners[Direction.Down], 0, 3);
            Vector2 pointRightUp   = roomCorners[Direction.Right];

            if (buildingPlotBuilder.GetPlotIsAvailable(roomBlueprint, pointLeftUp, ObjectRotation.Rotation0))
            {
                CreateBuildHallwayTrigger(pointLeftUp, ObjectDirection.LeftUp);
            }

            if (buildingPlotBuilder.GetPlotIsAvailable(roomBlueprint, pointLeftDown, ObjectRotation.Rotation0))
            {
                CreateBuildHallwayTrigger(pointLeftDown, ObjectDirection.LeftDown);
            }

            if (buildingPlotBuilder.GetPlotIsAvailable(roomBlueprint, pointRightDown, ObjectRotation.Rotation0))
            {
                CreateBuildHallwayTrigger(pointRightDown, ObjectDirection.RightDown);
            }

            if (buildingPlotBuilder.GetPlotIsAvailable(roomBlueprint, pointRightUp, ObjectRotation.Rotation0))
            {
                CreateBuildHallwayTrigger(pointRightUp, ObjectDirection.RightUp);
            }
            break;

        default:
            break;
        }
    }
Esempio n. 5
0
    public void BuildRoom(RoomBlueprint roomBlueprint, BuildingTileBuilder buildingTileBuilder, BuildingPlotBuilder buildingPlotBuilder, Vector2 startingPoint, ObjectRotation roomRotation)
    {
        GameObject roomGO = GameManager.Instance.InstantiatePrefab(BuilderManager.Instance.RegisteredRoomPrefabs[roomBlueprint.RoomName][roomRotation], BuilderManager.Instance.RoomsContainer.transform, startingPoint);

        Room room = roomGO.GetComponent <Room>();

        room.RoomRotation  = roomRotation;
        room.RoomBlueprint = roomBlueprint;
        room.Initialise();
        room.RoomObjectsContainer.InitialiseRoomObjects();
        RoomManager.Instance.AddRoom(room);

        int rightUpAxisLength = roomRotation == ObjectRotation.Rotation0 || roomRotation == ObjectRotation.Rotation180 ?
                                roomBlueprint.RightUpAxisLength : roomBlueprint.LeftUpAxisLength;
        int leftUpAxisLength = roomRotation == ObjectRotation.Rotation0 || roomRotation == ObjectRotation.Rotation180 ?
                               roomBlueprint.LeftUpAxisLength : roomBlueprint.RightUpAxisLength;

        Vector2 point1 = GridHelper.GridToVectorLocation(startingPoint, rightUpAxisLength, 0);
        Vector2 point2 = GridHelper.GridToVectorLocation(point1, 0, -leftUpAxisLength);
        Vector2 point3 = GridHelper.GridToVectorLocation(point2, -rightUpAxisLength, 0);

        Dictionary <Direction, Vector2> roomCorners = new Dictionary <Direction, Vector2>()
        {
            { Direction.Down, startingPoint },
            { Direction.Right, point1 },
            { Direction.Up, point2 },
            { Direction.Left, point3 },
        };

        room.SetupCorners(roomCorners);
        room.SetupCollider();
        room.SetGraphUpdateScenePoints();

        // the sprites should already be part of the room prefab. The scripts should be on the sprites. But on start() of the room, all scripts should be initalised and added to the room's []
        //room.SetupRoomObjects();

        buildingTileBuilder.UpdateBuildingTiles(room);

        FollowUpRoomBuilding(roomBlueprint, roomCorners, buildingPlotBuilder);
        room.UpdateRoomNavhMesh();
    }