projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
rnd-20040111-1-src
[rocksndiamonds.git]
/
src
/
editor.c
diff --git
a/src/editor.c
b/src/editor.c
index f6df5544d2b3a6cd3fbaf72fd53ad52ad1cb2d96..27eba8b6ee71b3694b2dc17d50bbfcdc68a97945 100644
(file)
--- a/
src/editor.c
+++ b/
src/editor.c
@@
-1070,8
+1070,12
@@
static struct ValueTextInfo options_move_pattern[] =
{ MV_ALONG_RIGHT_SIDE, "along right side" },
{ MV_TURNING_LEFT, "turning left" },
{ MV_TURNING_RIGHT, "turning right" },
{ MV_ALONG_RIGHT_SIDE, "along right side" },
{ MV_TURNING_LEFT, "turning left" },
{ MV_TURNING_RIGHT, "turning right" },
+ { MV_TURNING_LEFT_RIGHT, "turning left, right" },
+ { MV_TURNING_RIGHT_LEFT, "turning right, left" },
+ { MV_TURNING_RANDOM, "turning random" },
{ MV_WHEN_PUSHED, "when pushed" },
{ MV_WHEN_PUSHED, "when pushed" },
-#if 0
+ { MV_WHEN_DROPPED, "when dropped" },
+#if 1
{ MV_MAZE_RUNNER, "maze runner style" },
{ MV_MAZE_HUNTER, "maze hunter style" },
#endif
{ MV_MAZE_RUNNER, "maze runner style" },
{ MV_MAZE_HUNTER, "maze hunter style" },
#endif
@@
-1129,6
+1133,7
@@
static struct ValueTextInfo options_deadliness[] =
static struct ValueTextInfo options_consistency[] =
{
{ EP_CAN_EXPLODE_3X3, "can explode 3x3" },
static struct ValueTextInfo options_consistency[] =
{
{ EP_CAN_EXPLODE_3X3, "can explode 3x3" },
+ { EP_CAN_EXPLODE_DYNA, "can explode 3+3" },
{ EP_CAN_EXPLODE_1X1, "can explode 1x1" },
{ EP_INDESTRUCTIBLE, "indestructible" },
{ -1, NULL }
{ EP_CAN_EXPLODE_1X1, "can explode 1x1" },
{ EP_INDESTRUCTIBLE, "indestructible" },
{ -1, NULL }
@@
-1150,11
+1155,11
@@
static struct ValueTextInfo options_change_direct_action[] =
{ CE_LEFT_BY_PLAYER, "left by player ..." },
{ CE_DROPPED_BY_PLAYER, "dropped by player" },
{ CE_SWITCHED, "switched ..." },
{ CE_LEFT_BY_PLAYER, "left by player ..." },
{ CE_DROPPED_BY_PLAYER, "dropped by player" },
{ CE_SWITCHED, "switched ..." },
-#if
0
- { CE_
COLLISION_ACTIVE,
"hitting something ..." },
- { CE_
COLLISION_PASSIVE,
"hit by something ..." },
+#if
1
+ { CE_
HITTING_SOMETHING,
"hitting something ..." },
+ { CE_
HIT_BY_SOMETHING,
"hit by something ..." },
#else
#else
- { CE_
COLLISION_ACTIVE,
"collision ..." },
+ { CE_
HITTING_SOMETHING,
"collision ..." },
#endif
{ CE_IMPACT, "impact (on something)" },
{ CE_SMASHED, "smashed (from above)" },
#endif
{ CE_IMPACT, "impact (on something)" },
{ CE_SMASHED, "smashed (from above)" },
@@
-1172,9
+1177,9
@@
static struct ValueTextInfo options_change_other_action[] =
{ CE_OTHER_GETS_COLLECTED, "player collects" },
{ CE_OTHER_GETS_DROPPED, "player drops" },
{ CE_OTHER_IS_TOUCHING, "touching ..." },
{ CE_OTHER_GETS_COLLECTED, "player collects" },
{ CE_OTHER_GETS_DROPPED, "player drops" },
{ CE_OTHER_IS_TOUCHING, "touching ..." },
-#if
0
- { CE_OTHER_IS_
COLL_ACTIVE,
"hitting ..." },
- { CE_OTHER_
IS_COLL_PASSIVE,
"hit by ..." },
+#if
1
+ { CE_OTHER_IS_
HITTING,
"hitting ..." },
+ { CE_OTHER_
GETS_HIT,
"hit by ..." },
#endif
{ CE_OTHER_IS_SWITCHING, "switch of ..." },
{ CE_OTHER_IS_CHANGING, "change of" },
#endif
{ CE_OTHER_IS_SWITCHING, "switch of ..." },
{ CE_OTHER_IS_CHANGING, "change of" },
@@
-3075,8
+3080,7
@@
static void ReinitializeElementList()
int pos = 0;
int i, j;
int pos = 0;
int i, j;
- if (editor_elements != NULL)
- free(editor_elements);
+ checked_free(editor_elements);
if (!initialized)
{
if (!initialized)
{
@@
-4959,11
+4963,13
@@
static void CopyCustomElementPropertiesToEditor(int element)
(IS_INDESTRUCTIBLE(element) ? EP_INDESTRUCTIBLE :
CAN_EXPLODE_1X1(element) ? EP_CAN_EXPLODE_1X1 :
CAN_EXPLODE_3X3(element) ? EP_CAN_EXPLODE_3X3 :
(IS_INDESTRUCTIBLE(element) ? EP_INDESTRUCTIBLE :
CAN_EXPLODE_1X1(element) ? EP_CAN_EXPLODE_1X1 :
CAN_EXPLODE_3X3(element) ? EP_CAN_EXPLODE_3X3 :
+ CAN_EXPLODE_DYNA(element) ? EP_CAN_EXPLODE_DYNA :
custom_element.consistency);
custom_element_properties[EP_EXPLODE_RESULT] =
(IS_INDESTRUCTIBLE(element) ||
CAN_EXPLODE_1X1(element) ||
custom_element.consistency);
custom_element_properties[EP_EXPLODE_RESULT] =
(IS_INDESTRUCTIBLE(element) ||
CAN_EXPLODE_1X1(element) ||
- CAN_EXPLODE_3X3(element));
+ CAN_EXPLODE_3X3(element) ||
+ CAN_EXPLODE_DYNA(element));
/* special case: sub-settings dependent from main setting */
if (CAN_EXPLODE_BY_FIRE(element))
/* special case: sub-settings dependent from main setting */
if (CAN_EXPLODE_BY_FIRE(element))
@@
-4984,8
+4990,8
@@
static void CopyCustomElementPropertiesToEditor(int element)
HAS_CHANGE_EVENT(element, CE_LEFT_BY_PLAYER) ? CE_LEFT_BY_PLAYER :
HAS_CHANGE_EVENT(element, CE_DROPPED_BY_PLAYER) ? CE_DROPPED_BY_PLAYER :
HAS_CHANGE_EVENT(element, CE_SWITCHED) ? CE_SWITCHED :
HAS_CHANGE_EVENT(element, CE_LEFT_BY_PLAYER) ? CE_LEFT_BY_PLAYER :
HAS_CHANGE_EVENT(element, CE_DROPPED_BY_PLAYER) ? CE_DROPPED_BY_PLAYER :
HAS_CHANGE_EVENT(element, CE_SWITCHED) ? CE_SWITCHED :
- HAS_CHANGE_EVENT(element, CE_
COLLISION_ACTIVE) ? CE_COLLISION_ACTIVE
:
- HAS_CHANGE_EVENT(element, CE_
COLLISION_PASSIVE) ? CE_COLLISION_PASSIVE
:
+ HAS_CHANGE_EVENT(element, CE_
HITTING_SOMETHING) ? CE_HITTING_SOMETHING
:
+ HAS_CHANGE_EVENT(element, CE_
HIT_BY_SOMETHING) ? CE_HIT_BY_SOMETHING
:
HAS_CHANGE_EVENT(element, CE_IMPACT) ? CE_IMPACT :
HAS_CHANGE_EVENT(element, CE_SMASHED) ? CE_SMASHED :
custom_element_change.direct_action);
HAS_CHANGE_EVENT(element, CE_IMPACT) ? CE_IMPACT :
HAS_CHANGE_EVENT(element, CE_SMASHED) ? CE_SMASHED :
custom_element_change.direct_action);
@@
-5001,8
+5007,8
@@
static void CopyCustomElementPropertiesToEditor(int element)
HAS_CHANGE_EVENT(element, CE_OTHER_GETS_COLLECTED) ? CE_OTHER_GETS_COLLECTED :
HAS_CHANGE_EVENT(element, CE_OTHER_GETS_DROPPED) ? CE_OTHER_GETS_DROPPED :
HAS_CHANGE_EVENT(element, CE_OTHER_IS_TOUCHING) ? CE_OTHER_IS_TOUCHING :
HAS_CHANGE_EVENT(element, CE_OTHER_GETS_COLLECTED) ? CE_OTHER_GETS_COLLECTED :
HAS_CHANGE_EVENT(element, CE_OTHER_GETS_DROPPED) ? CE_OTHER_GETS_DROPPED :
HAS_CHANGE_EVENT(element, CE_OTHER_IS_TOUCHING) ? CE_OTHER_IS_TOUCHING :
- HAS_CHANGE_EVENT(element, CE_OTHER_IS_
COLL_ACTIVE) ? CE_OTHER_IS_COLL_ACTIVE
:
- HAS_CHANGE_EVENT(element, CE_OTHER_
IS_COLL_PASSIVE) ? CE_OTHER_IS_COLL_PASSIVE
:
+ HAS_CHANGE_EVENT(element, CE_OTHER_IS_
HITTING) ? CE_OTHER_IS_HITTING
:
+ HAS_CHANGE_EVENT(element, CE_OTHER_
GETS_HIT) ? CE_OTHER_GETS_HIT
:
HAS_CHANGE_EVENT(element, CE_OTHER_IS_SWITCHING) ? CE_OTHER_IS_SWITCHING :
HAS_CHANGE_EVENT(element, CE_OTHER_IS_CHANGING) ? CE_OTHER_IS_CHANGING :
HAS_CHANGE_EVENT(element, CE_OTHER_IS_EXPLODING) ? CE_OTHER_IS_EXPLODING :
HAS_CHANGE_EVENT(element, CE_OTHER_IS_SWITCHING) ? CE_OTHER_IS_SWITCHING :
HAS_CHANGE_EVENT(element, CE_OTHER_IS_CHANGING) ? CE_OTHER_IS_CHANGING :
HAS_CHANGE_EVENT(element, CE_OTHER_IS_EXPLODING) ? CE_OTHER_IS_EXPLODING :
@@
-5077,6
+5083,7
@@
static void CopyCustomElementPropertiesToGame(int element)
custom_element_properties[EP_INDESTRUCTIBLE] = FALSE;
custom_element_properties[EP_CAN_EXPLODE_1X1] = FALSE;
custom_element_properties[EP_CAN_EXPLODE_3X3] = FALSE;
custom_element_properties[EP_INDESTRUCTIBLE] = FALSE;
custom_element_properties[EP_CAN_EXPLODE_1X1] = FALSE;
custom_element_properties[EP_CAN_EXPLODE_3X3] = FALSE;
+ custom_element_properties[EP_CAN_EXPLODE_DYNA] = FALSE;
custom_element_properties[EP_CAN_EXPLODE_BY_FIRE] = FALSE;
custom_element_properties[EP_CAN_EXPLODE_SMASHED] = FALSE;
custom_element_properties[EP_CAN_EXPLODE_IMPACT] = FALSE;
custom_element_properties[EP_CAN_EXPLODE_BY_FIRE] = FALSE;
custom_element_properties[EP_CAN_EXPLODE_SMASHED] = FALSE;
custom_element_properties[EP_CAN_EXPLODE_IMPACT] = FALSE;
@@
-5084,8
+5091,9
@@
static void CopyCustomElementPropertiesToGame(int element)
custom_element_properties[EP_EXPLODE_RESULT];
/* special case: sub-settings dependent from main setting */
custom_element_properties[EP_EXPLODE_RESULT];
/* special case: sub-settings dependent from main setting */
- if (custom_element_properties[EP_CAN_EXPLODE_3X3] ||
- custom_element_properties[EP_CAN_EXPLODE_1X1])
+ if (custom_element_properties[EP_CAN_EXPLODE_1X1] ||
+ custom_element_properties[EP_CAN_EXPLODE_3X3] ||
+ custom_element_properties[EP_CAN_EXPLODE_DYNA])
{
custom_element_properties[EP_CAN_EXPLODE_BY_FIRE] =
custom_element.can_explode_by_fire;
{
custom_element_properties[EP_CAN_EXPLODE_BY_FIRE] =
custom_element.can_explode_by_fire;
@@
-5105,8
+5113,8
@@
static void CopyCustomElementPropertiesToGame(int element)
custom_element_change_events[CE_LEFT_BY_PLAYER] = FALSE;
custom_element_change_events[CE_DROPPED_BY_PLAYER] = FALSE;
custom_element_change_events[CE_SWITCHED] = FALSE;
custom_element_change_events[CE_LEFT_BY_PLAYER] = FALSE;
custom_element_change_events[CE_DROPPED_BY_PLAYER] = FALSE;
custom_element_change_events[CE_SWITCHED] = FALSE;
- custom_element_change_events[CE_
COLLISION_ACTIVE
] = FALSE;
- custom_element_change_events[CE_
COLLISION_PASSIVE
] = FALSE;
+ custom_element_change_events[CE_
HITTING_SOMETHING
] = FALSE;
+ custom_element_change_events[CE_
HIT_BY_SOMETHING
] = FALSE;
custom_element_change_events[CE_IMPACT] = FALSE;
custom_element_change_events[CE_SMASHED] = FALSE;
custom_element_change_events[custom_element_change.direct_action] =
custom_element_change_events[CE_IMPACT] = FALSE;
custom_element_change_events[CE_SMASHED] = FALSE;
custom_element_change_events[custom_element_change.direct_action] =
@@
-5122,8
+5130,8
@@
static void CopyCustomElementPropertiesToGame(int element)
custom_element_change_events[CE_OTHER_GETS_COLLECTED] = FALSE;
custom_element_change_events[CE_OTHER_GETS_DROPPED] = FALSE;
custom_element_change_events[CE_OTHER_IS_TOUCHING] = FALSE;
custom_element_change_events[CE_OTHER_GETS_COLLECTED] = FALSE;
custom_element_change_events[CE_OTHER_GETS_DROPPED] = FALSE;
custom_element_change_events[CE_OTHER_IS_TOUCHING] = FALSE;
- custom_element_change_events[CE_OTHER_IS_
COLL_ACTIVE
] = FALSE;
- custom_element_change_events[CE_OTHER_
IS_COLL_PASSIVE
] = FALSE;
+ custom_element_change_events[CE_OTHER_IS_
HITTING
] = FALSE;
+ custom_element_change_events[CE_OTHER_
GETS_HIT
] = FALSE;
custom_element_change_events[CE_OTHER_IS_SWITCHING] = FALSE;
custom_element_change_events[CE_OTHER_IS_CHANGING] = FALSE;
custom_element_change_events[CE_OTHER_IS_EXPLODING] = FALSE;
custom_element_change_events[CE_OTHER_IS_SWITCHING] = FALSE;
custom_element_change_events[CE_OTHER_IS_CHANGING] = FALSE;
custom_element_change_events[CE_OTHER_IS_EXPLODING] = FALSE;
@@
-5533,8
+5541,7
@@
char *getElementDescriptionFilename(int element)
static char *filename = NULL;
char basename[MAX_FILENAME_LEN];
static char *filename = NULL;
char basename[MAX_FILENAME_LEN];
- if (filename != NULL)
- free(filename);
+ checked_free(filename);
/* 1st try: look for element description file for exactly this element */
sprintf(basename, "%s.txt", element_info[element].token_name);
/* 1st try: look for element description file for exactly this element */
sprintf(basename, "%s.txt", element_info[element].token_name);
@@
-7197,7
+7204,8
@@
static void HandleTextbuttonGadgets(struct GadgetInfo *gi)
}
else if (type_id == ED_TEXTBUTTON_ID_SAVE_AS_TEMPLATE)
{
}
else if (type_id == ED_TEXTBUTTON_ID_SAVE_AS_TEMPLATE)
{
- boolean new_template = (!LevelFileExists(-1));
+ char *template_filename = getDefaultLevelFilename(-1);
+ boolean new_template = !fileExists(template_filename);
if (new_template ||
Request("Save this template and kill the old ?", REQ_ASK))
if (new_template ||
Request("Save this template and kill the old ?", REQ_ASK))
@@
-7285,7
+7293,9
@@
static void HandleCheckbuttons(struct GadgetInfo *gi)
}
else if (type_id == ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE)
{
}
else if (type_id == ED_CHECKBUTTON_ID_CUSTOM_USE_TEMPLATE)
{
- if (level.use_custom_template && !LevelFileExists(-1))
+ char *template_filename = getDefaultLevelFilename(-1);
+
+ if (level.use_custom_template && !fileExists(template_filename))
{
Request("No level template found !", REQ_CONFIRM);
{
Request("No level template found !", REQ_CONFIRM);
@@
-7568,7
+7578,8
@@
static void HandleControlButtons(struct GadgetInfo *gi)
Request("No Level without Gregor Mc Duffin please !", REQ_CONFIRM);
else
{
Request("No Level without Gregor Mc Duffin please !", REQ_CONFIRM);
else
{
- boolean new_level = (!LevelFileExists(level_nr));
+ char *level_filename = getDefaultLevelFilename(level_nr);
+ boolean new_level = !fileExists(level_filename);
if (new_level ||
Request("Save this level and kill the old ?", REQ_ASK))
if (new_level ||
Request("Save this level and kill the old ?", REQ_ASK))