#define ED_CTRL_ID_RANDOM_PLACEMENT 12
#define ED_CTRL_ID_BRUSH 13
#define ED_CTRL_ID_WRAP_DOWN 14
-#define ED_CTRL_ID_UNUSED2 15
+#define ED_CTRL_ID_PICK_ELEMENT 15
#define ED_CTRL_ID_UNDO 16
#define ED_CTRL_ID_INFO 17
#define ED_CTRL_ID_SAVE 18
static boolean level_editor_gadgets_created = FALSE;
static int drawing_function = ED_CTRL_ID_SINGLE_ITEMS;
+static int last_drawing_function = ED_CTRL_ID_SINGLE_ITEMS;
static int properties_element = 0;
static short ElementContent[MAX_ELEMCONT][3][3];
EL_MAUER_Y,
EL_MAUER_XY,
+ EL_SPEED_PILL,
+ EL_LEERRAUM,
+ EL_LEERRAUM,
+ EL_LEERRAUM,
+
EL_CHAR_A + ('S' - 'A'),
EL_CHAR_A + ('O' - 'A'),
EL_CHAR_A + ('K' - 'A'),
EL_SOKOBAN_FELD_VOLL,
EL_BETON,
+ EL_LEERRAUM,
+ EL_LEERRAUM,
+ EL_LEERRAUM,
+ EL_LEERRAUM,
+
+ EL_CHAR('S'),
+ EL_CHAR('U'),
+ EL_CHAR('P'),
+ EL_CHAR('A'),
+
+ EL_CHAR('P'),
+ EL_CHAR('L'),
+ EL_CHAR('E'),
+ EL_CHAR('X'),
+
+ EL_SP_EMPTY,
+ EL_SP_ZONK,
+ EL_SP_BASE,
+ EL_SP_MURPHY,
+
+ EL_SP_INFOTRON,
+ EL_SP_CHIP_SINGLE,
+ EL_SP_HARD_GRAY,
+ EL_SP_EXIT,
+
+ EL_SP_DISK_ORANGE,
+ EL_SP_PORT1_RIGHT,
+ EL_SP_PORT1_DOWN,
+ EL_SP_PORT1_LEFT,
+
+ EL_SP_PORT1_UP,
+ EL_SP_PORT2_RIGHT,
+ EL_SP_PORT2_DOWN,
+ EL_SP_PORT2_LEFT,
+
+ EL_SP_PORT2_UP,
+ EL_SP_SNIKSNAK,
+ EL_SP_DISK_YELLOW,
+ EL_SP_TERMINAL,
+
+ EL_SP_DISK_RED,
+ EL_SP_PORT_Y,
+ EL_SP_PORT_X,
+ EL_SP_PORT_XY,
+
+ EL_SP_ELECTRON,
+ EL_SP_BUG,
+ EL_SP_CHIP_LEFT,
+ EL_SP_CHIP_RIGHT,
+
+ EL_SP_HARD_BASE1,
+ EL_SP_HARD_GREEN,
+ EL_SP_HARD_BLUE,
+ EL_SP_HARD_RED,
+
+ EL_SP_HARD_YELLOW,
+ EL_SP_HARD_BASE2,
+ EL_SP_HARD_BASE3,
+ EL_SP_HARD_BASE4,
+
+ EL_SP_HARD_BASE5,
+ EL_SP_HARD_BASE6,
+ EL_SP_CHIP_UPPER,
+ EL_SP_CHIP_LOWER,
+
/*
EL_CHAR_A + ('D' - 'A'),
EL_CHAR_A + ('Y' - 'A'),
EL_CHAR_OE,
EL_CHAR_UE,
EL_CHAR_COPY,
- EL_LEERRAUM,
-
- EL_LEERRAUM,
- EL_LEERRAUM,
- EL_LEERRAUM,
- EL_LEERRAUM,
-
- EL_LEERRAUM,
- EL_SP_ZONK,
- EL_SP_BASE,
- EL_SP_MURPHY,
-
- EL_SP_INFOTRON,
- EL_SP_CHIP_SINGLE,
- EL_SP_HARD_GRAY,
- EL_SP_EXIT,
-
- EL_SP_DISK_ORANGE,
- EL_SP_PORT1_RIGHT,
- EL_SP_PORT1_DOWN,
- EL_SP_PORT1_LEFT,
-
- EL_SP_PORT1_UP,
- EL_SP_PORT2_RIGHT,
- EL_SP_PORT2_DOWN,
- EL_SP_PORT2_LEFT,
-
- EL_SP_PORT2_UP,
- EL_SP_SNIKSNAK,
- EL_SP_DISK_YELLOW,
- EL_SP_TERMINAL,
-
- EL_SP_DISK_RED,
- EL_SP_PORT_Y,
- EL_SP_PORT_X,
- EL_SP_PORT_XY,
-
- EL_SP_ELECTRON,
- EL_SP_BUG,
- EL_SP_CHIP_LEFT,
- EL_SP_CHIP_RIGHT,
-
- EL_SP_HARD_BASE1,
- EL_SP_HARD_GREEN,
- EL_SP_HARD_BLUE,
- EL_SP_HARD_RED,
-
- EL_SP_HARD_YELLOW,
- EL_SP_HARD_BASE2,
- EL_SP_HARD_BASE3,
- EL_SP_HARD_BASE4,
-
- EL_SP_HARD_BASE5,
- EL_SP_HARD_BASE6,
- EL_SP_CHIP_UPPER,
- EL_SP_CHIP_LOWER
+ EL_LEERRAUM
};
int elements_in_list = sizeof(editor_element)/sizeof(int);
id == ED_CTRL_ID_RECTANGLE ||
id == ED_CTRL_ID_FILLED_BOX ||
id == ED_CTRL_ID_FLOOD_FILL ||
- id == ED_CTRL_ID_BRUSH)
+ id == ED_CTRL_ID_BRUSH ||
+ id == ED_CTRL_ID_PICK_ELEMENT)
{
button_type = GD_TYPE_RADIO_BUTTON;
radio_button_nr = 1;
level_ypos = -1;
}
+static void PickDrawingElement(int button, int element)
+{
+ if (button < 1 || button > 3)
+ return;
+
+ if (button == 1)
+ {
+ new_element1 = element;
+ DrawMiniGraphicExt(drawto, gc,
+ DX + ED_WIN_MB_LEFT_XPOS,
+ DY + ED_WIN_MB_LEFT_YPOS,
+ el2gfx(new_element1));
+ }
+ else if (button == 2)
+ {
+ new_element2 = element;
+ DrawMiniGraphicExt(drawto, gc,
+ DX + ED_WIN_MB_MIDDLE_XPOS,
+ DY + ED_WIN_MB_MIDDLE_YPOS,
+ el2gfx(new_element2));
+ }
+ else
+ {
+ new_element3 = element;
+ DrawMiniGraphicExt(drawto, gc,
+ DX + ED_WIN_MB_RIGHT_XPOS,
+ DY + ED_WIN_MB_RIGHT_YPOS,
+ el2gfx(new_element3));
+ }
+
+ redraw_mask |= REDRAW_DOOR_1;
+}
+
void LevelEd(int mx, int my, int button)
{
static int last_button = 0;
else
new_element = EL_LEERRAUM;
- if (last_button==1)
- new_element1 = new_element;
- else if (last_button==2)
- new_element2 = new_element;
- else if (last_button==3)
- new_element3 = new_element;
-
- DrawMiniGraphicExt(drawto,gc,
- DX+ED_WIN_MB_LEFT_XPOS,
- DY+ED_WIN_MB_LEFT_YPOS,
- el2gfx(new_element1));
- DrawMiniGraphicExt(drawto,gc,
- DX+ED_WIN_MB_MIDDLE_XPOS,
- DY+ED_WIN_MB_MIDDLE_YPOS,
- el2gfx(new_element2));
- DrawMiniGraphicExt(drawto,gc,
- DX+ED_WIN_MB_RIGHT_XPOS,
- DY+ED_WIN_MB_RIGHT_YPOS,
- el2gfx(new_element3));
- redraw_mask |= REDRAW_DOOR_1;
+ PickDrawingElement(last_button, new_element);
if (!HAS_CONTENT(properties_element))
{
}
break;
+ case ED_CTRL_ID_PICK_ELEMENT:
+ if (button_press_event)
+ PickDrawingElement(button, Feld[lx][ly]);
+ if (button_release_event)
+ ClickOnGadget(level_editor_gadget[last_drawing_function]);
+ break;
+
default:
break;
}
case ED_CTRL_ID_FILLED_BOX:
case ED_CTRL_ID_FLOOD_FILL:
case ED_CTRL_ID_BRUSH:
+ case ED_CTRL_ID_PICK_ELEMENT:
+ last_drawing_function = drawing_function;
drawing_function = id;
break;