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); } }
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++; }