parent
dc20a6b992
commit
34655d5c0a
|
@ -117,14 +117,19 @@ void update_water_runner_system(Scene_t* scene)
|
||||||
bool to_go[4] = {false, false, false, false};
|
bool to_go[4] = {false, false, false, false};
|
||||||
Tile_t* curr_tile = tilemap.tiles + curr_idx;
|
Tile_t* curr_tile = tilemap.tiles + curr_idx;
|
||||||
|
|
||||||
if (curr_height > curr_low && curr_tile->water_level < tilemap.max_water_level)
|
unsigned int next = curr_idx + p_crunner->bfs_tilemap.width;
|
||||||
|
Tile_t* next_tile = tilemap.tiles + next;
|
||||||
|
|
||||||
|
if (
|
||||||
|
curr_height > curr_low
|
||||||
|
&& curr_tile->water_level < tilemap.max_water_level
|
||||||
|
&& next_tile->water_level < tilemap.max_water_level
|
||||||
|
)
|
||||||
{
|
{
|
||||||
lowest_tile = curr_idx;
|
lowest_tile = curr_idx;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
unsigned int next = curr_idx + p_crunner->bfs_tilemap.width;
|
|
||||||
Tile_t* next_tile = tilemap.tiles + next;
|
|
||||||
if (next < p_crunner->bfs_tilemap.len)
|
if (next < p_crunner->bfs_tilemap.len)
|
||||||
{
|
{
|
||||||
to_go[0] = next_tile->solid != SOLID;
|
to_go[0] = next_tile->solid != SOLID;
|
||||||
|
@ -136,9 +141,9 @@ void update_water_runner_system(Scene_t* scene)
|
||||||
|| curr_tile->water_level == tilemap.max_water_level
|
|| curr_tile->water_level == tilemap.max_water_level
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
next = curr_idx - 1;
|
if (curr_idx % p_crunner->bfs_tilemap.width != 0)
|
||||||
if (next % p_crunner->bfs_tilemap.width != 0)
|
|
||||||
{
|
{
|
||||||
|
next = curr_idx - 1;
|
||||||
next_tile = tilemap.tiles + next;
|
next_tile = tilemap.tiles + next;
|
||||||
to_go[1] = next_tile->solid != SOLID;
|
to_go[1] = next_tile->solid != SOLID;
|
||||||
}
|
}
|
||||||
|
|
19
water_test.c
19
water_test.c
|
@ -109,6 +109,25 @@ static void level_scene_render_func(Scene_t* scene)
|
||||||
next_idx = p_runner->bfs_tilemap.tilemap[curr_idx].to;
|
next_idx = p_runner->bfs_tilemap.tilemap[curr_idx].to;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if (p_runner->state == SCANLINE_FILL)
|
||||||
|
{
|
||||||
|
unsigned int tile_y = ((p_runner->current_tile) / tilemap.width);
|
||||||
|
for (size_t i = 0; i < tilemap.width; ++i)
|
||||||
|
{
|
||||||
|
unsigned int tile_idx = i + tile_y * tilemap.width;
|
||||||
|
if (
|
||||||
|
p_runner->bfs_tilemap.tilemap[tile_idx].reachable
|
||||||
|
&& tilemap.tiles[tile_idx].water_level < tilemap.max_water_level
|
||||||
|
)
|
||||||
|
{
|
||||||
|
DrawRectangle(
|
||||||
|
i * tilemap.tile_size, tile_y * tilemap.tile_size,
|
||||||
|
tilemap.tile_size, tilemap.tile_size, ColorAlpha(GREEN, 0.4)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char buffer[64] = {0};
|
char buffer[64] = {0};
|
||||||
|
|
Loading…
Reference in New Issue