X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=6e8c548cf2ac3251fe991d0715da35c735645123;hb=de8b3ae622eae10f1caf96872fb1790f7bd9644b;hp=88f6987587652a447f619a432696ae5db4ef7a3c;hpb=a95264fc39b6eae2473bfd6521c7bf3eef5af804;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index 88f69875..6e8c548c 100644 --- a/src/screens.c +++ b/src/screens.c @@ -71,6 +71,16 @@ static void HandleChooseTree(int, int, int, int, int, TreeInfo **); static struct GadgetInfo *screen_gadget[NUM_SCREEN_GADGETS]; static int setup_mode = SETUP_MODE_MAIN; +#if 0 +static int mSX = SX; +static int mSY = SY; +#else +#define mSX (SX + (game_status == MAINMENU ? global.menu_draw_xoffset_MAIN : \ + global.menu_draw_xoffset)) +#define mSY (SY + (game_status == MAINMENU ? global.menu_draw_yoffset_MAIN : \ + global.menu_draw_yoffset)) +#endif + #if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND) #define NUM_SCROLLBAR_BITMAPS 2 static Bitmap *scrollbar_bitmap[NUM_SCROLLBAR_BITMAPS]; @@ -96,8 +106,14 @@ static void drawCursorExt(int xpos, int ypos, int color, int graphic) ypos += MENU_SCREEN_START_YPOS; +#if 1 + DrawBackground(mSX + xpos * TILEX, mSY + ypos * TILEY, TILEX, TILEY); + DrawGraphicThruMaskExt(drawto, mSX + xpos * TILEX, mSY + ypos * TILEY, + graphic, 0); +#else DrawBackground(SX + xpos * 32, SY + ypos * 32, TILEX, TILEY); DrawGraphicThruMask(xpos, ypos, graphic, 0); +#endif } static void initCursor(int ypos, int graphic) @@ -131,10 +147,10 @@ static void PlaySound_Menu_Continue(int sound) void DrawHeadline() { - int font1_xsize = getFontWidth(FONT_TITLE_1); - int font2_xsize = getFontWidth(FONT_TITLE_2); - int x1 = SX + (SXSIZE - strlen(PROGRAM_TITLE_STRING) * font1_xsize) / 2; - int x2 = SX + (SXSIZE - strlen(WINDOW_SUBTITLE_STRING) * font2_xsize) / 2; + int font1_width = getFontWidth(FONT_TITLE_1); + int font2_width = getFontWidth(FONT_TITLE_2); + int x1 = SX + (SXSIZE - strlen(PROGRAM_TITLE_STRING) * font1_width) / 2; + int x2 = SX + (SXSIZE - strlen(WINDOW_SUBTITLE_STRING) * font2_width) / 2; DrawText(x1, SY + 8, PROGRAM_TITLE_STRING, FONT_TITLE_1); DrawText(x2, SY + 46, WINDOW_SUBTITLE_STRING, FONT_TITLE_2); @@ -168,14 +184,22 @@ void DrawMainMenu() { static LevelDirTree *leveldir_last_valid = NULL; char *name_text = (!options.network && setup.team_mode ? "Team:" : "Name:"); - int name_width = getFontWidth(FONT_MENU_1) * strlen("Name:"); + int font_width = getFontWidth(FONT_MENU_1); + int name_width = font_width * strlen("Name:"); + int level_width = font_width * strlen("Level:"); int i; +#if 0 + mSX = SX + global.menu_draw_xoffset; + mSY = SY + global.menu_draw_yoffset; +#endif + UnmapAllGadgets(); FadeSounds(); KeyboardAutoRepeatOn(); ActivateJoystick(); + SetMouseCursor(CURSOR_DEFAULT); SetDrawDeactivationMask(REDRAW_NONE); SetDrawBackgroundMask(REDRAW_FIELD); @@ -225,39 +249,39 @@ void DrawMainMenu() DrawHeadline(); - DrawText(SX + 32, SY + 2*32, name_text, FONT_MENU_1); - DrawText(SX + 32 + name_width, SY + 2*32, setup.player_name, FONT_INPUT); - DrawText(SX + 32, SY + 3*32, "Level:", FONT_MENU_1); - DrawText(SX + 11 * 32, SY + 3*32, int2str(level_nr,3), FONT_VALUE_1); - DrawText(SX + 32, SY + 4*32, "Hall Of Fame", FONT_MENU_1); - DrawText(SX + 32, SY + 5*32, "Level Creator", FONT_MENU_1); - DrawText(SY + 32, SY + 6*32, "Info Screen", FONT_MENU_1); - DrawText(SX + 32, SY + 7*32, "Start Game", FONT_MENU_1); - DrawText(SX + 32, SY + 8*32, "Setup", FONT_MENU_1); - DrawText(SX + 32, SY + 9*32, "Quit", FONT_MENU_1); + DrawText(mSX + 32, mSY + 2*32, name_text, FONT_MENU_1); + DrawText(mSX + 32, mSY + 3*32, "Level:", FONT_MENU_1); + DrawText(mSX + 32, mSY + 4*32, "Hall Of Fame", FONT_MENU_1); + DrawText(mSX + 32, mSY + 5*32, "Level Creator", FONT_MENU_1); + DrawText(mSY + 32, mSY + 6*32, "Info Screen", FONT_MENU_1); + DrawText(mSX + 32, mSY + 7*32, "Start Game", FONT_MENU_1); + DrawText(mSX + 32, mSY + 8*32, "Setup", FONT_MENU_1); + DrawText(mSX + 32, mSY + 9*32, "Quit", FONT_MENU_1); + + DrawText(mSX + 32 + name_width, mSY + 2*32, setup.player_name, FONT_INPUT); + DrawText(mSX + level_width + 5 * 32, mSY + 3*32, int2str(level_nr,3), + FONT_VALUE_1); DrawMicroLevel(MICROLEV_XPOS, MICROLEV_YPOS, TRUE); - DrawTextF(7*32 + 6, 3*32 + 9, FONT_TEXT_3, "%d-%d", - leveldir_current->first_level, - leveldir_current->last_level); + DrawTextF(mSX + 32 + level_width - 2, mSY + 3*32 + 1, FONT_TEXT_3, "%d-%d", + leveldir_current->first_level, leveldir_current->last_level); + /* if (leveldir_current->readonly) + */ { - DrawTextF(15*32 + 6, 3*32 + 9 - 7, FONT_TEXT_3, "READ"); - DrawTextF(15*32 + 6, 3*32 + 9 + 7, FONT_TEXT_3, "ONLY"); + DrawTextF(mSX + level_width + 9*32 - 2, + mSY + 3*32 + 1 - 7, FONT_TEXT_3, "READ"); + DrawTextF(mSX + level_width + 9*32 - 2, + mSY + 3*32 + 1 + 7, FONT_TEXT_3, "ONLY"); } for(i=0; i<8; i++) initCursor(i, (i == 1 || i == 6 ? IMG_MENU_BUTTON_RIGHT :IMG_MENU_BUTTON)); -#if 0 - DrawGraphic(10, 3, IMG_MENU_BUTTON_LEFT, 0); - DrawGraphic(14, 3, IMG_MENU_BUTTON_RIGHT, 0); -#else - drawCursorXY(10, 1, IMG_MENU_BUTTON_LEFT); - drawCursorXY(14, 1, IMG_MENU_BUTTON_RIGHT); -#endif + drawCursorXY(level_width/32 + 4, 1, IMG_MENU_BUTTON_LEFT); + drawCursorXY(level_width/32 + 8, 1, IMG_MENU_BUTTON_RIGHT); DrawText(SX + 56, SY + 326, "A Game by Artsoft Entertainment", FONT_TITLE_2); @@ -354,7 +378,7 @@ void HandleMainMenu(int mx, int my, int dx, int dy, int button) level_nr = new_level_nr; - DrawText(SX + 11 * 32, SY + 3 * 32, int2str(level_nr, 3), FONT_VALUE_1); + DrawText(mSX + 11 * 32, mSY + 3 * 32, int2str(level_nr, 3), FONT_VALUE_1); LoadLevel(level_nr); DrawMicroLevel(MICROLEV_XPOS, MICROLEV_YPOS, TRUE); @@ -581,12 +605,12 @@ static int OLD_helpscreen_action[] = static int helpscreen_action[] = { - IMG_PLAYER1_MOVING_DOWN, 16, - IMG_PLAYER1_MOVING_UP, 16, - IMG_PLAYER1_MOVING_LEFT, 16, - IMG_PLAYER1_MOVING_RIGHT, 16, - IMG_PLAYER1_PUSHING_LEFT, 16, - IMG_PLAYER1_PUSHING_RIGHT, 16, HA_NEXT, + IMG_PLAYER_1_MOVING_DOWN, 16, + IMG_PLAYER_1_MOVING_UP, 16, + IMG_PLAYER_1_MOVING_LEFT, 16, + IMG_PLAYER_1_MOVING_RIGHT, 16, + IMG_PLAYER_1_PUSHING_LEFT, 16, + IMG_PLAYER_1_PUSHING_RIGHT, 16, HA_NEXT, IMG_SAND, -1, HA_NEXT, @@ -598,16 +622,16 @@ static int helpscreen_action[] = IMG_WALL, -1, HA_NEXT, - IMG_WALL_GROWING_ACTIVE_LEFT, 20, + IMG_EXPANDABLE_WALL_GROWING_LEFT, 20, IMG_WALL, 50, IMG_EMPTY_SPACE, 20, - IMG_WALL_GROWING_ACTIVE_RIGHT, 20, + IMG_EXPANDABLE_WALL_GROWING_RIGHT, 20, IMG_WALL, 50, IMG_EMPTY_SPACE, 20, - IMG_WALL_GROWING_ACTIVE_UP, 20, + IMG_EXPANDABLE_WALL_GROWING_UP, 20, IMG_WALL, 50, IMG_EMPTY_SPACE, 20, - IMG_WALL_GROWING_ACTIVE_DOWN, 20, + IMG_EXPANDABLE_WALL_GROWING_DOWN, 20, IMG_WALL, 50, IMG_EMPTY_SPACE, 20, HA_NEXT, @@ -638,7 +662,7 @@ static int helpscreen_action[] = IMG_EMPTY_SPACE, 10, HA_NEXT, IMG_NUT, 100, - IMG_NUT_CRACKING, 6, + IMG_NUT_BREAKING, 6, IMG_EMERALD, 20, HA_NEXT, IMG_WALL_EMERALD, 100, @@ -665,20 +689,20 @@ static int helpscreen_action[] = IMG_ACID, -1, HA_NEXT, - IMG_KEY1, 50, - IMG_KEY2, 50, - IMG_KEY3, 50, - IMG_KEY4, 50, HA_NEXT, + IMG_KEY_1, 50, + IMG_KEY_2, 50, + IMG_KEY_3, 50, + IMG_KEY_4, 50, HA_NEXT, - IMG_GATE1, 50, - IMG_GATE2, 50, - IMG_GATE3, 50, - IMG_GATE4, 50, HA_NEXT, + IMG_GATE_1, 50, + IMG_GATE_2, 50, + IMG_GATE_3, 50, + IMG_GATE_4, 50, HA_NEXT, - IMG_GATE1_GRAY, 50, - IMG_GATE2_GRAY, 50, - IMG_GATE3_GRAY, 50, - IMG_GATE4_GRAY, 50, HA_NEXT, + IMG_GATE_1_GRAY, 50, + IMG_GATE_2_GRAY, 50, + IMG_GATE_3_GRAY, 50, + IMG_GATE_4_GRAY, 50, HA_NEXT, IMG_DYNAMITE, -1, HA_NEXT, @@ -690,9 +714,9 @@ static int helpscreen_action[] = IMG_EXPLOSION, 16, IMG_EMPTY_SPACE, 20, HA_NEXT, - IMG_DYNABOMB_NR, -1, HA_NEXT, + EL_DYNABOMB_INCREASE_NUMBER, -1, HA_NEXT, - IMG_DYNABOMB_SZ, -1, HA_NEXT, + EL_DYNABOMB_INCREASE_SIZE, -1, HA_NEXT, IMG_SPACESHIP_RIGHT, 16, IMG_SPACESHIP_UP, 16, @@ -751,7 +775,7 @@ static int helpscreen_action[] = IMG_TIME_ORB_EMPTY, 50, HA_NEXT, IMG_AMOEBA_DROP, 50, - IMG_AMOEBA_CREATING, 6, + IMG_AMOEBA_GROWING, 6, IMG_AMOEBA_WET, 20, HA_NEXT, IMG_AMOEBA_DEAD, -1, HA_NEXT, @@ -759,14 +783,14 @@ static int helpscreen_action[] = IMG_AMOEBA_WET, -1, HA_NEXT, IMG_AMOEBA_WET, 100, - IMG_AMOEBA_CREATING, 6, HA_NEXT, + IMG_AMOEBA_GROWING, 6, HA_NEXT, IMG_AMOEBA_FULL, 50, IMG_AMOEBA_DEAD, 50, IMG_EXPLOSION, 16, IMG_DIAMOND, 20, HA_NEXT, - IMG_GAMEOFLIFE, -1, HA_NEXT, + IMG_GAME_OF_LIFE, -1, HA_NEXT, IMG_BIOMAZE, -1, HA_NEXT, @@ -937,8 +961,8 @@ void OLD_DrawHelpScreenElAction(int start) void DrawHelpScreenElAction(int start) { int i = 0, j = 0; - int xstart = SX + 16; - int ystart = SY + 64 + 2 * 32; + int xstart = mSX + 16; + int ystart = mSY + 64 + 2 * 32; int ystep = TILEY + 4; int graphic; int frame_count; @@ -1011,7 +1035,7 @@ void DrawHelpScreenElAction(int start) void DrawHelpScreenElText(int start) { int i; - int xstart = SX + 56, ystart = SY + 65 + 2 * 32, ystep = TILEY + 4; + int xstart = mSX + 56, ystart = mSY + 65 + 2 * 32, ystep = TILEY + 4; int ybottom = SYSIZE - 20; SetMainBackgroundImage(IMG_BACKGROUND_INFO); @@ -1141,9 +1165,9 @@ void DrawHelpScreen() InitAnimation(); #if 0 - PlaySoundLoop(SND_MENU_INFO_SCREEN); + PlaySoundLoop(SND_BACKGROUND_INFO); #else - PlaySound_Menu_Start(SND_MENU_INFO_SCREEN); + PlaySound_Menu_Start(SND_BACKGROUND_INFO); #endif } @@ -1205,9 +1229,9 @@ void HandleHelpScreen(int button) must therefore periodically be reactivated with the current sound engine !!! */ #if 0 - PlaySoundLoop(SND_MENU_INFO_SCREEN); + PlaySoundLoop(SND_BACKGROUND_INFO); #else - PlaySound_Menu_Continue(SND_MENU_INFO_SCREEN); + PlaySound_Menu_Continue(SND_BACKGROUND_INFO); #endif DoAnimation(); @@ -1221,8 +1245,8 @@ void HandleTypeName(int newxpos, Key key) static int xpos = 0, ypos = 2; int font_width = getFontWidth(FONT_INPUT_ACTIVE); int name_width = getFontWidth(FONT_MENU_1) * strlen("Name:"); - int startx = SX + 32 + name_width; - int starty = SY + ypos * 32; + int startx = mSX + 32 + name_width; + int starty = mSY + ypos * 32; if (newxpos) { @@ -1337,7 +1361,7 @@ static void drawChooseTreeList(int first_entry, int num_page_entries, strncpy(buffer, node->name , max_buffer_len); buffer[max_buffer_len] = '\0'; - DrawText(SX + 32, SY + ypos * 32, buffer, FONT_TEXT_1 + node->color); + DrawText(mSX + 32, mSY + ypos * 32, buffer, FONT_TEXT_1 + node->color); if (node->parent_link) initCursor(i, IMG_MENU_BUTTON_LEFT); @@ -1623,9 +1647,9 @@ void DrawHallOfFame(int highlight_position) HandleHallOfFame(highlight_position,0, 0,0, MB_MENU_INITIALIZE); #if 0 - PlaySound(SND_MENU_HALL_OF_FAME); + PlaySound(SND_BACKGROUND_SCORES); #else - PlaySound_Menu_Start(SND_MENU_HALL_OF_FAME); + PlaySound_Menu_Start(SND_BACKGROUND_SCORES); #endif } @@ -1636,20 +1660,20 @@ static void drawHallOfFameList(int first_entry, int highlight_position) SetMainBackgroundImage(IMG_BACKGROUND_SCORES); ClearWindow(); - DrawText(SX + 80, SY + 8, "Hall Of Fame", FONT_TITLE_1); + DrawText(mSX + 80, mSY + 8, "Hall Of Fame", FONT_TITLE_1); DrawTextFCentered(46, FONT_TITLE_2, "HighScores of Level %d", level_nr); for(i=0; i 3 ? i-3 : 0); - DrawText(SX + 3*32, SY + ypos*32, + DrawText(mSX + 3*32, mSY + ypos*32, " ", FONT_VALUE_1); - DrawText(SX + 3*32, SY + ypos*32, + DrawText(mSX + 3*32, mSY + ypos*32, (setup.input[player_nr].use_joystick ? custom[i].text : getKeyNameFromKey(*custom[i].key)), FONT_VALUE_1); @@ -2477,17 +2506,17 @@ void CustomizeKeyboard(int player_nr) custom_key = setup.input[player_nr].key; ClearWindow(); - DrawText(SX + 16, SY + 16, "Keyboard Input", FONT_TITLE_1); + DrawText(mSX + 16, mSY + 16, "Keyboard Input", FONT_TITLE_1); BackToFront(); InitAnimation(); step_nr = 0; - DrawText(SX, SY + (2+2*step_nr)*32, + DrawText(mSX, mSY + (2+2*step_nr)*32, customize_step[step_nr].text, FONT_INPUT_ACTIVE); - DrawText(SX, SY + (2+2*step_nr+1)*32, + DrawText(mSX, mSY + (2+2*step_nr+1)*32, "Key:", FONT_INPUT_ACTIVE); - DrawText(SX + 4*32, SY + (2+2*step_nr+1)*32, + DrawText(mSX + 4*32, mSY + (2+2*step_nr+1)*32, getKeyNameFromKey(*customize_step[step_nr].key), FONT_VALUE_OLD); while(!finished) @@ -2527,32 +2556,32 @@ void CustomizeKeyboard(int player_nr) /* got new key binding */ *customize_step[step_nr].key = key; - DrawText(SX + 4*32, SY + (2+2*step_nr+1)*32, + DrawText(mSX + 4*32, mSY + (2+2*step_nr+1)*32, " ", FONT_VALUE_1); - DrawText(SX + 4*32, SY + (2+2*step_nr+1)*32, + DrawText(mSX + 4*32, mSY + (2+2*step_nr+1)*32, getKeyNameFromKey(key), FONT_VALUE_1); step_nr++; /* un-highlight last query */ - DrawText(SX, SY+(2+2*(step_nr-1))*32, + DrawText(mSX, mSY+(2+2*(step_nr-1))*32, customize_step[step_nr-1].text, FONT_MENU_1); - DrawText(SX, SY+(2+2*(step_nr-1)+1)*32, + DrawText(mSX, mSY+(2+2*(step_nr-1)+1)*32, "Key:", FONT_MENU_1); /* press 'Enter' to leave */ if (step_nr == 6) { - DrawText(SX + 16, SY + 15*32+16, + DrawText(mSX + 16, mSY + 15*32+16, "Press Enter", FONT_TITLE_1); break; } /* query next key binding */ - DrawText(SX, SY+(2+2*step_nr)*32, + DrawText(mSX, mSY+(2+2*step_nr)*32, customize_step[step_nr].text, FONT_INPUT_ACTIVE); - DrawText(SX, SY+(2+2*step_nr+1)*32, + DrawText(mSX, mSY+(2+2*step_nr+1)*32, "Key:", FONT_INPUT_ACTIVE); - DrawText(SX + 4*32, SY+(2+2*step_nr+1)*32, + DrawText(mSX + 4*32, mSY+(2+2*step_nr+1)*32, getKeyNameFromKey(*customize_step[step_nr].key), FONT_VALUE_OLD); } @@ -2615,13 +2644,13 @@ static boolean CalibrateJoystickMain(int player_nr) } } - DrawText(SX, SY + 6 * 32, " ROTATE JOYSTICK ", FONT_TITLE_1); - DrawText(SX, SY + 7 * 32, "IN ALL DIRECTIONS", FONT_TITLE_1); - DrawText(SX + 16, SY + 9 * 32, " IF ALL BALLS ", FONT_TITLE_1); - DrawText(SX, SY + 10 * 32, " ARE YELLOW, ", FONT_TITLE_1); - DrawText(SX, SY + 11 * 32, " CENTER JOYSTICK ", FONT_TITLE_1); - DrawText(SX, SY + 12 * 32, " AND ", FONT_TITLE_1); - DrawText(SX, SY + 13 * 32, "PRESS ANY BUTTON!", FONT_TITLE_1); + DrawText(mSX, mSY + 6 * 32, " ROTATE JOYSTICK ", FONT_TITLE_1); + DrawText(mSX, mSY + 7 * 32, "IN ALL DIRECTIONS", FONT_TITLE_1); + DrawText(mSX + 16, mSY + 9 * 32, " IF ALL BALLS ", FONT_TITLE_1); + DrawText(mSX, mSY + 10 * 32, " ARE YELLOW, ", FONT_TITLE_1); + DrawText(mSX, mSY + 11 * 32, " CENTER JOYSTICK ", FONT_TITLE_1); + DrawText(mSX, mSY + 12 * 32, " AND ", FONT_TITLE_1); + DrawText(mSX, mSY + 13 * 32, "PRESS ANY BUTTON!", FONT_TITLE_1); joy_value = Joystick(player_nr); last_x = (joy_value & JOY_LEFT ? -1 : joy_value & JOY_RIGHT ? +1 : 0); @@ -2772,8 +2801,8 @@ void CalibrateJoystick(int player_nr) { ClearWindow(); - DrawText(SX + 16, SY + 6*32, " JOYSTICK NOT ", FONT_TITLE_1); - DrawText(SX, SY + 7*32, " AVAILABLE ", FONT_TITLE_1); + DrawText(mSX + 16, mSY + 6*32, " JOYSTICK NOT ", FONT_TITLE_1); + DrawText(mSX, mSY + 7*32, " AVAILABLE ", FONT_TITLE_1); BackToFront(); Delay(2000); /* show error message for two seconds */ }