public void placeIngredient(Ingredient ingredient, Position position) { if (!canUseIngredient(ingredient, position)) { return; } clearIngredientPreview(); started = true; placedIngredient = ingredient; ingredient.initIngredient(removeGems, changeGems); realDisplacements(ingredient.getDisplacements(position)); foreach (KeyValuePair <Position, IBoardEntity> entry in ingredient.boardEntities) { addBoardEntity(entry.Value, entry.Key + position); } List <IBoardEntity> removedGems = checkBoardEntitiesOutofBounds(); ingredient.boardEntitiesPushed(removedGems); ingredient.ingredientPlaced(board, position); addToCurrentMatches(getPlacedIngredientMatches(position)); ingredientSelector.ingredientUsed(ingredient); checkMatchesAfterHelper(.5f, true, !getPlacedIngredientBonusPlacement()); }