From e6359255a4deb88cf45dbb4021c036d75b66eda4 Mon Sep 17 00:00:00 2001
From: Anonymus Raccoon
Date: Tue, 14 Apr 2020 13:44:56 +0200
Subject: [PATCH] Adding a save button
---
assets/ui/save.png | Bin 0 -> 301 bytes
include/map_editor.h | 2 ++
lib/gamacon | 2 +-
prefabs/editor_ui.gcprefab | 19 ++++++++++---------
prefabs/game.gcprefab | 1 +
src/game_loader.c | 1 +
src/map_editor/map_interactions.c | 1 -
src/map_editor/selectors.c | 25 +++++++++++++++++++++++++
8 files changed, 40 insertions(+), 11 deletions(-)
create mode 100644 assets/ui/save.png
diff --git a/assets/ui/save.png b/assets/ui/save.png
new file mode 100644
index 0000000000000000000000000000000000000000..fa418a7d5d594ec02b80bd684018807a0aec92ca
GIT binary patch
literal 301
zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpUtFP<)rAr*{ouL<%vC5p5?ta04O
zEq>@hyFmtb)0`%S_Bl^(~7M~7Ox|QkjM(}NklGl;?z7BpnE9aKH21O^c19A)H6Z$XkH#jt~S2#?z
z0Z|}yP%QY%gyg2VH4J()9^5>(B7}JzN5$5eSqG$6T5GUas4&-wc-qOCO*E|wqwP9A=POw9_{0EyYc7O)D;4*a}w_bYAk4|
uWHe1W?3GfH&FCJ&E4$B~?;_B(_jwQSUHm=cu$2YS{|uh4elF{r5}E*I_k0-u
literal 0
HcmV?d00001
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