]> git.lizzy.rs Git - nothing.git/commitdiff
(#893) Implement create_level_metadata
authorrexim <reximkut@gmail.com>
Sun, 16 Jun 2019 16:08:52 +0000 (23:08 +0700)
committerrexim <reximkut@gmail.com>
Sun, 16 Jun 2019 16:08:52 +0000 (23:08 +0700)
src/game/level_metadata.c
src/game/level_metadata.h

index bdad12ceb9145f45e13119b6db4163fca181221c..eed7f49f8880af9737c668a4c54d133eca350844 100644 (file)
@@ -14,6 +14,30 @@ struct LevelMetadata
     const char *title;
 };
 
+LevelMetadata *create_level_metadata(const char *title)
+{
+    trace_assert(title);
+
+    Lt *lt = create_lt();
+
+    LevelMetadata *level_metadata = PUSH_LT(
+        lt, nth_calloc(1, sizeof(LevelMetadata)), free);
+    if (level_metadata == NULL) {
+        RETURN_LT(lt, NULL);
+    }
+    level_metadata->lt = lt;
+
+    level_metadata->title = PUSH_LT(
+        lt,
+        string_duplicate(title, NULL),
+        free);
+    if (level_metadata->title == NULL) {
+        RETURN_LT(lt, NULL);
+    }
+
+    return level_metadata;
+}
+
 LevelMetadata *create_level_metadata_from_file(const char *filename)
 {
     trace_assert(filename);
index 721191e5a36ca44712566720b2716c90fe926690..6796c8a550baa59cdb2161f359972fed0bc3abd5 100644 (file)
@@ -4,6 +4,7 @@
 typedef struct LevelMetadata LevelMetadata;
 typedef struct LineStream LineStream;
 
+LevelMetadata *create_level_metadata(const char *title);
 LevelMetadata *create_level_metadata_from_file(const char *filename);
 LevelMetadata *create_level_metadata_from_line_stream(LineStream *line_stream);
 void destroy_level_metadata(LevelMetadata *level_metadata);