Enable compile time specification of data and locale directories and prefs file
[neverball] / share / part.c
index 0b94f62..e4c5ae3 100644 (file)
@@ -1,4 +1,4 @@
-/*   
+/*
  * Copyright (C) 2003 Robert Kooima
  *
  * NEVERBALL is  free software; you can redistribute  it and/or modify
@@ -50,6 +50,8 @@ static float rnd(float l, float h)
 
 /*---------------------------------------------------------------------------*/
 
+static GLfloat gcoltab[] = {0.0f, 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f};
+
 void part_reset(float h)
 {
     int i;
@@ -59,14 +61,15 @@ void part_reset(float h)
         float t = rnd(+0.1f,      +1.0f);
         float a = rnd(-1.0f * PI, +1.0f * PI);
         float w = rnd(-2.0f * PI, +2.0f * PI);
+        int k = i % 6;
 
         part_goal[i].t = t;
         part_goal[i].a = V_DEG(a);
         part_goal[i].w = V_DEG(w);
 
-        part_goal[i].c[0] = 1.0f;
-        part_goal[i].c[1] = 1.0f;
-        part_goal[i].c[2] = 0.0f;
+        part_goal[i].c[0] = gcoltab[k];
+        part_goal[i].c[1] = gcoltab[k+1];
+        part_goal[i].c[2] = gcoltab[k+2];
 
         part_goal[i].p[0] = fsinf(a);
         part_goal[i].p[1] = (1.f - t) * h;
@@ -240,10 +243,11 @@ void part_draw_coin(float rx, float ry)
     glPopAttrib();
 }
 
-void part_draw_goal(float rx, float ry, float radius, float a)
+void part_draw_goal(float rx, float ry, float radius, float a, int spe)
 {
     float r = (float) SDL_GetTicks() / 1000.f;
     int i;
+    GLfloat yel[3] = {1.0f, 1.0f, 0.0f};
 
     glPushAttrib(GL_LIGHTING_BIT | GL_DEPTH_BUFFER_BIT);
     {
@@ -257,7 +261,8 @@ void part_draw_goal(float rx, float ry, float radius, float a)
         for (i = 0; i < PART_MAX_GOAL; i++)
             if (part_goal[i].t > 0.f)
                 part_draw(part_goal[i].p,
-                          part_goal[i].c, a,
+                          spe ? part_goal[i].c : yel,
+                          a,
                           radius - 0.05f, rx, ry, r * part_goal[i].w);
     }
     glPopAttrib();