Ejemplo n.º 1
0
    public void LoadMap(MapData _MapData)
    {
        m_Walls  = new List <I_Tile>();
        m_Floors = new List <I_Tile>();
        m_Tiles  = new Dictionary <Vector2Int, I_Tile>();
        if (_MapData != null)
        {
            m_MapSize = new Vector2Int(_MapData.MapSizeX, _MapData.MapSizeZ);

            m_Rooms = new List <Room>();
            List <RoomData> roomsToLoad = _MapData.Rooms;
            for (int i = 0; i < roomsToLoad.Count; i++)
            {
                m_Rooms.Add(new Room(new Vector2Int(roomsToLoad[i].m_PosX, roomsToLoad[i].m_PosZ), new Vector2Int(roomsToLoad[i].m_SizeX, roomsToLoad[i].m_SizeZ)));
            }

            List <TileData> tilesToLoad = _MapData.Tiles;
            for (int i = 0; i < tilesToLoad.Count; i++)
            {
                Room room = null;
                if (tilesToLoad[i].m_RoomIndex >= 0)
                {
                    room = m_Rooms[tilesToLoad[i].m_RoomIndex];
                }

                GenerateTile("Tiles/TileEmpty", tilesToLoad[i].m_PosX, tilesToLoad[i].m_PosZ, room);
            }

            m_StairsPosition        = new Vector2Int(_MapData.StairsPositionX, _MapData.StairsPositionZ);
            m_StairsTriggerPosition = new Vector2Int(_MapData.StairsTriggerPositionX, _MapData.StairsTriggerPositionZ);
            I_Tile stairs        = GenerateTile("Tiles/TileStairs", _MapData.StairsPositionX, _MapData.StairsPositionZ, null);
            I_Tile stairsTrigger = GenerateTile("Tiles/TileShakeBell", _MapData.StairsTriggerPositionX, _MapData.StairsTriggerPositionZ, null);

            Tile           trucMoche           = stairsTrigger as Tile;
            TileEventShake trucEncorePlusMoche = trucMoche.GetComponent <TileEventShake>();
            Tile           trucSuperMoche      = stairs as Tile;
            I_Activable    trucSuperPlusMoche  = trucSuperMoche.GetComponent <I_Activable>();
            trucEncorePlusMoche.SetTileToActivate(trucSuperPlusMoche);


            for (int x = -1; x <= m_MapSize.x + 1; x++)
            {
                for (int z = -1; z <= m_MapSize.y + 1; z++)
                {
                    I_Tile tile;
                    if (!m_Tiles.TryGetValue(new Vector2Int(x, z), out tile))
                    {
                        tile = GenerateTile("Tiles/TileWall", x, z, null);
                    }
                    tile.SetMap(this);
                }
            }
            SmoothMap();
        }
    }
Ejemplo n.º 2
0
    private Room GenerateSpecialRoom(Vector2Int _MapSize)
    {
        Vector2Int bottomLeftCorner = new Vector2Int(Random.Range(1, _MapSize.x - 10), Random.Range(1, _MapSize.y - 10));
        Vector2Int size             = new Vector2Int(6, 6);
        Room       room             = new Room(bottomLeftCorner, size);

        I_Tile stairs = GenerateTile("Tiles/TileStairs", bottomLeftCorner.x + 3, bottomLeftCorner.y + 3, room);

        m_StairsPosition = new Vector2Int(bottomLeftCorner.x + 3, bottomLeftCorner.y + 3);
        I_Tile activator = null;

        m_StairsTriggerPosition = new Vector2Int();
        int rand = Random.Range(0, 4);

        if (rand == 0)
        {
            m_StairsTriggerPosition = new Vector2Int(bottomLeftCorner.x + 1, bottomLeftCorner.y + Random.Range(1, 6));
        }
        else if (rand == 1)
        {
            m_StairsTriggerPosition = new Vector2Int(bottomLeftCorner.x + 5, bottomLeftCorner.y + Random.Range(1, 6));
        }
        else if (rand == 2)
        {
            m_StairsTriggerPosition = new Vector2Int(bottomLeftCorner.x + Random.Range(1, 6), bottomLeftCorner.y + 1);
        }
        else if (rand == 3)
        {
            m_StairsTriggerPosition = new Vector2Int(bottomLeftCorner.x + Random.Range(1, 6), bottomLeftCorner.y + 5);
        }
        activator = GenerateTile("Tiles/TileShakeBell", m_StairsTriggerPosition.x, m_StairsTriggerPosition.y, room);
        Tile           trucMoche           = activator as Tile;
        TileEventShake trucEncorePlusMoche = trucMoche.GetComponent <TileEventShake>();
        Tile           trucSuperMoche      = stairs as Tile;
        I_Activable    trucSuperPlusMoche  = trucSuperMoche.GetComponent <I_Activable>();

        trucEncorePlusMoche.SetTileToActivate(trucSuperPlusMoche);

        return(room);
    }