X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=ec0a1231b4573c329886272d7e9127e7dbc629ea;hb=c2a639c0b2c1a9a2bd14de86932a47429ae918a4;hp=078ebb236fe0afc5783224ddde75149e41fb2382;hpb=fd2761fde6102017cd3be6b59c3be9140f96f703;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index 078ebb23..ec0a1231 100644 --- a/src/screens.c +++ b/src/screens.c @@ -812,7 +812,7 @@ static int num_helpscreen_music = 7; static int helpscreen_musicpos; #if 1 -void DrawHelpScreenElAction(int start) +void DrawHelpScreenElAction(int start, boolean init) { int i = 0, j = 0; int xstart = mSX + 16; @@ -823,13 +823,25 @@ void DrawHelpScreenElAction(int start) int delay; int sync_frame; - while (info_animation_info[j].element != -999) + if (init) + { + SetMainBackgroundImage(IMG_BACKGROUND_INFO); + ClearWindow(); + DrawHeadline(); + + DrawTextSCentered(100, FONT_TEXT_1, "The game elements:"); + + DrawTextSCentered(SYSIZE - 20, FONT_TEXT_4, + "Press any key or button for next page"); + } + + while (demo_anim_info[j].element != -999) { if (i >= start + MAX_HELPSCREEN_ELS || i >= num_helpscreen_els) break; else if (i < start) { - while (info_animation_info[j].element != -1) + while (demo_anim_info[j].element != -1) j++; j++; @@ -840,9 +852,9 @@ void DrawHelpScreenElAction(int start) j += helpscreen_step[i - start]; - element = info_animation_info[j].element; - action = info_animation_info[j].action; - direction = info_animation_info[j].direction; + element = demo_anim_info[j].element; + action = demo_anim_info[j].action; + direction = demo_anim_info[j].direction; if (action != -1 && direction != -1) graphic = el_act_dir2img(element, action, direction); @@ -853,7 +865,7 @@ void DrawHelpScreenElAction(int start) else graphic = el2img(element); - delay = info_animation_info[j++].delay; + delay = demo_anim_info[j++].delay; if (delay == -1) delay = 1000000; @@ -869,7 +881,7 @@ void DrawHelpScreenElAction(int start) helpscreen_frame[i - start]--; } - if (info_animation_info[j].element == -1) + if (demo_anim_info[j].element == -1) { if (!helpscreen_frame[i - start]) helpscreen_step[i - start] = 0; @@ -878,7 +890,7 @@ void DrawHelpScreenElAction(int start) { if (!helpscreen_frame[i - start]) helpscreen_step[i - start]++; - while(info_animation_info[j].element != -1) + while(demo_anim_info[j].element != -1) j++; } @@ -889,6 +901,9 @@ void DrawHelpScreenElAction(int start) DrawGraphicAnimationExt(drawto, xstart, ystart + (i - start) * ystep, graphic, sync_frame, USE_MASKING); + if (init) + DrawHelpScreenElText(element, action, direction, i - start); + i++; } @@ -984,6 +999,63 @@ void DrawHelpScreenElAction(int start) } #endif +#if 1 +void DrawHelpScreenElText(int element, int action, int direction, int ypos) +{ + int xstart = mSX + 56; + int ystart = mSY + 65 + 2 * 32; + int ystep = TILEY + 4; + char *text; + + text = getHashEntry(demo_anim_text, element_info[element].token_name); + + if (text == NULL) + { + char token[MAX_LINE_LEN]; + + strcpy(token, element_info[element].token_name); + + if (action != -1) + strcat(token, element_action_info[action].suffix); + + if (direction != -1) + strcat(token, element_direction_info[MV_DIR_BIT(direction)].suffix); + + text = getHashEntry(demo_anim_text, token); + + if (text == NULL) + text = "No description available"; + } + +#if 1 + +#if 1 + + if (strlen(text) <= 34) + ystart += getFontHeight(FONT_TEXT_2) / 2; + +#if 0 + DrawTextWrapped(xstart, ystart+1 + ypos * ystep, text, FONT_LEVEL_NUMBER, + 34, 2); +#else + DrawTextWrapped(xstart, ystart+1 + ypos * ystep, text, FONT_TEXT_2, 34, 2); +#endif + +#else + DrawTextToTextArea(xstart, ystart + ypos * ystep, text, FONT_TEXT_2, 34, + 34, 2, BLIT_ON_BACKGROUND); +#endif + +#else + if (strlen(text) > 25) + text[25] = '\0'; + + DrawText(xstart, ystart + ypos * ystep + 8, text, FONT_TEXT_2); +#endif +} + +#else + void DrawHelpScreenElText(int start) { int i; @@ -1008,6 +1080,7 @@ void DrawHelpScreenElText(int start) DrawTextSCentered(ybottom, FONT_TEXT_4, "Press any key or button for next page"); } +#endif void DrawHelpScreenMusicText(int num) { @@ -1125,20 +1198,23 @@ void DrawHelpScreen() helpscreen_musicpos = 0; helpscreen_state = 0; - LoadInfoAnimations(); + LoadDemoAnimInfo(); + LoadDemoAnimText(); LoadMusicInfo(); num_helpscreen_els = 0; - for (i=0; info_animation_info[i].element != -999; i++) - if (info_animation_info[i].element == -1) + for (i=0; demo_anim_info[i].element != -999; i++) + if (demo_anim_info[i].element == -1) num_helpscreen_els++; num_helpscreen_music = 0; for (list = music_file_info; list != NULL; list = list->next) num_helpscreen_music++; + DrawHelpScreenElAction(0, TRUE); +#if 0 DrawHelpScreenElText(0); - DrawHelpScreenElAction(0); +#endif FadeToFront(); InitAnimation(); @@ -1164,8 +1240,10 @@ void HandleHelpScreen(int button) helpscreen_state++; FrameCounter = 0; + DrawHelpScreenElAction(helpscreen_state * MAX_HELPSCREEN_ELS, TRUE); +#if 0 DrawHelpScreenElText(helpscreen_state * MAX_HELPSCREEN_ELS); - DrawHelpScreenElAction(helpscreen_state * MAX_HELPSCREEN_ELS); +#endif } else if (helpscreen_state < num_helpscreen_els_pages + num_helpscreen_music - 1) @@ -1198,7 +1276,7 @@ void HandleHelpScreen(int button) if (DelayReached(&hs_delay, GAME_FRAME_DELAY)) { if (helpscreen_state < num_helpscreen_els_pages) - DrawHelpScreenElAction(helpscreen_state * MAX_HELPSCREEN_ELS); + DrawHelpScreenElAction(helpscreen_state * MAX_HELPSCREEN_ELS, FALSE); } PlayMenuSoundIfLoop();