]> git.lizzy.rs Git - nothing.git/commitdiff
(#818) Implement label_layer_render
authorrexim <reximkut@gmail.com>
Sun, 9 Jun 2019 18:27:00 +0000 (01:27 +0700)
committerrexim <reximkut@gmail.com>
Sun, 9 Jun 2019 18:27:00 +0000 (01:27 +0700)
src/game/level/level_editor/label_layer.c

index 22732c895b6e53c9242827bb4fc78305898b13c0..122b02754c8f19d465be43816f2fb45366358356 100644 (file)
@@ -10,6 +10,7 @@
 #include "label_layer.h"
 #include "dynarray.h"
 #include "color.h"
+#include "game/camera.h"
 
 #define LABEL_LAYER_ID_MAX_SIZE 36
 
@@ -138,7 +139,26 @@ int label_layer_render(const LabelLayer *label_layer,
 {
     trace_assert(label_layer);
     trace_assert(camera);
-    (void) fa;
+
+    size_t n = dynarray_count(label_layer->ids);
+    Point *positions = dynarray_data(label_layer->positions);
+    Color *colors = dynarray_data(label_layer->colors);
+    char **texts = dynarray_data(label_layer->texts);
+
+    /* TODO: LabelLayer doesn't show the final position of Label after the animation */
+    for (size_t i = 0; i < n; ++i) {
+        if (camera_render_text(
+                camera,
+                texts[i],
+                vec(2.0f, 2.0f),
+                color_scale(
+                    colors[i],
+                    rgba(1.0f, 1.0f, 1.0f, fa)),
+                positions[i]) < 0) {
+            return -1;
+        }
+    }
+
     return 0;
 }
 
@@ -149,6 +169,7 @@ int label_layer_event(LabelLayer *label_layer,
     trace_assert(label_layer);
     trace_assert(event);
     trace_assert(camera);
+    /* TODO: LabelLayer doesn't allow to modify and add labels */
     return 0;
 }