projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added support for background image for loading screen
[rocksndiamonds.git]
/
src
/
init.c
diff --git
a/src/init.c
b/src/init.c
index 09cc36264890c39b235c6c8d2be0d0d8cc94dbd5..041098f2665f427118e8e5a8bce1b539d17e50f2 100644
(file)
--- a/
src/init.c
+++ b/
src/init.c
@@
-35,10
+35,12
@@
#define CONFIG_TOKEN_FONT_INITIAL "font.initial"
#define CONFIG_TOKEN_GLOBAL_BUSY "global.busy"
#define CONFIG_TOKEN_FONT_INITIAL "font.initial"
#define CONFIG_TOKEN_GLOBAL_BUSY "global.busy"
+#define CONFIG_TOKEN_BACKGROUND_LOADING "background.LOADING"
#define INITIAL_IMG_GLOBAL_BUSY 0
#define INITIAL_IMG_GLOBAL_BUSY 0
+#define INITIAL_IMG_BACKGROUND_LOADING 1
-#define NUM_INITIAL_IMAGES
1
+#define NUM_INITIAL_IMAGES
2
static struct FontBitmapInfo font_initial[NUM_INITIAL_FONTS];
static struct FontBitmapInfo font_initial[NUM_INITIAL_FONTS];
@@
-97,6
+99,20
@@
static int copy_properties[][5] =
static int get_graphic_parameter_value(char *, char *, int);
static int get_graphic_parameter_value(char *, char *, int);
+static void SetLoadingBackgroundImage(void)
+{
+ struct GraphicInfo *graphic_info_last = graphic_info;
+
+ graphic_info = image_initial;
+
+ SetDrawDeactivationMask(REDRAW_NONE);
+ SetDrawBackgroundMask(REDRAW_ALL);
+
+ SetWindowBackgroundImage(INITIAL_IMG_BACKGROUND_LOADING);
+
+ graphic_info = graphic_info_last;
+}
+
static void DrawInitAnim(void)
{
struct GraphicInfo *graphic_info_last = graphic_info;
static void DrawInitAnim(void)
{
struct GraphicInfo *graphic_info_last = graphic_info;
@@
-136,8
+152,12
@@
static void DrawInitAnim(void)
int height = graphic_info[graphic].height;
int frame = getGraphicAnimationFrame(graphic, sync_frame);
int height = graphic_info[graphic].height;
int frame = getGraphicAnimationFrame(graphic, sync_frame);
+ ClearRectangleOnBackground(drawto, x, y, width, height);
+
getFixedGraphicSource(graphic, frame, &src_bitmap, &src_x, &src_y);
getFixedGraphicSource(graphic, frame, &src_bitmap, &src_x, &src_y);
- BlitBitmap(src_bitmap, window, src_x, src_y, width, height, x, y);
+ BlitBitmapMasked(src_bitmap, drawto, src_x, src_y, width, height, x, y);
+
+ BlitBitmap(drawto, window, x, y, width, height, x, y);
}
graphic_info = graphic_info_last;
}
graphic_info = graphic_info_last;
@@
-2280,11
+2300,6
@@
static void ReinitializeGraphics(void)
InitGraphicCompatibilityInfo();
print_timestamp_time("InitGraphicCompatibilityInfo");
InitGraphicCompatibilityInfo();
print_timestamp_time("InitGraphicCompatibilityInfo");
- SetMainBackgroundImage(IMG_BACKGROUND);
- print_timestamp_time("SetMainBackgroundImage");
- SetDoorBackgroundImage(IMG_BACKGROUND_DOOR);
- print_timestamp_time("SetDoorBackgroundImage");
-
InitGadgets();
print_timestamp_time("InitGadgets");
InitDoors();
InitGadgets();
print_timestamp_time("InitGadgets");
InitDoors();
@@
-5551,7
+5566,8
@@
static void InitGfx(void)
char *filename_image_initial[NUM_INITIAL_IMAGES] = { NULL };
char *image_token[NUM_INITIAL_IMAGES] =
{
char *filename_image_initial[NUM_INITIAL_IMAGES] = { NULL };
char *image_token[NUM_INITIAL_IMAGES] =
{
- CONFIG_TOKEN_GLOBAL_BUSY
+ CONFIG_TOKEN_GLOBAL_BUSY,
+ CONFIG_TOKEN_BACKGROUND_LOADING
};
Bitmap *bitmap_font_initial = NULL;
int parameter[NUM_INITIAL_IMAGES][NUM_GFX_ARGS];
};
Bitmap *bitmap_font_initial = NULL;
int parameter[NUM_INITIAL_IMAGES][NUM_GFX_ARGS];
@@
-5717,8
+5733,9
@@
static void InitGfx(void)
graphic_info = graphic_info_last;
graphic_info = graphic_info_last;
- init.busy.width = image_initial[INITIAL_IMG_GLOBAL_BUSY].width;
- init.busy.height = image_initial[INITIAL_IMG_GLOBAL_BUSY].height;
+ SetLoadingBackgroundImage();
+
+ ClearRectangleOnBackground(window, 0, 0, WIN_XSIZE, WIN_YSIZE);
InitGfxDrawBusyAnimFunction(DrawInitAnim);
InitGfxDrawGlobalAnimFunction(DrawGlobalAnimations);
InitGfxDrawBusyAnimFunction(DrawInitAnim);
InitGfxDrawGlobalAnimFunction(DrawGlobalAnimations);
@@
-6158,11
+6175,15
@@
void ReloadCustomArtwork(int force_reload)
FadeOut(REDRAW_ALL);
FadeOut(REDRAW_ALL);
- ClearRectangle(drawto, 0, 0, WIN_XSIZE, WIN_YSIZE);
- print_timestamp_time("ClearRectangle");
+ SetLoadingBackgroundImage();
+
+ ClearRectangleOnBackground(drawto, 0, 0, WIN_XSIZE, WIN_YSIZE);
+ print_timestamp_time("ClearRectangleOnBackground");
FadeIn(REDRAW_ALL);
FadeIn(REDRAW_ALL);
+ UPDATE_BUSY_STATE();
+
if (gfx_new_identifier != NULL || force_reload_gfx)
{
#if 0
if (gfx_new_identifier != NULL || force_reload_gfx)
{
#if 0
@@
-6194,8
+6215,6
@@
void ReloadCustomArtwork(int force_reload)
SetGameStatus(last_game_status); // restore current game status
SetGameStatus(last_game_status); // restore current game status
- init_last = init; // switch to new busy animation
-
FadeOut(REDRAW_ALL);
RedrawGlobalBorder();
FadeOut(REDRAW_ALL);
RedrawGlobalBorder();