Right now the way we process item hits, it just goes down the list of items. One case I can think of where this won't work is this:
A mystery block that gives a "clear row" reward breaks all blocks in a row and also breaks a bomb. If the mystery block is after the bomb in that row, we will skip over the bomb as it was not hit. When we get to the mystery block that needs to break, it will go through and mark all items in that row, including the bomb, as having been hit. But we will never reach the logic that tells the bomb to get hit and break the items around it.
One way I can think of handling this is to have separate functions (in the ItemGenerator) that handle hitting an item of a particular type. Every time an item is hit, we need to make sure that we call its hit function only ONCE to figure out what items to remove.
Right now the way we process item hits, it just goes down the list of items. One case I can think of where this won't work is this:
A mystery block that gives a "clear row" reward breaks all blocks in a row and also breaks a bomb. If the mystery block is after the bomb in that row, we will skip over the bomb as it was not hit. When we get to the mystery block that needs to break, it will go through and mark all items in that row, including the bomb, as having been hit. But we will never reach the logic that tells the bomb to get hit and break the items around it.
One way I can think of handling this is to have separate functions (in the ItemGenerator) that handle hitting an item of a particular type. Every time an item is hit, we need to make sure that we call its hit function only ONCE to figure out what items to remove.