Vector2 GetNewRoomCoordinates(Vector2 originCoordinates, RoomDirections directionsOfRoom) { //This functions chooses one of the unoccupied directions around that room //When it does, it should change that rooms m_direction to say that the opposing entrance is both open and spawned //Debug.Log("Getting coordinates for new room"); List <Vector2> possibleCoordinates = new List <Vector2> { }; for (int i = 0; i < 4; i++) { if (directionsOfRoom.m_directions[i].Open && !directionsOfRoom.m_directions[i].Spawned) { if (!CheckIfCoordinatesOccupied(new Vector2(originCoordinates.x + directionsOfRoom.m_directions[i].DirectionModifier.x * 20, originCoordinates.y + directionsOfRoom.m_directions[i].DirectionModifier.y * 20))) { possibleCoordinates.Add(new Vector2(originCoordinates.x + directionsOfRoom.m_directions[i].DirectionModifier.x * 20, originCoordinates.y + directionsOfRoom.m_directions[i].DirectionModifier.y * 20)); } } } int index = Random.Range(0, possibleCoordinates.Count - 1); if (possibleCoordinates.Count > 0) { return(possibleCoordinates[index]); } else { return(new Vector2(0, 0)); } }
public void Initialize(Vector2 location) { CameraBoundaries = new Vector2Int(20, 20); directions = GetComponent <RoomDirections>(); BuildWallArray(); transform.position = location; }
public void OpenAllEntrances() { if (!directions) { directions = GetComponent <RoomDirections>(); } directions.OpenAllEntrances(); }
public void Initialize(Vector2 location, Vector2 RoomSize) { CameraBoundaries = RoomSize; directions = GetComponent <RoomDirections>(); transform.position = location; AdjustColliders(RoomSize); AddLocations(RoomSize); }
public void Initialize(Vector2 RoomSize) { //This Initialize() function is for the origin room specifically, as it already has its own position roomCleared = true; OpenAllEntrances(); CameraBoundaries = RoomSize; directions = GetComponent <RoomDirections>(); AdjustColliders(RoomSize); }
public void GetNeighbours(Vector2 _gridPosition, int _gridSize) { GridPosition = _gridPosition; //Corners if (_gridPosition.x == 0 && _gridPosition.y == 0) //Linksonder { possibleDirections = RoomDirections.North | RoomDirections.East; } else if (_gridPosition.x == _gridSize - 1 && _gridPosition.y == 0) //Rechtsonder { possibleDirections = RoomDirections.North | RoomDirections.West; } else if (_gridPosition.x == 0 && _gridPosition.y == _gridSize - 1) //Linksboven { possibleDirections = RoomDirections.East | RoomDirections.South; } else if (_gridPosition.x == _gridSize - 1 && _gridPosition.y == _gridSize - 1) //Rechtsboven { possibleDirections = RoomDirections.West | RoomDirections.South; } //Row Bounds else if (_gridPosition.x == _gridSize - 1) { possibleDirections = RoomDirections.North | RoomDirections.South | RoomDirections.West; } else if (_gridPosition.y == _gridSize - 1) { possibleDirections = RoomDirections.East | RoomDirections.South | RoomDirections.West; } else if (_gridPosition.x == 0) { possibleDirections = RoomDirections.North | RoomDirections.East | RoomDirections.South; } else if (_gridPosition.y == 0) { possibleDirections = RoomDirections.North | RoomDirections.East | RoomDirections.West; } else { possibleDirections = (RoomDirections)15; } }
public Vector2Int MoveToNeighbour(RoomDirections _direction) { Vector2Int result = new Vector2Int(0, 0); if (_direction == RoomDirections.North) { result = new Vector2Int(0, 1); } else if (_direction == RoomDirections.East) { result = new Vector2Int(1, 0); } else if (_direction == RoomDirections.South) { result = new Vector2Int(0, -1); } else if (_direction == RoomDirections.West) { result = new Vector2Int(-1, 0); } return(result); }
public Door(Noun myNoun, string shortDescription, Dictionary <string, Func <NounObject, string> > senses, RoomDirections direction, Func <string> newRoomF, bool canBePickedUp = true, bool canHoldItems = false) : base(myNoun, shortDescription, senses, canBePickedUp, canHoldItems) { newDirection = direction; newRoom = newRoomF; }