33 {
34 std::array<const Block *, 3> target{};
35 switch (direction) {
36 case 0:
37 target = {grid->at(next_x, next_y), grid->at(next_x, next_y + 1), grid->at(next_x, next_y + 2)};
38 break;
39 case 1:
40 target = {grid->at(next_x, next_y), grid->at(next_x + 1, next_y), grid->at(next_x + 2, next_y)};
41 break;
42 case 2:
43 target = {grid->at(next_x, next_y), grid->at(next_x - 1, next_y), grid->at(next_x - 2, next_y)};
44 break;
45 case 3:
46 target = {grid->at(next_x, next_y), grid->at(next_x, next_y - 1), grid->at(next_x, next_y - 2)};
47 break;
48 default:
49 break;
50 }
51
52 return std::all_of(target.begin(), target.end(), [](const Block *block) {
53 return block != nullptr && block->color == 0;
54 });
55 }