fix the click with the offset of map

This commit is contained in:
Clément Le Bihan
2020-03-12 16:53:13 +01:00
parent 3af0251724
commit 8506d561a4
2 changed files with 25 additions and 12 deletions
+24 -11
View File
@@ -34,27 +34,40 @@ struct tile *ret, bool is_left)
}
}
bool tile_interact(gc_engine *engine, gc_entity *entity, gc_vector2 pos, \
enum gc_mousekeys key)
void do_the_tile_interact(gc_engine *engine, void **dodge, \
enum gc_mousekeys key, gc_vector2 pos)
{
struct vertex_component *map = GETCMP(entity, vertex_component);
struct map_manager_component *manager = GETCMP(entity, map_manager_component);
int ind;
struct map_manager_component *manager = dodge[1];
struct vertex_component *map = dodge[0];
struct tile *ret = get_tile_from_pos(map, pos);
bool r = manager->brush == RESET;
int ind;
if (!map || !manager) {
my_printf("map not found\n");
return (false);
}
if (!ret)
return (false);
return;
if (manager->tile_mode)
click_tile(engine, manager, ret, key == GC_LEFT);
else {
ind = get_index_nearest_vertex(ret, pos);
move_tile(engine, ret, ((int) pow(2, ind + 1)) | (key == GC_LEFT), r);
move_tile(engine, ret, ((int) pow(2, ind + 1)) | (key == GC_LEFT), r);
}
}
bool tile_interact(gc_engine *engine, gc_entity *entity, gc_vector2 pos, \
enum gc_mousekeys key)
{
struct map_manager_component *m = GETCMP(entity, map_manager_component);
struct transform_component *tc = GETCMP(entity, transform_component);
struct vertex_component *map = GETCMP(entity, vertex_component);
void *dodge[2] = {map, m};
if (!map || !m || !tc) {
my_printf("map not found\n");
return (false);
}
pos.x -= tc->position.x;
pos.y += tc->position.y;
do_the_tile_interact(engine, dodge, key, pos);
return (false);
}