diff options
Diffstat (limited to 'src/tick.c')
-rw-r--r-- | src/tick.c | 19 |
1 files changed, 14 insertions, 5 deletions
@@ -302,30 +302,39 @@ static void tick(Game *game, Arena a) { } break; case EMPTY: - // TODO: same as multiple reds + blues = 0; if ( x > 0 && lastState->grid[x - 1 + y * GRIDWIDTH] == BLUE_RIGHT ) { - game->state.grid[x + y * GRIDWIDTH] = BLUE_RIGHT; + blues++; + blue = BLUE_RIGHT; } if ( x < GRIDWIDTH - 1 && lastState->grid[x + 1 + y * GRIDWIDTH] == BLUE_LEFT ) { - game->state.grid[x + y * GRIDWIDTH] = BLUE_LEFT; + blues++; + blue = BLUE_LEFT; } if ( y > 0 && lastState->grid[x + (y - 1) * GRIDWIDTH] == BLUE_DOWN ) { - game->state.grid[x + y * GRIDWIDTH] = BLUE_DOWN; + blues++; + blue = BLUE_DOWN; } if ( y < GRIDHEIGHT - 1 && lastState->grid[x + (y + 1) * GRIDWIDTH] == BLUE_UP ) { - game->state.grid[x + y * GRIDWIDTH] = BLUE_UP; + blues++; + blue = BLUE_UP; + } + if (blues == 1) { + game->state.grid[x + y * GRIDWIDTH] = blue; + } else if (blues >= 2) { + game->state.grid[x + y * GRIDWIDTH] = BLUE; } break; } |