Fix ladder not switching to one_way solid

scene_man
En Yi 2023-07-05 23:20:16 +08:00
parent 82efc711d0
commit 5bbbaa19e2
1 changed files with 11 additions and 0 deletions

View File

@ -42,6 +42,7 @@ typedef struct CollideEntity {
void change_a_tile(TileGrid_t* tilemap, unsigned int tile_idx, TileType_t new_type)
{
TileType_t last_type = tilemap->tiles[tile_idx].tile_type;
tilemap->tiles[tile_idx].tile_type = new_type;
switch (new_type)
@ -78,6 +79,16 @@ void change_a_tile(TileGrid_t* tilemap, unsigned int tile_idx, TileType_t new_ty
break;
}
if (last_type == LADDER && new_type != LADDER)
{
int down_tile = tile_idx + tilemap->width;
if (down_tile < tilemap->n_tiles && tilemap->tiles[down_tile].tile_type == LADDER)
{
tilemap->tiles[down_tile].solid = ONE_WAY;
}
}
if (new_type == SPIKES)
{
// Priority: Down, Up, Left, Right