projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added functions to advance game and tile frame counter for MM engine
[rocksndiamonds.git]
/
src
/
editor.c
diff --git
a/src/editor.c
b/src/editor.c
index 1fd4b463ce1280b3a93fdf5c69aa2aefac166ae0..671f6bf9385c9d7caa22b4692feb17b5e50920a3 100644
(file)
--- a/
src/editor.c
+++ b/
src/editor.c
@@
-2079,38
+2079,38
@@
static struct ValueTextInfo options_change_trigger_player[] =
static struct ValueTextInfo options_change_trigger_page[] =
{
static struct ValueTextInfo options_change_trigger_page[] =
{
- { (1
<< 0),
"1" },
- { (1
<< 1),
"2" },
- { (1
<< 2),
"3" },
- { (1
<< 3),
"4" },
- { (1
<< 4),
"5" },
- { (1
<< 5),
"6" },
- { (1
<< 6),
"7" },
- { (1
<< 7),
"8" },
- { (1
<< 8),
"9" },
- { (1
<< 9),
"10" },
- { (1
<< 10),
"11" },
- { (1
<< 11),
"12" },
- { (1
<< 12),
"13" },
- { (1
<< 13),
"14" },
- { (1
<< 14),
"15" },
- { (1
<< 15),
"16" },
- { (1
<< 16),
"17" },
- { (1
<< 17),
"18" },
- { (1
<< 18),
"19" },
- { (1
<< 19),
"20" },
- { (1
<< 20),
"21" },
- { (1
<< 21),
"22" },
- { (1
<< 22),
"23" },
- { (1
<< 23),
"24" },
- { (1
<< 24),
"25" },
- { (1
<< 25),
"26" },
- { (1
<< 26),
"27" },
- { (1
<< 27),
"28" },
- { (1
<< 28),
"29" },
- { (1
<< 29),
"30" },
- { (1
<< 30),
"31" },
- { (1
<< 31),
"32" },
+ { (1
u << 0),
"1" },
+ { (1
u << 1),
"2" },
+ { (1
u << 2),
"3" },
+ { (1
u << 3),
"4" },
+ { (1
u << 4),
"5" },
+ { (1
u << 5),
"6" },
+ { (1
u << 6),
"7" },
+ { (1
u << 7),
"8" },
+ { (1
u << 8),
"9" },
+ { (1
u << 9),
"10" },
+ { (1
u << 10),
"11" },
+ { (1
u << 11),
"12" },
+ { (1
u << 12),
"13" },
+ { (1
u << 13),
"14" },
+ { (1
u << 14),
"15" },
+ { (1
u << 15),
"16" },
+ { (1
u << 16),
"17" },
+ { (1
u << 17),
"18" },
+ { (1
u << 18),
"19" },
+ { (1
u << 19),
"20" },
+ { (1
u << 20),
"21" },
+ { (1
u << 21),
"22" },
+ { (1
u << 22),
"23" },
+ { (1
u << 23),
"24" },
+ { (1
u << 24),
"25" },
+ { (1
u << 25),
"26" },
+ { (1
u << 26),
"27" },
+ { (1
u << 27),
"28" },
+ { (1
u << 28),
"29" },
+ { (1
u << 29),
"30" },
+ { (1
u << 30),
"31" },
+ { (1
u << 31),
"32" },
{ CH_PAGE_ANY, "any" },
{ -1, NULL }
{ CH_PAGE_ANY, "any" },
{ -1, NULL }
@@
-5557,6
+5557,14
@@
editor_elements_info[] =
}
};
}
};
+static struct XY xy_directions[] =
+{
+ { -1, 0 },
+ { +1, 0 },
+ { 0, -1 },
+ { 0, +1 }
+};
+
// ----------------------------------------------------------------------------
// functions
// ----------------------------------------------------------------------------
// functions
@@
-5610,7
+5618,7
@@
static char *getElementInfoText(int element)
static char *getElementDescriptionFilenameExt(char *basename)
{
static char *getElementDescriptionFilenameExt(char *basename)
{
- char *elements_subdir =
"elements"
;
+ char *elements_subdir =
ELEMENTS_DIRECTORY
;
static char *elements_subdir2 = NULL;
static char *filename = NULL;
static char *elements_subdir2 = NULL;
static char *filename = NULL;
@@
-5651,6
+5659,11
@@
static char *getElementDescriptionFilename(int element)
if (filename != NULL)
return filename;
if (filename != NULL)
return filename;
+ // 3rd try: look for generic fallback text file for any element
+ filename = getElementDescriptionFilenameExt(FALLBACK_TEXT_FILENAME);
+ if (filename != NULL)
+ return filename;
+
return NULL;
}
return NULL;
}
@@
-5879,10
+5892,10
@@
static void ReinitializeElementList(void)
// determine size of element list
for (i = 0; editor_elements_info[i].setup_value != NULL; i++)
{
// determine size of element list
for (i = 0; editor_elements_info[i].setup_value != NULL; i++)
{
- boolean found_inactive_cascade = FALSE;
-
if (*editor_elements_info[i].setup_value)
{
if (*editor_elements_info[i].setup_value)
{
+ boolean found_inactive_cascade = FALSE;
+
if (setup.editor.el_headlines)
{
// required for correct padding of palette headline buttons
if (setup.editor.el_headlines)
{
// required for correct padding of palette headline buttons
@@
-6489,11
+6502,9
@@
static void CreateCounterButtons(void)
int graphic;
struct GraphicInfo *gd;
int gd_x1, gd_x2, gd_y1, gd_y2;
int graphic;
struct GraphicInfo *gd;
int gd_x1, gd_x2, gd_y1, gd_y2;
- unsigned int event_mask;
+ unsigned int event_mask
= GD_EVENT_PRESSED | GD_EVENT_REPEATED
;
char infotext[max_infotext_len + 1];
char infotext[max_infotext_len + 1];
- event_mask = GD_EVENT_PRESSED | GD_EVENT_REPEATED;
-
if (i == ED_COUNTER_ID_SELECT_LEVEL)
{
graphic = (j == 0 ?
if (i == ED_COUNTER_ID_SELECT_LEVEL)
{
graphic = (j == 0 ?
@@
-6633,7
+6644,6
@@
static void CreateDrawingAreas(void)
for (i = 0; i < ED_NUM_DRAWING_AREAS; i++)
{
struct GadgetInfo *gi;
for (i = 0; i < ED_NUM_DRAWING_AREAS; i++)
{
struct GadgetInfo *gi;
- unsigned int event_mask;
int id = drawingarea_info[i].gadget_id;
int x = SX + ED_AREA_SETTINGS_X(drawingarea_info[i]);
int y = SY + ED_AREA_SETTINGS_Y(drawingarea_info[i]);
int id = drawingarea_info[i].gadget_id;
int x = SX + ED_AREA_SETTINGS_X(drawingarea_info[i]);
int y = SY + ED_AREA_SETTINGS_Y(drawingarea_info[i]);
@@
-6641,8
+6651,7
@@
static void CreateDrawingAreas(void)
int area_ysize = drawingarea_info[i].area_ysize;
int item_size = (id == GADGET_ID_DRAWING_LEVEL ?
ed_tilesize : ED_DRAWINGAREA_TILE_SIZE);
int area_ysize = drawingarea_info[i].area_ysize;
int item_size = (id == GADGET_ID_DRAWING_LEVEL ?
ed_tilesize : ED_DRAWINGAREA_TILE_SIZE);
-
- event_mask =
+ unsigned int event_mask =
GD_EVENT_PRESSED | GD_EVENT_RELEASED | GD_EVENT_MOVING |
GD_EVENT_OFF_BORDERS | GD_EVENT_PIXEL_PRECISE;
GD_EVENT_PRESSED | GD_EVENT_RELEASED | GD_EVENT_MOVING |
GD_EVENT_OFF_BORDERS | GD_EVENT_PIXEL_PRECISE;
@@
-6689,7
+6698,7
@@
static void CreateTextInputGadgets(void)
int gd_x2 = gd->src_x + gd->active_xoffset;
int gd_y2 = gd->src_y + gd->active_yoffset;
struct GadgetInfo *gi;
int gd_x2 = gd->src_x + gd->active_xoffset;
int gd_y2 = gd->src_y + gd->active_yoffset;
struct GadgetInfo *gi;
- unsigned int event_mask;
+ unsigned int event_mask
= GD_EVENT_TEXT_RETURN | GD_EVENT_TEXT_LEAVING
;
char infotext[MAX_OUTPUT_LINESIZE + 1];
int id = textinput_info[i].gadget_id;
int x, y;
char infotext[MAX_OUTPUT_LINESIZE + 1];
int id = textinput_info[i].gadget_id;
int x, y;
@@
-6716,8
+6725,6
@@
static void CreateTextInputGadgets(void)
y = ED_SETTINGS_Y(textinput_info[i].y);
}
y = ED_SETTINGS_Y(textinput_info[i].y);
}
- event_mask = GD_EVENT_TEXT_RETURN | GD_EVENT_TEXT_LEAVING;
-
sprintf(infotext, "Enter %s", textinput_info[i].infotext);
infotext[max_infotext_len] = '\0';
sprintf(infotext, "Enter %s", textinput_info[i].infotext);
infotext[max_infotext_len] = '\0';
@@
-6760,14
+6767,12
@@
static void CreateTextAreaGadgets(void)
int gd_x2 = gd->src_x + gd->active_xoffset;
int gd_y2 = gd->src_y + gd->active_yoffset;
struct GadgetInfo *gi;
int gd_x2 = gd->src_x + gd->active_xoffset;
int gd_y2 = gd->src_y + gd->active_yoffset;
struct GadgetInfo *gi;
- unsigned int event_mask;
+ unsigned int event_mask
= GD_EVENT_TEXT_LEAVING
;
char infotext[MAX_OUTPUT_LINESIZE + 1];
int id = textarea_info[i].gadget_id;
int area_xsize = textarea_info[i].xsize;
int area_ysize = textarea_info[i].ysize;
char infotext[MAX_OUTPUT_LINESIZE + 1];
int id = textarea_info[i].gadget_id;
int area_xsize = textarea_info[i].xsize;
int area_ysize = textarea_info[i].ysize;
- event_mask = GD_EVENT_TEXT_LEAVING;
-
sprintf(infotext, "Enter %s", textarea_info[i].infotext);
infotext[max_infotext_len] = '\0';
sprintf(infotext, "Enter %s", textarea_info[i].infotext);
infotext[max_infotext_len] = '\0';
@@
-6811,11
+6816,12
@@
static void CreateSelectboxGadgets(void)
int gd_y2 = gd->src_y + gd->active_yoffset;
int selectbox_button_xsize = gd2->width;
struct GadgetInfo *gi;
int gd_y2 = gd->src_y + gd->active_yoffset;
int selectbox_button_xsize = gd2->width;
struct GadgetInfo *gi;
- unsigned int event_mask;
char infotext[MAX_OUTPUT_LINESIZE + 1];
int id = selectbox_info[i].gadget_id;
int x = SX + ED_SETTINGS_X(selectbox_info[i].x);
int y = SY + ED_SETTINGS_Y(selectbox_info[i].y);
char infotext[MAX_OUTPUT_LINESIZE + 1];
int id = selectbox_info[i].gadget_id;
int x = SX + ED_SETTINGS_X(selectbox_info[i].x);
int y = SY + ED_SETTINGS_Y(selectbox_info[i].y);
+ unsigned int event_mask =
+ GD_EVENT_RELEASED | GD_EVENT_TEXT_RETURN | GD_EVENT_TEXT_LEAVING;
if (selectbox_info[i].size == -1) // dynamically determine size
{
if (selectbox_info[i].size == -1) // dynamically determine size
{
@@
-6831,9
+6837,6
@@
static void CreateSelectboxGadgets(void)
selectbox_info[i].size++; // add one character empty space
}
selectbox_info[i].size++; // add one character empty space
}
- event_mask = GD_EVENT_RELEASED |
- GD_EVENT_TEXT_RETURN | GD_EVENT_TEXT_LEAVING;
-
// determine horizontal position to the right of specified gadget
if (selectbox_info[i].gadget_id_align != GADGET_ID_NONE)
x = (right_gadget_border[selectbox_info[i].gadget_id_align] +
// determine horizontal position to the right of specified gadget
if (selectbox_info[i].gadget_id_align != GADGET_ID_NONE)
x = (right_gadget_border[selectbox_info[i].gadget_id_align] +
@@
-6902,7
+6905,7
@@
static void CreateTextbuttonGadgets(void)
int border_xsize = gd->border_size + gd->draw_xoffset;
int border_ysize = gd->border_size;
struct GadgetInfo *gi;
int border_xsize = gd->border_size + gd->draw_xoffset;
int border_ysize = gd->border_size;
struct GadgetInfo *gi;
- unsigned int event_mask;
+ unsigned int event_mask
= GD_EVENT_RELEASED
;
char infotext[MAX_OUTPUT_LINESIZE + 1];
int x = SX + ED_SETTINGS_X(textbutton_info[i].x);
int y = SY + ED_SETTINGS_Y(textbutton_info[i].y);
char infotext[MAX_OUTPUT_LINESIZE + 1];
int x = SX + ED_SETTINGS_X(textbutton_info[i].x);
int y = SY + ED_SETTINGS_Y(textbutton_info[i].y);
@@
-6910,8
+6913,6
@@
static void CreateTextbuttonGadgets(void)
if (textbutton_info[i].size == -1) // dynamically determine size
textbutton_info[i].size = strlen(textbutton_info[i].text);
if (textbutton_info[i].size == -1) // dynamically determine size
textbutton_info[i].size = strlen(textbutton_info[i].text);
- event_mask = GD_EVENT_RELEASED;
-
sprintf(infotext, "%s", textbutton_info[i].infotext);
infotext[max_infotext_len] = '\0';
sprintf(infotext, "%s", textbutton_info[i].infotext);
infotext[max_infotext_len] = '\0';
@@
-6964,7
+6965,6
@@
static void CreateTextbuttonGadgets(void)
static void CreateGraphicbuttonGadgets(void)
{
struct GadgetInfo *gi;
static void CreateGraphicbuttonGadgets(void)
{
struct GadgetInfo *gi;
- unsigned int event_mask;
int i;
// create buttons for scrolling of drawing area and element list
int i;
// create buttons for scrolling of drawing area and element list
@@
-6979,8
+6979,7
@@
static void CreateGraphicbuttonGadgets(void)
int gd_y1 = gd->src_y;
int gd_x2 = gd->src_x + gd->pressed_xoffset;
int gd_y2 = gd->src_y + gd->pressed_yoffset;
int gd_y1 = gd->src_y;
int gd_x2 = gd->src_x + gd->pressed_xoffset;
int gd_y2 = gd->src_y + gd->pressed_yoffset;
-
- event_mask = GD_EVENT_PRESSED | GD_EVENT_REPEATED;
+ unsigned int event_mask = GD_EVENT_PRESSED | GD_EVENT_REPEATED;
// determine horizontal position to the right of specified gadget
if (graphicbutton_info[i].gadget_id_align != GADGET_ID_NONE)
// determine horizontal position to the right of specified gadget
if (graphicbutton_info[i].gadget_id_align != GADGET_ID_NONE)
@@
-7072,7
+7071,7
@@
static void CreateScrollbarGadgets(void)
int gd_y2 = gd->src_y + gd->pressed_yoffset;
struct GadgetInfo *gi;
int items_max, items_visible, item_position;
int gd_y2 = gd->src_y + gd->pressed_yoffset;
struct GadgetInfo *gi;
int items_max, items_visible, item_position;
- unsigned int event_mask;
+ unsigned int event_mask
= GD_EVENT_MOVING | GD_EVENT_OFF_BORDERS
;
if (i == ED_SCROLLBAR_ID_LIST_VERTICAL)
{
if (i == ED_SCROLLBAR_ID_LIST_VERTICAL)
{
@@
-7096,8
+7095,6
@@
static void CreateScrollbarGadgets(void)
}
}
}
}
- event_mask = GD_EVENT_MOVING | GD_EVENT_OFF_BORDERS;
-
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_CUSTOM_TYPE_ID, i,
GDI_IMAGE_ID, graphic,
gi = CreateGadget(GDI_CUSTOM_ID, id,
GDI_CUSTOM_TYPE_ID, i,
GDI_IMAGE_ID, graphic,
@@
-7133,11
+7130,8
@@
static void CreateScrollbarGadgets(void)
static void CreateCheckbuttonGadgets(void)
{
struct GadgetInfo *gi;
static void CreateCheckbuttonGadgets(void)
{
struct GadgetInfo *gi;
- unsigned int event_mask;
int i;
int i;
- event_mask = GD_EVENT_PRESSED;
-
for (i = 0; i < ED_NUM_CHECKBUTTONS; i++)
{
int id = checkbutton_info[i].gadget_id;
for (i = 0; i < ED_NUM_CHECKBUTTONS; i++)
{
int id = checkbutton_info[i].gadget_id;
@@
-7154,6
+7148,7
@@
static void CreateCheckbuttonGadgets(void)
int gd_y2a = gd->src_y + gd->active_yoffset + gd->pressed_yoffset;
int x = SX + ED_SETTINGS_X(checkbutton_info[i].x);
int y = SY + ED_SETTINGS_Y(checkbutton_info[i].y);
int gd_y2a = gd->src_y + gd->active_yoffset + gd->pressed_yoffset;
int x = SX + ED_SETTINGS_X(checkbutton_info[i].x);
int y = SY + ED_SETTINGS_Y(checkbutton_info[i].y);
+ unsigned int event_mask = GD_EVENT_PRESSED;
// determine horizontal position to the right of specified gadget
if (checkbutton_info[i].gadget_id_align != GADGET_ID_NONE)
// determine horizontal position to the right of specified gadget
if (checkbutton_info[i].gadget_id_align != GADGET_ID_NONE)
@@
-7205,16
+7200,14
@@
static void CreateRadiobuttonGadgets(void)
int gd_x2a = gd->src_x + gd->active_xoffset + gd->pressed_xoffset;
int gd_y2a = gd->src_y + gd->active_yoffset + gd->pressed_yoffset;
struct GadgetInfo *gi;
int gd_x2a = gd->src_x + gd->active_xoffset + gd->pressed_xoffset;
int gd_y2a = gd->src_y + gd->active_yoffset + gd->pressed_yoffset;
struct GadgetInfo *gi;
- unsigned int event_mask;
int i;
int i;
- event_mask = GD_EVENT_PRESSED;
-
for (i = 0; i < ED_NUM_RADIOBUTTONS; i++)
{
int id = radiobutton_info[i].gadget_id;
int x = SX + ED_SETTINGS_X(radiobutton_info[i].x);
int y = SY + ED_SETTINGS_Y(radiobutton_info[i].y);
for (i = 0; i < ED_NUM_RADIOBUTTONS; i++)
{
int id = radiobutton_info[i].gadget_id;
int x = SX + ED_SETTINGS_X(radiobutton_info[i].x);
int y = SY + ED_SETTINGS_Y(radiobutton_info[i].y);
+ unsigned int event_mask = GD_EVENT_PRESSED;
int checked =
(*radiobutton_info[i].value == radiobutton_info[i].checked_value);
int checked =
(*radiobutton_info[i].value == radiobutton_info[i].checked_value);
@@
-9499,7
+9492,7
@@
static void DrawMagicBallContentAreas(void)
DrawText(x, y + 2 * tilesize, "active", font_nr);
}
DrawText(x, y + 2 * tilesize, "active", font_nr);
}
-static void DrawAndroidElementArea(
int element
)
+static void DrawAndroidElementArea(
void
)
{
int id = ED_DRAWING_ID_ANDROID_CONTENT;
int num_elements = level.num_android_clone_elements;
{
int id = ED_DRAWING_ID_ANDROID_CONTENT;
int num_elements = level.num_android_clone_elements;
@@
-9527,7
+9520,7
@@
static void DrawAndroidElementArea(int element)
MapDrawingArea(id);
}
MapDrawingArea(id);
}
-static void DrawGroupElementArea(
int element
)
+static void DrawGroupElementArea(
void
)
{
int id = ED_DRAWING_ID_GROUP_CONTENT;
int num_elements = group_element_info.num_elements;
{
int id = ED_DRAWING_ID_GROUP_CONTENT;
int num_elements = group_element_info.num_elements;
@@
-10066,7
+10059,7
@@
static void DrawPropertiesConfig(void)
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_INITIAL_BALL_ACTIVE);
}
else if (properties_element == EL_EMC_ANDROID)
MapCheckbuttonGadget(ED_CHECKBUTTON_ID_INITIAL_BALL_ACTIVE);
}
else if (properties_element == EL_EMC_ANDROID)
- DrawAndroidElementArea(
properties_element
);
+ DrawAndroidElementArea();
}
if (IS_PLAYER_ELEMENT(properties_element))
}
if (IS_PLAYER_ELEMENT(properties_element))
@@
-10321,7
+10314,7
@@
static void DrawPropertiesConfig(void)
MapTextbuttonGadget(ED_TEXTBUTTON_ID_SAVE_AS_TEMPLATE_1);
// draw drawing area gadgets
MapTextbuttonGadget(ED_TEXTBUTTON_ID_SAVE_AS_TEMPLATE_1);
// draw drawing area gadgets
- DrawGroupElementArea(
properties_element
);
+ DrawGroupElementArea();
// draw text input gadgets
MapTextInputGadget(ED_TEXTINPUT_ID_ELEMENT_NAME);
// draw text input gadgets
MapTextInputGadget(ED_TEXTINPUT_ID_ELEMENT_NAME);
@@
-10438,12
+10431,12
@@
static void DrawEditorElementName(int x, int y, int font_nr)
int font_height = getFontHeight(font_nr);
int max_text_width = SXSIZE - x - ED_ELEMENT_SETTINGS_X(0);
int max_chars_per_line = max_text_width / font_width;
int font_height = getFontHeight(font_nr);
int max_text_width = SXSIZE - x - ED_ELEMENT_SETTINGS_X(0);
int max_chars_per_line = max_text_width / font_width;
- char buffer[max_chars_per_line + 1];
if (strlen(element_name) <= max_chars_per_line)
DrawTextS(x, y, font_nr, element_name);
else
{
if (strlen(element_name) <= max_chars_per_line)
DrawTextS(x, y, font_nr, element_name);
else
{
+ char buffer[max_chars_per_line + 1];
int next_pos = max_chars_per_line;
strncpy(buffer, element_name, max_chars_per_line);
int next_pos = max_chars_per_line;
strncpy(buffer, element_name, max_chars_per_line);
@@
-10830,13
+10823,7
@@
static int getChipFromOpenDirectionNotEmpty(int direction, int element_old)
static int getClosedTube(int x, int y)
{
static int getClosedTube(int x, int y)
{
- static int xy[4][2] =
- {
- { -1, 0 },
- { +1, 0 },
- { 0, -1 },
- { 0, +1 }
- };
+ struct XY *xy = xy_directions;
int element_old = IntelliDrawBuffer[x][y];
int direction_old = getOpenDirectionFromTube(element_old);
int direction_new = MV_NONE;
int element_old = IntelliDrawBuffer[x][y];
int direction_old = getOpenDirectionFromTube(element_old);
int direction_new = MV_NONE;
@@
-10844,8
+10831,8
@@
static int getClosedTube(int x, int y)
for (i = 0; i < NUM_DIRECTIONS; i++)
{
for (i = 0; i < NUM_DIRECTIONS; i++)
{
- int xx = x + xy[i]
[0]
;
- int yy = y + xy[i]
[1]
;
+ int xx = x + xy[i]
.x
;
+ int yy = y + xy[i]
.y
;
int dir = MV_DIR_FROM_BIT(i);
int dir_opposite = MV_DIR_OPPOSITE(dir);
int dir = MV_DIR_FROM_BIT(i);
int dir_opposite = MV_DIR_OPPOSITE(dir);
@@
-10860,13
+10847,7
@@
static int getClosedTube(int x, int y)
static int getClosedBelt(int x, int y)
{
static int getClosedBelt(int x, int y)
{
- static int xy[4][2] =
- {
- { -1, 0 },
- { +1, 0 },
- { 0, -1 },
- { 0, +1 }
- };
+ struct XY *xy = xy_directions;
int element_old = IntelliDrawBuffer[x][y];
int nr = getBeltNrFromBeltElement(element_old);
int direction_old = getOpenDirectionFromBelt(element_old);
int element_old = IntelliDrawBuffer[x][y];
int nr = getBeltNrFromBeltElement(element_old);
int direction_old = getOpenDirectionFromBelt(element_old);
@@
-10875,8
+10856,8
@@
static int getClosedBelt(int x, int y)
for (i = MV_BIT_LEFT; i <= MV_BIT_RIGHT; i++)
{
for (i = MV_BIT_LEFT; i <= MV_BIT_RIGHT; i++)
{
- int xx = x + xy[i]
[0]
;
- int yy = y + xy[i]
[1]
;
+ int xx = x + xy[i]
.x
;
+ int yy = y + xy[i]
.y
;
int dir = MV_DIR_FROM_BIT(i);
int dir_opposite = MV_DIR_OPPOSITE(dir);
int dir = MV_DIR_FROM_BIT(i);
int dir_opposite = MV_DIR_OPPOSITE(dir);
@@
-10891,13
+10872,7
@@
static int getClosedBelt(int x, int y)
static int getClosedPool(int x, int y)
{
static int getClosedPool(int x, int y)
{
- static int xy[4][2] =
- {
- { -1, 0 },
- { +1, 0 },
- { 0, -1 },
- { 0, +1 }
- };
+ struct XY *xy = xy_directions;
int element_old = IntelliDrawBuffer[x][y];
int direction_old = getOpenDirectionFromPool(element_old);
int direction_new = MV_NONE;
int element_old = IntelliDrawBuffer[x][y];
int direction_old = getOpenDirectionFromPool(element_old);
int direction_new = MV_NONE;
@@
-10905,8
+10880,8
@@
static int getClosedPool(int x, int y)
for (i = 0; i < NUM_DIRECTIONS; i++)
{
for (i = 0; i < NUM_DIRECTIONS; i++)
{
- int xx = x + xy[i]
[0]
;
- int yy = y + xy[i]
[1]
;
+ int xx = x + xy[i]
.x
;
+ int yy = y + xy[i]
.y
;
int dir = MV_DIR_FROM_BIT(i);
int dir_opposite = MV_DIR_OPPOSITE(dir);
int dir = MV_DIR_FROM_BIT(i);
int dir_opposite = MV_DIR_OPPOSITE(dir);
@@
-10922,13
+10897,7
@@
static int getClosedPool(int x, int y)
static int getClosedPillar(int x, int y)
{
static int getClosedPillar(int x, int y)
{
- static int xy[4][2] =
- {
- { -1, 0 },
- { +1, 0 },
- { 0, -1 },
- { 0, +1 }
- };
+ struct XY *xy = xy_directions;
int element_old = IntelliDrawBuffer[x][y];
int direction_old = getOpenDirectionFromPillar(element_old);
int direction_new = MV_NONE;
int element_old = IntelliDrawBuffer[x][y];
int direction_old = getOpenDirectionFromPillar(element_old);
int direction_new = MV_NONE;
@@
-10936,8
+10905,8
@@
static int getClosedPillar(int x, int y)
for (i = MV_BIT_UP; i <= MV_BIT_DOWN; i++)
{
for (i = MV_BIT_UP; i <= MV_BIT_DOWN; i++)
{
- int xx = x + xy[i]
[0]
;
- int yy = y + xy[i]
[1]
;
+ int xx = x + xy[i]
.x
;
+ int yy = y + xy[i]
.y
;
int dir = MV_DIR_FROM_BIT(i);
int dir_opposite = MV_DIR_OPPOSITE(dir);
int dir = MV_DIR_FROM_BIT(i);
int dir_opposite = MV_DIR_OPPOSITE(dir);
@@
-10952,13
+10921,7
@@
static int getClosedPillar(int x, int y)
static int getClosedSteel2(int x, int y)
{
static int getClosedSteel2(int x, int y)
{
- static int xy[4][2] =
- {
- { -1, 0 },
- { +1, 0 },
- { 0, -1 },
- { 0, +1 }
- };
+ struct XY *xy = xy_directions;
int element_old = IntelliDrawBuffer[x][y];
int direction_old = getOpenDirectionFromSteel2(element_old);
int direction_new = MV_NONE;
int element_old = IntelliDrawBuffer[x][y];
int direction_old = getOpenDirectionFromSteel2(element_old);
int direction_new = MV_NONE;
@@
-10966,8
+10929,8
@@
static int getClosedSteel2(int x, int y)
for (i = 0; i < NUM_DIRECTIONS; i++)
{
for (i = 0; i < NUM_DIRECTIONS; i++)
{
- int xx = x + xy[i]
[0]
;
- int yy = y + xy[i]
[1]
;
+ int xx = x + xy[i]
.x
;
+ int yy = y + xy[i]
.y
;
int dir = MV_DIR_FROM_BIT(i);
int dir_opposite = MV_DIR_OPPOSITE(dir);
int dir = MV_DIR_FROM_BIT(i);
int dir_opposite = MV_DIR_OPPOSITE(dir);
@@
-10982,13
+10945,7
@@
static int getClosedSteel2(int x, int y)
static int getClosedChip(int x, int y)
{
static int getClosedChip(int x, int y)
{
- static int xy[4][2] =
- {
- { -1, 0 },
- { +1, 0 },
- { 0, -1 },
- { 0, +1 }
- };
+ struct XY *xy = xy_directions;
int element_old = IntelliDrawBuffer[x][y];
int direction_old = getOpenDirectionFromChip(element_old);
int direction_new = MV_NONE;
int element_old = IntelliDrawBuffer[x][y];
int direction_old = getOpenDirectionFromChip(element_old);
int direction_new = MV_NONE;
@@
-10996,8
+10953,8
@@
static int getClosedChip(int x, int y)
for (i = 0; i < NUM_DIRECTIONS; i++)
{
for (i = 0; i < NUM_DIRECTIONS; i++)
{
- int xx = x + xy[i]
[0]
;
- int yy = y + xy[i]
[1]
;
+ int xx = x + xy[i]
.x
;
+ int yy = y + xy[i]
.y
;
int dir = MV_DIR_FROM_BIT(i);
int dir_opposite = MV_DIR_OPPOSITE(dir);
int dir = MV_DIR_FROM_BIT(i);
int dir_opposite = MV_DIR_OPPOSITE(dir);
@@
-11080,13
+11037,7
@@
static void MergeAndCloseNeighbourElements(int x1, int y1, int *element1,
static void SetElementIntelliDraw(int x, int y, int new_element,
boolean change_level, int button)
{
static void SetElementIntelliDraw(int x, int y, int new_element,
boolean change_level, int button)
{
- static int xy[4][2] =
- {
- { -1, 0 },
- { +1, 0 },
- { 0, -1 },
- { 0, +1 }
- };
+ struct XY *xy = xy_directions;
static int last_x = -1;
static int last_y = -1;
static int last_x = -1;
static int last_y = -1;
@@
-11112,8
+11063,8
@@
static void SetElementIntelliDraw(int x, int y, int new_element,
for (i = 0; i < NUM_DIRECTIONS; i++)
{
for (i = 0; i < NUM_DIRECTIONS; i++)
{
- int xx = x + xy[i]
[0]
;
- int yy = y + xy[i]
[1]
;
+ int xx = x + xy[i]
.x
;
+ int yy = y + xy[i]
.y
;
if (last_x == xx && last_y == yy && IN_LEV_FIELD(last_x, last_y) &&
IS_TUBE(IntelliDrawBuffer[last_x][last_y]))
if (last_x == xx && last_y == yy && IN_LEV_FIELD(last_x, last_y) &&
IS_TUBE(IntelliDrawBuffer[last_x][last_y]))
@@
-11150,8
+11101,8
@@
static void SetElementIntelliDraw(int x, int y, int new_element,
for (i = MV_BIT_LEFT; i <= MV_BIT_RIGHT; i++)
{
for (i = MV_BIT_LEFT; i <= MV_BIT_RIGHT; i++)
{
- int xx = x + xy[i]
[0]
;
- int yy = y + xy[i]
[1]
;
+ int xx = x + xy[i]
.x
;
+ int yy = y + xy[i]
.y
;
if (last_x == xx && last_y == yy && IN_LEV_FIELD(last_x, last_y) &&
IS_BELT(IntelliDrawBuffer[last_x][last_y]))
if (last_x == xx && last_y == yy && IN_LEV_FIELD(last_x, last_y) &&
IS_BELT(IntelliDrawBuffer[last_x][last_y]))
@@
-11188,8
+11139,8
@@
static void SetElementIntelliDraw(int x, int y, int new_element,
for (i = 0; i < NUM_DIRECTIONS; i++)
{
for (i = 0; i < NUM_DIRECTIONS; i++)
{
- int xx = x + xy[i]
[0]
;
- int yy = y + xy[i]
[1]
;
+ int xx = x + xy[i]
.x
;
+ int yy = y + xy[i]
.y
;
if (last_x == xx && last_y == yy && IN_LEV_FIELD(last_x, last_y) &&
IS_ACID_POOL_OR_ACID(IntelliDrawBuffer[last_x][last_y]))
if (last_x == xx && last_y == yy && IN_LEV_FIELD(last_x, last_y) &&
IS_ACID_POOL_OR_ACID(IntelliDrawBuffer[last_x][last_y]))
@@
-11231,8
+11182,8
@@
static void SetElementIntelliDraw(int x, int y, int new_element,
for (i = MV_BIT_UP; i <= MV_BIT_DOWN; i++)
{
for (i = MV_BIT_UP; i <= MV_BIT_DOWN; i++)
{
- int xx = x + xy[i]
[0]
;
- int yy = y + xy[i]
[1]
;
+ int xx = x + xy[i]
.x
;
+ int yy = y + xy[i]
.y
;
if (last_x == xx && last_y == yy && IN_LEV_FIELD(last_x, last_y) &&
IS_EMC_PILLAR(IntelliDrawBuffer[last_x][last_y]))
if (last_x == xx && last_y == yy && IN_LEV_FIELD(last_x, last_y) &&
IS_EMC_PILLAR(IntelliDrawBuffer[last_x][last_y]))
@@
-11268,8
+11219,8
@@
static void SetElementIntelliDraw(int x, int y, int new_element,
for (i = 0; i < NUM_DIRECTIONS; i++)
{
for (i = 0; i < NUM_DIRECTIONS; i++)
{
- int xx = x + xy[i]
[0]
;
- int yy = y + xy[i]
[1]
;
+ int xx = x + xy[i]
.x
;
+ int yy = y + xy[i]
.y
;
if (last_x == xx && last_y == yy && IN_LEV_FIELD(last_x, last_y) &&
IS_DC_STEELWALL_2(IntelliDrawBuffer[last_x][last_y]))
if (last_x == xx && last_y == yy && IN_LEV_FIELD(last_x, last_y) &&
IS_DC_STEELWALL_2(IntelliDrawBuffer[last_x][last_y]))
@@
-11303,8
+11254,8
@@
static void SetElementIntelliDraw(int x, int y, int new_element,
for (i = 0; i < NUM_DIRECTIONS; i++)
{
for (i = 0; i < NUM_DIRECTIONS; i++)
{
- int xx = x + xy[i]
[0]
;
- int yy = y + xy[i]
[1]
;
+ int xx = x + xy[i]
.x
;
+ int yy = y + xy[i]
.y
;
if (last_x == xx && last_y == yy && IN_LEV_FIELD(last_x, last_y) &&
IS_SP_CHIP(IntelliDrawBuffer[last_x][last_y]))
if (last_x == xx && last_y == yy && IN_LEV_FIELD(last_x, last_y) &&
IS_SP_CHIP(IntelliDrawBuffer[last_x][last_y]))
@@
-11364,8
+11315,8
@@
static void SetElementIntelliDraw(int x, int y, int new_element,
for (i = 0; i < NUM_DIRECTIONS; i++)
{
for (i = 0; i < NUM_DIRECTIONS; i++)
{
- int xx = x + xy[i]
[0]
;
- int yy = y + xy[i]
[1]
;
+ int xx = x + xy[i]
.x
;
+ int yy = y + xy[i]
.y
;
if (last_x == xx && last_y == yy && IN_LEV_FIELD(last_x, last_y) &&
IS_IN_GROUP_EL(IntelliDrawBuffer[last_x][last_y], new_element))
if (last_x == xx && last_y == yy && IN_LEV_FIELD(last_x, last_y) &&
IS_IN_GROUP_EL(IntelliDrawBuffer[last_x][last_y], new_element))
@@
-12650,7
+12601,7
@@
static int DrawLevelText(int sx, int sy, char letter, int mode)
static int start_sx;
static int last_sx, last_sy;
static boolean typing = FALSE;
static int start_sx;
static int last_sx, last_sy;
static boolean typing = FALSE;
- int letter_element
= EL_CHAR_ASCII0 + letter
;
+ int letter_element;
int lx = 0, ly = 0;
// map lower case letters to upper case and convert special characters
int lx = 0, ly = 0;
// map lower case letters to upper case and convert special characters
@@
-12953,8
+12904,6
@@
static void CopyLevelTemplateToUserLevelSet(char *levelset_subdir)
static void HandleDrawingAreas(struct GadgetInfo *gi)
{
static boolean started_inside_drawing_area = FALSE;
static void HandleDrawingAreas(struct GadgetInfo *gi)
{
static boolean started_inside_drawing_area = FALSE;
- static int last_sx = -1, last_sy = -1;
- static int last_sx2 = -1, last_sy2 = -1;
int id = gi->custom_id;
int type_id = gi->custom_type_id;
boolean button_press_event;
int id = gi->custom_id;
int type_id = gi->custom_type_id;
boolean button_press_event;
@@
-12974,8
+12923,6
@@
static void HandleDrawingAreas(struct GadgetInfo *gi)
int dx = sx2 % 2;
int dy = sy2 % 2;
int lx = 0, ly = 0;
int dx = sx2 % 2;
int dy = sy2 % 2;
int lx = 0, ly = 0;
- int min_lx = 0, min_ly = 0;
- int max_lx = lev_fieldx - 1, max_ly = lev_fieldy - 1;
int x, y;
button_press_event = (gi->event.type == GD_EVENT_PRESSED);
int x, y;
button_press_event = (gi->event.type == GD_EVENT_PRESSED);
@@
-12987,6
+12934,9
@@
static void HandleDrawingAreas(struct GadgetInfo *gi)
if (draw_level)
{
if (draw_level)
{
+ int min_lx = 0, min_ly = 0;
+ int max_lx = lev_fieldx - 1, max_ly = lev_fieldy - 1;
+
// get positions inside level field
lx = sx + level_xpos;
ly = sy + level_ypos;
// get positions inside level field
lx = sx + level_xpos;
ly = sy + level_ypos;
@@
-13015,15
+12965,12
@@
static void HandleDrawingAreas(struct GadgetInfo *gi)
sy2 = sy * 2 + dy;
}
sy2 = sy * 2 + dy;
}
- if (button_release_event)
- {
- last_sx = -1;
- last_sy = -1;
- last_sx2 = -1;
- last_sy2 = -1;
- }
- else if (!button_press_event)
+ if (!button_press_event && !button_release_event)
{
{
+ static int last_sx = -1;
+ static int last_sy = -1;
+ static int last_sx2 = -1;
+ static int last_sy2 = -1;
int old_element = (IN_LEV_FIELD(lx, ly) ? Tile[lx][ly] : EL_UNDEFINED);
boolean hires_drawing = (level.game_engine_type == GAME_ENGINE_TYPE_MM &&
isHiresTileElement(old_element) &&
int old_element = (IN_LEV_FIELD(lx, ly) ? Tile[lx][ly] : EL_UNDEFINED);
boolean hires_drawing = (level.game_engine_type == GAME_ENGINE_TYPE_MM &&
isHiresTileElement(old_element) &&
@@
-13033,12
+12980,12
@@
static void HandleDrawingAreas(struct GadgetInfo *gi)
if ((sx == last_sx && sy == last_sy && !hires_drawing) ||
(sx2 == last_sx2 && sy2 == last_sy2))
return;
if ((sx == last_sx && sy == last_sy && !hires_drawing) ||
(sx2 == last_sx2 && sy2 == last_sy2))
return;
- }
- last_sx = sx;
- last_sy = sy;
- last_sx2 = sx2;
- last_sy2 = sy2;
+ last_sx = sx;
+ last_sy = sy;
+ last_sx2 = sx2;
+ last_sy2 = sy2;
+ }
if (button_press_event)
started_inside_drawing_area = inside_drawing_area;
if (button_press_event)
started_inside_drawing_area = inside_drawing_area;
@@
-13049,9
+12996,6
@@
static void HandleDrawingAreas(struct GadgetInfo *gi)
if (!IS_VALID_BUTTON(button))
return;
if (!IS_VALID_BUTTON(button))
return;
- if (!button && !button_release_event)
- return;
-
// handle info callback for each invocation of action callback
gi->callback_info(gi);
// handle info callback for each invocation of action callback
gi->callback_info(gi);
@@
-13087,10
+13031,9
@@
static void HandleDrawingAreas(struct GadgetInfo *gi)
if (edit_mode == ED_MODE_DRAWING && draw_with_brush &&
!inside_drawing_area)
DeleteBrushFromCursor();
if (edit_mode == ED_MODE_DRAWING && draw_with_brush &&
!inside_drawing_area)
DeleteBrushFromCursor();
- }
- if (!button || button_release_event)
break;
break;
+ }
if (draw_with_brush)
{
if (draw_with_brush)
{
@@
-13175,22
+13118,19
@@
static void HandleDrawingAreas(struct GadgetInfo *gi)
if (button_release_event)
CopyLevelToUndoBuffer(UNDO_IMMEDIATE);
if (button_release_event)
CopyLevelToUndoBuffer(UNDO_IMMEDIATE);
- if (button)
- {
- SetDrawModeHiRes(new_element);
+ SetDrawModeHiRes(new_element);
-
if (getDrawModeHiRes())
-
{
-
sx = sx2;
-
sy = sy2;
-
}
+ if (getDrawModeHiRes())
+ {
+ sx = sx2;
+ sy = sy2;
+ }
-
if (!button_press_event)
-
DrawLine(last_sx, last_sy, sx, sy, new_element, TRUE);
+ if (!button_press_event)
+ DrawLine(last_sx, last_sy, sx, sy, new_element, TRUE);
- last_sx = sx;
- last_sy = sy;
- }
+ last_sx = sx;
+ last_sy = sy;
}
break;
}
break;
@@
-13373,11
+13313,11
@@
static void HandleCounterButtons(struct GadgetInfo *gi)
break;
case ED_COUNTER_ID_ANDROID_CONTENT:
break;
case ED_COUNTER_ID_ANDROID_CONTENT:
- DrawAndroidElementArea(
properties_element
);
+ DrawAndroidElementArea();
break;
case ED_COUNTER_ID_GROUP_CONTENT:
break;
case ED_COUNTER_ID_GROUP_CONTENT:
- DrawGroupElementArea(
properties_element
);
+ DrawGroupElementArea();
CopyGroupElementPropertiesToGame(properties_element);
break;
CopyGroupElementPropertiesToGame(properties_element);
break;
@@
-14279,7
+14219,8
@@
static void HandleControlButtons(struct GadgetInfo *gi)
id <= GADGET_ID_ELEMENTLIST_LAST)
{
int element_position = id - GADGET_ID_ELEMENTLIST_FIRST;
id <= GADGET_ID_ELEMENTLIST_LAST)
{
int element_position = id - GADGET_ID_ELEMENTLIST_FIRST;
- int new_element = editor_elements[element_position + element_shift];
+
+ new_element = editor_elements[element_position + element_shift];
if (IS_EDITOR_CASCADE(new_element))
{
if (IS_EDITOR_CASCADE(new_element))
{
@@
-14519,11
+14460,12
@@
static void HandleLevelEditorIdle_Properties(void)
int element_border = graphic_info[IMG_EDITOR_ELEMENT_BORDER].border_size;
int x = editor.settings.element_graphic.x + element_border;
int y = editor.settings.element_graphic.y + element_border;
int element_border = graphic_info[IMG_EDITOR_ELEMENT_BORDER].border_size;
int x = editor.settings.element_graphic.x + element_border;
int y = editor.settings.element_graphic.y + element_border;
- static unsigned int action_delay = 0;
- unsigned int action_delay_value = GameFrameDelay;
+ static DelayCounter action_delay = { 0 };
int i;
int i;
- if (!DelayReached(&action_delay, action_delay_value))
+ action_delay.value = GameFrameDelay;
+
+ if (!DelayReached(&action_delay))
return;
for (i = 0; i < ED_NUM_SELECTBOX; i++)
return;
for (i = 0; i < ED_NUM_SELECTBOX; i++)
@@
-14572,7
+14514,6
@@
static void ClearEditorGadgetInfoText(void)
void PrintEditorGadgetInfoText(struct GadgetInfo *gi)
{
char infotext[MAX_OUTPUT_LINESIZE + 1];
void PrintEditorGadgetInfoText(struct GadgetInfo *gi)
{
char infotext[MAX_OUTPUT_LINESIZE + 1];
- char shortcut[MAX_OUTPUT_LINESIZE + 1];
int max_infotext_len = getMaxInfoTextLength();
if (gi == NULL || strlen(gi->info_text) == 0)
int max_infotext_len = getMaxInfoTextLength();
if (gi == NULL || strlen(gi->info_text) == 0)
@@
-14587,6
+14528,8
@@
void PrintEditorGadgetInfoText(struct GadgetInfo *gi)
if (key)
{
if (key)
{
+ char shortcut[MAX_OUTPUT_LINESIZE + 1];
+
if (gi->custom_id == GADGET_ID_SINGLE_ITEMS)
sprintf(shortcut, " ('.' or '%c')", key);
else if (gi->custom_id == GADGET_ID_PICK_ELEMENT)
if (gi->custom_id == GADGET_ID_SINGLE_ITEMS)
sprintf(shortcut, " ('.' or '%c')", key);
else if (gi->custom_id == GADGET_ID_PICK_ELEMENT)
@@
-14630,7
+14573,6
@@
void HandleEditorGadgetInfoText(void *ptr)
static void HandleDrawingAreaInfo(struct GadgetInfo *gi)
{
static void HandleDrawingAreaInfo(struct GadgetInfo *gi)
{
- static int start_lx, start_ly;
int id = gi->custom_id;
int type_id = gi->custom_type_id;
int sx = gi->event.x;
int id = gi->custom_id;
int type_id = gi->custom_type_id;
int sx = gi->event.x;
@@
-14643,7
+14585,6
@@
static void HandleDrawingAreaInfo(struct GadgetInfo *gi)
int actual_drawing_function = drawing_function;
int max_infotext_len = getMaxInfoTextLength();
char infotext[MAX_OUTPUT_LINESIZE + 1];
int actual_drawing_function = drawing_function;
int max_infotext_len = getMaxInfoTextLength();
char infotext[MAX_OUTPUT_LINESIZE + 1];
- char *text;
infotext[0] = '\0'; // start with empty info text
infotext[0] = '\0'; // start with empty info text
@@
-14684,6
+14625,10
@@
static void HandleDrawingAreaInfo(struct GadgetInfo *gi)
{
if (button_status) // if (gi->state == GD_BUTTON_PRESSED)
{
{
if (button_status) // if (gi->state == GD_BUTTON_PRESSED)
{
+ static int start_lx = 0;
+ static int start_ly = 0;
+ char *text;
+
if (gi->event.type == GD_EVENT_PRESSED)
{
start_lx = lx;
if (gi->event.type == GD_EVENT_PRESSED)
{
start_lx = lx;