diff --git a/include/map_interactions.h b/include/map_interactions.h index e49d459..f981b81 100644 --- a/include/map_interactions.h +++ b/include/map_interactions.h @@ -13,6 +13,15 @@ #include "vertex_component.h" #include "keybindings.h" +enum modes_on_tile { + VERTEX_0 = 2, + VERTEX_1 = 4, + VERTEX_2 = 8, + VERTEX_3 = 16, + ALL_VERTICES = 30, + INVERT_ADD_VALUE = 1 +}; + bool tile_interact(gc_engine *engine, gc_entity *entity, gc_vector2 pos, \ enum gc_mousekeys key); diff --git a/lib/gamacon b/lib/gamacon index 9becdae..689dc79 160000 --- a/lib/gamacon +++ b/lib/gamacon @@ -1 +1 @@ -Subproject commit 9becdaece57a97ee5706924d4a7575a2162bc86f +Subproject commit 689dc791c23557242ea63da1a3e25d868b3d152c diff --git a/prefabs/tilemap.gcmap b/prefabs/tilemap.gcmap index b523514..744ad93 100644 --- a/prefabs/tilemap.gcmap +++ b/prefabs/tilemap.gcmap @@ -1,165 +1,172 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/src/components/isometry/map_interactions.c b/src/components/isometry/map_interactions.c index bb09891..f2a646e 100644 --- a/src/components/isometry/map_interactions.c +++ b/src/components/isometry/map_interactions.c @@ -62,12 +62,8 @@ void move_tile(gc_engine *engine, struct tile *ret, char mode, bool r) { int val = (mode & INVERT_ADD_VALUE) ? ADD_VALUE : -ADD_VALUE; - if (mode & VERTEX_0) - ret->corners[0]->z += (r) ? -ret->corners[0]->z : val; - if (mode & VERTEX_1) - ret->corners[1]->z += (r) ? -ret->corners[1]->z : val; - if (mode & VERTEX_2) - ret->corners[2]->z += (r) ? -ret->corners[2]->z : val; - if (mode & VERTEX_3) - ret->corners[3]->z += (r) ? -ret->corners[3]->z : val; + for (int i = 0; i < 4; i++) { + if (mode & (int)pow(2, i + 1)) + ret->corners[i]->z += (r) ? -ret->corners[i]->z : val; + } } \ No newline at end of file