bool HaveNeighborDiscovered(MapSystem.RoomInstance room, List <MapSystem.RoomInstance> rooms) { if (room.upDoor && IsDiscovered(new Vector2Int(room.x, room.y + 1), rooms)) { return(true); } if (room.downDoor && IsDiscovered(new Vector2Int(room.x, room.y - 1), rooms)) { return(true); } if (room.leftDoor && IsDiscovered(new Vector2Int(room.x - 1, room.y), rooms)) { return(true); } if (room.rightDoor && IsDiscovered(new Vector2Int(room.x + 1, room.y), rooms)) { return(true); } return(false); }
void DrawMapItem(MapSystem.RoomInstance room, RectInt bounds) { var spriteSet = m_sprites[room.type]; Color undiscoveredColor = new Color(0.5f, 0.5f, 0.5f); Vector2 pos = new Vector2(0, 0); pos.x = -bounds.width + room.x - bounds.x; pos.y = room.y - bounds.y + 1; pos *= m_roomSize; var roomRect = spriteSet.fullRoom.textureRect; var imageObj = Instantiate(m_spritePrefab, transform); imageObj.transform.localPosition = pos; var image = imageObj.GetComponent <Image>(); image.sprite = spriteSet.fullRoom; if (!room.discovered) { image.color = undiscoveredColor; } image.SetNativeSize(); m_images.Add(imageObj); if (room.upDoor) { var doorObj = Instantiate(m_spritePrefab, imageObj.transform); Vector2 doorPos = new Vector2(0, (1 - spriteSet.doorUp.textureRect.height / roomRect.height) * m_roomSize.y / 2); doorObj.transform.localPosition = doorPos; var doorImage = doorObj.GetComponent <Image>(); doorImage.sprite = spriteSet.doorUp; if (!room.discovered) { doorImage.color = undiscoveredColor; } doorImage.SetNativeSize(); m_images.Add(doorObj); } if (room.downDoor) { var doorObj = Instantiate(m_spritePrefab, imageObj.transform); Vector2 doorPos = new Vector2(0, -(1 - spriteSet.doorDown.textureRect.height / roomRect.height) * m_roomSize.y / 2); doorObj.transform.localPosition = doorPos; var doorImage = doorObj.GetComponent <Image>(); doorImage.sprite = spriteSet.doorDown; if (!room.discovered) { doorImage.color = undiscoveredColor; } doorImage.SetNativeSize(); m_images.Add(doorObj); } if (room.leftDoor) { var doorObj = Instantiate(m_spritePrefab, imageObj.transform); Vector2 doorPos = new Vector2(-(1 - spriteSet.doorLeft.textureRect.width / roomRect.width) * m_roomSize.x / 2, 0); doorObj.transform.localPosition = doorPos; var doorImage = doorObj.GetComponent <Image>(); doorImage.sprite = spriteSet.doorLeft; if (!room.discovered) { doorImage.color = undiscoveredColor; } doorImage.SetNativeSize(); m_images.Add(doorObj); } if (room.rightDoor) { var doorObj = Instantiate(m_spritePrefab, imageObj.transform); Vector2 doorPos = new Vector2((1 - spriteSet.doorRight.textureRect.width / roomRect.width) * m_roomSize.x / 2, 0); doorObj.transform.localPosition = doorPos; var doorImage = doorObj.GetComponent <Image>(); doorImage.sprite = spriteSet.doorLeft; if (!room.discovered) { doorImage.color = undiscoveredColor; } doorImage.SetNativeSize(); m_images.Add(doorObj); } if (spriteSet.icon != null) { var icon = Instantiate(m_spritePrefab, imageObj.transform); icon.transform.localPosition = new Vector2(0, 0); var iconImage = icon.GetComponent <Image>(); iconImage.sprite = spriteSet.icon; iconImage.SetNativeSize(); m_images.Add(icon); } }