{ "editor.cascade_list.active.ypos", "8" },
{ "editor.cascade_list.active.frames", "1" },
- { "editor.palette_button", "RocksDoor.png" },
- { "editor.palette_button.x", "525" },
- { "editor.palette_button.y", "30" },
- { "editor.palette_button.pressed_xoffset", "-20" },
+ { "editor.palette.button", "RocksDoor.png" },
+ { "editor.palette.button.x", "525" },
+ { "editor.palette.button.y", "30" },
+ { "editor.palette.button.width", "20" },
+ { "editor.palette.button.height", "20" },
+ { "editor.palette.button.pressed_xoffset", "-20" },
+
+ { "editor.palette.scroll_up", "RocksDoor.png" },
+ { "editor.palette.scroll_up.x", "750" },
+ { "editor.palette.scroll_up.y", "0" },
+ { "editor.palette.scroll_up.width", "10" },
+ { "editor.palette.scroll_up.height", "10" },
+ { "editor.palette.scroll_up.pressed_xoffset", "-10" },
+
+ { "editor.palette.scroll_down", "RocksDoor.png" },
+ { "editor.palette.scroll_down.x", "750" },
+ { "editor.palette.scroll_down.y", "10" },
+ { "editor.palette.scroll_down.width", "10" },
+ { "editor.palette.scroll_down.height", "10" },
+ { "editor.palette.scroll_down.pressed_xoffset", "-10" },
+
+ { "editor.palette.scrollbar", "RocksDoor.png" },
+ { "editor.palette.scrollbar.x", "750" },
+ { "editor.palette.scrollbar.y", "20" },
+ { "editor.palette.scrollbar.width", "10" },
+ { "editor.palette.scrollbar.height", "10" },
+ { "editor.palette.scrollbar.pressed_xoffset", "-10" },
+
+ { "editor.playfield.scroll_up", "RocksDoor.png" },
+ { "editor.playfield.scroll_up.x", "724" },
+ { "editor.playfield.scroll_up.y", "0" },
+ { "editor.playfield.scroll_up.width", "16" },
+ { "editor.playfield.scroll_up.height", "16" },
+ { "editor.playfield.scroll_up.pressed_xoffset", "-16" },
+
+ { "editor.playfield.scroll_down", "RocksDoor.png" },
+ { "editor.playfield.scroll_down.x", "724" },
+ { "editor.playfield.scroll_down.y", "16" },
+ { "editor.playfield.scroll_down.width", "16" },
+ { "editor.playfield.scroll_down.height", "16" },
+ { "editor.playfield.scroll_down.pressed_xoffset", "-16" },
+
+ { "editor.playfield.scroll_left", "RocksDoor.png" },
+ { "editor.playfield.scroll_left.x", "724" },
+ { "editor.playfield.scroll_left.y", "32" },
+ { "editor.playfield.scroll_left.width", "16" },
+ { "editor.playfield.scroll_left.height", "16" },
+ { "editor.playfield.scroll_left.pressed_xoffset", "-16" },
+
+ { "editor.playfield.scroll_right", "RocksDoor.png" },
+ { "editor.playfield.scroll_right.x", "724" },
+ { "editor.playfield.scroll_right.y", "48" },
+ { "editor.playfield.scroll_right.width", "16" },
+ { "editor.playfield.scroll_right.height", "16" },
+ { "editor.playfield.scroll_right.pressed_xoffset", "-16" },
+
+ { "editor.playfield.scrollbar", "RocksDoor.png" },
+ { "editor.playfield.scrollbar.x", "724" },
+ { "editor.playfield.scrollbar.y", "64" },
+ { "editor.playfield.scrollbar.width", "16" },
+ { "editor.playfield.scrollbar.height", "16" },
+ { "editor.playfield.scrollbar.pressed_xoffset", "-16" },
+
+ { "editor.button.gfx.prev_level", "RocksDoor.png" },
+ { "editor.button.gfx.prev_level.x", "724" },
+ { "editor.button.gfx.prev_level.y", "32" },
+ { "editor.button.gfx.prev_level.width", "16" },
+ { "editor.button.gfx.prev_level.height", "16" },
+ { "editor.button.gfx.prev_level.pressed_xoffset", "-16" },
+
+ { "editor.button.gfx.next_level", "RocksDoor.png" },
+ { "editor.button.gfx.next_level.x", "724" },
+ { "editor.button.gfx.next_level.y", "48" },
+ { "editor.button.gfx.next_level.width", "16" },
+ { "editor.button.gfx.next_level.height", "16" },
+ { "editor.button.gfx.next_level.pressed_xoffset", "-16" },
{ "background", UNDEFINED_FILENAME },
{ "background.TITLE_INITIAL", UNDEFINED_FILENAME },
{ "editor.palette.cols", "4" },
{ "editor.palette.rows", "11" },
- { "editor.element_left.x", "6" },
- { "editor.element_left.y", "258" },
- { "editor.element_middle.x", "42" },
- { "editor.element_middle.y", "258" },
- { "editor.element_right.x", "78" },
- { "editor.element_right.y", "258" },
+ { "editor.palette.element_left.x", "6" },
+ { "editor.palette.element_left.y", "258" },
+ { "editor.palette.element_middle.x", "42" },
+ { "editor.palette.element_middle.y", "258" },
+ { "editor.palette.element_right.x", "78" },
+ { "editor.palette.element_right.y", "258" },
{ "request.button.yes.x", "2" },
{ "request.button.yes.y", "250" },
#define IMG_EDITOR_CASCADE_LIST 1793
#define IMG_EDITOR_CASCADE_LIST_ACTIVE 1794
#define IMG_EDITOR_PALETTE_BUTTON 1795
-#define IMG_BACKGROUND 1796
-#define IMG_BACKGROUND_TITLE_INITIAL 1797
-#define IMG_BACKGROUND_TITLE 1798
-#define IMG_BACKGROUND_MAIN 1799
-#define IMG_BACKGROUND_LEVELS 1800
-#define IMG_BACKGROUND_LEVELNR 1801
-#define IMG_BACKGROUND_SCORES 1802
-#define IMG_BACKGROUND_EDITOR 1803
-#define IMG_BACKGROUND_INFO 1804
-#define IMG_BACKGROUND_INFO_ELEMENTS 1805
-#define IMG_BACKGROUND_INFO_MUSIC 1806
-#define IMG_BACKGROUND_INFO_CREDITS 1807
-#define IMG_BACKGROUND_INFO_PROGRAM 1808
-#define IMG_BACKGROUND_INFO_VERSION 1809
-#define IMG_BACKGROUND_INFO_LEVELSET 1810
-#define IMG_BACKGROUND_SETUP 1811
-#define IMG_BACKGROUND_PLAYING 1812
-#define IMG_BACKGROUND_DOOR 1813
-#define IMG_BACKGROUND_TAPE 1814
-#define IMG_BACKGROUND_PANEL 1815
-#define IMG_BACKGROUND_PALETTE 1816
-#define IMG_BACKGROUND_TOOLBOX 1817
-#define IMG_BACKGROUND_TITLESCREEN_INITIAL_1 1818
-#define IMG_BACKGROUND_TITLESCREEN_INITIAL_2 1819
-#define IMG_BACKGROUND_TITLESCREEN_INITIAL_3 1820
-#define IMG_BACKGROUND_TITLESCREEN_INITIAL_4 1821
-#define IMG_BACKGROUND_TITLESCREEN_INITIAL_5 1822
-#define IMG_BACKGROUND_TITLESCREEN_1 1823
-#define IMG_BACKGROUND_TITLESCREEN_2 1824
-#define IMG_BACKGROUND_TITLESCREEN_3 1825
-#define IMG_BACKGROUND_TITLESCREEN_4 1826
-#define IMG_BACKGROUND_TITLESCREEN_5 1827
-#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_1 1828
-#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_2 1829
-#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_3 1830
-#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_4 1831
-#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_5 1832
-#define IMG_BACKGROUND_TITLEMESSAGE_1 1833
-#define IMG_BACKGROUND_TITLEMESSAGE_2 1834
-#define IMG_BACKGROUND_TITLEMESSAGE_3 1835
-#define IMG_BACKGROUND_TITLEMESSAGE_4 1836
-#define IMG_BACKGROUND_TITLEMESSAGE_5 1837
-#define IMG_BACKGROUND_ENVELOPE_1 1838
-#define IMG_BACKGROUND_ENVELOPE_2 1839
-#define IMG_BACKGROUND_ENVELOPE_3 1840
-#define IMG_BACKGROUND_ENVELOPE_4 1841
-#define IMG_BACKGROUND_REQUEST 1842
-#define IMG_TITLESCREEN_INITIAL_1 1843
-#define IMG_TITLESCREEN_INITIAL_2 1844
-#define IMG_TITLESCREEN_INITIAL_3 1845
-#define IMG_TITLESCREEN_INITIAL_4 1846
-#define IMG_TITLESCREEN_INITIAL_5 1847
-#define IMG_TITLESCREEN_1 1848
-#define IMG_TITLESCREEN_2 1849
-#define IMG_TITLESCREEN_3 1850
-#define IMG_TITLESCREEN_4 1851
-#define IMG_TITLESCREEN_5 1852
-#define IMG_DOOR_1_GFX_PART_1 1853
-#define IMG_DOOR_1_GFX_PART_2 1854
-#define IMG_DOOR_1_GFX_PART_3 1855
-#define IMG_DOOR_1_GFX_PART_4 1856
-#define IMG_DOOR_1_GFX_PART_5 1857
-#define IMG_DOOR_1_GFX_PART_6 1858
-#define IMG_DOOR_1_GFX_PART_7 1859
-#define IMG_DOOR_1_GFX_PART_8 1860
-#define IMG_DOOR_2_GFX_PART_1 1861
-#define IMG_DOOR_2_GFX_PART_2 1862
-#define IMG_DOOR_2_GFX_PART_3 1863
-#define IMG_DOOR_2_GFX_PART_4 1864
-#define IMG_DOOR_2_GFX_PART_5 1865
-#define IMG_DOOR_2_GFX_PART_6 1866
-#define IMG_DOOR_2_GFX_PART_7 1867
-#define IMG_DOOR_2_GFX_PART_8 1868
-#define IMG_DOOR_2_TOP_BORDER_CORRECTION 1869
-#define IMG_LAST_IMAGE_ENTRY_BUG 1870
+#define IMG_EDITOR_PALETTE_SCROLL_UP 1796
+#define IMG_EDITOR_PALETTE_SCROLL_DOWN 1797
+#define IMG_EDITOR_PALETTE_SCROLLBAR 1798
+#define IMG_EDITOR_PLAYFIELD_SCROLL_UP 1799
+#define IMG_EDITOR_PLAYFIELD_SCROLL_DOWN 1800
+#define IMG_EDITOR_PLAYFIELD_SCROLL_LEFT 1801
+#define IMG_EDITOR_PLAYFIELD_SCROLL_RIGHT 1802
+#define IMG_EDITOR_PLAYFIELD_SCROLLBAR 1803
+#define IMG_EDITOR_BUTTON_GFX_PREV_LEVEL 1804
+#define IMG_EDITOR_BUTTON_GFX_NEXT_LEVEL 1805
+#define IMG_BACKGROUND 1806
+#define IMG_BACKGROUND_TITLE_INITIAL 1807
+#define IMG_BACKGROUND_TITLE 1808
+#define IMG_BACKGROUND_MAIN 1809
+#define IMG_BACKGROUND_LEVELS 1810
+#define IMG_BACKGROUND_LEVELNR 1811
+#define IMG_BACKGROUND_SCORES 1812
+#define IMG_BACKGROUND_EDITOR 1813
+#define IMG_BACKGROUND_INFO 1814
+#define IMG_BACKGROUND_INFO_ELEMENTS 1815
+#define IMG_BACKGROUND_INFO_MUSIC 1816
+#define IMG_BACKGROUND_INFO_CREDITS 1817
+#define IMG_BACKGROUND_INFO_PROGRAM 1818
+#define IMG_BACKGROUND_INFO_VERSION 1819
+#define IMG_BACKGROUND_INFO_LEVELSET 1820
+#define IMG_BACKGROUND_SETUP 1821
+#define IMG_BACKGROUND_PLAYING 1822
+#define IMG_BACKGROUND_DOOR 1823
+#define IMG_BACKGROUND_TAPE 1824
+#define IMG_BACKGROUND_PANEL 1825
+#define IMG_BACKGROUND_PALETTE 1826
+#define IMG_BACKGROUND_TOOLBOX 1827
+#define IMG_BACKGROUND_TITLESCREEN_INITIAL_1 1828
+#define IMG_BACKGROUND_TITLESCREEN_INITIAL_2 1829
+#define IMG_BACKGROUND_TITLESCREEN_INITIAL_3 1830
+#define IMG_BACKGROUND_TITLESCREEN_INITIAL_4 1831
+#define IMG_BACKGROUND_TITLESCREEN_INITIAL_5 1832
+#define IMG_BACKGROUND_TITLESCREEN_1 1833
+#define IMG_BACKGROUND_TITLESCREEN_2 1834
+#define IMG_BACKGROUND_TITLESCREEN_3 1835
+#define IMG_BACKGROUND_TITLESCREEN_4 1836
+#define IMG_BACKGROUND_TITLESCREEN_5 1837
+#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_1 1838
+#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_2 1839
+#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_3 1840
+#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_4 1841
+#define IMG_BACKGROUND_TITLEMESSAGE_INITIAL_5 1842
+#define IMG_BACKGROUND_TITLEMESSAGE_1 1843
+#define IMG_BACKGROUND_TITLEMESSAGE_2 1844
+#define IMG_BACKGROUND_TITLEMESSAGE_3 1845
+#define IMG_BACKGROUND_TITLEMESSAGE_4 1846
+#define IMG_BACKGROUND_TITLEMESSAGE_5 1847
+#define IMG_BACKGROUND_ENVELOPE_1 1848
+#define IMG_BACKGROUND_ENVELOPE_2 1849
+#define IMG_BACKGROUND_ENVELOPE_3 1850
+#define IMG_BACKGROUND_ENVELOPE_4 1851
+#define IMG_BACKGROUND_REQUEST 1852
+#define IMG_TITLESCREEN_INITIAL_1 1853
+#define IMG_TITLESCREEN_INITIAL_2 1854
+#define IMG_TITLESCREEN_INITIAL_3 1855
+#define IMG_TITLESCREEN_INITIAL_4 1856
+#define IMG_TITLESCREEN_INITIAL_5 1857
+#define IMG_TITLESCREEN_1 1858
+#define IMG_TITLESCREEN_2 1859
+#define IMG_TITLESCREEN_3 1860
+#define IMG_TITLESCREEN_4 1861
+#define IMG_TITLESCREEN_5 1862
+#define IMG_DOOR_1_GFX_PART_1 1863
+#define IMG_DOOR_1_GFX_PART_2 1864
+#define IMG_DOOR_1_GFX_PART_3 1865
+#define IMG_DOOR_1_GFX_PART_4 1866
+#define IMG_DOOR_1_GFX_PART_5 1867
+#define IMG_DOOR_1_GFX_PART_6 1868
+#define IMG_DOOR_1_GFX_PART_7 1869
+#define IMG_DOOR_1_GFX_PART_8 1870
+#define IMG_DOOR_2_GFX_PART_1 1871
+#define IMG_DOOR_2_GFX_PART_2 1872
+#define IMG_DOOR_2_GFX_PART_3 1873
+#define IMG_DOOR_2_GFX_PART_4 1874
+#define IMG_DOOR_2_GFX_PART_5 1875
+#define IMG_DOOR_2_GFX_PART_6 1876
+#define IMG_DOOR_2_GFX_PART_7 1877
+#define IMG_DOOR_2_GFX_PART_8 1878
+#define IMG_DOOR_2_TOP_BORDER_CORRECTION 1879
+#define IMG_LAST_IMAGE_ENTRY_BUG 1880
-#define NUM_IMAGE_FILES 1871
+#define NUM_IMAGE_FILES 1881
#endif /* CONF_GFX_H */
/* positions in the level editor */
#if 1
-#define ED_WIN_MB_LEFT_XPOS (editor.element_left.x)
-#define ED_WIN_MB_LEFT_YPOS (editor.element_left.y)
-#define ED_WIN_MB_MIDDLE_XPOS (editor.element_middle.x)
-#define ED_WIN_MB_MIDDLE_YPOS (editor.element_middle.y)
-#define ED_WIN_MB_RIGHT_XPOS (editor.element_right.x)
-#define ED_WIN_MB_RIGHT_YPOS (editor.element_right.y)
+#define ED_WIN_MB_LEFT_XPOS (editor.palette.element_left.x)
+#define ED_WIN_MB_LEFT_YPOS (editor.palette.element_left.y)
+#define ED_WIN_MB_MIDDLE_XPOS (editor.palette.element_middle.x)
+#define ED_WIN_MB_MIDDLE_YPOS (editor.palette.element_middle.y)
+#define ED_WIN_MB_RIGHT_XPOS (editor.palette.element_right.x)
+#define ED_WIN_MB_RIGHT_YPOS (editor.palette.element_right.y)
#else
#define ED_WIN_MB_LEFT_XPOS 6
#define ED_WIN_MB_LEFT_YPOS 258
#if 1
#define ED_ELEMENTLIST_XPOS (editor.palette.x)
#define ED_ELEMENTLIST_YPOS (editor.palette.y)
+#define ED_ELEMENTLIST_XSIZE 20
+#define ED_ELEMENTLIST_YSIZE 20
#else
#define ED_ELEMENTLIST_XPOS 5
#define ED_ELEMENTLIST_YPOS 30
-#endif
#define ED_ELEMENTLIST_XSIZE 20
#define ED_ELEMENTLIST_YSIZE 20
-#define ED_ELEMENTLIST_BUTTONS_HORIZ 4
+#endif
#if 1
-#define ED_ELEMENTLIST_BUTTONS_VERT 9
+// #define ED_ELEMENTLIST_BUTTONS_HORIZ 4
+// #define ED_ELEMENTLIST_BUTTONS_VERT 9
+#define ED_ELEMENTLIST_BUTTONS_HORIZ (editor.palette.cols)
+#define ED_ELEMENTLIST_BUTTONS_VERT (editor.palette.rows)
#else
+#define ED_ELEMENTLIST_BUTTONS_HORIZ 4
#define ED_ELEMENTLIST_BUTTONS_VERT 11
#endif
#define ED_NUM_ELEMENTLIST_BUTTONS (ED_ELEMENTLIST_BUTTONS_HORIZ * \
#define ED_SCROLLBUTTON2_XSIZE 10
#define ED_SCROLLBUTTON2_YSIZE 10
+#if 1
+#define ED_SCROLL2_UP_XPOS (ED_ELEMENTLIST_XPOS + \
+ ED_ELEMENTLIST_BUTTONS_HORIZ * \
+ ED_ELEMENTLIST_XSIZE)
+#define ED_SCROLL2_UP_YPOS ED_ELEMENTLIST_YPOS
+#define ED_SCROLL2_DOWN_XPOS ED_SCROLL2_UP_XPOS
+#define ED_SCROLL2_DOWN_YPOS (ED_SCROLL2_UP_YPOS + \
+ ED_ELEMENTLIST_BUTTONS_VERT * \
+ ED_ELEMENTLIST_YSIZE - \
+ ED_SCROLLBUTTON2_YSIZE)
+#define ED_SCROLL2_VERTICAL_XPOS ED_SCROLL2_UP_XPOS
+#define ED_SCROLL2_VERTICAL_YPOS (ED_SCROLL2_UP_YPOS + \
+ ED_SCROLLBUTTON2_YSIZE)
+#define ED_SCROLL2_VERTICAL_XSIZE ED_SCROLLBUTTON2_XSIZE
+#define ED_SCROLL2_VERTICAL_YSIZE (ED_ELEMENTLIST_BUTTONS_VERT * \
+ ED_ELEMENTLIST_YSIZE - \
+ 2 * ED_SCROLLBUTTON2_YSIZE)
+#else
#define ED_SCROLL2_UP_XPOS 85
#define ED_SCROLL2_UP_YPOS 30
#define ED_SCROLL2_DOWN_XPOS ED_SCROLL2_UP_XPOS
#define ED_SCROLL2_VERTICAL_YSIZE (ED_ELEMENTLIST_BUTTONS_VERT * \
ED_ELEMENTLIST_YSIZE - \
2 * ED_SCROLLBUTTON2_YSIZE)
+#endif
/* values for checkbutton gadgets */
#define ED_CHECKBUTTON_XSIZE ED_BUTTON_COUNT_XSIZE
},
};
+#if 1
+
+static struct
+{
+ int x, y;
+} scrollbutton_pos[ED_NUM_SCROLLBUTTONS];
+
+static struct
+{
+ int graphic;
+ int gadget_id;
+ char *infotext;
+} scrollbutton_info[ED_NUM_SCROLLBUTTONS] =
+{
+ {
+ IMG_EDITOR_PLAYFIELD_SCROLL_UP,
+ GADGET_ID_SCROLL_UP,
+ "scroll level editing area up"
+ },
+ {
+ IMG_EDITOR_PLAYFIELD_SCROLL_DOWN,
+ GADGET_ID_SCROLL_DOWN,
+ "scroll level editing area down"
+ },
+ {
+ IMG_EDITOR_PLAYFIELD_SCROLL_LEFT,
+ GADGET_ID_SCROLL_LEFT,
+ "scroll level editing area left"
+ },
+ {
+ IMG_EDITOR_PLAYFIELD_SCROLL_RIGHT,
+ GADGET_ID_SCROLL_RIGHT,
+ "scroll level editing area right"
+ },
+ {
+ IMG_EDITOR_PALETTE_SCROLL_UP,
+ GADGET_ID_SCROLL_LIST_UP,
+ "scroll element list up ('Page Up')"
+ },
+ {
+ IMG_EDITOR_PALETTE_SCROLL_DOWN,
+ GADGET_ID_SCROLL_LIST_DOWN,
+ "scroll element list down ('Page Down')"
+ },
+};
+
+static struct
+{
+ int x, y;
+ int width, height;
+ int wheel_x, wheel_y;
+ int wheel_width, wheel_height;
+} scrollbar_pos[ED_NUM_SCROLLBARS];
+
+static struct
+{
+ int graphic;
+ int type;
+ int gadget_id;
+ char *infotext;
+} scrollbar_info[ED_NUM_SCROLLBARS] =
+{
+ {
+ IMG_EDITOR_PLAYFIELD_SCROLLBAR,
+ GD_TYPE_SCROLLBAR_HORIZONTAL,
+ GADGET_ID_SCROLL_HORIZONTAL,
+ "scroll level editing area horizontally"
+ },
+ {
+ IMG_EDITOR_PLAYFIELD_SCROLLBAR,
+ GD_TYPE_SCROLLBAR_VERTICAL,
+ GADGET_ID_SCROLL_VERTICAL,
+ "scroll level editing area vertically"
+ },
+ {
+ IMG_EDITOR_PALETTE_SCROLLBAR,
+ GD_TYPE_SCROLLBAR_VERTICAL,
+ GADGET_ID_SCROLL_LIST_VERTICAL,
+ "scroll element list vertically"
+ }
+};
+
+#else
+
static struct
{
int gd_x, gd_y;
}
};
+#endif
+
static struct
{
int x, y;
static void HandleDrawingAreaInfo(struct GadgetInfo *);
static void PrintEditorGadgetInfoText(struct GadgetInfo *);
+#if 1
+static struct GadgetInfo **level_editor_gadget = NULL;
+static int *right_gadget_border = NULL;
+#else
static struct GadgetInfo *level_editor_gadget[NUM_EDITOR_GADGETS];
static int right_gadget_border[NUM_EDITOR_GADGETS];
+#endif
static int drawing_function = GADGET_ID_SINGLE_ITEMS;
static int last_drawing_function = GADGET_ID_SINGLE_ITEMS;
static int num_editor_el_dynamic = 0;
static int editor_hl_empty[] = { };
+#if 1
+static int *editor_el_empty = NULL;
+#else
static int editor_el_empty[ED_NUM_ELEMENTLIST_BUTTONS];
+#endif
static int *editor_hl_empty_ptr = editor_hl_empty;
+#if 1
+static int *editor_el_empty_ptr = NULL;
+#else
static int *editor_el_empty_ptr = editor_el_empty;
+#endif
static int num_editor_hl_empty = 0;
static int num_editor_el_empty = 0; /* dynamically determined, if needed */
}
/* these values are not constant, but can change at runtime */
+#if 1
+ scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_UP].x = ED_SCROLL_UP_XPOS;
+ scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_UP].y = ED_SCROLL_UP_YPOS;
+ scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_DOWN].x = ED_SCROLL_DOWN_XPOS;
+ scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_DOWN].y = ED_SCROLL_DOWN_YPOS;
+ scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_LEFT].x = ED_SCROLL_LEFT_XPOS;
+ scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_LEFT].y = ED_SCROLL_LEFT_YPOS;
+ scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_RIGHT].x = ED_SCROLL_RIGHT_XPOS;
+ scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_RIGHT].y = ED_SCROLL_RIGHT_YPOS;
+ scrollbutton_pos[ED_SCROLLBUTTON_ID_LIST_UP].x = ED_SCROLL2_UP_XPOS;
+ scrollbutton_pos[ED_SCROLLBUTTON_ID_LIST_UP].y = ED_SCROLL2_UP_YPOS;
+ scrollbutton_pos[ED_SCROLLBUTTON_ID_LIST_DOWN].x = ED_SCROLL2_DOWN_XPOS;
+ scrollbutton_pos[ED_SCROLLBUTTON_ID_LIST_DOWN].y = ED_SCROLL2_DOWN_YPOS;
+#else
scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_UP].x = ED_SCROLL_UP_XPOS;
scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_UP].y = ED_SCROLL_UP_YPOS;
scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_DOWN].x = ED_SCROLL_DOWN_XPOS;
scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_LEFT].y = ED_SCROLL_LEFT_YPOS;
scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_RIGHT].x = ED_SCROLL_RIGHT_XPOS;
scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_RIGHT].y = ED_SCROLL_RIGHT_YPOS;
+#endif
/* create buttons for scrolling of drawing area and element list */
for (i = 0; i < ED_NUM_SCROLLBUTTONS; i++)
{
int id = scrollbutton_info[i].gadget_id;
+#if 1
+ int graphic = scrollbutton_info[i].graphic;
+ struct GraphicInfo *gd = &graphic_info[graphic];
+#endif
int x, y, width, height;
int gd_x1, gd_x2, gd_y1, gd_y2;
+#if 1
+ x = scrollbutton_pos[i].x;
+ y = scrollbutton_pos[i].y;
+#else
x = scrollbutton_info[i].x;
y = scrollbutton_info[i].y;
+#endif
event_mask = GD_EVENT_PRESSED | GD_EVENT_REPEATED;
{
x += DX;
y += DY;
+#if 1
+ width = gd->width;
+ height = gd->height;
+ gd_x1 = gd->src_x;
+ gd_y1 = gd->src_y;
+ gd_x2 = gd->src_x + gd->pressed_xoffset;
+ gd_y2 = gd->src_y + gd->pressed_yoffset;
+#else
width = ED_SCROLLBUTTON2_XSIZE;
height = ED_SCROLLBUTTON2_YSIZE;
gd_x1 = DOOR_GFX_PAGEX8 + scrollbutton_info[i].gd_x;
gd_y1 = DOOR_GFX_PAGEY1 + scrollbutton_info[i].gd_y;
gd_x2 = gd_x1 - ED_SCROLLBUTTON2_XSIZE;
gd_y2 = gd_y1;
+#endif
}
else
{
x += SX;
y += SY;
+#if 1
+ width = gd->width;
+ height = gd->height;
+ gd_x1 = gd->src_x;
+ gd_y1 = gd->src_y;
+ gd_x2 = gd->src_x + gd->pressed_xoffset;
+ gd_y2 = gd->src_y + gd->pressed_yoffset;
+#else
width = ED_SCROLLBUTTON_XSIZE;
height = ED_SCROLLBUTTON_YSIZE;
gd_x1 = DOOR_GFX_PAGEX8 + scrollbutton_info[i].gd_x;
gd_y1 = DOOR_GFX_PAGEY1 + scrollbutton_info[i].gd_y;
gd_x2 = gd_x1 - ED_SCROLLBUTTON_XSIZE;
gd_y2 = gd_y1;
+#endif
}
gi = CreateGadget(GDI_CUSTOM_ID, id,
Bitmap *deco_bitmap;
int deco_x, deco_y, deco_xpos, deco_ypos;
int gd_xoffset, gd_yoffset;
+#if 1
+ int gd_x1, gd_y1, gd_x2, gd_y2;
+#else
int gd_x1, gd_x2, gd_y;
+#endif
int x = i % ED_ELEMENTLIST_BUTTONS_HORIZ;
int y = i / ED_ELEMENTLIST_BUTTONS_HORIZ;
int id = GADGET_ID_ELEMENTLIST_FIRST + i;
event_mask = GD_EVENT_RELEASED;
- gd_xoffset = ED_ELEMENTLIST_XPOS + x * ED_ELEMENTLIST_XSIZE;
- gd_yoffset = ED_ELEMENTLIST_YPOS + y * ED_ELEMENTLIST_YSIZE;
-
#if 1
+ gd_xoffset = ED_ELEMENTLIST_XPOS + x * gd->width;
+ gd_yoffset = ED_ELEMENTLIST_YPOS + y * gd->height;
+
gd_x1 = gd->src_x;
+ gd_y1 = gd->src_y;
gd_x2 = gd->src_x + gd->pressed_xoffset;
- gd_y = gd->src_y;
+ gd_y2 = gd->src_y + gd->pressed_yoffset;
+
+ getMiniGraphicSource(el2edimg(element), &deco_bitmap, &deco_x, &deco_y);
+ deco_xpos = (gd->width - MINI_TILEX) / 2;
+ deco_ypos = (gd->height - MINI_TILEY) / 2;
#else
+ gd_xoffset = ED_ELEMENTLIST_XPOS + x * ED_ELEMENTLIST_XSIZE;
+ gd_yoffset = ED_ELEMENTLIST_YPOS + y * ED_ELEMENTLIST_YSIZE;
+
gd_x1 = DOOR_GFX_PAGEX6 + ED_ELEMENTLIST_XPOS + ED_ELEMENTLIST_XSIZE;
gd_x2 = DOOR_GFX_PAGEX6 + ED_ELEMENTLIST_XPOS;
gd_y = DOOR_GFX_PAGEY1 + ED_ELEMENTLIST_YPOS;
-#endif
getMiniGraphicSource(el2edimg(element), &deco_bitmap, &deco_x, &deco_y);
deco_xpos = (ED_ELEMENTLIST_XSIZE - MINI_TILEX) / 2;
deco_ypos = (ED_ELEMENTLIST_YSIZE - MINI_TILEY) / 2;
+#endif
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_CUSTOM_TYPE_ID, i,
GDI_INFO_TEXT, getElementInfoText(element),
GDI_X, DX + gd_xoffset,
GDI_Y, DY + gd_yoffset,
+#if 1
+ GDI_WIDTH, gd->width,
+ GDI_HEIGHT, gd->height,
+#else
GDI_WIDTH, ED_ELEMENTLIST_XSIZE,
GDI_HEIGHT, ED_ELEMENTLIST_YSIZE,
+#endif
GDI_TYPE, GD_TYPE_NORMAL_BUTTON,
GDI_STATE, GD_BUTTON_UNPRESSED,
+#if 1
+ GDI_DESIGN_UNPRESSED, gd->bitmap, gd_x1, gd_y1,
+ GDI_DESIGN_PRESSED, gd->bitmap, gd_x2, gd_y2,
+#else
GDI_DESIGN_UNPRESSED, gd->bitmap, gd_x1, gd_y,
GDI_DESIGN_PRESSED, gd->bitmap, gd_x2, gd_y,
+#endif
GDI_DECORATION_DESIGN, deco_bitmap, deco_x, deco_y,
GDI_DECORATION_POSITION, deco_xpos, deco_ypos,
GDI_DECORATION_SIZE, MINI_TILEX, MINI_TILEY,
counterbutton_info[i].gadget_id_down :
counterbutton_info[i].gadget_id_up);
int gd_xoffset;
- int gd_x, gd_x1, gd_x2, gd_y;
+ int gd_x, gd_y, gd_x1, gd_x2, gd_y1, gd_y2;
int x_size, y_size;
unsigned int event_mask;
char infotext[max_infotext_len + 1];
if (i == ED_COUNTER_ID_SELECT_LEVEL)
{
+#if 1
+ int graphic = (j == 0 ?
+ IMG_EDITOR_BUTTON_GFX_PREV_LEVEL :
+ IMG_EDITOR_BUTTON_GFX_NEXT_LEVEL);
+ struct GraphicInfo *gd = &graphic_info[graphic];
+
+ gd_bitmap = gd->bitmap;
+
+ event_mask |= GD_EVENT_RELEASED;
+
+ if (j == 1)
+ x += 2 * ED_GADGET_DISTANCE;
+ y += ED_GADGET_DISTANCE;
+
+ gd_x1 = gd->src_x;
+ gd_y1 = gd->src_y;
+ gd_x2 = gd->src_x + gd->pressed_xoffset;
+ gd_y2 = gd->src_y + gd->pressed_yoffset;
+ x_size = gd->width;
+ y_size = gd->height;
+#else
int sid = (j == 0 ?
ED_SCROLLBUTTON_ID_AREA_LEFT :
ED_SCROLLBUTTON_ID_AREA_RIGHT);
gd_x1 = DOOR_GFX_PAGEX8 + scrollbutton_info[sid].gd_x;
gd_x2 = gd_x1 - ED_SCROLLBUTTON_XSIZE;
- gd_y = DOOR_GFX_PAGEY1 + scrollbutton_info[sid].gd_y;
+ gd_y1 = DOOR_GFX_PAGEY1 + scrollbutton_info[sid].gd_y;
+ gd_y2 = gd_y1;
x_size = ED_SCROLLBUTTON_XSIZE;
y_size = ED_SCROLLBUTTON_YSIZE;
+#endif
}
else
{
gd_xoffset = (j == 0 ? ED_BUTTON_MINUS_XPOS : ED_BUTTON_PLUS_XPOS);
gd_x1 = DOOR_GFX_PAGEX4 + gd_xoffset;
gd_x2 = DOOR_GFX_PAGEX3 + gd_xoffset;
- gd_y = DOOR_GFX_PAGEY1 + ED_BUTTON_COUNT_YPOS;
+ gd_y1 = DOOR_GFX_PAGEY1 + ED_BUTTON_COUNT_YPOS;
+ gd_y2 = gd_y1;
x_size = ED_BUTTON_COUNT_XSIZE;
y_size = ED_BUTTON_COUNT_YSIZE;
}
GDI_HEIGHT, y_size,
GDI_TYPE, GD_TYPE_NORMAL_BUTTON,
GDI_STATE, GD_BUTTON_UNPRESSED,
- GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y,
- GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y,
+ GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y1,
+ GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y2,
GDI_EVENT_MASK, event_mask,
GDI_CALLBACK_INFO, HandleEditorGadgetInfoText,
GDI_CALLBACK_ACTION, HandleCounterButtons,
int i;
/* these values are not constant, but can change at runtime */
+#if 1
+ scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].x =
+ SX + ED_SCROLL_HORIZONTAL_XPOS;
+ scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].y =
+ SY + ED_SCROLL_HORIZONTAL_YPOS;
+ scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].width =
+ ED_SCROLL_HORIZONTAL_XSIZE;
+ scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].height =
+ ED_SCROLL_HORIZONTAL_YSIZE;
+ scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].wheel_x = SX;
+ scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].wheel_y = SY;
+ scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].wheel_width = SXSIZE;
+ scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].wheel_height = SYSIZE;
+
+ scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].x =
+ SX + ED_SCROLL_VERTICAL_XPOS;
+ scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].y =
+ SY + ED_SCROLL_VERTICAL_YPOS;
+ scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].width =
+ ED_SCROLL_VERTICAL_XSIZE;
+ scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].height =
+ ED_SCROLL_VERTICAL_YSIZE;
+ scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].wheel_x = SX;
+ scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].wheel_y = SY;
+ scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].wheel_width = SXSIZE;
+ scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].wheel_height = SYSIZE;
+
+ scrollbar_pos[ED_SCROLLBAR_ID_LIST_VERTICAL].x =
+ DX + ED_SCROLL2_VERTICAL_XPOS;
+ scrollbar_pos[ED_SCROLLBAR_ID_LIST_VERTICAL].y =
+ DY + ED_SCROLL2_VERTICAL_YPOS;
+ scrollbar_pos[ED_SCROLLBAR_ID_LIST_VERTICAL].width =
+ ED_SCROLL2_VERTICAL_XSIZE;
+ scrollbar_pos[ED_SCROLLBAR_ID_LIST_VERTICAL].height =
+ ED_SCROLL2_VERTICAL_YSIZE;
+ scrollbar_pos[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_x = DX;
+ scrollbar_pos[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_y = DY;
+ scrollbar_pos[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_width = DXSIZE;
+ scrollbar_pos[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_height = DYSIZE;
+#else
scrollbar_info[ED_SCROLLBAR_ID_AREA_HORIZONTAL].x =
SX + ED_SCROLL_HORIZONTAL_XPOS;
scrollbar_info[ED_SCROLLBAR_ID_AREA_HORIZONTAL].y =
DX + ED_SCROLL2_VERTICAL_XPOS;
scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].y =
DY + ED_SCROLL2_VERTICAL_YPOS;
+ scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].width =
+ ED_SCROLL2_VERTICAL_XSIZE;
+ scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].height =
+ ED_SCROLL2_VERTICAL_YSIZE;
scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_x = DX;
scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_y = DY;
scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_width = DXSIZE;
scrollbar_info[ED_SCROLLBAR_ID_LIST_VERTICAL].wheel_height = DYSIZE;
+#endif
for (i = 0; i < ED_NUM_SCROLLBARS; i++)
{
int id = scrollbar_info[i].gadget_id;
+#if 1
+ int graphic = scrollbar_info[i].graphic;
+ struct GraphicInfo *gd = &graphic_info[graphic];
+ Bitmap *gd_bitmap = gd->bitmap;
+#else
Bitmap *gd_bitmap = graphic_info[IMG_GLOBAL_DOOR].bitmap;
+#endif
int gd_x1, gd_x2, gd_y1, gd_y2;
struct GadgetInfo *gi;
int items_max, items_visible, item_position;
event_mask = GD_EVENT_MOVING | GD_EVENT_OFF_BORDERS;
+#if 1
+ gd_x1 = gd->src_x;
+ gd_y1 = gd->src_y;
+ gd_x2 = gd->src_x + gd->pressed_xoffset;
+ gd_y2 = gd->src_y + gd->pressed_yoffset;
+#else
gd_x1 = DOOR_GFX_PAGEX8 + scrollbar_info[i].gd_x;
gd_x2 = (gd_x1 - (scrollbar_info[i].type == GD_TYPE_SCROLLBAR_HORIZONTAL ?
scrollbar_info[i].height : scrollbar_info[i].width));
gd_y1 = DOOR_GFX_PAGEY1 + scrollbar_info[i].gd_y;
gd_y2 = DOOR_GFX_PAGEY1 + scrollbar_info[i].gd_y;
+#endif
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_CUSTOM_TYPE_ID, i,
GDI_INFO_TEXT, scrollbar_info[i].infotext,
+#if 1
+ GDI_X, scrollbar_pos[i].x,
+ GDI_Y, scrollbar_pos[i].y,
+ GDI_WIDTH, scrollbar_pos[i].width,
+ GDI_HEIGHT, scrollbar_pos[i].height,
+#else
GDI_X, scrollbar_info[i].x,
GDI_Y, scrollbar_info[i].y,
GDI_WIDTH, scrollbar_info[i].width,
GDI_HEIGHT, scrollbar_info[i].height,
+#endif
GDI_TYPE, scrollbar_info[i].type,
GDI_SCROLLBAR_ITEMS_MAX, items_max,
GDI_SCROLLBAR_ITEMS_VISIBLE, items_visible,
GDI_SCROLLBAR_ITEM_POSITION, item_position,
+#if 1
+ GDI_WHEEL_AREA_X, scrollbar_pos[i].wheel_x,
+ GDI_WHEEL_AREA_Y, scrollbar_pos[i].wheel_y,
+ GDI_WHEEL_AREA_WIDTH, scrollbar_pos[i].wheel_width,
+ GDI_WHEEL_AREA_HEIGHT, scrollbar_pos[i].wheel_height,
+#else
GDI_WHEEL_AREA_X, scrollbar_info[i].wheel_x,
GDI_WHEEL_AREA_Y, scrollbar_info[i].wheel_y,
GDI_WHEEL_AREA_WIDTH, scrollbar_info[i].wheel_width,
GDI_WHEEL_AREA_HEIGHT, scrollbar_info[i].wheel_height,
+#endif
GDI_STATE, GD_BUTTON_UNPRESSED,
GDI_DESIGN_UNPRESSED, gd_bitmap, gd_x1, gd_y1,
GDI_DESIGN_PRESSED, gd_bitmap, gd_x2, gd_y2,
ed_fieldx = MAX_ED_FIELDX - 1;
ed_fieldy = MAX_ED_FIELDY - 1;
+ level_editor_gadget =
+ checked_calloc(NUM_EDITOR_GADGETS * sizeof(struct GadgetInfo *));
+ right_gadget_border =
+ 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;
+
ReinitializeElementList();
CreateControlButtons();
level_editor_gadget[i] = NULL;
}
+
+ checked_free(level_editor_gadget);
+ checked_free(right_gadget_border);
+
+ checked_free(editor_el_empty);
}
static void MapCounterButtons(int id)
xoffset = (ed_fieldx == MAX_ED_FIELDX ? ED_SCROLLBUTTON_XSIZE : 0);
yoffset = (ed_fieldy == MAX_ED_FIELDY ? ED_SCROLLBUTTON_YSIZE : 0);
+#if 1
+ x = SX + scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_RIGHT].x + xoffset;
+ y = SX + scrollbutton_pos[ED_SCROLLBUTTON_ID_AREA_DOWN].y + yoffset;
+#else
x = SX + scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_RIGHT].x + xoffset;
y = SX + scrollbutton_info[ED_SCROLLBUTTON_ID_AREA_DOWN].y + yoffset;
+#endif
ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_RIGHT], GDI_X, x, GDI_END);
ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_DOWN], GDI_Y, y, GDI_END);
- width = scrollbar_info[ED_SCROLLBAR_ID_AREA_HORIZONTAL].width + xoffset;
+#if 1
+ width = scrollbar_pos[ED_SCROLLBAR_ID_AREA_HORIZONTAL].width + xoffset;
+ height = scrollbar_pos[ED_SCROLLBAR_ID_AREA_VERTICAL].height + yoffset;
+#else
+ width = scrollbar_info[ED_SCROLLBAR_ID_AREA_HORIZONTAL].width + xoffset;
height = scrollbar_info[ED_SCROLLBAR_ID_AREA_VERTICAL].height + yoffset;
+#endif
ModifyGadget(level_editor_gadget[GADGET_ID_SCROLL_HORIZONTAL],
GDI_WIDTH, width,