diff --git a/assets/ui/save.png b/assets/ui/save.png new file mode 100644 index 0000000..fa418a7 Binary files /dev/null and b/assets/ui/save.png differ diff --git a/include/map_editor.h b/include/map_editor.h index 34f0140..2080c35 100644 --- a/include/map_editor.h +++ b/include/map_editor.h @@ -40,6 +40,8 @@ bool texture(gc_engine *engine, gc_entity *entity, gc_vector2 _, enum gc_mousekeys __); bool switch_texture(gc_engine *engine, gc_entity *entity, gc_vector2 _, enum gc_mousekeys __); +bool save_map(gc_engine *engine, gc_entity *entity, gc_vector2 _, +enum gc_mousekeys __); enum brush { diff --git a/lib/gamacon b/lib/gamacon index 5941597..ac3ff0a 160000 --- a/lib/gamacon +++ b/lib/gamacon @@ -1 +1 @@ -Subproject commit 59415972ed68b09f1274c8d9b7975de056514348 +Subproject commit ac3ff0adbfbd6585bd8ec783d5f55df73200de28 diff --git a/prefabs/editor_ui.gcprefab b/prefabs/editor_ui.gcprefab index ae21278..1ed6b2f 100644 --- a/prefabs/editor_ui.gcprefab +++ b/prefabs/editor_ui.gcprefab @@ -1,14 +1,15 @@ - - \ No newline at end of file diff --git a/prefabs/game.gcprefab b/prefabs/game.gcprefab index 5ccfbdc..a72339e 100644 --- a/prefabs/game.gcprefab +++ b/prefabs/game.gcprefab @@ -25,6 +25,7 @@ + diff --git a/src/game_loader.c b/src/game_loader.c index 2c75a02..7b72dee 100644 --- a/src/game_loader.c +++ b/src/game_loader.c @@ -46,6 +46,7 @@ const struct callback map_editor_callbacks[] = { {"rotate", &rotate}, {"texture", &texture}, {"switch_texture", &switch_texture}, + {"save", &save_map}, {NULL, NULL} }; diff --git a/src/map_editor/map_interactions.c b/src/map_editor/map_interactions.c index f501b2a..e03f35a 100644 --- a/src/map_editor/map_interactions.c +++ b/src/map_editor/map_interactions.c @@ -36,7 +36,6 @@ struct tile *ret, bool is_left) bool map_onclick(gc_engine *engine, gc_entity *entity, gc_vector2 pos, \ enum gc_mousekeys key) { - printf("Map clicked\n"); struct vertex_component *map = GETCMP(entity, vertex_component); struct map_manager_component *m = GETCMP(entity, map_manager_component); struct transform_component *tc = GETCMP(entity, transform_component); diff --git a/src/map_editor/selectors.c b/src/map_editor/selectors.c index f09384c..2a51e3b 100644 --- a/src/map_editor/selectors.c +++ b/src/map_editor/selectors.c @@ -6,6 +6,8 @@ */ #include +#include +#include #include "map_editor.h" #include "engine.h" #include "entity.h" @@ -36,4 +38,27 @@ enum gc_mousekeys __) manager = GETCMP(list->data, map_manager_component); manager->tile_mode = false; return (true); +} + +bool save_map(gc_engine *engine, gc_entity *entity, gc_vector2 _, +enum gc_mousekeys __) +{ + gc_scene *scene = engine->scene; + gc_list *list = scene->get_entity_by_cmp(scene, "vertex_component"); + struct vertex_component *map; + time_t t; + struct tm *tm; + char save_file[1024]; + + time(&t); + tm = localtime(&t); + my_strcpy(save_file, "map-"); + strftime(save_file + 4, sizeof(save_file) - 4, "%d-%m-%Y %H:%M:%S", tm); + my_strcat(save_file, ".gcmap"); + if (!list) + return (false); + map = GETCMP(list->data, vertex_component); + my_printf("Saving the map to the file: %s\n", save_file); + vertex_serialize(map, save_file); + return (true); } \ No newline at end of file