projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added storing next level to play from hall of fame
[rocksndiamonds.git]
/
src
/
screens.c
diff --git
a/src/screens.c
b/src/screens.c
index 67dd30880ccb84fdb31471374f275b48d3c457b1..2b575392c2ef6d921c50f91393047e282bd63a6d 100644
(file)
--- a/
src/screens.c
+++ b/
src/screens.c
@@
-1721,6
+1721,9
@@
void DrawMainMenu(void)
return;
}
return;
}
+ // reset flag to continue playing next level from hall of fame
+ scores.continue_playing = FALSE;
+
// leveldir_current may be invalid (level group, parent link, node copy)
leveldir_current = getValidLevelSeries(leveldir_current, leveldir_last_valid);
// leveldir_current may be invalid (level group, parent link, node copy)
leveldir_current = getValidLevelSeries(leveldir_current, leveldir_last_valid);
@@
-4007,7
+4010,7
@@
static int getPlayerNameColor(char *name)
}
static void drawTypeNameText(char *name, struct TextPosInfo *pos,
}
static void drawTypeNameText(char *name, struct TextPosInfo *pos,
-
boolean active)
+ boolean active)
{
char text[MAX_PLAYER_NAME_LEN + 2] = { 0 };
boolean multiple_users = (game_status == GAME_MODE_PSEUDO_TYPENAMES);
{
char text[MAX_PLAYER_NAME_LEN + 2] = { 0 };
boolean multiple_users = (game_status == GAME_MODE_PSEUDO_TYPENAMES);
@@
-4015,8
+4018,12
@@
static void drawTypeNameText(char *name, struct TextPosInfo *pos,
int sy = (multiple_users ? amSY + pos->y : mSY + ALIGNED_TEXT_YPOS(pos));
int font_nr = (active ? FONT_ACTIVE(pos->font) : pos->font);
int font_width = getFontWidth(font_nr);
int sy = (multiple_users ? amSY + pos->y : mSY + ALIGNED_TEXT_YPOS(pos));
int font_nr = (active ? FONT_ACTIVE(pos->font) : pos->font);
int font_width = getFontWidth(font_nr);
+ int font_xoffset = getFontDrawOffsetX(font_nr);
+ int font_yoffset = getFontDrawOffsetY(font_nr);
+ int font_sx = sx + font_xoffset;
+ int font_sy = sy + font_yoffset;
- DrawBackgroundForFont(
sx,
sy, pos->width, pos->height, font_nr);
+ DrawBackgroundForFont(
font_sx, font_
sy, pos->width, pos->height, font_nr);
sprintf(text, "%s%c", name, (active ? '_' : '\0'));
sprintf(text, "%s%c", name, (active ? '_' : '\0'));
@@
-4332,6
+4339,14
@@
static int getAlignYOffsetFromTreeInfo(TreeInfo *ti)
return align_yoffset;
}
return align_yoffset;
}
+static void StartPlayingFromHallOfFame(void)
+{
+ level_nr = scores.next_level_nr;
+ LoadLevel(level_nr);
+
+ StartGameActions(network.enabled, setup.autorecord, level.random_seed);
+}
+
static void DrawChooseTree(TreeInfo **ti_ptr)
{
int fade_mask = REDRAW_FIELD;
static void DrawChooseTree(TreeInfo **ti_ptr)
{
int fade_mask = REDRAW_FIELD;
@@
-4792,17
+4807,17
@@
static void HandleChooseTree(int mx, int my, int dx, int dy, int button,
#if defined(PLATFORM_ANDROID)
// touching the screen anywhere continues playing the next level
#if defined(PLATFORM_ANDROID)
// touching the screen anywhere continues playing the next level
- if ((mx || my) && scores.
was_just
_playing)
+ if ((mx || my) && scores.
continue
_playing)
{
mx = my = 0;
button = MB_MENU_CHOICE;
}
#endif
{
mx = my = 0;
button = MB_MENU_CHOICE;
}
#endif
- // any mouse click or
direction input stops playing the next level
- if ((mx || my || dx || dy) && scores.
was_just_playing
)
+ // any mouse click or
cursor key stops leaving scores by "Return" key
+ if ((mx || my || dx || dy) && scores.
continue_on_return
)
{
{
- scores.
was_just_playing
= FALSE;
+ scores.
continue_on_return
= FALSE;
level_nr = scores.last_level_nr;
LoadLevel(level_nr);
}
level_nr = scores.last_level_nr;
LoadLevel(level_nr);
}
@@
-5085,16
+5100,13
@@
static void HandleChooseTree(int mx, int my, int dx, int dy, int button,
}
else if (game_status == GAME_MODE_SCORES)
{
}
else if (game_status == GAME_MODE_SCORES)
{
- if (setup.auto_play_next_level && setup.increment_levels &&
- scores.last_level_nr < leveldir_current->last_level &&
- scores.was_just_playing &&
- !network_playing)
+ if (scores.continue_playing && scores.continue_on_return)
{
{
- Start
GameActions(network.enabled, setup.autorecord,
- level.random_seed);
+ Start
PlayingFromHallOfFame();
+
return;
}
return;
}
- else if (!scores.
was_just_playing
)
+ else if (!scores.
continue_on_return
)
{
SetGameStatus(GAME_MODE_SCOREINFO);
{
SetGameStatus(GAME_MODE_SCOREINFO);
@@
-5158,6
+5170,9
@@
void DrawChoosePlayerName(void)
if (player_name_current == NULL)
player_name_current = player_name;
if (player_name_current == NULL)
player_name_current = player_name;
+ // set text size for main name input (also used on name selection screen)
+ InitializeMainControls();
+
DrawChooseTree(&player_name_current);
}
DrawChooseTree(&player_name_current);
}
@@
-5291,10
+5306,10
@@
static void DrawHallOfFame_setScoreEntries(void)
// ("score_entries" and "score_entry_current" may be NULL here)
}
// ("score_entries" and "score_entry_current" may be NULL here)
}
-void DrawHallOfFame(int
level_
nr)
+void DrawHallOfFame(int nr)
{
{
- scores.last_level_nr =
level_
nr;
- scores.
was_just_playing
= (game_status_last_screen == GAME_MODE_PLAYING);
+ scores.last_level_nr = nr;
+ scores.
continue_on_return
= (game_status_last_screen == GAME_MODE_PLAYING);
// (this is needed when called from GameEnd() after winning a game)
KeyboardAutoRepeatOn();
// (this is needed when called from GameEnd() after winning a game)
KeyboardAutoRepeatOn();
@@
-5303,7
+5318,7
@@
void DrawHallOfFame(int level_nr)
SetDrawDeactivationMask(REDRAW_NONE);
SetDrawBackgroundMask(REDRAW_FIELD);
SetDrawDeactivationMask(REDRAW_NONE);
SetDrawBackgroundMask(REDRAW_FIELD);
- LoadLocalAndServerScore(level_nr, TRUE);
+ LoadLocalAndServerScore(
scores.last_
level_nr, TRUE);
DrawHallOfFame_setScoreEntries();
DrawHallOfFame_setScoreEntries();