From 57f0ea8f56eb9d66b28d886bee5b89f2efbd1d96 Mon Sep 17 00:00:00 2001
From: Florian Burgener <florian.brgnr@gmail.com>
Date: Sat, 18 Dec 2021 18:24:14 +0100
Subject: [PATCH] Refactoring

---
 CelestialObject.c | 13 +++++++++++--
 CelestialObject.h |  1 +
 PlanetarySystem.c |  5 +++++
 main.c            |  4 ++--
 4 files changed, 19 insertions(+), 4 deletions(-)

diff --git a/CelestialObject.c b/CelestialObject.c
index 60f06c6..be5a585 100644
--- a/CelestialObject.c
+++ b/CelestialObject.c
@@ -41,7 +41,10 @@ void celestial_object_draw(CelestialObject *object, Vector2 reference_frame, dou
         draw_disc(scaled_position, object->drawing_disc_radius);
 
     if (strcmp(object->name, "Moon") != 0) {
-        glLineWidth(4.0);
+        if (zoom_factor < 1)
+            glLineWidth(4.0 * zoom_factor);
+        else
+            glLineWidth(4.0);
 
         for (int32_t j = 0; j < object->points_length - 1; j += 1) {
             Vector2 p1 = scale_position(zoom_factor, object->points[j], reference_frame);
@@ -50,9 +53,15 @@ void celestial_object_draw(CelestialObject *object, Vector2 reference_frame, dou
         }
     }
 
+    // celestial_object_draw_name(object, reference_frame,zoom_factor);
+}
+
+void celestial_object_draw_name(CelestialObject *object, Vector2 reference_frame, double zoom_factor) {
+    Vector2 scaled_position = scale_position(zoom_factor, object->current_position, reference_frame);
+
     if (strcmp(object->name, "Moon") == 0 && zoom_factor < 36) {
         return;
     }
 
-    draw_text(object->name, vector2_add(scaled_position, vector2_create(8, 32)));
+    draw_text(object->name, vector2_add(scaled_position, vector2_create(object->drawing_disc_radius + 8, 7)));
 }
diff --git a/CelestialObject.h b/CelestialObject.h
index cecf815..bd7f28f 100644
--- a/CelestialObject.h
+++ b/CelestialObject.h
@@ -18,5 +18,6 @@ typedef struct CelestialObject {
 
 CelestialObject *celestial_object_create(char *name, double mass, double semi_major_axis, double eccentricity, uint32_t drawing_disc_radius, uint32_t drawing_color);
 void celestial_object_draw(CelestialObject *object, Vector2 reference_frame, double zoom_factor);
+void celestial_object_draw_name(CelestialObject *object, Vector2 reference_frame, double zoom_factor);
 
 #endif
diff --git a/PlanetarySystem.c b/PlanetarySystem.c
index 15f48cd..5e244b7 100644
--- a/PlanetarySystem.c
+++ b/PlanetarySystem.c
@@ -134,6 +134,11 @@ void planetary_system_draw(PlanetarySystem *ps) {
         celestial_object_draw(object, reference_frame, ps->zoom_factor);
     }
 
+    for (int32_t i = 0; i < ps->objects_length; i += 1) {
+        CelestialObject *object = ps->objects[i];
+        celestial_object_draw_name(object, reference_frame, ps->zoom_factor);
+    }
+
     char text[200];
     sprintf(text, "Focused Object : %s", object_reference_frame->name);
     draw_text(text, vector2_create(8, 64));
diff --git a/main.c b/main.c
index 2847df6..39b543c 100644
--- a/main.c
+++ b/main.c
@@ -1,3 +1,4 @@
+#include <GL/freeglut.h>
 #include <GL/glut.h>
 #include <stdint.h>
 #include <stdio.h>
@@ -52,7 +53,7 @@ void draw() {
 
     if (elapsed_time % REFRESH_RATE == 0 && elapsed_time != 0) {
         char title[100];
-        sprintf(title, "Solar System (%d : %lld)", elapsed_time / REFRESH_RATE, (time(NULL) - true_time_shift) % 1000);
+        sprintf(title, "Solar System (%d : %ld)", elapsed_time / REFRESH_RATE, (time(NULL) - true_time_shift) % 1000);
         glutSetWindowTitle(title);
     }
 
@@ -135,7 +136,6 @@ int main(int argc, char *argv[]) {
 
     glutTimerFunc(1000 / REFRESH_RATE, update_timer, 0);
     glutTimerFunc(1000 / REFRESH_RATE, draw_timer, 0);
-
     glutMainLoop();
 
     return EXIT_SUCCESS;
-- 
GitLab