static float jump_p[3]; /* Jump destination */
static float fade_k = 0.0; /* Fade in/out level */
static float fade_d = 0.0; /* Fade in/out direction */
-static int drawball = 1; /* Should the ball be drawn? */
static int ball_b = 0; /* Is the ball a bonus ball? */
static int grow = 0; /* Should the ball be changing size? */
game_rx = 0.f;
game_rz = 0.f;
- drawball = 1;
-
/* Initialize jump and goal states. */
jump_e = 1;
sol_draw(&file);
- if (config_get_d(CONFIG_SHADOW) && drawball)
+ if (config_get_d(CONFIG_SHADOW))
{
shad_draw_set(ball_p, ball_r);
sol_shad(&file);
{
part_draw_coin(-rx * d, -ry);
game_draw_items(&file);
- if (drawball)
- game_draw_balls(&file);
+ game_draw_balls(&file);
}
game_draw_goals(&file, -rx * d, -ry);
game_draw_jumps(&file);
static int game_update_state(int *state_value)
{
struct s_file *fp = &file;
+ struct s_goal *zp;
+ struct s_item *hp;
+
float p[3];
float c[3];
+
int bt = state_value != NULL;
- struct s_goal *g;
- struct s_item *hp;
/* Test for an item. */
if (bt && (hp = sol_item_test(fp, p, COIN_RADIUS)))
{
+ int sound = AUD_COIN;
+
item_color(hp, c);
part_burst(p, c);
+
grow_set(fp, hp->t);
if (hp->t == ITEM_COIN)
+ {
coins += hp->n;
- /* Check for goal open. */
- if (goal_c > 0)
- {
- goal_c = goal_c - hp->n;
- if (goal_c <= 0)
+ /* Check for goal open. */
+ if (goal_c > 0)
{
- audio_play(AUD_SWITCH, 1.f);
- goal_c = 0;
+ goal_c -= hp->n;
+ if (goal_c <= 0)
+ {
+ sound = AUD_SWITCH;
+ goal_c = 0;
+ }
}
- else
- audio_play(AUD_COIN, 1.f);
}
- else
- audio_play(AUD_COIN, 1.f);
+ audio_play(sound, 1.f);
/* Reset item type. */
hp->t = ITEM_NONE;
/* Test for a goal. */
- if (bt && goal_c == 0 && (g = sol_goal_test(fp, p, 0)))
+ if (bt && goal_c == 0 && (zp = sol_goal_test(fp, p, 0)))
{
- *state_value = g->s;
+ *state_value = zp->s;
audio_play(AUD_GOAL, 1.0f);
- return g->c ? GAME_SPEC : GAME_GOAL;
+ return zp->c ? GAME_SPEC : GAME_GOAL;
}
/* Test for time-out. */
if (bt && clock_down && clock <= 0.f)
{
- const GLfloat *p = fp->uv->p;
- const GLfloat c[5] = {1.0f, 1.0f, 0.0f, 0.0f, 1.0f};
- part_burst(p, c);
- part_burst(p, c+1);
- part_burst(p, c+2);
- part_burst(p, c);
- part_burst(p, c+1);
- part_burst(p, c+2);
- drawball = 0;
audio_play(AUD_TIME, 1.0f);
return GAME_TIME;
}
game_update_grav(h, g);
part_step(h, t);
- if (!drawball)
- /* nothing */;
- else if (jump_b)
+ if (jump_b)
{
jump_dt += t;