added checking availability of level specific colors in level editor
authorHolger Schemel <holger.schemel@virtion.de>
Sat, 25 May 2024 17:23:35 +0000 (19:23 +0200)
committerHolger Schemel <holger.schemel@virtion.de>
Sat, 25 May 2024 17:25:15 +0000 (19:25 +0200)
src/editor.c
src/game_bd/bd_graphics.c
src/game_bd/bd_graphics.h
src/game_bd/export_bd.h
src/game_bd/main_bd.c

index c105afcd10ba8776e4726b28d3269a6760b0cdae..77f8d3289653c47ab389602b9d0d668ea8ea5679 100644 (file)
@@ -11451,6 +11451,20 @@ static void DrawEngineConfigColors(void)
 {
   int i;
 
+  if (!hasColorTemplate_BD())
+  {
+    int font_nr = FONT_TEXT_1;
+    int font_height = getFontHeight(font_nr);
+    int yoffset_above = font_height + ED_GADGET_LINE_DISTANCE;
+    int xpos = ED_ENGINE_SETTINGS_X(0);
+    int ypos = ED_ENGINE_SETTINGS_Y(0);
+
+    PrintInfoText("No level specific colors available.", font_nr, xpos, ypos - yoffset_above);
+    PrintInfoText("(Not supported by graphics set.)", font_nr, xpos, ypos);
+
+    return;
+  }
+
   if (bd_color_type_changed)
   {
     if (level.bd_color_type != GD_COLOR_TYPE_RGB && level.bd_color_type != GetCommonColorType_BD())
index 96e9b20c2fb277d542de9386d9082ee736ee440a..9060aae3247d1fcfa8145c83b6fa38b31ad1cd0e 100644 (file)
@@ -363,6 +363,11 @@ static boolean surface_has_c64_colors(SDL_Surface *surface)
   return has_c64_colors;
 }
 
+boolean gd_bitmap_has_c64_colors(Bitmap *bitmap)
+{
+  return surface_has_c64_colors(bitmap->surface);
+}
+
 // sets one of the colors in the indexed palette of an sdl surface to a GdColor.
 static void set_surface_palette_color(SDL_Surface *surface, int index, GdColor col)
 {
index 6b522fcc504143d767ddbc23d864e2fdefbd1112..e52048adadf1f4891fb249189535286e85b1345c 100644 (file)
@@ -33,6 +33,7 @@ int get_play_area_h(void);
 
 void gd_init_play_area(void);
 
+boolean gd_bitmap_has_c64_colors(Bitmap *bitmap);
 void gd_prepare_tile_bitmap(GdCave *cave, Bitmap *bitmap, int scale_down_factor);
 void gd_set_tile_bitmap_reference(Bitmap *bitmap);
 Bitmap *gd_get_tile_bitmap(Bitmap *bitmap);
index 6fe2456cd63bc3198c67c3cb26acce5743c48e48..23809345a82ead5a8e7b7f17ef2120e9bdcf9ad3 100644 (file)
@@ -123,6 +123,8 @@ boolean use_bd_pushing_graphics(void);
 boolean use_bd_up_down_graphics(void);
 boolean use_bd_falling_sounds(void);
 
+boolean hasColorTemplate_BD(void);
+
 Bitmap **GetTitleScreenBitmaps_BD(void);
 void CoverScreen_BD(void);
 
index 333bddeae28911ade242890ab4a1265dc43a3f26..3376757fb103fb256383886b6a821a5b8d5e6604 100644 (file)
@@ -481,6 +481,11 @@ boolean use_bd_falling_sounds(void)
          (setup.bd_falling_sounds == STATE_AUTO && game.use_native_bd_sound_engine));
 }
 
+boolean hasColorTemplate_BD(void)
+{
+  return gd_bitmap_has_c64_colors(graphic_info_bd_color_template.bitmap);
+}
+
 Bitmap **GetTitleScreenBitmaps_BD(void)
 {
   Bitmap **title_screen_bitmaps = gd_get_title_screen_bitmaps();