static int goal = 0; /* Current goal value. */
static int goal_i = 0; /* Initial goal value. */
+static int goal_e = 0; /* Goal enabled flag */
+static int same_goal_e = 0; /* Reuse existing goal enabled flag */
+
static int time_rank = 3;
static int goal_rank = 3;
static int coin_rank = 3;
timer = 0;
goal = goal_i = level_goal(level);
+ if (same_goal_e)
+ same_goal_e = 0;
+ else
+ goal_e = (mode != MODE_CHALLENGE && level_completed(level) &&
+ config_get_d(CONFIG_LOCK_GOALS) == 0) || goal == 0;
+
prev = curr;
time_rank = goal_rank = coin_rank = 3;
if (demo_play_init(USER_REPLAY_FILE, get_level(level), mode,
level_time(level), level_goal(level),
- (mode != MODE_CHALLENGE && level_completed(level) &&
- config_get_d(CONFIG_LOCK_GOALS) == 0) || goal == 0,
- curr.score, curr.balls, curr.times))
+ goal_e, curr.score, curr.balls, curr.times))
{
return 1;
}
next++)
/* Do nothing. */;
- curr.balls--;
+ curr.times += timer;
+ curr.balls -= 1;
+
break;
}
int progress_same(void)
{
progress_stop();
- curr = status == GAME_GOAL ? prev : curr;
+
+ /* Reset progress and goal enabled state. */
+
+ if (status == GAME_GOAL)
+ {
+ curr = prev;
+ same_goal_e = 1;
+ }
+
return progress_play(level);
}
{
level_rename_player(level, time_rank, goal_rank, coin_rank, player);
+ demo_rename_player(USER_REPLAY_FILE, player);
+
if (progress_done())
set_rename_player(score_rank, times_rank, player);
}