]> git.itanic.dy.fi Git - sdl-planets/commitdiff
main.c: Merge two planets into one at collision point
authorTimo Kokkonen <kaapeli@itanic.dy.fi>
Sun, 7 Mar 2010 11:57:59 +0000 (13:57 +0200)
committerTimo Kokkonen <kaapeli@itanic.dy.fi>
Sun, 7 Mar 2010 11:57:59 +0000 (13:57 +0200)
Signed-off-by: Timo Kokkonen <kaapeli@itanic.dy.fi>
main.c

diff --git a/main.c b/main.c
index 420552c206df5275fc16f151ec233c2ba1de7c6d..336a2c2a5e654438a1e519271c99d467fa7563ff 100644 (file)
--- a/main.c
+++ b/main.c
@@ -53,8 +53,15 @@ static void loop(SDL_Surface *screen)
                list_for_each_entry(pl1, &planet->list, list) {
                        l = pl1->list.next;
                        pl2 = list_to_planet(l);
-                       list_for_each_entry_from(pl2, &planet->list, list)
-                               gravitize_planets(pl1, pl2, time);
+                       list_for_each_entry_from(pl2, &planet->list, list) {
+                               struct planet *ptmp;
+                               if (!gravitize_planets(pl1, pl2, time))
+                                       continue;
+
+                               ptmp = list_to_planet(pl2->list.prev);
+                               merge_planets(pl1, pl2);
+                               pl2 = ptmp;
+                       }
 
                        move_planet(pl1, time);
                }