Beispiel #1
0
    void ConnectRooms(GameObject _previousRoom, GameObject _currentSpawnedRoom, string _baseConnectionName, string _targetConnectionName)
    {
        RoomScript l_baseRoom     = _previousRoom.GetComponent <RoomScript>();
        RoomScript l_targetRoom   = _currentSpawnedRoom.GetComponent <RoomScript>();
        Vector3    l_newPosition  = Vector3.zero;
        Vector3    l_baseRoomSize = l_baseRoom.ReturnRoomSize();

        l_baseRoom.GenerateConnectionsOnRoom(_baseConnectionName);
        l_targetRoom.GenerateConnectionsOnRoom(_targetConnectionName);

        if (!_baseConnectionName.Contains("stairs"))
        {
            if (_baseConnectionName.Contains("up"))
            {
                l_newPosition = new Vector3(l_baseRoom.transform.position.x, l_baseRoom.transform.position.y, l_baseRoom.returnPosition("up").z + (l_baseRoomSize.z / 2) + m_offsetRoomPositions);
            }
            else if (_baseConnectionName.Contains("down"))
            {
                l_newPosition = new Vector3(l_baseRoom.transform.position.x, l_baseRoom.transform.position.y, l_baseRoom.returnPosition("down").z - (l_baseRoomSize.z / 2) - m_offsetRoomPositions);
            }
            else if (_baseConnectionName.Contains("left"))
            {
                l_newPosition = new Vector3(l_baseRoom.returnPosition("left").x - (l_baseRoomSize.x / 2) - m_offsetRoomPositions, l_baseRoom.transform.position.y, l_baseRoom.transform.position.z);
            }
            else if (_baseConnectionName.Contains("right"))
            {
                l_newPosition = new Vector3(l_baseRoom.returnPosition("right").x + (l_baseRoomSize.x / 2) + m_offsetRoomPositions, l_baseRoom.transform.position.y, l_baseRoom.transform.position.z);
            }
        }
        else
        {
            //PROBLEMA AL HABER MAS DE 1 STAIR EN LA MISMA SALA
            StaircaseScript conectedStairs    = l_baseRoom.GetComponentInChildren <StaircaseScript>();
            Vector3         positionToConnect = conectedStairs.m_endOfStaircaseGameobject.transform.position;


            if (_baseConnectionName.Contains("up"))
            {
                l_newPosition = new Vector3(positionToConnect.x, positionToConnect.y + (l_baseRoomSize.y / 3), positionToConnect.z + (l_baseRoomSize.z / 2));
            }
            else if (_baseConnectionName.Contains("down"))
            {
                l_newPosition = new Vector3(positionToConnect.x, positionToConnect.y + (l_baseRoomSize.y / 3), positionToConnect.z - (l_baseRoomSize.z / 2));
            }
            else if (_baseConnectionName.Contains("left"))
            {
                l_newPosition = new Vector3(positionToConnect.x - (l_baseRoomSize.x / 2), positionToConnect.y + (l_baseRoomSize.y / 3), positionToConnect.z);
            }
            else if (_baseConnectionName.Contains("right"))
            {
                l_newPosition = new Vector3(positionToConnect.x + (l_baseRoomSize.x / 2), positionToConnect.y + (l_baseRoomSize.y / 3), positionToConnect.z);
            }
        }

        l_targetRoom.transform.localPosition = l_newPosition;


        if (_baseConnectionName.Contains("key"))
        {
            GameObject keyPrefab = Instantiate(m_keyPrefab);
            keyPrefab.transform.parent   = _previousRoom.transform;
            keyPrefab.transform.position = _previousRoom.transform.position;
        }
    }