Ejemplo n.º 1
0
    IEnumerator DestroyAllTriggerTiles()
    {
        List <TriggerTile> allTriggerTiles = new List <TriggerTile>(65);
        bool keepLooking = true;

        while (keepLooking || !IsBoardStable)
        {
            allTriggerTiles.Clear();

            boardData.ApplyActionToAll((boardPiece) => {
                TriggerTile tile = boardPiece.Tile as TriggerTile;
                if (tile != null && tile.IsDestructible && !tile.IsDestroying)
                {
                    allTriggerTiles.Add(tile);
                }
            });

            if (allTriggerTiles.Count > 0)
            {
                if (callFreeFallEvent)
                {
                    callFreeFallEvent = false;
                    OnFreeFall.RaiseEvent();

                    yield return(new WaitForSeconds(2f));
                }

                int         index      = Random.Range(0, allTriggerTiles.Count);
                TriggerTile chosenTile = allTriggerTiles[index];
                allTriggerTiles.RemoveAt(index);

                chosenTile.Destroy();
                IsBoardStable = false;
                TryCheckStableBoard();
                yield return(new WaitForSeconds(1.5f));

                keepLooking = true;
            }
            else
            {
                keepLooking = false;
                yield return(null);
            }
        }
    }
    private float var; //angle variance

    #endregion Fields

    #region Methods

    // Link a trigger tile
    public void LinkTile(Transform tile)
    {
        TTile = tile.GetComponent<TriggerTile>();
    }
 private void Start()
 {
     FallTile  = GetComponent <TriggerTile>();
     DropFloor = GetComponent <EffectOnDepressDropFloor>();
 }
Ejemplo n.º 4
0
 public void AddTrigger(TriggerTile trigger)
 {
     triggerTiles.Add(trigger);
 }