public void AutoDecorate()
 {
     for (int i = Room.Bounds.Left; i < Room.Bounds.Right; i++)
     {
         for (int j = Room.Bounds.Bottom; j < Room.Bounds.Top; j++)
         {
             var type = GetTypeOfWall(i, j);
             if (type == TypeOfTile.Top)
             {
                 if (SeededRandom.RandBool(.125f))
                 {
                     DecorativeTileMap.SpawnTorch(i, j);
                 }
                 else if (SeededRandom.RandBool(.125f))
                 {
                     Level.Decorations.SetTile(new Vector3Int(i, j, 0), Painter.GetRandomTopWallDecoration());
                 }
             }
             if (type == TypeOfTile.Left && SeededRandom.RandBool(.125f) && IsFloor(i + 1, j))
             {
                 DecorativeTileMap.SpawnSideTorch(i + 1, j, true);
             }
             if (type == TypeOfTile.Right && SeededRandom.RandBool(.125f) && IsFloor(i - 1, j))
             {
                 DecorativeTileMap.SpawnSideTorch(i - 1, j, false);
             }
             if (type == TypeOfTile.Floor && SeededRandom.RandBool(.02f))
             {
                 Level.Decorations.SetTile(new Vector3Int(i, j, 0), Painter.GetRandomFloorDecoration());
             }
         }
     }
 }
Beispiel #2
0
    private void PlaceTraps()
    {
        traps = Level.GetRequiredTraps();
        var spawnLocations = Level.GetPossibleSpawnLocations();

        foreach (var trap in traps)
        {
            var trapLocation = BattleManager.ConvertVector(trap.transform.position);
            spawnLocations.Remove(trapLocation);
            PlaceTerrainOn(trapLocation.x, trapLocation.y, trap);
        }
        var numTraps = GetNumberOfTrapsForFloor();

        while (traps.Count < numTraps && spawnLocations.Count > 0)
        {
            var spawnLoc = SeededRandom.PickRandom(spawnLocations);
            spawnLocations.Remove(spawnLoc);
            var trap = EnemySpawner.SpawnSpikes(spawnLoc).GetComponent <Spikes>();
            traps.Add(trap);
            PlaceTerrainOn(spawnLoc.x, spawnLoc.y, trap);
            if (SeededRandom.RandBool(.5f))
            {
                trap.MakeInvisible();
            }
        }
    }
Beispiel #3
0
    protected void CreateBranches(List <Room> roomsToBranch)
    {
        Debug.Log($"Number of rooms to branch: {roomsToBranch.Count}");
        var currentBranch = new List <Room>();
        var i             = 0;

        while (i < roomsToBranch.Count)
        {
            currentBranch.Clear();
            var room           = roomsToBranch[i];
            var curr           = SeededRandom.PickRandom(branchable);
            var numConnections = SeededRandom.PickRandom(branchConnectionLength);
            currentBranch = TryCreateBranch(room, curr, numConnections);
            if (currentBranch.Count != numConnections + 1)
            {
                continue;
            }

            foreach (var branched in currentBranch)
            {
                if (branched.Info.MaxConnections > 1 && SeededRandom.RandBool(.3f))
                {
                    if (branched is StandardRoom)
                    {
                        for (int j = 0; j < SeededRandom.Range(1, 4); j++)
                        {
                            branchable.Add(branched);
                        }
                    }
                    else
                    {
                        branchable.Add(branched);
                    }
                }
            }
            i++;
        }
    }