Пример #1
0
 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);
 }
Пример #2
0
    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);
        }
    }