private void ActivateColorCubes(List <int> ids)
    {
        foreach (var id in ids)
        {
            var item = _contexts.game.GetEntityWithId(id);
            if (item == null)
            {
                continue;
            }

            if (item.hasRemoverId)
            {
                continue;
            }

            var cellItem = _contexts.game.GetEntityWithCellItemId(
                new Tuple <int, int>(item.gridPosition.value.x, item.gridPosition.value.y));
            if (cellItem != null && cellItem.isCanBeActivatedByInnerMatch)
            {
                cellItem.isWillBeDestroyed = true;
            }

            ActivatorHelper.ActivateItem(item, ActivationReason.Puzzle);
            var removerId = IdHelper.GetNewRemoverId();
            item.AddRemoverId(removerId);
        }
    }
    private IEnumerator ActivatePositiveItemsSequentially(List <int> ids)
    {
        //activate positive items sequentially
        foreach (var id in ids)
        {
            if (Contexts.sharedInstance.game.GetEntityWithId(id) == null)
            {
                continue;
            }

            yield return(DoWait.WaitSeconds(0.08f));

            var posItem = Contexts.sharedInstance.game.GetEntityWithId(id);
            if (posItem == null)
            {
                continue;
            }

            var cellItem = _contexts.game.GetEntityWithCellItemId(
                new Tuple <int, int>(posItem.gridPosition.value.x, posItem.gridPosition.value.y));
            if (cellItem != null && cellItem.isCanBeActivatedByInnerMatch)
            {
                cellItem.isWillBeDestroyed = true;
            }

            ActivatorHelper.ActivateItem(posItem, ActivationReason.Tnt);
        }
    }
Exemple #3
0
    private void ProcessTouch(Vector2Int touchPos)
    {
        if (!InBounds(touchPos))
        {
            return;
        }

        var        entitySet = _contexts.game.GetEntitiesWithGridPosition(touchPos);
        GameEntity cellItem  = null;
        GameEntity item      = null;

        foreach (var entity in entitySet)
        {
            if (entity.isCellItem)
            {
                cellItem = entity;
            }

            if (entity.isItem)
            {
                item = entity;
            }
        }

        if (item == null)
        {
            return;
        }

        if (item.hasFalling)
        {
            return;
        }

        if (!item.hasMatchType)
        {
            return;
        }

        MatchType           matchType  = item.matchType.Value;
        MatchGroupComponent matchGroup = item.matchGroup;

        if (matchGroup.Id == -1)
        {
            return;
        }

        if (matchType != MatchType.Positive && matchGroup.Count < 2)
        {
            return;
        }

        if (cellItem != null && cellItem.isCanStopItemActivation)
        {
            return;
        }

        ActivatorHelper.ActivateItem(item, ActivationReason.Touch);
        MoveHelper.ReduceMove();
        _contexts.game.turn.TurnId++;
    }