X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Feditor.c;h=42ba6bb800c81798fcc0c63181e4e1a6b4a0eab6;hb=c5321d9d36d0a74062651d0352fbbaccbe125eca;hp=de334bb5241a7d9966b7deb138afdd1f8a24c4a5;hpb=5a2237add0a19d1559c0fe20c3f27651a71adf6c;p=rocksndiamonds.git diff --git a/src/editor.c b/src/editor.c index de334bb5..42ba6bb8 100644 --- a/src/editor.c +++ b/src/editor.c @@ -428,31 +428,32 @@ #define GADGET_ID_SELECTBOX_FIRST (GADGET_ID_TEXT_AREA_FIRST + 1) #define GADGET_ID_TIME_OR_STEPS (GADGET_ID_SELECTBOX_FIRST + 0) -#define GADGET_ID_CUSTOM_WALK_TO_ACTION (GADGET_ID_SELECTBOX_FIRST + 1) -#define GADGET_ID_CUSTOM_EXPLOSION_TYPE (GADGET_ID_SELECTBOX_FIRST + 2) -#define GADGET_ID_CUSTOM_DEADLINESS (GADGET_ID_SELECTBOX_FIRST + 3) -#define GADGET_ID_CUSTOM_MOVE_PATTERN (GADGET_ID_SELECTBOX_FIRST + 4) -#define GADGET_ID_CUSTOM_MOVE_DIRECTION (GADGET_ID_SELECTBOX_FIRST + 5) -#define GADGET_ID_CUSTOM_MOVE_STEPSIZE (GADGET_ID_SELECTBOX_FIRST + 6) -#define GADGET_ID_CUSTOM_MOVE_LEAVE_TYPE (GADGET_ID_SELECTBOX_FIRST + 7) -#define GADGET_ID_CUSTOM_SMASH_TARGETS (GADGET_ID_SELECTBOX_FIRST + 8) -#define GADGET_ID_CUSTOM_SLIPPERY_TYPE (GADGET_ID_SELECTBOX_FIRST + 9) -#define GADGET_ID_CUSTOM_ACCESS_TYPE (GADGET_ID_SELECTBOX_FIRST + 10) -#define GADGET_ID_CUSTOM_ACCESS_LAYER (GADGET_ID_SELECTBOX_FIRST + 11) -#define GADGET_ID_CUSTOM_ACCESS_PROTECTED (GADGET_ID_SELECTBOX_FIRST + 12) -#define GADGET_ID_CUSTOM_ACCESS_DIRECTION (GADGET_ID_SELECTBOX_FIRST + 13) -#define GADGET_ID_CHANGE_TIME_UNITS (GADGET_ID_SELECTBOX_FIRST + 14) -#define GADGET_ID_CHANGE_DIRECT_ACTION (GADGET_ID_SELECTBOX_FIRST + 15) -#define GADGET_ID_CHANGE_OTHER_ACTION (GADGET_ID_SELECTBOX_FIRST + 16) -#define GADGET_ID_CHANGE_SIDE (GADGET_ID_SELECTBOX_FIRST + 17) -#define GADGET_ID_CHANGE_PLAYER (GADGET_ID_SELECTBOX_FIRST + 18) -#define GADGET_ID_CHANGE_PAGE (GADGET_ID_SELECTBOX_FIRST + 19) -#define GADGET_ID_CHANGE_REPLACE_WHEN (GADGET_ID_SELECTBOX_FIRST + 20) -#define GADGET_ID_SELECT_CHANGE_PAGE (GADGET_ID_SELECTBOX_FIRST + 21) -#define GADGET_ID_GROUP_CHOICE_MODE (GADGET_ID_SELECTBOX_FIRST + 22) +#define GADGET_ID_GAME_ENGINE_TYPE (GADGET_ID_SELECTBOX_FIRST + 1) +#define GADGET_ID_CUSTOM_WALK_TO_ACTION (GADGET_ID_SELECTBOX_FIRST + 2) +#define GADGET_ID_CUSTOM_EXPLOSION_TYPE (GADGET_ID_SELECTBOX_FIRST + 3) +#define GADGET_ID_CUSTOM_DEADLINESS (GADGET_ID_SELECTBOX_FIRST + 4) +#define GADGET_ID_CUSTOM_MOVE_PATTERN (GADGET_ID_SELECTBOX_FIRST + 5) +#define GADGET_ID_CUSTOM_MOVE_DIRECTION (GADGET_ID_SELECTBOX_FIRST + 6) +#define GADGET_ID_CUSTOM_MOVE_STEPSIZE (GADGET_ID_SELECTBOX_FIRST + 7) +#define GADGET_ID_CUSTOM_MOVE_LEAVE_TYPE (GADGET_ID_SELECTBOX_FIRST + 8) +#define GADGET_ID_CUSTOM_SMASH_TARGETS (GADGET_ID_SELECTBOX_FIRST + 9) +#define GADGET_ID_CUSTOM_SLIPPERY_TYPE (GADGET_ID_SELECTBOX_FIRST + 10) +#define GADGET_ID_CUSTOM_ACCESS_TYPE (GADGET_ID_SELECTBOX_FIRST + 11) +#define GADGET_ID_CUSTOM_ACCESS_LAYER (GADGET_ID_SELECTBOX_FIRST + 12) +#define GADGET_ID_CUSTOM_ACCESS_PROTECTED (GADGET_ID_SELECTBOX_FIRST + 13) +#define GADGET_ID_CUSTOM_ACCESS_DIRECTION (GADGET_ID_SELECTBOX_FIRST + 14) +#define GADGET_ID_CHANGE_TIME_UNITS (GADGET_ID_SELECTBOX_FIRST + 15) +#define GADGET_ID_CHANGE_DIRECT_ACTION (GADGET_ID_SELECTBOX_FIRST + 16) +#define GADGET_ID_CHANGE_OTHER_ACTION (GADGET_ID_SELECTBOX_FIRST + 17) +#define GADGET_ID_CHANGE_SIDE (GADGET_ID_SELECTBOX_FIRST + 18) +#define GADGET_ID_CHANGE_PLAYER (GADGET_ID_SELECTBOX_FIRST + 19) +#define GADGET_ID_CHANGE_PAGE (GADGET_ID_SELECTBOX_FIRST + 20) +#define GADGET_ID_CHANGE_REPLACE_WHEN (GADGET_ID_SELECTBOX_FIRST + 21) +#define GADGET_ID_SELECT_CHANGE_PAGE (GADGET_ID_SELECTBOX_FIRST + 22) +#define GADGET_ID_GROUP_CHOICE_MODE (GADGET_ID_SELECTBOX_FIRST + 23) /* textbutton identifiers */ -#define GADGET_ID_TEXTBUTTON_FIRST (GADGET_ID_SELECTBOX_FIRST + 23) +#define GADGET_ID_TEXTBUTTON_FIRST (GADGET_ID_SELECTBOX_FIRST + 24) #define GADGET_ID_PROPERTIES_INFO (GADGET_ID_TEXTBUTTON_FIRST + 0) #define GADGET_ID_PROPERTIES_CONFIG (GADGET_ID_TEXTBUTTON_FIRST + 1) @@ -628,33 +629,34 @@ /* values for selectbox gadgets */ #define ED_SELECTBOX_ID_TIME_OR_STEPS 0 -#define ED_SELECTBOX_ID_CUSTOM_ACCESS_TYPE 1 -#define ED_SELECTBOX_ID_CUSTOM_ACCESS_LAYER 2 -#define ED_SELECTBOX_ID_CUSTOM_ACCESS_PROTECTED 3 -#define ED_SELECTBOX_ID_CUSTOM_ACCESS_DIRECTION 4 -#define ED_SELECTBOX_ID_CUSTOM_WALK_TO_ACTION 5 -#define ED_SELECTBOX_ID_CUSTOM_MOVE_PATTERN 6 -#define ED_SELECTBOX_ID_CUSTOM_MOVE_DIRECTION 7 -#define ED_SELECTBOX_ID_CUSTOM_MOVE_STEPSIZE 8 -#define ED_SELECTBOX_ID_CUSTOM_MOVE_LEAVE_TYPE 9 -#define ED_SELECTBOX_ID_CUSTOM_SMASH_TARGETS 10 -#define ED_SELECTBOX_ID_CUSTOM_SLIPPERY_TYPE 11 -#define ED_SELECTBOX_ID_CUSTOM_DEADLINESS 12 -#define ED_SELECTBOX_ID_CUSTOM_EXPLOSION_TYPE 13 -#define ED_SELECTBOX_ID_CHANGE_TIME_UNITS 14 -#define ED_SELECTBOX_ID_CHANGE_DIRECT_ACTION 15 -#define ED_SELECTBOX_ID_CHANGE_OTHER_ACTION 16 -#define ED_SELECTBOX_ID_CHANGE_SIDE 17 -#define ED_SELECTBOX_ID_CHANGE_PLAYER 18 -#define ED_SELECTBOX_ID_CHANGE_PAGE 19 -#define ED_SELECTBOX_ID_CHANGE_REPLACE_WHEN 20 -#define ED_SELECTBOX_ID_SELECT_CHANGE_PAGE 21 -#define ED_SELECTBOX_ID_GROUP_CHOICE_MODE 22 - -#define ED_NUM_SELECTBOX 23 +#define ED_SELECTBOX_ID_GAME_ENGINE_TYPE 1 +#define ED_SELECTBOX_ID_CUSTOM_ACCESS_TYPE 2 +#define ED_SELECTBOX_ID_CUSTOM_ACCESS_LAYER 3 +#define ED_SELECTBOX_ID_CUSTOM_ACCESS_PROTECTED 4 +#define ED_SELECTBOX_ID_CUSTOM_ACCESS_DIRECTION 5 +#define ED_SELECTBOX_ID_CUSTOM_WALK_TO_ACTION 6 +#define ED_SELECTBOX_ID_CUSTOM_MOVE_PATTERN 7 +#define ED_SELECTBOX_ID_CUSTOM_MOVE_DIRECTION 8 +#define ED_SELECTBOX_ID_CUSTOM_MOVE_STEPSIZE 9 +#define ED_SELECTBOX_ID_CUSTOM_MOVE_LEAVE_TYPE 10 +#define ED_SELECTBOX_ID_CUSTOM_SMASH_TARGETS 11 +#define ED_SELECTBOX_ID_CUSTOM_SLIPPERY_TYPE 12 +#define ED_SELECTBOX_ID_CUSTOM_DEADLINESS 13 +#define ED_SELECTBOX_ID_CUSTOM_EXPLOSION_TYPE 14 +#define ED_SELECTBOX_ID_CHANGE_TIME_UNITS 15 +#define ED_SELECTBOX_ID_CHANGE_DIRECT_ACTION 16 +#define ED_SELECTBOX_ID_CHANGE_OTHER_ACTION 17 +#define ED_SELECTBOX_ID_CHANGE_SIDE 18 +#define ED_SELECTBOX_ID_CHANGE_PLAYER 19 +#define ED_SELECTBOX_ID_CHANGE_PAGE 20 +#define ED_SELECTBOX_ID_CHANGE_REPLACE_WHEN 21 +#define ED_SELECTBOX_ID_SELECT_CHANGE_PAGE 22 +#define ED_SELECTBOX_ID_GROUP_CHOICE_MODE 23 + +#define ED_NUM_SELECTBOX 24 #define ED_SELECTBOX_ID_LEVEL_FIRST ED_SELECTBOX_ID_TIME_OR_STEPS -#define ED_SELECTBOX_ID_LEVEL_LAST ED_SELECTBOX_ID_TIME_OR_STEPS +#define ED_SELECTBOX_ID_LEVEL_LAST ED_SELECTBOX_ID_GAME_ENGINE_TYPE #define ED_SELECTBOX_ID_CUSTOM1_FIRST ED_SELECTBOX_ID_CUSTOM_ACCESS_TYPE #define ED_SELECTBOX_ID_CUSTOM1_LAST ED_SELECTBOX_ID_CUSTOM_WALK_TO_ACTION @@ -1174,6 +1176,14 @@ static struct ValueTextInfo options_time_or_steps[] = { -1, NULL } }; +static struct ValueTextInfo options_game_engine_type[] = +{ + { GAME_ENGINE_TYPE_RND, "RND" }, + { GAME_ENGINE_TYPE_EM, "EM" }, + + { -1, NULL } +}; + static struct ValueTextInfo options_access_type[] = { { EP_WALKABLE, "walkable" }, @@ -1358,9 +1368,11 @@ static struct ValueTextInfo options_change_direct_action[] = #else { CE_HITTING_SOMETHING, "collision" }, #endif -#if 1 + +#if 0 { CE_BLOCKED, "blocked" }, #endif + { CE_IMPACT, "impact (on something)" }, { CE_SMASHED, "smashed (from above)" }, @@ -1502,6 +1514,14 @@ static struct &level.use_step_counter, NULL, "(0 => no limit)", "time or step limit" }, + { + ED_SETTINGS_XPOS(0), ED_COUNTER_YPOS(6) + 8, + GADGET_ID_GAME_ENGINE_TYPE, GADGET_ID_NONE, + -1, + options_game_engine_type, + &level.game_engine_type, + "game engine:", NULL, "game engine" + }, /* ---------- element settings: configure 1 (custom elements) ----------- */ @@ -2039,6 +2059,8 @@ static struct ED_SETTINGS_XPOS(0), ED_SETTINGS_YPOS(1), GADGET_ID_CUSTOM_USE_GRAPHIC, GADGET_ID_NONE, &custom_element.use_gfx_element, + + /* !!! add separate "use existing element sound" !!! */ #if 0 NULL, "use graphic/sound of element:", "use existing graphic and sound" #else @@ -8995,6 +9017,8 @@ static void HandleControlButtons(struct GadgetInfo *gi) CopyPlayfield(level.field, FieldBackup); CopyPlayfield(Feld, level.field); + CopyNativeLevel_RND_to_Native(&level); + UnmapLevelEditorGadgets(); UndrawSpecialEditorDoor();