static void HandleDrawingAreaInfo(struct GadgetInfo *);
static void PrintEditorGadgetInfoText(struct GadgetInfo *);
+static int num_editor_gadgets = 0; /* dynamically determined */
+
#if 1
static struct GadgetInfo **level_editor_gadget = NULL;
static int *right_gadget_border = NULL;
static int editor_hl_empty[] = { };
#if 1
-static int *editor_el_empty = NULL;
+static int *editor_el_empty = NULL; /* dynamically allocated */
#else
static int editor_el_empty[ED_NUM_ELEMENTLIST_BUTTONS];
#endif
ed_fieldx = MAX_ED_FIELDX - 1;
ed_fieldy = MAX_ED_FIELDY - 1;
+ num_editor_gadgets = NUM_EDITOR_GADGETS;
+
+ // printf("::: allocating %d gadgets ...\n", num_editor_gadgets);
+
level_editor_gadget =
- checked_calloc(NUM_EDITOR_GADGETS * sizeof(struct GadgetInfo *));
+ checked_calloc(num_editor_gadgets * sizeof(struct GadgetInfo *));
right_gadget_border =
- checked_calloc(NUM_EDITOR_GADGETS * sizeof(int));
+ checked_calloc(num_editor_gadgets * sizeof(int));
editor_el_empty = checked_calloc(ED_NUM_ELEMENTLIST_BUTTONS * sizeof(int));
editor_el_empty_ptr = editor_el_empty;
{
int i;
- for (i = 0; i < NUM_EDITOR_GADGETS; i++)
+ // printf("::: freeing %d gadgets ...\n", num_editor_gadgets);
+
+ for (i = 0; i < num_editor_gadgets; i++)
{
FreeGadget(level_editor_gadget[i]);
int i;
#if 1
- for (i = 0; i < NUM_EDITOR_GADGETS; i++)
+ for (i = 0; i < num_editor_gadgets; i++)
if (IN_GFX_FIELD_FULL(level_editor_gadget[i]->x,
level_editor_gadget[i]->y))
UnmapGadget(level_editor_gadget[i]);
{
int i;
- for (i = 0; i < NUM_EDITOR_GADGETS; i++)
+ for (i = 0; i < num_editor_gadgets; i++)
UnmapGadget(level_editor_gadget[i]);
}
#if 1
FadeOut(REDRAW_FIELD);
+ // FadeOut(REDRAW_ALL);
#endif
#if 1
ChangeViewportPropertiesIfNeeded();
#endif
+#if 1
+ OpenDoor(DOOR_OPEN_1 | DOOR_OPEN_2 | DOOR_NO_DELAY);
+#else
OpenDoor(DOOR_OPEN_2 | DOOR_NO_DELAY);
+#endif
#if DEBUG
CheckElementDescriptions();
#if 1
FadeIn(REDRAW_FIELD);
+ // FadeIn(REDRAW_ALL);
#endif
/* copy actual editor door content to door double buffer for OpenDoor() */
+#if 1
+ BlitBitmap(drawto, bitmap_db_door_1, DX, DY, DXSIZE, DYSIZE, 0, 0);
+#else
BlitBitmap(drawto, bitmap_db_door,
DX, DY, DXSIZE, DYSIZE, DOOR_GFX_PAGEX1, DOOR_GFX_PAGEY1);
+#endif
#if 1
/* draw new control window (with border) to window */
BackToFront();
#endif
+#if 0
OpenDoor(DOOR_OPEN_1);
+#endif
}
static void AdjustDrawingAreaGadgets()
int sy = SY + pad_y + start_line * font_height;
int max_chars_per_line = (SXSIZE - 2 * pad_x) / font_width;
int max_lines_per_screen = (SYSIZE - pad_y) / font_height - 1;
+ int max_lines_drawable = max_lines_per_screen - start_line;
+
+#if 0
+ printf("::: SYSIZE == %d [%d / %d / %d]\n", SYSIZE,
+ max_chars_per_line, max_lines_per_screen, max_lines_drawable);
+#endif
+
+ if (start_line >= max_lines_per_screen)
+ return FALSE;
+#if 1
+ return DrawTextFile(sx, sy, filename, font_nr, max_chars_per_line, -1,
+ max_lines_drawable, 0, -1, TRUE, FALSE, FALSE);
+#else
return DrawTextFile(sx, sy, filename, font_nr, max_chars_per_line, -1,
max_lines_per_screen, 0, -1, TRUE, FALSE, FALSE);
+#endif
}
static void DrawPropertiesInfo()
{ -1, NULL }
};
char *filename = getElementDescriptionFilename(properties_element);
- char *percentage_text = "In this level:";
- char *properties_text = "Standard properties:";
+ char *percentage_text = "In this level: ";
+ char *properties_text = "Standard properties: ";
float percentage;
int num_elements_in_level;
int num_standard_properties = 0;