GADGET_ID_BD_COLOR_TEXT_B,
MAX_BD_COLOR_TEXT_LEN,
bd_color_text[0],
- NULL, "Border color: ", NULL, "Enter border color (not used)"
+ NULL, "Border color: ", NULL, "Enter border color (not used)"
},
{
ED_TEXTINPUT_ID_BD_COLOR_TEXT_0,
GADGET_ID_BD_COLOR_TEXT_0,
MAX_BD_COLOR_TEXT_LEN,
bd_color_text[1],
- NULL, "Background color:", NULL, "Enter background color (C64 graphics)"
+ NULL, "Background color: ", NULL, "Enter background color (C64 graphics)"
},
{
ED_TEXTINPUT_ID_BD_COLOR_TEXT_1,
GADGET_ID_BD_COLOR_TEXT_1,
MAX_BD_COLOR_TEXT_LEN,
bd_color_text[2],
- NULL, "Sand color: ", NULL, "Enter sand color (C64 graphics)"
+ NULL, "Sand color: ", NULL, "Enter sand color (C64 graphics)"
},
{
ED_TEXTINPUT_ID_BD_COLOR_TEXT_2,
GADGET_ID_BD_COLOR_TEXT_2,
MAX_BD_COLOR_TEXT_LEN,
bd_color_text[3],
- NULL, "Steel wall color:", NULL, "Enter steel wall color (C64 graphics)"
+ NULL, "Steel wall color: ", NULL, "Enter steel wall color (C64 graphics)"
},
{
ED_TEXTINPUT_ID_BD_COLOR_TEXT_3,
GADGET_ID_BD_COLOR_TEXT_3,
MAX_BD_COLOR_TEXT_LEN,
bd_color_text[4],
- NULL, "Wall color: ", NULL, "Enter wall color (C64 graphics)"
+ NULL, "Wall color: ", NULL, "Enter wall color (C64 graphics)"
},
{
ED_TEXTINPUT_ID_BD_COLOR_TEXT_4,
GADGET_ID_BD_COLOR_TEXT_4,
MAX_BD_COLOR_TEXT_LEN,
bd_color_text[5],
- NULL, "Amoeba color: ", NULL, "Enter amoeba color (C64 graphics)"
+ NULL, "Amoeba color: ", NULL, "Enter amoeba color (C64 graphics)"
},
{
ED_TEXTINPUT_ID_BD_COLOR_TEXT_5,
GADGET_ID_BD_COLOR_TEXT_5,
MAX_BD_COLOR_TEXT_LEN,
bd_color_text[6],
- NULL, "Slime color: ", NULL, "Enter slime color (C64 graphics)"
+ NULL, "Slime color: ", NULL, "Enter slime color (C64 graphics)"
},
// ---------- element settings: configure (several elements) ----------------
-1,
options_bd_color_c64_name,
&bd_color_c64[0],
- NULL, "Border color: ", NULL, "Select border color (not used)"
+ NULL, "Border color: ", NULL, "Select border color (not used)"
},
{
ED_SELECTBOX_ID_BD_COLOR_C64_0,
-1,
options_bd_color_c64_name,
&bd_color_c64[1],
- NULL, "Background color:", NULL, "Select background color (C64 graphics)"
+ NULL, "Background color: ", NULL, "Select background color (C64 graphics)"
},
{
ED_SELECTBOX_ID_BD_COLOR_C64_1,
-1,
options_bd_color_c64_name,
&bd_color_c64[2],
- NULL, "Sand color: ", NULL, "Select sand color (C64 graphics)"
+ NULL, "Sand color: ", NULL, "Select sand color (C64 graphics)"
},
{
ED_SELECTBOX_ID_BD_COLOR_C64_2,
-1,
options_bd_color_c64_name,
&bd_color_c64[3],
- NULL, "Steel wall color:", NULL, "Select steel wall color (C64 graphics)"
+ NULL, "Steel wall color: ", NULL, "Select steel wall color (C64 graphics)"
},
{
ED_SELECTBOX_ID_BD_COLOR_C64_3,
-1,
options_bd_color_c64_name,
&bd_color_c64[4],
- NULL, "Wall color: ", NULL, "Select wall color (C64 graphics)"
+ NULL, "Wall color: ", NULL, "Select wall color (C64 graphics)"
},
{
ED_SELECTBOX_ID_BD_COLOR_C64_4,
-1,
options_bd_color_c64_name,
&bd_color_c64[5],
- NULL, "Amoeba color: ", NULL, "Select amoeba color (C64 graphics)"
+ NULL, "Amoeba color: ", NULL, "Select amoeba color (C64 graphics)"
},
{
ED_SELECTBOX_ID_BD_COLOR_C64_5,
-1,
options_bd_color_c64_name,
&bd_color_c64[6],
- NULL, "Slime color: ", NULL, "Select slime color (C64 graphics)"
+ NULL, "Slime color: ", NULL, "Select slime color (C64 graphics)"
},
// ---------- element settings: configure (several elements) ----------------
if (level.game_engine_type == game_engine_type_last)
return;
- if (level.game_engine_type == GAME_ENGINE_TYPE_BD)
- {
- new_element1 = EL_BD_WALL;
- new_element2 = EL_EMPTY;
- new_element3 = EL_BD_SAND;
- }
- else if (level.game_engine_type == GAME_ENGINE_TYPE_SP)
- {
- new_element1 = EL_SP_CHIP_SINGLE;
- new_element2 = EL_EMPTY;
- new_element3 = EL_SP_BASE;
- }
- else if (level.game_engine_type == GAME_ENGINE_TYPE_MM)
- {
- new_element1 = EL_MM_MIRROR_START;
- new_element2 = EL_EMPTY;
- new_element3 = EL_MM_WOODEN_WALL;
- }
- else
- {
- new_element1 = EL_WALL;
- new_element2 = EL_EMPTY;
- new_element3 = EL_SAND;
- }
+ // select drawing elements according to game engine type
+ new_element1 = getDrawingElement(EL_WALL);
+ new_element2 = getDrawingElement(EL_EMPTY);
+ new_element3 = getDrawingElement(EL_SAND);
game_engine_type_last = level.game_engine_type;
}
bd_color_default[i] = *bd_color[i];
}
-static void SetRandomLevelColors_BD(void)
+void SetRandomLevelColors_BD(int bd_color_type)
{
struct LevelInfo_BD *level_bd = level.native_bd_level;
GdCave *cave = level_bd->cave;
// create random cave colors
- gd_cave_set_random_colors(cave, level.bd_color_type);
+ gd_cave_set_random_colors(cave, bd_color_type);
// copy colors to level editor
level.bd_color_b = cave->colorb;
level.bd_color_5 = cave->color5;
}
+static void DrawColorBox_BD(int nr)
+{
+ int id = ED_SELECTBOX_ID_COLORS_FIRST + nr;
+ struct GadgetInfo *gi = level_editor_gadget[selectbox_info[id].gadget_id];
+ int graphic = IMG_EDITOR_CHECKBOX;
+ struct GraphicInfo *gd = &graphic_info[graphic];
+ int offset = ED_GADGET_TEXT_DISTANCE;
+ int x1 = gi->x - offset - gd->width;
+ int y1 = gi->y;
+ int x2 = x1 + offset;
+ int y2 = y1 + offset;
+ int xsize1 = gd->width;
+ int ysize1 = gd->height;
+ int xsize2 = xsize1 - 2 * offset;
+ int ysize2 = ysize1 - 2 * offset;
+ int bd_color_x = *bd_color[nr];
+ int r = gd_color_get_r(bd_color_x);
+ int g = gd_color_get_g(bd_color_x);
+ int b = gd_color_get_b(bd_color_x);
+ Pixel color = SDL_MapRGB(drawto->surface->format, r, g, b);
+
+ BlitBitmap(gd->bitmap, drawto, gd->src_x, gd->src_y, xsize1, ysize1, x1, y1);
+ FillRectangle(drawto, x2, y2, xsize2, ysize2, color);
+}
+
static void DrawEngineConfigColors(void)
{
int i;
else
{
// color type switched to different color type as default colors => use random colors
- SetRandomLevelColors_BD();
+ SetRandomLevelColors_BD(level.bd_color_type);
}
}
MapTextInputGadget(i);
}
+ for (i = 0; i < MAX_BD_COLORS; i++)
+ DrawColorBox_BD(i);
+
MapTextbuttonGadget(ED_TEXTBUTTON_ID_BD_SET_RANDOM_COLORS);
}
stick_element_properties_window = FALSE;
+ // make sure that previous level config edit mode exists for this level
+ if (edit_mode_levelconfig == ED_MODE_LEVELCONFIG_ENGINE &&
+ level.game_engine_type != GAME_ENGINE_TYPE_BD)
+ edit_mode_levelconfig = ED_MODE_LEVELCONFIG_LEVEL;
+
SetAutomaticNumberOfGemsNeeded();
UnmapLevelEditorFieldGadgets();
ypos += 2 * MAX(font1_height, font2_height);
- // ----- print standard properties of this element
+ // ----- print standard properties of this element (only for certain game engines)
- DrawTextS(xpos, ypos, font1_nr, properties_text);
+ if (level.game_engine_type == GAME_ENGINE_TYPE_RND ||
+ level.game_engine_type == GAME_ENGINE_TYPE_EM ||
+ level.game_engine_type == GAME_ENGINE_TYPE_SP)
+ {
+ DrawTextS(xpos, ypos, font1_nr, properties_text);
- ypos += line1_height;
+ ypos += line1_height;
- for (i = 0; properties[i].value != -1; i++)
- {
- if (!HAS_PROPERTY(properties_element, properties[i].value))
- continue;
+ for (i = 0; properties[i].value != -1; i++)
+ {
+ if (!HAS_PROPERTY(properties_element, properties[i].value))
+ continue;
- DrawTextS(xpos, ypos, font2_nr, properties[i].text);
+ DrawTextS(xpos, ypos, font2_nr, properties[i].text);
- ypos += font2_height;
+ ypos += font2_height;
- num_standard_properties++;
- }
+ num_standard_properties++;
+ }
- if (num_standard_properties == 0)
- {
- DrawTextS(xpos + properties_text_len, ypos - line1_height + font2_yoffset,
- font2_nr, none_text);
+ if (num_standard_properties == 0)
+ {
+ DrawTextS(xpos + properties_text_len, ypos - line1_height + font2_yoffset,
+ font2_nr, none_text);
- ypos -= (line1_height - font1_height);
- }
+ ypos -= (line1_height - font1_height);
+ }
- ypos += MAX(font1_height, font2_height);
+ ypos += MAX(font1_height, font2_height);
+ }
// ----- print special description of this element
int pos = type_id - ED_TEXTINPUT_ID_COLORS_FIRST;
*bd_color[pos] = gd_color_get_from_string(bd_color_text[pos]);
+
+ DrawColorBox_BD(pos);
}
// do not mark level as modified for certain non-level-changing gadgets
int pos = type_id - ED_SELECTBOX_ID_COLORS_FIRST;
*bd_color[pos] = gd_c64_color(bd_color_c64[pos]);
+
+ DrawColorBox_BD(pos);
}
// do not mark level as modified for certain non-level-changing gadgets
}
else if (type_id == ED_TEXTBUTTON_ID_BD_SET_RANDOM_COLORS)
{
- SetRandomLevelColors_BD();
+ SetRandomLevelColors_BD(level.bd_color_type);
// update BD color palette gadgets after setting random colors
DrawLevelConfigWindow();