From f1ae7658eb84c2fd2a9c03e8cc8ccbfe63ed75c0 Mon Sep 17 00:00:00 2001 From: Holger Schemel Date: Sun, 11 Jan 2004 17:41:28 +0100 Subject: [PATCH] rnd-20040111-2-src --- src/Makefile | 2 + src/conf_e2g.c | 128 +++++++++++++++++++++++ src/conf_esg.c | 128 +++++++++++++++++++++++ src/conf_gfx.c | 1 + src/conf_gfx.h | 262 ++++++++++++++++++++++++++++------------------ src/conf_grp.c | 278 +++++++++++++++++++++++++++++++++++++++++++++++++ src/conf_grp.h | 54 ++++++++++ src/conftime.h | 2 +- src/editor.c | 228 +++++++++++++++++++++++++++++++++++++--- src/files.c | 14 +++ src/main.h | 11 ++ 11 files changed, 995 insertions(+), 113 deletions(-) create mode 100644 src/conf_grp.c diff --git a/src/Makefile b/src/Makefile index 9ef752b6..976f86bc 100644 --- a/src/Makefile +++ b/src/Makefile @@ -175,6 +175,8 @@ CNFS = conf_gfx.h \ conf_chr.h \ conf_cus.c \ conf_cus.h \ + conf_grp.c \ + conf_grp.h \ conf_e2g.c \ conf_esg.c \ conf_e2s.c \ diff --git a/src/conf_e2g.c b/src/conf_e2g.c index 2a70f7b8..e69031eb 100644 --- a/src/conf_e2g.c +++ b/src/conf_e2g.c @@ -3889,6 +3889,134 @@ element_to_graphic[] = EL_CUSTOM_256, -1, -1, FALSE, IMG_CUSTOM_256 }, + { + EL_GROUP_1, -1, -1, FALSE, + IMG_GROUP_1 + }, + { + EL_GROUP_2, -1, -1, FALSE, + IMG_GROUP_2 + }, + { + EL_GROUP_3, -1, -1, FALSE, + IMG_GROUP_3 + }, + { + EL_GROUP_4, -1, -1, FALSE, + IMG_GROUP_4 + }, + { + EL_GROUP_5, -1, -1, FALSE, + IMG_GROUP_5 + }, + { + EL_GROUP_6, -1, -1, FALSE, + IMG_GROUP_6 + }, + { + EL_GROUP_7, -1, -1, FALSE, + IMG_GROUP_7 + }, + { + EL_GROUP_8, -1, -1, FALSE, + IMG_GROUP_8 + }, + { + EL_GROUP_9, -1, -1, FALSE, + IMG_GROUP_9 + }, + { + EL_GROUP_10, -1, -1, FALSE, + IMG_GROUP_10 + }, + { + EL_GROUP_11, -1, -1, FALSE, + IMG_GROUP_11 + }, + { + EL_GROUP_12, -1, -1, FALSE, + IMG_GROUP_12 + }, + { + EL_GROUP_13, -1, -1, FALSE, + IMG_GROUP_13 + }, + { + EL_GROUP_14, -1, -1, FALSE, + IMG_GROUP_14 + }, + { + EL_GROUP_15, -1, -1, FALSE, + IMG_GROUP_15 + }, + { + EL_GROUP_16, -1, -1, FALSE, + IMG_GROUP_16 + }, + { + EL_GROUP_17, -1, -1, FALSE, + IMG_GROUP_17 + }, + { + EL_GROUP_18, -1, -1, FALSE, + IMG_GROUP_18 + }, + { + EL_GROUP_19, -1, -1, FALSE, + IMG_GROUP_19 + }, + { + EL_GROUP_20, -1, -1, FALSE, + IMG_GROUP_20 + }, + { + EL_GROUP_21, -1, -1, FALSE, + IMG_GROUP_21 + }, + { + EL_GROUP_22, -1, -1, FALSE, + IMG_GROUP_22 + }, + { + EL_GROUP_23, -1, -1, FALSE, + IMG_GROUP_23 + }, + { + EL_GROUP_24, -1, -1, FALSE, + IMG_GROUP_24 + }, + { + EL_GROUP_25, -1, -1, FALSE, + IMG_GROUP_25 + }, + { + EL_GROUP_26, -1, -1, FALSE, + IMG_GROUP_26 + }, + { + EL_GROUP_27, -1, -1, FALSE, + IMG_GROUP_27 + }, + { + EL_GROUP_28, -1, -1, FALSE, + IMG_GROUP_28 + }, + { + EL_GROUP_29, -1, -1, FALSE, + IMG_GROUP_29 + }, + { + EL_GROUP_30, -1, -1, FALSE, + IMG_GROUP_30 + }, + { + EL_GROUP_31, -1, -1, FALSE, + IMG_GROUP_31 + }, + { + EL_GROUP_32, -1, -1, FALSE, + IMG_GROUP_32 + }, { -1, -1, -1, FALSE, -1 diff --git a/src/conf_esg.c b/src/conf_esg.c index ce5fe3c3..23db4e68 100644 --- a/src/conf_esg.c +++ b/src/conf_esg.c @@ -1283,6 +1283,134 @@ element_to_special_graphic[] = EL_CUSTOM_256, GFX_SPECIAL_ARG_EDITOR, IMG_CUSTOM_256_EDITOR }, + { + EL_GROUP_1, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_1_EDITOR + }, + { + EL_GROUP_2, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_2_EDITOR + }, + { + EL_GROUP_3, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_3_EDITOR + }, + { + EL_GROUP_4, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_4_EDITOR + }, + { + EL_GROUP_5, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_5_EDITOR + }, + { + EL_GROUP_6, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_6_EDITOR + }, + { + EL_GROUP_7, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_7_EDITOR + }, + { + EL_GROUP_8, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_8_EDITOR + }, + { + EL_GROUP_9, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_9_EDITOR + }, + { + EL_GROUP_10, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_10_EDITOR + }, + { + EL_GROUP_11, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_11_EDITOR + }, + { + EL_GROUP_12, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_12_EDITOR + }, + { + EL_GROUP_13, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_13_EDITOR + }, + { + EL_GROUP_14, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_14_EDITOR + }, + { + EL_GROUP_15, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_15_EDITOR + }, + { + EL_GROUP_16, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_16_EDITOR + }, + { + EL_GROUP_17, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_17_EDITOR + }, + { + EL_GROUP_18, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_18_EDITOR + }, + { + EL_GROUP_19, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_19_EDITOR + }, + { + EL_GROUP_20, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_20_EDITOR + }, + { + EL_GROUP_21, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_21_EDITOR + }, + { + EL_GROUP_22, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_22_EDITOR + }, + { + EL_GROUP_23, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_23_EDITOR + }, + { + EL_GROUP_24, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_24_EDITOR + }, + { + EL_GROUP_25, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_25_EDITOR + }, + { + EL_GROUP_26, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_26_EDITOR + }, + { + EL_GROUP_27, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_27_EDITOR + }, + { + EL_GROUP_28, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_28_EDITOR + }, + { + EL_GROUP_29, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_29_EDITOR + }, + { + EL_GROUP_30, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_30_EDITOR + }, + { + EL_GROUP_31, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_31_EDITOR + }, + { + EL_GROUP_32, GFX_SPECIAL_ARG_EDITOR, + IMG_GROUP_32_EDITOR + }, { -1, -1, -1 diff --git a/src/conf_gfx.c b/src/conf_gfx.c index 984c0972..398e36f2 100644 --- a/src/conf_gfx.c +++ b/src/conf_gfx.c @@ -3131,6 +3131,7 @@ struct ConfigInfo image_config[] = #include "conf_chr.c" /* include auto-generated data structure definitions */ #include "conf_cus.c" /* include auto-generated data structure definitions */ +#include "conf_grp.c" /* include auto-generated data structure definitions */ /* images not associated to game elements (used for menu screens etc.) */ /* keyword to stop parser: "NO_MORE_ELEMENT_IMAGES" <-- do not change! */ diff --git a/src/conf_gfx.h b/src/conf_gfx.h index 6025aada..c3ea49d0 100644 --- a/src/conf_gfx.h +++ b/src/conf_gfx.h @@ -1233,105 +1233,169 @@ #define IMG_CUSTOM_255_EDITOR 1212 #define IMG_CUSTOM_256 1213 #define IMG_CUSTOM_256_EDITOR 1214 -#define IMG_TOON_1 1215 -#define IMG_TOON_2 1216 -#define IMG_TOON_3 1217 -#define IMG_TOON_4 1218 -#define IMG_TOON_5 1219 -#define IMG_TOON_6 1220 -#define IMG_TOON_7 1221 -#define IMG_TOON_8 1222 -#define IMG_TOON_9 1223 -#define IMG_TOON_10 1224 -#define IMG_TOON_11 1225 -#define IMG_TOON_12 1226 -#define IMG_TOON_13 1227 -#define IMG_TOON_14 1228 -#define IMG_TOON_15 1229 -#define IMG_TOON_16 1230 -#define IMG_TOON_17 1231 -#define IMG_TOON_18 1232 -#define IMG_TOON_19 1233 -#define IMG_TOON_20 1234 -#define IMG_MENU_CALIBRATE_RED 1235 -#define IMG_MENU_CALIBRATE_BLUE 1236 -#define IMG_MENU_CALIBRATE_YELLOW 1237 -#define IMG_MENU_BUTTON 1238 -#define IMG_MENU_BUTTON_ACTIVE 1239 -#define IMG_MENU_BUTTON_LEFT 1240 -#define IMG_MENU_BUTTON_RIGHT 1241 -#define IMG_MENU_BUTTON_UP 1242 -#define IMG_MENU_BUTTON_DOWN 1243 -#define IMG_MENU_BUTTON_LEFT_ACTIVE 1244 -#define IMG_MENU_BUTTON_RIGHT_ACTIVE 1245 -#define IMG_MENU_BUTTON_UP_ACTIVE 1246 -#define IMG_MENU_BUTTON_DOWN_ACTIVE 1247 -#define IMG_MENU_SCROLLBAR 1248 -#define IMG_MENU_SCROLLBAR_ACTIVE 1249 -#define IMG_FONT_INITIAL_1 1250 -#define IMG_FONT_INITIAL_2 1251 -#define IMG_FONT_INITIAL_3 1252 -#define IMG_FONT_INITIAL_4 1253 -#define IMG_FONT_TITLE_1 1254 -#define IMG_FONT_TITLE_1_LEVELS 1255 -#define IMG_FONT_TITLE_2 1256 -#define IMG_FONT_MENU_1 1257 -#define IMG_FONT_MENU_2 1258 -#define IMG_FONT_TEXT_1 1259 -#define IMG_FONT_TEXT_1_LEVELS 1260 -#define IMG_FONT_TEXT_1_PREVIEW 1261 -#define IMG_FONT_TEXT_1_SCORES 1262 -#define IMG_FONT_TEXT_1_ACTIVE_SCORES 1263 -#define IMG_FONT_TEXT_2 1264 -#define IMG_FONT_TEXT_2_LEVELS 1265 -#define IMG_FONT_TEXT_2_PREVIEW 1266 -#define IMG_FONT_TEXT_2_SCORES 1267 -#define IMG_FONT_TEXT_2_ACTIVE_SCORES 1268 -#define IMG_FONT_TEXT_3 1269 -#define IMG_FONT_TEXT_3_LEVELS 1270 -#define IMG_FONT_TEXT_3_PREVIEW 1271 -#define IMG_FONT_TEXT_3_SCORES 1272 -#define IMG_FONT_TEXT_3_ACTIVE_SCORES 1273 -#define IMG_FONT_TEXT_4 1274 -#define IMG_FONT_TEXT_4_LEVELS 1275 -#define IMG_FONT_TEXT_4_SCORES 1276 -#define IMG_FONT_TEXT_4_ACTIVE_SCORES 1277 -#define IMG_FONT_ENVELOPE_1 1278 -#define IMG_FONT_ENVELOPE_2 1279 -#define IMG_FONT_ENVELOPE_3 1280 -#define IMG_FONT_ENVELOPE_4 1281 -#define IMG_FONT_INPUT_1 1282 -#define IMG_FONT_INPUT_1_MAIN 1283 -#define IMG_FONT_INPUT_1_ACTIVE 1284 -#define IMG_FONT_INPUT_1_ACTIVE_MAIN 1285 -#define IMG_FONT_INPUT_1_ACTIVE_SETUP 1286 -#define IMG_FONT_INPUT_2 1287 -#define IMG_FONT_INPUT_2_ACTIVE 1288 -#define IMG_FONT_OPTION_OFF 1289 -#define IMG_FONT_OPTION_ON 1290 -#define IMG_FONT_VALUE_1 1291 -#define IMG_FONT_VALUE_2 1292 -#define IMG_FONT_VALUE_OLD 1293 -#define IMG_FONT_LEVEL_NUMBER 1294 -#define IMG_FONT_TAPE_RECORDER 1295 -#define IMG_FONT_GAME_INFO 1296 -#define IMG_GLOBAL_BORDER 1297 -#define IMG_GLOBAL_DOOR 1298 -#define IMG_EDITOR_ELEMENT_BORDER 1299 -#define IMG_EDITOR_ELEMENT_BORDER_INPUT 1300 -#define IMG_BACKGROUND_ENVELOPE_1 1301 -#define IMG_BACKGROUND_ENVELOPE_2 1302 -#define IMG_BACKGROUND_ENVELOPE_3 1303 -#define IMG_BACKGROUND_ENVELOPE_4 1304 -#define IMG_BACKGROUND 1305 -#define IMG_BACKGROUND_MAIN 1306 -#define IMG_BACKGROUND_LEVELS 1307 -#define IMG_BACKGROUND_SCORES 1308 -#define IMG_BACKGROUND_EDITOR 1309 -#define IMG_BACKGROUND_INFO 1310 -#define IMG_BACKGROUND_SETUP 1311 -#define IMG_BACKGROUND_DOOR 1312 +#define IMG_GROUP_1 1215 +#define IMG_GROUP_1_EDITOR 1216 +#define IMG_GROUP_2 1217 +#define IMG_GROUP_2_EDITOR 1218 +#define IMG_GROUP_3 1219 +#define IMG_GROUP_3_EDITOR 1220 +#define IMG_GROUP_4 1221 +#define IMG_GROUP_4_EDITOR 1222 +#define IMG_GROUP_5 1223 +#define IMG_GROUP_5_EDITOR 1224 +#define IMG_GROUP_6 1225 +#define IMG_GROUP_6_EDITOR 1226 +#define IMG_GROUP_7 1227 +#define IMG_GROUP_7_EDITOR 1228 +#define IMG_GROUP_8 1229 +#define IMG_GROUP_8_EDITOR 1230 +#define IMG_GROUP_9 1231 +#define IMG_GROUP_9_EDITOR 1232 +#define IMG_GROUP_10 1233 +#define IMG_GROUP_10_EDITOR 1234 +#define IMG_GROUP_11 1235 +#define IMG_GROUP_11_EDITOR 1236 +#define IMG_GROUP_12 1237 +#define IMG_GROUP_12_EDITOR 1238 +#define IMG_GROUP_13 1239 +#define IMG_GROUP_13_EDITOR 1240 +#define IMG_GROUP_14 1241 +#define IMG_GROUP_14_EDITOR 1242 +#define IMG_GROUP_15 1243 +#define IMG_GROUP_15_EDITOR 1244 +#define IMG_GROUP_16 1245 +#define IMG_GROUP_16_EDITOR 1246 +#define IMG_GROUP_17 1247 +#define IMG_GROUP_17_EDITOR 1248 +#define IMG_GROUP_18 1249 +#define IMG_GROUP_18_EDITOR 1250 +#define IMG_GROUP_19 1251 +#define IMG_GROUP_19_EDITOR 1252 +#define IMG_GROUP_20 1253 +#define IMG_GROUP_20_EDITOR 1254 +#define IMG_GROUP_21 1255 +#define IMG_GROUP_21_EDITOR 1256 +#define IMG_GROUP_22 1257 +#define IMG_GROUP_22_EDITOR 1258 +#define IMG_GROUP_23 1259 +#define IMG_GROUP_23_EDITOR 1260 +#define IMG_GROUP_24 1261 +#define IMG_GROUP_24_EDITOR 1262 +#define IMG_GROUP_25 1263 +#define IMG_GROUP_25_EDITOR 1264 +#define IMG_GROUP_26 1265 +#define IMG_GROUP_26_EDITOR 1266 +#define IMG_GROUP_27 1267 +#define IMG_GROUP_27_EDITOR 1268 +#define IMG_GROUP_28 1269 +#define IMG_GROUP_28_EDITOR 1270 +#define IMG_GROUP_29 1271 +#define IMG_GROUP_29_EDITOR 1272 +#define IMG_GROUP_30 1273 +#define IMG_GROUP_30_EDITOR 1274 +#define IMG_GROUP_31 1275 +#define IMG_GROUP_31_EDITOR 1276 +#define IMG_GROUP_32 1277 +#define IMG_GROUP_32_EDITOR 1278 +#define IMG_TOON_1 1279 +#define IMG_TOON_2 1280 +#define IMG_TOON_3 1281 +#define IMG_TOON_4 1282 +#define IMG_TOON_5 1283 +#define IMG_TOON_6 1284 +#define IMG_TOON_7 1285 +#define IMG_TOON_8 1286 +#define IMG_TOON_9 1287 +#define IMG_TOON_10 1288 +#define IMG_TOON_11 1289 +#define IMG_TOON_12 1290 +#define IMG_TOON_13 1291 +#define IMG_TOON_14 1292 +#define IMG_TOON_15 1293 +#define IMG_TOON_16 1294 +#define IMG_TOON_17 1295 +#define IMG_TOON_18 1296 +#define IMG_TOON_19 1297 +#define IMG_TOON_20 1298 +#define IMG_MENU_CALIBRATE_RED 1299 +#define IMG_MENU_CALIBRATE_BLUE 1300 +#define IMG_MENU_CALIBRATE_YELLOW 1301 +#define IMG_MENU_BUTTON 1302 +#define IMG_MENU_BUTTON_ACTIVE 1303 +#define IMG_MENU_BUTTON_LEFT 1304 +#define IMG_MENU_BUTTON_RIGHT 1305 +#define IMG_MENU_BUTTON_UP 1306 +#define IMG_MENU_BUTTON_DOWN 1307 +#define IMG_MENU_BUTTON_LEFT_ACTIVE 1308 +#define IMG_MENU_BUTTON_RIGHT_ACTIVE 1309 +#define IMG_MENU_BUTTON_UP_ACTIVE 1310 +#define IMG_MENU_BUTTON_DOWN_ACTIVE 1311 +#define IMG_MENU_SCROLLBAR 1312 +#define IMG_MENU_SCROLLBAR_ACTIVE 1313 +#define IMG_FONT_INITIAL_1 1314 +#define IMG_FONT_INITIAL_2 1315 +#define IMG_FONT_INITIAL_3 1316 +#define IMG_FONT_INITIAL_4 1317 +#define IMG_FONT_TITLE_1 1318 +#define IMG_FONT_TITLE_1_LEVELS 1319 +#define IMG_FONT_TITLE_2 1320 +#define IMG_FONT_MENU_1 1321 +#define IMG_FONT_MENU_2 1322 +#define IMG_FONT_TEXT_1 1323 +#define IMG_FONT_TEXT_1_LEVELS 1324 +#define IMG_FONT_TEXT_1_PREVIEW 1325 +#define IMG_FONT_TEXT_1_SCORES 1326 +#define IMG_FONT_TEXT_1_ACTIVE_SCORES 1327 +#define IMG_FONT_TEXT_2 1328 +#define IMG_FONT_TEXT_2_LEVELS 1329 +#define IMG_FONT_TEXT_2_PREVIEW 1330 +#define IMG_FONT_TEXT_2_SCORES 1331 +#define IMG_FONT_TEXT_2_ACTIVE_SCORES 1332 +#define IMG_FONT_TEXT_3 1333 +#define IMG_FONT_TEXT_3_LEVELS 1334 +#define IMG_FONT_TEXT_3_PREVIEW 1335 +#define IMG_FONT_TEXT_3_SCORES 1336 +#define IMG_FONT_TEXT_3_ACTIVE_SCORES 1337 +#define IMG_FONT_TEXT_4 1338 +#define IMG_FONT_TEXT_4_LEVELS 1339 +#define IMG_FONT_TEXT_4_SCORES 1340 +#define IMG_FONT_TEXT_4_ACTIVE_SCORES 1341 +#define IMG_FONT_ENVELOPE_1 1342 +#define IMG_FONT_ENVELOPE_2 1343 +#define IMG_FONT_ENVELOPE_3 1344 +#define IMG_FONT_ENVELOPE_4 1345 +#define IMG_FONT_INPUT_1 1346 +#define IMG_FONT_INPUT_1_MAIN 1347 +#define IMG_FONT_INPUT_1_ACTIVE 1348 +#define IMG_FONT_INPUT_1_ACTIVE_MAIN 1349 +#define IMG_FONT_INPUT_1_ACTIVE_SETUP 1350 +#define IMG_FONT_INPUT_2 1351 +#define IMG_FONT_INPUT_2_ACTIVE 1352 +#define IMG_FONT_OPTION_OFF 1353 +#define IMG_FONT_OPTION_ON 1354 +#define IMG_FONT_VALUE_1 1355 +#define IMG_FONT_VALUE_2 1356 +#define IMG_FONT_VALUE_OLD 1357 +#define IMG_FONT_LEVEL_NUMBER 1358 +#define IMG_FONT_TAPE_RECORDER 1359 +#define IMG_FONT_GAME_INFO 1360 +#define IMG_GLOBAL_BORDER 1361 +#define IMG_GLOBAL_DOOR 1362 +#define IMG_EDITOR_ELEMENT_BORDER 1363 +#define IMG_EDITOR_ELEMENT_BORDER_INPUT 1364 +#define IMG_BACKGROUND_ENVELOPE_1 1365 +#define IMG_BACKGROUND_ENVELOPE_2 1366 +#define IMG_BACKGROUND_ENVELOPE_3 1367 +#define IMG_BACKGROUND_ENVELOPE_4 1368 +#define IMG_BACKGROUND 1369 +#define IMG_BACKGROUND_MAIN 1370 +#define IMG_BACKGROUND_LEVELS 1371 +#define IMG_BACKGROUND_SCORES 1372 +#define IMG_BACKGROUND_EDITOR 1373 +#define IMG_BACKGROUND_INFO 1374 +#define IMG_BACKGROUND_SETUP 1375 +#define IMG_BACKGROUND_DOOR 1376 -#define NUM_IMAGE_FILES 1313 +#define NUM_IMAGE_FILES 1377 #endif /* CONF_GFX_H */ diff --git a/src/conf_grp.c b/src/conf_grp.c new file mode 100644 index 00000000..fa80f985 --- /dev/null +++ b/src/conf_grp.c @@ -0,0 +1,278 @@ +/*********************************************************** +* Rocks'n'Diamonds -- McDuffin Strikes Back! * +*----------------------------------------------------------* +* (c) 1995-2002 Artsoft Entertainment * +* Holger Schemel * +* Detmolder Strasse 189 * +* 33604 Bielefeld * +* Germany * +* e-mail: info@artsoft.org * +*----------------------------------------------------------* +* conf_grp.c * +***********************************************************/ + +/* ----- this file was automatically generated -- do not edit by hand ----- */ + +#ifndef CONF_GRP_C +#define CONF_GRP_C + +/* values for graphics configuration (group elements) */ + + { "group_1", "RocksDC.pcx" }, + { "group_1.xpos", "4" }, + { "group_1.ypos", "15" }, + { "group_1.frames", "1" }, + { "group_1.EDITOR", "RocksDC.pcx" }, + { "group_1.EDITOR.xpos", "14" }, + { "group_1.EDITOR.ypos", "15" }, + + { "group_2", "RocksDC.pcx" }, + { "group_2.xpos", "4" }, + { "group_2.ypos", "15" }, + { "group_2.frames", "1" }, + { "group_2.EDITOR", "RocksDC.pcx" }, + { "group_2.EDITOR.xpos", "14" }, + { "group_2.EDITOR.ypos", "15" }, + + { "group_3", "RocksDC.pcx" }, + { "group_3.xpos", "4" }, + { "group_3.ypos", "15" }, + { "group_3.frames", "1" }, + { "group_3.EDITOR", "RocksDC.pcx" }, + { "group_3.EDITOR.xpos", "14" }, + { "group_3.EDITOR.ypos", "15" }, + + { "group_4", "RocksDC.pcx" }, + { "group_4.xpos", "4" }, + { "group_4.ypos", "15" }, + { "group_4.frames", "1" }, + { "group_4.EDITOR", "RocksDC.pcx" }, + { "group_4.EDITOR.xpos", "14" }, + { "group_4.EDITOR.ypos", "15" }, + + { "group_5", "RocksDC.pcx" }, + { "group_5.xpos", "4" }, + { "group_5.ypos", "15" }, + { "group_5.frames", "1" }, + { "group_5.EDITOR", "RocksDC.pcx" }, + { "group_5.EDITOR.xpos", "14" }, + { "group_5.EDITOR.ypos", "15" }, + + { "group_6", "RocksDC.pcx" }, + { "group_6.xpos", "4" }, + { "group_6.ypos", "15" }, + { "group_6.frames", "1" }, + { "group_6.EDITOR", "RocksDC.pcx" }, + { "group_6.EDITOR.xpos", "14" }, + { "group_6.EDITOR.ypos", "15" }, + + { "group_7", "RocksDC.pcx" }, + { "group_7.xpos", "4" }, + { "group_7.ypos", "15" }, + { "group_7.frames", "1" }, + { "group_7.EDITOR", "RocksDC.pcx" }, + { "group_7.EDITOR.xpos", "14" }, + { "group_7.EDITOR.ypos", "15" }, + + { "group_8", "RocksDC.pcx" }, + { "group_8.xpos", "4" }, + { "group_8.ypos", "15" }, + { "group_8.frames", "1" }, + { "group_8.EDITOR", "RocksDC.pcx" }, + { "group_8.EDITOR.xpos", "14" }, + { "group_8.EDITOR.ypos", "15" }, + + { "group_9", "RocksDC.pcx" }, + { "group_9.xpos", "4" }, + { "group_9.ypos", "15" }, + { "group_9.frames", "1" }, + { "group_9.EDITOR", "RocksDC.pcx" }, + { "group_9.EDITOR.xpos", "14" }, + { "group_9.EDITOR.ypos", "15" }, + + { "group_10", "RocksDC.pcx" }, + { "group_10.xpos", "4" }, + { "group_10.ypos", "15" }, + { "group_10.frames", "1" }, + { "group_10.EDITOR", "RocksDC.pcx" }, + { "group_10.EDITOR.xpos", "14" }, + { "group_10.EDITOR.ypos", "15" }, + + { "group_11", "RocksDC.pcx" }, + { "group_11.xpos", "4" }, + { "group_11.ypos", "15" }, + { "group_11.frames", "1" }, + { "group_11.EDITOR", "RocksDC.pcx" }, + { "group_11.EDITOR.xpos", "14" }, + { "group_11.EDITOR.ypos", "15" }, + + { "group_12", "RocksDC.pcx" }, + { "group_12.xpos", "4" }, + { "group_12.ypos", "15" }, + { "group_12.frames", "1" }, + { "group_12.EDITOR", "RocksDC.pcx" }, + { "group_12.EDITOR.xpos", "14" }, + { "group_12.EDITOR.ypos", "15" }, + + { "group_13", "RocksDC.pcx" }, + { "group_13.xpos", "4" }, + { "group_13.ypos", "15" }, + { "group_13.frames", "1" }, + { "group_13.EDITOR", "RocksDC.pcx" }, + { "group_13.EDITOR.xpos", "14" }, + { "group_13.EDITOR.ypos", "15" }, + + { "group_14", "RocksDC.pcx" }, + { "group_14.xpos", "4" }, + { "group_14.ypos", "15" }, + { "group_14.frames", "1" }, + { "group_14.EDITOR", "RocksDC.pcx" }, + { "group_14.EDITOR.xpos", "14" }, + { "group_14.EDITOR.ypos", "15" }, + + { "group_15", "RocksDC.pcx" }, + { "group_15.xpos", "4" }, + { "group_15.ypos", "15" }, + { "group_15.frames", "1" }, + { "group_15.EDITOR", "RocksDC.pcx" }, + { "group_15.EDITOR.xpos", "14" }, + { "group_15.EDITOR.ypos", "15" }, + + { "group_16", "RocksDC.pcx" }, + { "group_16.xpos", "4" }, + { "group_16.ypos", "15" }, + { "group_16.frames", "1" }, + { "group_16.EDITOR", "RocksDC.pcx" }, + { "group_16.EDITOR.xpos", "14" }, + { "group_16.EDITOR.ypos", "15" }, + + { "group_17", "RocksDC.pcx" }, + { "group_17.xpos", "4" }, + { "group_17.ypos", "15" }, + { "group_17.frames", "1" }, + { "group_17.EDITOR", "RocksDC.pcx" }, + { "group_17.EDITOR.xpos", "14" }, + { "group_17.EDITOR.ypos", "15" }, + + { "group_18", "RocksDC.pcx" }, + { "group_18.xpos", "4" }, + { "group_18.ypos", "15" }, + { "group_18.frames", "1" }, + { "group_18.EDITOR", "RocksDC.pcx" }, + { "group_18.EDITOR.xpos", "14" }, + { "group_18.EDITOR.ypos", "15" }, + + { "group_19", "RocksDC.pcx" }, + { "group_19.xpos", "4" }, + { "group_19.ypos", "15" }, + { "group_19.frames", "1" }, + { "group_19.EDITOR", "RocksDC.pcx" }, + { "group_19.EDITOR.xpos", "14" }, + { "group_19.EDITOR.ypos", "15" }, + + { "group_20", "RocksDC.pcx" }, + { "group_20.xpos", "4" }, + { "group_20.ypos", "15" }, + { "group_20.frames", "1" }, + { "group_20.EDITOR", "RocksDC.pcx" }, + { "group_20.EDITOR.xpos", "14" }, + { "group_20.EDITOR.ypos", "15" }, + + { "group_21", "RocksDC.pcx" }, + { "group_21.xpos", "4" }, + { "group_21.ypos", "15" }, + { "group_21.frames", "1" }, + { "group_21.EDITOR", "RocksDC.pcx" }, + { "group_21.EDITOR.xpos", "14" }, + { "group_21.EDITOR.ypos", "15" }, + + { "group_22", "RocksDC.pcx" }, + { "group_22.xpos", "4" }, + { "group_22.ypos", "15" }, + { "group_22.frames", "1" }, + { "group_22.EDITOR", "RocksDC.pcx" }, + { "group_22.EDITOR.xpos", "14" }, + { "group_22.EDITOR.ypos", "15" }, + + { "group_23", "RocksDC.pcx" }, + { "group_23.xpos", "4" }, + { "group_23.ypos", "15" }, + { "group_23.frames", "1" }, + { "group_23.EDITOR", "RocksDC.pcx" }, + { "group_23.EDITOR.xpos", "14" }, + { "group_23.EDITOR.ypos", "15" }, + + { "group_24", "RocksDC.pcx" }, + { "group_24.xpos", "4" }, + { "group_24.ypos", "15" }, + { "group_24.frames", "1" }, + { "group_24.EDITOR", "RocksDC.pcx" }, + { "group_24.EDITOR.xpos", "14" }, + { "group_24.EDITOR.ypos", "15" }, + + { "group_25", "RocksDC.pcx" }, + { "group_25.xpos", "4" }, + { "group_25.ypos", "15" }, + { "group_25.frames", "1" }, + { "group_25.EDITOR", "RocksDC.pcx" }, + { "group_25.EDITOR.xpos", "14" }, + { "group_25.EDITOR.ypos", "15" }, + + { "group_26", "RocksDC.pcx" }, + { "group_26.xpos", "4" }, + { "group_26.ypos", "15" }, + { "group_26.frames", "1" }, + { "group_26.EDITOR", "RocksDC.pcx" }, + { "group_26.EDITOR.xpos", "14" }, + { "group_26.EDITOR.ypos", "15" }, + + { "group_27", "RocksDC.pcx" }, + { "group_27.xpos", "4" }, + { "group_27.ypos", "15" }, + { "group_27.frames", "1" }, + { "group_27.EDITOR", "RocksDC.pcx" }, + { "group_27.EDITOR.xpos", "14" }, + { "group_27.EDITOR.ypos", "15" }, + + { "group_28", "RocksDC.pcx" }, + { "group_28.xpos", "4" }, + { "group_28.ypos", "15" }, + { "group_28.frames", "1" }, + { "group_28.EDITOR", "RocksDC.pcx" }, + { "group_28.EDITOR.xpos", "14" }, + { "group_28.EDITOR.ypos", "15" }, + + { "group_29", "RocksDC.pcx" }, + { "group_29.xpos", "4" }, + { "group_29.ypos", "15" }, + { "group_29.frames", "1" }, + { "group_29.EDITOR", "RocksDC.pcx" }, + { "group_29.EDITOR.xpos", "14" }, + { "group_29.EDITOR.ypos", "15" }, + + { "group_30", "RocksDC.pcx" }, + { "group_30.xpos", "4" }, + { "group_30.ypos", "15" }, + { "group_30.frames", "1" }, + { "group_30.EDITOR", "RocksDC.pcx" }, + { "group_30.EDITOR.xpos", "14" }, + { "group_30.EDITOR.ypos", "15" }, + + { "group_31", "RocksDC.pcx" }, + { "group_31.xpos", "4" }, + { "group_31.ypos", "15" }, + { "group_31.frames", "1" }, + { "group_31.EDITOR", "RocksDC.pcx" }, + { "group_31.EDITOR.xpos", "14" }, + { "group_31.EDITOR.ypos", "15" }, + + { "group_32", "RocksDC.pcx" }, + { "group_32.xpos", "4" }, + { "group_32.ypos", "15" }, + { "group_32.frames", "1" }, + { "group_32.EDITOR", "RocksDC.pcx" }, + { "group_32.EDITOR.xpos", "14" }, + { "group_32.EDITOR.ypos", "15" }, + + +#endif /* CONF_GRP_C */ diff --git a/src/conf_grp.h b/src/conf_grp.h index e69de29b..ef1ca99f 100644 --- a/src/conf_grp.h +++ b/src/conf_grp.h @@ -0,0 +1,54 @@ +/*********************************************************** +* Rocks'n'Diamonds -- McDuffin Strikes Back! * +*----------------------------------------------------------* +* (c) 1995-2002 Artsoft Entertainment * +* Holger Schemel * +* Detmolder Strasse 189 * +* 33604 Bielefeld * +* Germany * +* e-mail: info@artsoft.org * +*----------------------------------------------------------* +* conf_grp.h * +***********************************************************/ + +/* ----- this file was automatically generated -- do not edit by hand ----- */ + +#ifndef CONF_GRP_H +#define CONF_GRP_H + +/* values for elements configuration (group elements) */ + +#define EL_GROUP_1 (EL_GROUP_START + 0) +#define EL_GROUP_2 (EL_GROUP_START + 1) +#define EL_GROUP_3 (EL_GROUP_START + 2) +#define EL_GROUP_4 (EL_GROUP_START + 3) +#define EL_GROUP_5 (EL_GROUP_START + 4) +#define EL_GROUP_6 (EL_GROUP_START + 5) +#define EL_GROUP_7 (EL_GROUP_START + 6) +#define EL_GROUP_8 (EL_GROUP_START + 7) +#define EL_GROUP_9 (EL_GROUP_START + 8) +#define EL_GROUP_10 (EL_GROUP_START + 9) +#define EL_GROUP_11 (EL_GROUP_START + 10) +#define EL_GROUP_12 (EL_GROUP_START + 11) +#define EL_GROUP_13 (EL_GROUP_START + 12) +#define EL_GROUP_14 (EL_GROUP_START + 13) +#define EL_GROUP_15 (EL_GROUP_START + 14) +#define EL_GROUP_16 (EL_GROUP_START + 15) +#define EL_GROUP_17 (EL_GROUP_START + 16) +#define EL_GROUP_18 (EL_GROUP_START + 17) +#define EL_GROUP_19 (EL_GROUP_START + 18) +#define EL_GROUP_20 (EL_GROUP_START + 19) +#define EL_GROUP_21 (EL_GROUP_START + 20) +#define EL_GROUP_22 (EL_GROUP_START + 21) +#define EL_GROUP_23 (EL_GROUP_START + 22) +#define EL_GROUP_24 (EL_GROUP_START + 23) +#define EL_GROUP_25 (EL_GROUP_START + 24) +#define EL_GROUP_26 (EL_GROUP_START + 25) +#define EL_GROUP_27 (EL_GROUP_START + 26) +#define EL_GROUP_28 (EL_GROUP_START + 27) +#define EL_GROUP_29 (EL_GROUP_START + 28) +#define EL_GROUP_30 (EL_GROUP_START + 29) +#define EL_GROUP_31 (EL_GROUP_START + 30) +#define EL_GROUP_32 (EL_GROUP_START + 31) + +#endif /* CONF_GRP_C */ diff --git a/src/conftime.h b/src/conftime.h index b229b8e3..d2c2aa41 100644 --- a/src/conftime.h +++ b/src/conftime.h @@ -1 +1 @@ -#define COMPILE_DATE_STRING "[2004-01-11 01:00]" +#define COMPILE_DATE_STRING "[2004-01-11 17:40]" diff --git a/src/editor.c b/src/editor.c index 27eba8b6..289967ac 100644 --- a/src/editor.c +++ b/src/editor.c @@ -153,6 +153,9 @@ #define ED_AREA_ELEM_CONTENT6_XPOS (29 * MINI_TILEX) #define ED_AREA_ELEM_CONTENT6_YPOS (ED_SETTINGS_YPOS(10) + \ ED_GADGET_DISTANCE - MINI_TILEY) +/* group element content */ +#define ED_AREA_GROUP_CONTENT_XPOS ED_SETTINGS_XPOS(0) +#define ED_AREA_GROUP_CONTENT_YPOS (22 * MINI_TILEY) /* values for random placement background drawing area */ #define ED_AREA_RANDOM_BACKGROUND_YPOS (31 * MINI_TILEY) @@ -375,9 +378,12 @@ #define GADGET_ID_CHANGE_CONT_RND_DOWN (GADGET_ID_COUNTER_FIRST + 57) #define GADGET_ID_CHANGE_CONT_RND_TEXT (GADGET_ID_COUNTER_FIRST + 58) #define GADGET_ID_CHANGE_CONT_RND_UP (GADGET_ID_COUNTER_FIRST + 59) +#define GADGET_ID_GROUP_CONTENT_DOWN (GADGET_ID_COUNTER_FIRST + 60) +#define GADGET_ID_GROUP_CONTENT_TEXT (GADGET_ID_COUNTER_FIRST + 61) +#define GADGET_ID_GROUP_CONTENT_UP (GADGET_ID_COUNTER_FIRST + 62) /* drawing area identifiers */ -#define GADGET_ID_DRAWING_AREA_FIRST (GADGET_ID_COUNTER_FIRST + 60) +#define GADGET_ID_DRAWING_AREA_FIRST (GADGET_ID_COUNTER_FIRST + 63) #define GADGET_ID_DRAWING_LEVEL (GADGET_ID_DRAWING_AREA_FIRST + 0) #define GADGET_ID_ELEMENT_CONTENT_0 (GADGET_ID_DRAWING_AREA_FIRST + 1) @@ -394,10 +400,11 @@ #define GADGET_ID_CUSTOM_CHANGE_TARGET (GADGET_ID_DRAWING_AREA_FIRST + 12) #define GADGET_ID_CUSTOM_CHANGE_CONTENT (GADGET_ID_DRAWING_AREA_FIRST + 13) #define GADGET_ID_CUSTOM_CHANGE_TRIGGER (GADGET_ID_DRAWING_AREA_FIRST + 14) -#define GADGET_ID_RANDOM_BACKGROUND (GADGET_ID_DRAWING_AREA_FIRST + 15) +#define GADGET_ID_GROUP_CONTENT (GADGET_ID_DRAWING_AREA_FIRST + 15) +#define GADGET_ID_RANDOM_BACKGROUND (GADGET_ID_DRAWING_AREA_FIRST + 16) /* text input identifiers */ -#define GADGET_ID_TEXT_INPUT_FIRST (GADGET_ID_DRAWING_AREA_FIRST + 16) +#define GADGET_ID_TEXT_INPUT_FIRST (GADGET_ID_DRAWING_AREA_FIRST + 17) #define GADGET_ID_LEVEL_NAME (GADGET_ID_TEXT_INPUT_FIRST + 0) #define GADGET_ID_LEVEL_AUTHOR (GADGET_ID_TEXT_INPUT_FIRST + 1) @@ -523,11 +530,12 @@ #define ED_COUNTER_ID_PUSH_DELAY_RND 14 #define ED_COUNTER_ID_MOVE_DELAY_FIX 15 #define ED_COUNTER_ID_MOVE_DELAY_RND 16 -#define ED_COUNTER_ID_CHANGE_DELAY_FIX 17 -#define ED_COUNTER_ID_CHANGE_DELAY_RND 18 -#define ED_COUNTER_ID_CHANGE_CONT_RND 19 +#define ED_COUNTER_ID_GROUP_CONTENT 17 +#define ED_COUNTER_ID_CHANGE_DELAY_FIX 18 +#define ED_COUNTER_ID_CHANGE_DELAY_RND 19 +#define ED_COUNTER_ID_CHANGE_CONT_RND 20 -#define ED_NUM_COUNTERBUTTONS 20 +#define ED_NUM_COUNTERBUTTONS 21 #define ED_COUNTER_ID_LEVEL_FIRST ED_COUNTER_ID_LEVEL_XSIZE #define ED_COUNTER_ID_LEVEL_LAST ED_COUNTER_ID_LEVEL_RANDOM @@ -694,9 +702,10 @@ #define ED_DRAWING_ID_CUSTOM_CHANGE_TARGET 12 #define ED_DRAWING_ID_CUSTOM_CHANGE_CONTENT 13 #define ED_DRAWING_ID_CUSTOM_CHANGE_TRIGGER 14 -#define ED_DRAWING_ID_RANDOM_BACKGROUND 15 +#define ED_DRAWING_ID_GROUP_CONTENT 15 +#define ED_DRAWING_ID_RANDOM_BACKGROUND 16 -#define ED_NUM_DRAWING_AREAS 16 +#define ED_NUM_DRAWING_AREAS 17 /* @@ -795,7 +804,9 @@ static boolean stick_element_properties_window = FALSE; static boolean custom_element_properties[NUM_ELEMENT_PROPERTIES]; static boolean custom_element_change_events[NUM_CHANGE_EVENTS]; static struct ElementChangeInfo custom_element_change; +static struct ElementGroupInfo group_element_info; static struct ElementInfo custom_element; +static struct ElementInfo group_element; static struct { @@ -902,7 +913,7 @@ static struct NULL, " ", "height", }, - /* ---------- element settings: configure (custom elements) ------------- */ + /* ---------- element settings: configure (custom elements) -------------- */ { ED_SETTINGS_XPOS(1), ED_SETTINGS_YPOS(3), @@ -953,6 +964,17 @@ static struct NULL, "+random", NULL }, + /* ---------- element settings: configure (group elements) --------------- */ + + { + ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(6), + MIN_ELEMENTS_IN_GROUP, MAX_ELEMENTS_IN_GROUP, + GADGET_ID_GROUP_CONTENT_DOWN, GADGET_ID_GROUP_CONTENT_UP, + GADGET_ID_GROUP_CONTENT_TEXT, GADGET_ID_NONE, + &group_element_info.num_elements, + NULL, NULL, "number of elements in group" + }, + /* ---------- element settings: advanced (custom elements) --------------- */ { @@ -1846,6 +1868,15 @@ static struct NULL, NULL, NULL }, + /* ---------- group element content -------------------------------------- */ + + { + ED_AREA_GROUP_CONTENT_XPOS, ED_AREA_GROUP_CONTENT_YPOS, + MAX_ELEMENTS_IN_GROUP, 1, + GADGET_ID_GROUP_CONTENT, GADGET_ID_NONE, + "content:", NULL, NULL + }, + /* ---------- random background (for random painting) -------------------- */ { @@ -1885,6 +1916,7 @@ static int new_element3 = EL_SAND; static void ModifyEditorCounter(int, int); static void ModifyEditorCounterLimits(int, int, int); static void ModifyEditorSelectbox(int, int); +static void ModifyEditorDrawingArea(int, int, int); static void ModifyEditorElementList(); static void RedrawDrawingElements(); static void DrawDrawingWindow(); @@ -2904,6 +2936,87 @@ static int *editor_el_custom_more_ptr = editor_el_custom_more; static int num_editor_hl_custom_more = SIZEOF_ARRAY_INT(editor_hl_custom_more); static int num_editor_el_custom_more = SIZEOF_ARRAY_INT(editor_el_custom_more); +static int editor_hl_group[] = +{ + EL_CHAR('G'), + EL_CHAR('R'), + EL_CHAR('O'), + EL_CHAR('U'), + + EL_CHAR('P'), + EL_CHAR(' '), + EL_CHAR(' '), + EL_CHAR(' '), + + EL_CHAR('E'), + EL_CHAR('L'), + EL_CHAR('E'), + EL_CHAR('M'), + + EL_CHAR('E'), + EL_CHAR('N'), + EL_CHAR('T'), + EL_CHAR('S'), +}; + +static int editor_el_group[] = +{ + EL_GROUP_START + 0, + EL_GROUP_START + 1, + EL_GROUP_START + 2, + EL_GROUP_START + 3, + + EL_GROUP_START + 4, + EL_GROUP_START + 5, + EL_GROUP_START + 6, + EL_GROUP_START + 7, + + EL_GROUP_START + 8, + EL_GROUP_START + 9, + EL_GROUP_START + 10, + EL_GROUP_START + 11, + + EL_GROUP_START + 12, + EL_GROUP_START + 13, + EL_GROUP_START + 14, + EL_GROUP_START + 15 +}; +static int *editor_hl_group_ptr = editor_hl_group; +static int *editor_el_group_ptr = editor_el_group; +static int num_editor_hl_group = SIZEOF_ARRAY_INT(editor_hl_group); +static int num_editor_el_group = SIZEOF_ARRAY_INT(editor_el_group); + +static int editor_hl_group_more[] = +{ +}; + +static int editor_el_group_more[] = +{ + EL_GROUP_START + 16, + EL_GROUP_START + 17, + EL_GROUP_START + 18, + EL_GROUP_START + 19, + + EL_GROUP_START + 20, + EL_GROUP_START + 21, + EL_GROUP_START + 22, + EL_GROUP_START + 23, + + EL_GROUP_START + 24, + EL_GROUP_START + 25, + EL_GROUP_START + 26, + EL_GROUP_START + 27, + + EL_GROUP_START + 28, + EL_GROUP_START + 29, + EL_GROUP_START + 30, + EL_GROUP_START + 31 +}; +static int *editor_hl_group_more_ptr = editor_hl_group_more; +static int *editor_el_group_more_ptr = editor_el_group_more; +static int num_editor_hl_group_more = SIZEOF_ARRAY_INT(editor_hl_group_more); +static int num_editor_el_group_more = SIZEOF_ARRAY_INT(editor_el_group_more); + static int editor_hl_user_defined[] = { EL_CHAR('U'), @@ -3004,6 +3117,16 @@ editor_elements_info[] = &editor_hl_custom_more_ptr, &num_editor_hl_custom_more, &editor_el_custom_more_ptr, &num_editor_el_custom_more }, + { + &setup.editor.el_custom, + &editor_hl_group_ptr, &num_editor_hl_group, + &editor_el_group_ptr, &num_editor_el_group + }, + { + &setup.editor.el_custom_more, + &editor_hl_group_more_ptr, &num_editor_hl_group_more, + &editor_el_group_more_ptr, &num_editor_el_group_more + }, { &setup.editor.el_user_defined, &editor_hl_user_defined_ptr, &num_editor_hl_user_defined, @@ -3225,8 +3348,8 @@ static void DrawElementBorder(int dest_x, int dest_y, int width, int height, (input ? IMG_EDITOR_ELEMENT_BORDER_INPUT : IMG_EDITOR_ELEMENT_BORDER); Bitmap *src_bitmap; int src_x, src_y; - int num_mini_tilex = width / MINI_TILEX + 1; - int num_mini_tiley = width / MINI_TILEY + 1; + int num_mini_tilex = width / MINI_TILEX + 1; + int num_mini_tiley = height / MINI_TILEY + 1; int x, y; getMiniGraphicSource(border_graphic, &src_bitmap, &src_x, &src_y); @@ -3271,6 +3394,14 @@ static void DrawDrawingArea(int id) else if (id == ED_DRAWING_ID_CUSTOM_CHANGE_TRIGGER) DrawMiniGraphicExt(drawto, gi->x, gi->y, el2edimg(custom_element_change.trigger_element)); + else if (id == ED_DRAWING_ID_GROUP_CONTENT) + { + int nr = group_element_info.num_elements; + + for (x = 0; x < nr; x++) + DrawMiniGraphicExt(drawto, gi->x + x * MINI_TILEX, gi->y, + el2edimg(group_element_info.element[nr])); + } else if (id >= ED_DRAWING_ID_ELEMENT_CONTENT_0 && id <= ED_DRAWING_ID_ELEMENT_CONTENT_7) { @@ -5015,6 +5146,12 @@ static void CopyCustomElementPropertiesToEditor(int element) custom_element_change.other_action); } +static void CopyGroupElementPropertiesToEditor(int element) +{ + group_element = element_info[element]; + group_element_info = *element_info[element].group; +} + static void CopyCustomElementPropertiesToGame(int element) { int i; @@ -5149,6 +5286,15 @@ static void CopyCustomElementPropertiesToGame(int element) custom_element_change = *element_info[element].change; } +static void CopyGroupElementPropertiesToGame(int element) +{ + /* mark that this group element has been modified */ + group_element.modified_settings = TRUE; + + element_info[element] = group_element; + *element_info[element].group = group_element_info; +} + void DrawLevelEd() { CloseDoor(DOOR_CLOSE_ALL); @@ -5340,6 +5486,14 @@ static void ModifyEditorSelectbox(int selectbox_id, int new_value) ModifyGadget(gi, GDI_SELECTBOX_INDEX, new_index_value, GDI_END); } +static void ModifyEditorDrawingArea(int drawingarea_id, int xsize, int ysize) +{ + int gadget_id = drawingarea_info[drawingarea_id].gadget_id; + struct GadgetInfo *gi = level_editor_gadget[gadget_id]; + + ModifyGadget(gi, GDI_AREA_SIZE, xsize, ysize, GDI_END); +} + static void ModifyEditorElementList() { int i; @@ -5506,7 +5660,7 @@ static void DrawElementContentAreas() DrawBackground(SX + drawingarea_info[id].x - MINI_TILEX / 2, SY + drawingarea_info[id].y - MINI_TILEY / 2, 4 * MINI_TILEX, - 4 * MINI_TILEX + ED_GADGET_TEXT_DISTANCE + font_height); + 4 * MINI_TILEY + ED_GADGET_TEXT_DISTANCE + font_height); } } @@ -5515,6 +5669,28 @@ static void DrawElementContentAreas() DrawText(x, y + 2 * MINI_TILEY, "smashed", FONT_TEXT_1); } +static void DrawGroupElementArea(int element) +{ + int num_elements = group_element_info.num_elements; + int id = ED_DRAWING_ID_GROUP_CONTENT; + int sx = SX + drawingarea_info[id].x - MINI_TILEX / 2; + int sy = SY + drawingarea_info[id].y - MINI_TILEY / 2; + int xsize = MAX_ELEMENTS_IN_GROUP; + int ysize = 1; + + if (drawingarea_info[id].text_left != NULL) + sx += getTextWidthForDrawingArea(drawingarea_info[id].text_left); + + UnmapDrawingArea(id); + + ModifyEditorDrawingArea(id, num_elements, 1); + + /* delete content areas in case of reducing number of them */ + DrawBackground(sx, sy, (xsize + 1) * MINI_TILEX, (ysize + 1) * MINI_TILEY); + + MapDrawingArea(id); +} + static void DrawEnvelopeTextArea(int envelope_nr) { int id = ED_TEXTAREA_ID_ENVELOPE_INFO; @@ -5932,6 +6108,7 @@ static boolean checkPropertiesConfig() if (IS_GEM(properties_element) || IS_CUSTOM_ELEMENT(properties_element) || + IS_GROUP_ELEMENT(properties_element) || IS_ENVELOPE(properties_element) || HAS_CONTENT(properties_element)) return TRUE; @@ -6027,6 +6204,18 @@ static void DrawPropertiesConfig() /* draw text input gadgets */ MapTextInputGadget(ED_TEXTINPUT_ID_ELEMENT_NAME); } + + if (IS_GROUP_ELEMENT(properties_element)) + { + /* draw stickybutton gadget */ + i = ED_CHECKBUTTON_ID_STICK_ELEMENT; + checkbutton_info[i].y = ED_SETTINGS_YPOS(0); + MapCheckbuttonGadget(i); + + MapCounterButtons(ED_COUNTER_ID_GROUP_CONTENT); + + DrawGroupElementArea(properties_element); + } } static void DrawPropertiesAdvancedDrawingAreas() @@ -6135,6 +6324,9 @@ static void DrawPropertiesWindow() if (IS_CUSTOM_ELEMENT(properties_element)) CopyCustomElementPropertiesToEditor(properties_element); + if (IS_GROUP_ELEMENT(properties_element)) + CopyGroupElementPropertiesToEditor(properties_element); + UnmapLevelEditorWindowGadgets(); UnmapLevelEditorToolboxDrawingGadgets(); UnmapLevelEditorToolboxCustomGadgets(); @@ -6949,6 +7141,12 @@ static void HandleDrawingAreas(struct GadgetInfo *gi) CopyCustomElementPropertiesToGame(properties_element); } + else if (id == GADGET_ID_GROUP_CONTENT) + { + group_element_info.element[sx] = new_element; + + CopyGroupElementPropertiesToGame(properties_element); + } else if (id == GADGET_ID_RANDOM_BACKGROUND) random_placement_background_element = new_element; else if (id >= GADGET_ID_ELEMENT_CONTENT_0 && @@ -7120,6 +7318,10 @@ static void HandleCounterButtons(struct GadgetInfo *gi) DrawElementContentAreas(); break; + case ED_COUNTER_ID_GROUP_CONTENT: + DrawGroupElementArea(properties_element); + break; + case ED_COUNTER_ID_ENVELOPE_XSIZE: case ED_COUNTER_ID_ENVELOPE_YSIZE: DrawEnvelopeTextArea(-1); diff --git a/src/files.c b/src/files.c index d7182242..955c6973 100644 --- a/src/files.c +++ b/src/files.c @@ -234,6 +234,20 @@ static void setLevelInfoToDefaults(struct LevelInfo *level) element_info[element].modified_settings = FALSE; } + for (i = 0; i < NUM_GROUP_ELEMENTS; i++) + { + int element = EL_GROUP_START + i; + + if (element_info[element].group == NULL) + element_info[element].group = + checked_malloc(sizeof(struct ElementGroupInfo)); + + for (j = 0; j < MAX_ELEMENTS_IN_GROUP; j++) + element_info[element].group->element[j] = EL_EMPTY_SPACE; + + element_info[element].group->num_elements = 1; + } + BorderElement = EL_STEELWALL; level->no_level_file = FALSE; diff --git a/src/main.h b/src/main.h index 2b8c6303..39692e85 100644 --- a/src/main.h +++ b/src/main.h @@ -421,6 +421,8 @@ #define MAX_ENVELOPE_TEXT_LEN (MAX_ENVELOPE_XSIZE * MAX_ENVELOPE_YSIZE) #define MIN_CHANGE_PAGES 1 #define MAX_CHANGE_PAGES 16 +#define MIN_ELEMENTS_IN_GROUP 1 +#define MAX_ELEMENTS_IN_GROUP 16 /* values for elements with content */ #define MIN_ELEMENT_CONTENTS 1 @@ -1459,6 +1461,13 @@ struct ElementChangeInfo int other_action; /* change triggered by other element actions */ }; +struct ElementGroupInfo +{ + int num_elements; /* number of elements in this group */ + + short element[MAX_ELEMENTS_IN_GROUP]; /* list of elements in this group */ +}; + struct ElementInfo { /* ---------- token and description strings ---------- */ @@ -1511,6 +1520,8 @@ struct ElementInfo int num_change_pages; /* actual number of change pages */ int current_change_page; /* currently edited change page */ + struct ElementGroupInfo *group; /* pointer to element group info */ + /* ---------- internal values used at runtime when playing ---------- */ unsigned long change_events; /* bitfield for combined change events */ -- 2.34.1