static void DrawHallOfFame_setScoreEntries(void);
static void HandleHallOfFame_SelectLevel(int, int);
+static char *getHallOfFameRankText(int);
static char *getHallOfFameScoreText(int);
static struct GadgetInfo *screen_gadget[NUM_SCREEN_GADGETS];
int startx3 = startx + dx3;
int startx4 = startx + dx4;
int pos = node->pos;
- boolean forced = (scores.force_last_added && pos == scores.last_added);
- char *pos_text = (forced ? "???" : int2str(pos + 1, 3));
+ char *pos_text = getHallOfFameRankText(pos);
char *dot_text = ".";
int i;
int num_entries = numTreeInfoInGroup(ti);
int num_page_entries = MIN(num_entries, NUM_MENU_ENTRIES_ON_SCREEN);
boolean position_set_by_scrollbar = (dx == 999);
+ boolean button_action = (button == MB_MENU_LEAVE || button == MB_MENU_CHOICE);
+ boolean button_is_valid = (mx >= 0 && my >= 0);
+ boolean button_screen_clicked = (button_action && button_is_valid);
if (game_status == GAME_MODE_SCORES)
{
{
drawChooseTreeScreen_Scores_NotAvailable();
}
- else if (button == MB_MENU_LEAVE || button == MB_MENU_CHOICE)
+ else if (button_screen_clicked)
{
PlaySound(SND_MENU_ITEM_SELECTING);
DrawChooseTree(&score_entry_current);
}
+static char *getHallOfFameRankText(int nr)
+{
+ boolean forced = (scores.force_last_added && nr == scores.last_added);
+
+ return (forced ? "???" : int2str(nr + 1, 3));
+}
+
static char *getHallOfFameTimeText(int nr)
{
static char score_text[10];
static void HandleHallOfFame_SelectLevel(int step, int direction)
{
- int old_level_nr = level_nr;
+ int old_level_nr = scores.last_level_nr;
int new_level_nr = old_level_nr + step * direction;
if (new_level_nr < leveldir_current->first_level)
HandleChooseTree(mx, my, dx, dy, button, &score_entry_current);
}
-static void DrawScoreInfo(int pos)
+static void DrawScoreInfo_Content(int entry_nr)
{
- struct ScoreEntry *entry = &scores.entry[pos];
+ struct ScoreEntry *entry = &scores.entry[entry_nr];
+ char *pos_text = getHallOfFameRankText(entry_nr);
int font_title = MENU_INFO_FONT_TITLE;
int font_head = MENU_INFO_FONT_HEAD;
int font_text = MENU_INFO_FONT_TEXT;
int xstart1 = mSX - SX + 2 * xstep;
int xstart2 = mSX - SX + 14 * xstep;
- SetMainBackgroundImageIfDefined(IMG_BACKGROUND_SCOREINFO);
-
- FadeOut(REDRAW_FIELD);
-
ClearField();
drawChooseTreeHead(score_entries);
DrawTextF(xstart2, ystart, font_text, level.name);
ystart += ystep_para;
+ DrawTextF(xstart1, ystart, font_head, "Rank");
+ DrawTextF(xstart2, ystart, font_text, pos_text);
+ ystart += ystep_line;
+
DrawTextF(xstart1, ystart, font_head, "Player");
DrawTextF(xstart2, ystart, font_text, entry->name);
ystart += ystep_line;
else
{
DrawTextF(xstart1, ystart, font_head, "Time");
- DrawTextF(xstart2, ystart, font_text, getHallOfFameTimeText(pos));
+ DrawTextF(xstart2, ystart, font_text, getHallOfFameTimeText(entry_nr));
ystart += ystep_line;
}
}
DrawTextSCentered(ybottom, font_foot, "Press any key or button to go back");
+}
+
+static void DrawScoreInfo(int entry_nr)
+{
+ SetMainBackgroundImageIfDefined(IMG_BACKGROUND_SCOREINFO);
+
+ UnmapAllGadgets();
+
+ FadeOut(REDRAW_FIELD);
+
+ DrawScoreInfo_Content(entry_nr);
FadeIn(REDRAW_FIELD);
}