X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Fscreens.c;h=554e53a83085c574caf39be020e4425ca8aa56d5;hb=10bf4c7e6d0d2303a979c366227d71bef6e31131;hp=e99697810143aa152f42d5f42e9cb3e771450e14;hpb=14089dac2cbe56e563863e1e5adb8847944fd262;p=rocksndiamonds.git diff --git a/src/screens.c b/src/screens.c index e9969781..554e53a8 100644 --- a/src/screens.c +++ b/src/screens.c @@ -71,6 +71,11 @@ 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 defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND) +static Bitmap *scrollbar_bitmap[4]; +#endif + + static void drawCursorExt(int xpos, int ypos, int color, int graphic) { static int cursor_array[SCR_FIELDY]; @@ -130,7 +135,7 @@ static void ToggleFullscreenIfNeeded() setup.fullscreen = video.fullscreen_enabled; /* redraw background to newly created backbuffer */ - BlitBitmap(new_graphic_info[IMG_MENU_FRAME].bitmap, backbuffer, + BlitBitmap(graphic_info[IMG_GLOBAL_BORDER].bitmap, backbuffer, 0,0, WIN_XSIZE,WIN_YSIZE, 0,0); /* restore old door content */ @@ -149,10 +154,13 @@ void DrawMainMenu() UnmapAllGadgets(); FadeSounds(); + KeyboardAutoRepeatOn(); ActivateJoystick(); + SetDrawDeactivationMask(REDRAW_NONE); - SetBackgroundBitmap(new_graphic_info[IMG_MENU_BACKGROUND].bitmap); + SetDrawBackgroundMask(REDRAW_FIELD); + audio.sound_deactivated = FALSE; /* needed if last screen was the playing screen, invoked from level editor */ @@ -193,10 +201,11 @@ void DrawMainMenu() GetPlayerConfig(); LoadLevel(level_nr); - SetBackgroundBitmap(new_graphic_info[IMG_MENU_BACKGROUND].bitmap); + SetMainBackgroundImage(IMG_BACKGROUND_MAIN); ClearWindow(); DrawHeadline(); + DrawText(SX + 32, SY + 2*32, name_text, FS_BIG, FC_GREEN); DrawText(SX + 6*32, SY + 2*32, setup.player_name, FS_BIG, FC_RED); DrawText(SX + 32, SY + 3*32, "Level:", FS_BIG, FC_GREEN); @@ -566,12 +575,12 @@ static int OLD_helpscreen_action[] = static int helpscreen_action[] = { - IMG_PLAYER1_DOWN_MOVING, 16, - IMG_PLAYER1_UP_MOVING, 16, - IMG_PLAYER1_LEFT_MOVING, 16, - IMG_PLAYER1_RIGHT_MOVING, 16, - IMG_PLAYER1_LEFT_PUSHING, 16, - IMG_PLAYER1_RIGHT_PUSHING, 16, HA_NEXT, + 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_SAND, -1, HA_NEXT, @@ -704,25 +713,25 @@ static int helpscreen_action[] = IMG_ROBOT, -1, HA_NEXT, - IMG_MOLE_RIGHT_MOVING, 16, - IMG_MOLE_UP_MOVING, 16, - IMG_MOLE_LEFT_MOVING, 16, - IMG_MOLE_DOWN_MOVING, 16, HA_NEXT, + IMG_MOLE_MOVING_RIGHT, 16, + IMG_MOLE_MOVING_UP, 16, + IMG_MOLE_MOVING_LEFT, 16, + IMG_MOLE_MOVING_DOWN, 16, HA_NEXT, - IMG_PENGUIN_RIGHT_MOVING, 16, - IMG_PENGUIN_UP_MOVING, 16, - IMG_PENGUIN_LEFT_MOVING, 16, - IMG_PENGUIN_DOWN_MOVING, 16, HA_NEXT, + IMG_PENGUIN_MOVING_RIGHT, 16, + IMG_PENGUIN_MOVING_UP, 16, + IMG_PENGUIN_MOVING_LEFT, 16, + IMG_PENGUIN_MOVING_DOWN, 16, HA_NEXT, - IMG_PIG_RIGHT_MOVING, 16, - IMG_PIG_UP_MOVING, 16, - IMG_PIG_LEFT_MOVING, 16, - IMG_PIG_DOWN_MOVING, 16, HA_NEXT, + IMG_PIG_MOVING_RIGHT, 16, + IMG_PIG_MOVING_UP, 16, + IMG_PIG_MOVING_LEFT, 16, + IMG_PIG_MOVING_DOWN, 16, HA_NEXT, - IMG_DRAGON_RIGHT_MOVING, 16, - IMG_DRAGON_UP_MOVING, 16, - IMG_DRAGON_LEFT_MOVING, 16, - IMG_DRAGON_DOWN_MOVING, 16, HA_NEXT, + IMG_DRAGON_MOVING_RIGHT, 16, + IMG_DRAGON_MOVING_UP, 16, + IMG_DRAGON_MOVING_LEFT, 16, + IMG_DRAGON_MOVING_DOWN, 16, HA_NEXT, IMG_SATELLITE, -1, HA_NEXT, @@ -999,6 +1008,7 @@ void DrawHelpScreenElText(int start) int xstart = SX + 56, ystart = SY + 65 + 2 * 32, ystep = TILEY + 4; int ybottom = SYSIZE - 20; + SetMainBackgroundImage(IMG_BACKGROUND_INFO); ClearWindow(); DrawHeadline(); @@ -1122,6 +1132,7 @@ void DrawHelpScreen() helpscreen_step[i] = helpscreen_frame[i] = 0; helpscreen_musicpos = 0; helpscreen_state = 0; + DrawHelpScreenElText(0); DrawHelpScreenElAction(0); @@ -1253,6 +1264,7 @@ static void DrawChooseTree(TreeInfo **ti_ptr) CloseDoor(DOOR_CLOSE_2); ClearWindow(); + HandleChooseTree(0,0, 0,0, MB_MENU_INITIALIZE, ti_ptr); MapChooseTreeGadgets(*ti_ptr); @@ -1567,6 +1579,8 @@ static void HandleChooseTree(int mx, int my, int dx, int dy, int button, void DrawChooseLevel() { + SetMainBackgroundImage(IMG_BACKGROUND_LEVEL_SERIES); + DrawChooseTree(&leveldir_current); } @@ -1594,7 +1608,9 @@ static void drawHallOfFameList(int first_entry, int highlight_position) { int i; + SetMainBackgroundImage(IMG_BACKGROUND_HALL_OF_FAME); ClearWindow(); + DrawText(SX + 80, SY + 8, "Hall Of Fame", FS_BIG, FC_YELLOW); DrawTextFCentered(46, FC_RED, "HighScores of Level %d", level_nr); @@ -1999,6 +2015,7 @@ static void DrawSetupScreen_Generic() UnmapAllGadgets(); CloseDoor(DOOR_CLOSE_2); + ClearWindow(); if (setup_mode == SETUP_MODE_MAIN) @@ -2175,6 +2192,7 @@ void HandleSetupScreen_Generic(int mx, int my, int dx, int dy, int button) void DrawSetupScreen_Input() { ClearWindow(); + DrawText(SX+16, SY+16, "Setup Input", FS_BIG, FC_YELLOW); initCursor(0, IMG_BALL_BLUE); @@ -2744,6 +2762,8 @@ void DrawSetupScreen() { DeactivateJoystick(); + SetMainBackgroundImage(IMG_BACKGROUND_SETUP); + if (setup_mode == SETUP_MODE_INPUT) DrawSetupScreen_Input(); else if (setup_mode == SETUP_MODE_CHOOSE_GRAPHICS) @@ -2827,7 +2847,11 @@ static struct static struct { +#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND) + Bitmap **gfx_unpressed, **gfx_pressed; +#else int gfx_unpressed, gfx_pressed; +#endif int x, y; int width, height; int type; @@ -2836,7 +2860,11 @@ static struct } scrollbar_info[NUM_SCREEN_SCROLLBARS] = { { +#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND) + &scrollbar_bitmap[0], &scrollbar_bitmap[1], +#else IMG_SCROLLBAR_BLUE, IMG_SCROLLBAR_RED, +#endif SX + SC_SCROLL_VERTICAL_XPOS, SY + SC_SCROLL_VERTICAL_YPOS, SC_SCROLL_VERTICAL_XSIZE, SC_SCROLL_VERTICAL_YSIZE, GD_TYPE_SCROLLBAR_VERTICAL, @@ -2871,12 +2899,12 @@ static void CreateScreenScrollbuttons() gfx_unpressed = scrollbutton_info[i].gfx_unpressed; gfx_pressed = scrollbutton_info[i].gfx_pressed; - gd_bitmap_unpressed = new_graphic_info[gfx_unpressed].bitmap; - gd_bitmap_pressed = new_graphic_info[gfx_pressed].bitmap; - gd_x1 = new_graphic_info[gfx_unpressed].src_x; - gd_y1 = new_graphic_info[gfx_unpressed].src_y; - gd_x2 = new_graphic_info[gfx_pressed].src_x; - gd_y2 = new_graphic_info[gfx_pressed].src_y; + gd_bitmap_unpressed = graphic_info[gfx_unpressed].bitmap; + gd_bitmap_pressed = graphic_info[gfx_pressed].bitmap; + gd_x1 = graphic_info[gfx_unpressed].src_x; + gd_y1 = graphic_info[gfx_unpressed].src_y; + gd_x2 = graphic_info[gfx_pressed].src_x; + gd_y2 = graphic_info[gfx_pressed].src_y; gi = CreateGadget(GDI_CUSTOM_ID, id, GDI_CUSTOM_TYPE_ID, i, @@ -2907,7 +2935,9 @@ static void CreateScreenScrollbars() for (i=0; iclip_mask = + graphic_info[IMG_SCROLLBAR_BLUE + i].clip_mask; + scrollbar_bitmap[i]->stored_clip_gc = + graphic_info[IMG_SCROLLBAR_BLUE + i].clip_gc; + + BlitBitmap(graphic_info[IMG_SCROLLBAR_BLUE + i].bitmap, + scrollbar_bitmap[i], + graphic_info[IMG_SCROLLBAR_BLUE + i].src_x, + graphic_info[IMG_SCROLLBAR_BLUE + i].src_y, + TILEX, TILEY, 0, 0); + } +#endif + CreateScreenScrollbuttons(); CreateScreenScrollbars(); } @@ -2966,6 +3026,17 @@ void FreeScreenGadgets() { int i; +#if defined(TARGET_X11_NATIVE_PERFORMANCE_WORKAROUND) + for (i=0; i<4; i++) + { + /* prevent freeing clip mask and GC twice */ + scrollbar_bitmap[i]->clip_mask = None; + scrollbar_bitmap[i]->stored_clip_gc = None; + + FreeBitmap(scrollbar_bitmap[i]); + } +#endif + for (i=0; i