Back to shtanton's homepage
summaryrefslogtreecommitdiff
path: root/src/tick.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tick.c')
-rw-r--r--src/tick.c19
1 files changed, 14 insertions, 5 deletions
diff --git a/src/tick.c b/src/tick.c
index 4b255df..598087a 100644
--- a/src/tick.c
+++ b/src/tick.c
@@ -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;
}