diff --git a/include/map_interactions.h b/include/map_interactions.h index 1dbc092..6f06b2b 100644 --- a/include/map_interactions.h +++ b/include/map_interactions.h @@ -22,7 +22,7 @@ enum modes_on_tile { INVERT_ADD_VALUE = 1 }; -bool tile_interact(gc_engine *engine, gc_entity *entity, gc_vector2 pos, \ +bool map_onclick(gc_engine *engine, gc_entity *entity, gc_vector2 pos, \ enum gc_mousekeys key); #endif //MY3D_MAP_INTERACTIONS_H diff --git a/lib/gamacon b/lib/gamacon index 0062aa9..7f8048f 160000 --- a/lib/gamacon +++ b/lib/gamacon @@ -1 +1 @@ -Subproject commit 0062aa990e97276d8e59eee3bd484b9c83758408 +Subproject commit 7f8048fe738606686d488a1ea27c755788320f31 diff --git a/prefabs/game.gcprefab b/prefabs/game.gcprefab index 0d9904c..b2b031b 100644 --- a/prefabs/game.gcprefab +++ b/prefabs/game.gcprefab @@ -33,12 +33,12 @@ - + - + diff --git a/src/components/isometry/map_interactions.c b/src/components/isometry/map_interactions.c index 656358b..7c9451c 100644 --- a/src/components/isometry/map_interactions.c +++ b/src/components/isometry/map_interactions.c @@ -29,36 +29,38 @@ struct tile *ret, bool is_left) break; case MOVE: case RESET: - move_tile(engine, ret, ALL_VERTICES | is_left, r); + move_verticies(engine, ret, ALL_VERTICES | is_left, r); break; } } -bool tile_interact(gc_engine *engine, gc_entity *entity, gc_vector2 pos, \ +bool map_onclick(gc_engine *engine, gc_entity *entity, gc_vector2 pos, \ enum gc_mousekeys key) { struct vertex_component *map = GETCMP(entity, vertex_component); - struct map_manager_component *manager = GETCMP(entity, map_manager_component); - struct tile *ret = get_tile_from_pos(map, pos); - bool r = manager->brush == RESET; + struct map_manager_component *m = GETCMP(entity, map_manager_component); + struct transform_component *tc = GETCMP(entity, transform_component); + struct tile *t = get_tile_from_pos(map, gc_vector2_add(pos, tc->position)); + bool r; int ind; - if (!map || !manager) { + if (!map || !m) { my_printf("map not found\n"); return (false); } - if (!ret) + r = m->brush == RESET; + if (!t) return (false); - if (manager->tile_mode) - click_tile(engine, manager, ret, key == GC_LEFT); + if (m->tile_mode) + click_tile(engine, m, t, key == GC_LEFT); else { - ind = get_index_nearest_vertex(ret, pos); - move_tile(engine, ret, ((int) pow(2, ind + 1)) | (key == GC_LEFT), r); + ind = get_index_nearest_vertex(t, gc_vector2_add(pos, tc->position)); + move_verticies(engine, t, (int)pow(2, ind + 1) | (key == GC_LEFT), r); } return (false); } -void move_tile(gc_engine *engine, struct tile *ret, char mode, bool r) +void move_verticies(gc_engine *engine, struct tile *ret, char mode, bool r) { int val = (mode & INVERT_ADD_VALUE) ? ADD_VALUE : -ADD_VALUE; diff --git a/src/game_loader.c b/src/game_loader.c index 44606b0..58b3c9e 100644 --- a/src/game_loader.c +++ b/src/game_loader.c @@ -24,7 +24,7 @@ const struct callback callbacks[] = { {"goto_main_menu", &goto_main_menu}, {"quit", &quit}, {"fullscreen", &fullscreen}, - {"map_manage_click", &tile_interact}, + {"map_manage_click", &map_onclick}, {"resolution_down", &resolution_down}, {"resolution_up", &resolution_up}, {"framerate_up", &framerate_up},