projects
/
rocksndiamonds.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
added check for custom elements being "next to" player or element
[rocksndiamonds.git]
/
src
/
main.h
diff --git
a/src/main.h
b/src/main.h
index 56998a0530cb33d922709f7dcb17e08caa6858ac..ea915a9ac73cef17e7aabe42a1fff9ee245d2373 100644
(file)
--- a/
src/main.h
+++ b/
src/main.h
@@
-4,7
+4,7
@@
// (c) 1995-2014 by Artsoft Entertainment
// Holger Schemel
// info@artsoft.org
// (c) 1995-2014 by Artsoft Entertainment
// Holger Schemel
// info@artsoft.org
-// http://www.artsoft.org/
+// http
s
://www.artsoft.org/
// ----------------------------------------------------------------------------
// main.h
// ============================================================================
// ----------------------------------------------------------------------------
// main.h
// ============================================================================
@@
-252,11
+252,21
@@
#define CE_VALUE_CHANGES_OF_X 41
#define CE_SCORE_CHANGES 42
#define CE_SCORE_CHANGES_OF_X 43
#define CE_VALUE_CHANGES_OF_X 41
#define CE_SCORE_CHANGES 42
#define CE_SCORE_CHANGES_OF_X 43
+#define CE_CLICKED_BY_MOUSE 44
+#define CE_PRESSED_BY_MOUSE 45
+#define CE_MOUSE_CLICKED_ON_X 46
+#define CE_MOUSE_PRESSED_ON_X 47
+#define CE_NEXT_TO_PLAYER 48
+#define CE_NEXT_TO_X 49
+#define CE_PLAYER_NEXT_TO_X 50
-#define NUM_CHANGE_EVENTS
44
+#define NUM_CHANGE_EVENTS
51
#define NUM_CE_BITFIELDS ((NUM_CHANGE_EVENTS + 31) / 32)
#define NUM_CE_BITFIELDS ((NUM_CHANGE_EVENTS + 31) / 32)
+#define CE_HEADLINE_SPECIAL_EVENTS 250
+#define CE_UNDEFINED 255
+
#define CE_BITMASK_DEFAULT 0
#define CH_EVENT_BITFIELD_NR(e) (e / 32)
#define CE_BITMASK_DEFAULT 0
#define CH_EVENT_BITFIELD_NR(e) (e / 32)
@@
-324,6
+334,11
@@
#define CH_SIDE_TOP_BOTTOM MV_VERTICAL
#define CH_SIDE_ANY MV_ANY_DIRECTION
#define CH_SIDE_TOP_BOTTOM MV_VERTICAL
#define CH_SIDE_ANY MV_ANY_DIRECTION
+#define CH_SIDE_FROM_BUTTON(b) ((b) == MB_LEFTBUTTON ? CH_SIDE_LEFT : \
+ (b) == MB_RIGHTBUTTON ? CH_SIDE_RIGHT : \
+ (b) == MB_MIDDLEBUTTON ? CH_SIDE_TOP_BOTTOM : \
+ CH_SIDE_NONE)
+
// values for change player for custom elements
#define CH_PLAYER_NONE PLAYER_BITS_NONE
#define CH_PLAYER_1 PLAYER_BITS_1
// values for change player for custom elements
#define CH_PLAYER_NONE PLAYER_BITS_NONE
#define CH_PLAYER_1 PLAYER_BITS_1
@@
-366,6
+381,7
@@
#define CA_SET_PLAYER_INVENTORY 18
#define CA_SET_CE_ARTWORK 19
#define CA_SET_LEVEL_RANDOM_SEED 20
#define CA_SET_PLAYER_INVENTORY 18
#define CA_SET_CE_ARTWORK 19
#define CA_SET_LEVEL_RANDOM_SEED 20
+#define CA_MOVE_PLAYER_NEW 21
#define CA_HEADLINE_LEVEL_ACTIONS 250
#define CA_HEADLINE_PLAYER_ACTIONS 251
#define CA_HEADLINE_LEVEL_ACTIONS 250
#define CA_HEADLINE_PLAYER_ACTIONS 251
@@
-583,7
+599,7
@@
#define GFX_CRUMBLED(e) HAS_PROPERTY(GFX_ELEMENT(e), EP_GFX_CRUMBLED)
// macros for pre-defined properties
#define GFX_CRUMBLED(e) HAS_PROPERTY(GFX_ELEMENT(e), EP_GFX_CRUMBLED)
// macros for pre-defined properties
-#define
ELEM_IS_PLAYER(e)
HAS_PROPERTY(e, EP_PLAYER)
+#define
IS_PLAYER_ELEMENT(e)
HAS_PROPERTY(e, EP_PLAYER)
#define CAN_PASS_MAGIC_WALL(e) HAS_PROPERTY(e, EP_CAN_PASS_MAGIC_WALL)
#define CAN_PASS_DC_MAGIC_WALL(e) HAS_PROPERTY(e, EP_CAN_PASS_DC_MAGIC_WALL)
#define IS_SWITCHABLE(e) HAS_PROPERTY(e, EP_SWITCHABLE)
#define CAN_PASS_MAGIC_WALL(e) HAS_PROPERTY(e, EP_CAN_PASS_MAGIC_WALL)
#define CAN_PASS_DC_MAGIC_WALL(e) HAS_PROPERTY(e, EP_CAN_PASS_DC_MAGIC_WALL)
#define IS_SWITCHABLE(e) HAS_PROPERTY(e, EP_SWITCHABLE)
@@
-800,6
+816,9
@@
#define IS_DC_STEELWALL_2(e) ((e) >= EL_DC_STEELWALL_2_LEFT && \
(e) <= EL_DC_STEELWALL_2_SINGLE)
#define IS_DC_STEELWALL_2(e) ((e) >= EL_DC_STEELWALL_2_LEFT && \
(e) <= EL_DC_STEELWALL_2_SINGLE)
+// !!! IMPROVE THIS !!!
+#define IS_EM_ELEMENT(e) (map_element_EM_to_RND_cave(map_element_RND_to_EM_cave(e)) == (e))
+
#define MM_WALL_BASE(e) ((e) & 0xfff0)
#define MM_WALL_BITS(e) ((e) & 0x000f)
#define MM_WALL_BASE(e) ((e) & 0xfff0)
#define MM_WALL_BITS(e) ((e) & 0x000f)
@@
-809,13
+828,13
@@
#if 1
#define TILE_GFX_ELEMENT(x, y) \
(GfxElement[x][y] != EL_UNDEFINED && \
#if 1
#define TILE_GFX_ELEMENT(x, y) \
(GfxElement[x][y] != EL_UNDEFINED && \
-
Feld
[x][y] != EL_EXPLOSION ? \
- GfxElement[x][y] :
Feld
[x][y])
+
Tile
[x][y] != EL_EXPLOSION ? \
+ GfxElement[x][y] :
Tile
[x][y])
#else
#define TILE_GFX_ELEMENT(x, y) \
GFX_ELEMENT(GfxElement[x][y] != EL_UNDEFINED && \
#else
#define TILE_GFX_ELEMENT(x, y) \
GFX_ELEMENT(GfxElement[x][y] != EL_UNDEFINED && \
-
Feld
[x][y] != EL_EXPLOSION ? \
- GfxElement[x][y] :
Feld
[x][y])
+
Tile
[x][y] != EL_EXPLOSION ? \
+ GfxElement[x][y] :
Tile
[x][y])
#endif
// !!! "use sound" deactivated due to problems with level "bug machine" !!!
#endif
// !!! "use sound" deactivated due to problems with level "bug machine" !!!
@@
-834,14
+853,14
@@
(ge == EL_ANY_ELEMENT ? TRUE : \
IS_GROUP_ELEMENT(ge) ? IS_IN_GROUP(e, GROUP_NR(ge)) : (e) == (ge))
(ge == EL_ANY_ELEMENT ? TRUE : \
IS_GROUP_ELEMENT(ge) ? IS_IN_GROUP(e, GROUP_NR(ge)) : (e) == (ge))
-#define IS_PLAYER(x, y) (
ELEM_IS_PLAYER
(StorePlayer[x][y]))
+#define IS_PLAYER(x, y) (
IS_PLAYER_ELEMENT
(StorePlayer[x][y]))
-#define IS_FREE(x, y) (
Feld
[x][y] == EL_EMPTY && !IS_PLAYER(x, y))
-#define IS_FREE_OR_PLAYER(x, y) (
Feld
[x][y] == EL_EMPTY)
+#define IS_FREE(x, y) (
Tile
[x][y] == EL_EMPTY && !IS_PLAYER(x, y))
+#define IS_FREE_OR_PLAYER(x, y) (
Tile
[x][y] == EL_EMPTY)
#define IS_MOVING(x,y) (MovPos[x][y] != 0)
#define IS_FALLING(x,y) (MovPos[x][y] != 0 && MovDir[x][y] == MV_DOWN)
#define IS_MOVING(x,y) (MovPos[x][y] != 0)
#define IS_FALLING(x,y) (MovPos[x][y] != 0 && MovDir[x][y] == MV_DOWN)
-#define IS_BLOCKED(x,y) (
Feld
[x][y] == EL_BLOCKED)
+#define IS_BLOCKED(x,y) (
Tile
[x][y] == EL_BLOCKED)
#define IS_MV_DIAGONAL(x) ((x) & MV_HORIZONTAL && (x) & MV_VERTICAL)
#define IS_MV_DIAGONAL(x) ((x) & MV_HORIZONTAL && (x) & MV_VERTICAL)
@@
-872,9
+891,9
@@
#define PLAYERINFO(x,y) (&stored_player[StorePlayer[x][y]-EL_PLAYER_1])
#define SHIELD_ON(p) ((p)->shield_normal_time_left > 0)
#define PLAYERINFO(x,y) (&stored_player[StorePlayer[x][y]-EL_PLAYER_1])
#define SHIELD_ON(p) ((p)->shield_normal_time_left > 0)
-#define ENEMY_PROTECTED_FIELD(x,y) (IS_PROTECTED(
Feld
[x][y]) || \
+#define ENEMY_PROTECTED_FIELD(x,y) (IS_PROTECTED(
Tile
[x][y]) || \
IS_PROTECTED(Back[x][y]))
IS_PROTECTED(Back[x][y]))
-#define EXPLOSION_PROTECTED_FIELD(x,y) (IS_EXPLOSION_PROOF(
Feld
[x][y]))
+#define EXPLOSION_PROTECTED_FIELD(x,y) (IS_EXPLOSION_PROOF(
Tile
[x][y]))
#define PLAYER_ENEMY_PROTECTED(x,y) (SHIELD_ON(PLAYERINFO(x, y)) || \
ENEMY_PROTECTED_FIELD(x, y))
#define PLAYER_EXPLOSION_PROTECTED(x,y) (SHIELD_ON(PLAYERINFO(x, y)) || \
#define PLAYER_ENEMY_PROTECTED(x,y) (SHIELD_ON(PLAYERINFO(x, y)) || \
ENEMY_PROTECTED_FIELD(x, y))
#define PLAYER_EXPLOSION_PROTECTED(x,y) (SHIELD_ON(PLAYERINFO(x, y)) || \
@@
-954,7
+973,8
@@
#define MIN_ELEMENTS_IN_GROUP 1
#define MAX_ELEMENTS_IN_GROUP 16
#define MIN_ANDROID_ELEMENTS 1
#define MIN_ELEMENTS_IN_GROUP 1
#define MAX_ELEMENTS_IN_GROUP 16
#define MIN_ANDROID_ELEMENTS 1
-#define MAX_ANDROID_ELEMENTS 16
+#define MAX_ANDROID_ELEMENTS 32
+#define MAX_ANDROID_ELEMENTS_OLD 16 // (extended since version 4.2.0.0)
// values for elements with content
#define MIN_ELEMENT_CONTENTS 1
// values for elements with content
#define MIN_ELEMENT_CONTENTS 1
@@
-1889,7
+1909,10
@@
#define EL_MM_END_2 (EL_DF_START2 + 430)
#define EL_MM_END EL_MM_END_2
#define EL_MM_END_2 (EL_DF_START2 + 430)
#define EL_MM_END EL_MM_END_2
-#define NUM_FILE_ELEMENTS 1215
+#define EL_SPRING_LEFT 1215
+#define EL_SPRING_RIGHT 1216
+
+#define NUM_FILE_ELEMENTS 1217
// "real" (and therefore drawable) runtime elements
// "real" (and therefore drawable) runtime elements
@@
-2264,6
+2287,7
@@
enum
GFX_SPECIAL_ARG_TITLE_4,
GFX_SPECIAL_ARG_TITLE_5,
GFX_SPECIAL_ARG_MAIN,
GFX_SPECIAL_ARG_TITLE_4,
GFX_SPECIAL_ARG_TITLE_5,
GFX_SPECIAL_ARG_MAIN,
+ GFX_SPECIAL_ARG_NAMES,
GFX_SPECIAL_ARG_LEVELS,
GFX_SPECIAL_ARG_LEVELNR,
GFX_SPECIAL_ARG_SCORES,
GFX_SPECIAL_ARG_LEVELS,
GFX_SPECIAL_ARG_LEVELNR,
GFX_SPECIAL_ARG_SCORES,
@@
-2277,7
+2301,9
@@
enum
GFX_SPECIAL_ARG_PREVIEW,
GFX_SPECIAL_ARG_CRUMBLED,
GFX_SPECIAL_ARG_MAINONLY,
GFX_SPECIAL_ARG_PREVIEW,
GFX_SPECIAL_ARG_CRUMBLED,
GFX_SPECIAL_ARG_MAINONLY,
+ GFX_SPECIAL_ARG_NAMESONLY,
GFX_SPECIAL_ARG_TYPENAME,
GFX_SPECIAL_ARG_TYPENAME,
+ GFX_SPECIAL_ARG_TYPENAMES,
GFX_SPECIAL_ARG_SUBMENU,
GFX_SPECIAL_ARG_MENU,
GFX_SPECIAL_ARG_TOONS,
GFX_SPECIAL_ARG_SUBMENU,
GFX_SPECIAL_ARG_MENU,
GFX_SPECIAL_ARG_TOONS,
@@
-2312,6
+2338,7
@@
enum
{
GFX_SPECIAL_ARG_SETUP_MAIN = 0,
GFX_SPECIAL_ARG_SETUP_GAME,
{
GFX_SPECIAL_ARG_SETUP_MAIN = 0,
GFX_SPECIAL_ARG_SETUP_GAME,
+ GFX_SPECIAL_ARG_SETUP_ENGINES,
GFX_SPECIAL_ARG_SETUP_EDITOR,
GFX_SPECIAL_ARG_SETUP_GRAPHICS,
GFX_SPECIAL_ARG_SETUP_SOUND,
GFX_SPECIAL_ARG_SETUP_EDITOR,
GFX_SPECIAL_ARG_SETUP_GRAPHICS,
GFX_SPECIAL_ARG_SETUP_SOUND,
@@
-2511,6
+2538,7
@@
enum
#define GAME_MODE_TITLE_4 GFX_SPECIAL_ARG_TITLE_4
#define GAME_MODE_TITLE_5 GFX_SPECIAL_ARG_TITLE_5
#define GAME_MODE_MAIN GFX_SPECIAL_ARG_MAIN
#define GAME_MODE_TITLE_4 GFX_SPECIAL_ARG_TITLE_4
#define GAME_MODE_TITLE_5 GFX_SPECIAL_ARG_TITLE_5
#define GAME_MODE_MAIN GFX_SPECIAL_ARG_MAIN
+#define GAME_MODE_NAMES GFX_SPECIAL_ARG_NAMES
#define GAME_MODE_LEVELS GFX_SPECIAL_ARG_LEVELS
#define GAME_MODE_LEVELNR GFX_SPECIAL_ARG_LEVELNR
#define GAME_MODE_SCORES GFX_SPECIAL_ARG_SCORES
#define GAME_MODE_LEVELS GFX_SPECIAL_ARG_LEVELS
#define GAME_MODE_LEVELNR GFX_SPECIAL_ARG_LEVELNR
#define GAME_MODE_SCORES GFX_SPECIAL_ARG_SCORES
@@
-2524,7
+2552,9
@@
enum
#define GAME_MODE_PSEUDO_PREVIEW GFX_SPECIAL_ARG_PREVIEW
#define GAME_MODE_PSEUDO_CRUMBLED GFX_SPECIAL_ARG_CRUMBLED
#define GAME_MODE_PSEUDO_MAINONLY GFX_SPECIAL_ARG_MAINONLY
#define GAME_MODE_PSEUDO_PREVIEW GFX_SPECIAL_ARG_PREVIEW
#define GAME_MODE_PSEUDO_CRUMBLED GFX_SPECIAL_ARG_CRUMBLED
#define GAME_MODE_PSEUDO_MAINONLY GFX_SPECIAL_ARG_MAINONLY
+#define GAME_MODE_PSEUDO_NAMESONLY GFX_SPECIAL_ARG_NAMESONLY
#define GAME_MODE_PSEUDO_TYPENAME GFX_SPECIAL_ARG_TYPENAME
#define GAME_MODE_PSEUDO_TYPENAME GFX_SPECIAL_ARG_TYPENAME
+#define GAME_MODE_PSEUDO_TYPENAMES GFX_SPECIAL_ARG_TYPENAMES
#define GAME_MODE_PSEUDO_SUBMENU GFX_SPECIAL_ARG_SUBMENU
#define GAME_MODE_PSEUDO_MENU GFX_SPECIAL_ARG_MENU
#define GAME_MODE_PSEUDO_TOONS GFX_SPECIAL_ARG_TOONS
#define GAME_MODE_PSEUDO_SUBMENU GFX_SPECIAL_ARG_SUBMENU
#define GAME_MODE_PSEUDO_MENU GFX_SPECIAL_ARG_MENU
#define GAME_MODE_PSEUDO_TOONS GFX_SPECIAL_ARG_TOONS
@@
-2547,16
+2577,16
@@
enum
// program information and versioning definitions
#define PROGRAM_VERSION_SUPER 4
// program information and versioning definitions
#define PROGRAM_VERSION_SUPER 4
-#define PROGRAM_VERSION_MAJOR
1
-#define PROGRAM_VERSION_MINOR
4
+#define PROGRAM_VERSION_MAJOR
3
+#define PROGRAM_VERSION_MINOR
1
#define PROGRAM_VERSION_PATCH 0
#define PROGRAM_VERSION_EXTRA ""
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#define PROGRAM_AUTHOR_STRING "Holger Schemel"
#define PROGRAM_EMAIL_STRING "info@artsoft.org"
#define PROGRAM_VERSION_PATCH 0
#define PROGRAM_VERSION_EXTRA ""
#define PROGRAM_TITLE_STRING "Rocks'n'Diamonds"
#define PROGRAM_AUTHOR_STRING "Holger Schemel"
#define PROGRAM_EMAIL_STRING "info@artsoft.org"
-#define PROGRAM_WEBSITE_STRING "http://www.artsoft.org/"
-#define PROGRAM_COPYRIGHT_STRING "Copyright \xa9""1995-20
19
by Holger Schemel"
+#define PROGRAM_WEBSITE_STRING "http
s
://www.artsoft.org/"
+#define PROGRAM_COPYRIGHT_STRING "Copyright \xa9""1995-20
21
by Holger Schemel"
#define PROGRAM_COMPANY_STRING "A Game by Artsoft Entertainment"
#define PROGRAM_ICON_FILENAME "RocksIcon32x32.png"
#define PROGRAM_COMPANY_STRING "A Game by Artsoft Entertainment"
#define PROGRAM_ICON_FILENAME "RocksIcon32x32.png"
@@
-2597,7
+2627,7
@@
enum
// values for game_emulation
#define EMU_NONE 0
#define EMU_BOULDERDASH 1
// values for game_emulation
#define EMU_NONE 0
#define EMU_BOULDERDASH 1
-#define EMU_
SOKOBAN
2
+#define EMU_
UNUSED_2
2
#define EMU_SUPAPLEX 3
// values for level file type identifier
#define EMU_SUPAPLEX 3
// values for level file type identifier
@@
-2628,6
+2658,9
@@
enum
#define AUTOPLAY_FFWD (1 << 1)
#define AUTOPLAY_WARP (1 << 2)
#define AUTOPLAY_TEST (1 << 3)
#define AUTOPLAY_FFWD (1 << 1)
#define AUTOPLAY_WARP (1 << 2)
#define AUTOPLAY_TEST (1 << 3)
+#define AUTOPLAY_SAVE (1 << 4)
+#define AUTOPLAY_UPLOAD (1 << 5)
+#define AUTOPLAY_FIX (1 << 6)
#define AUTOPLAY_WARP_NO_DISPLAY AUTOPLAY_TEST
#define AUTOPLAY_MODE_NONE 0
#define AUTOPLAY_WARP_NO_DISPLAY AUTOPLAY_TEST
#define AUTOPLAY_MODE_NONE 0
@@
-2635,6
+2668,9
@@
enum
#define AUTOPLAY_MODE_FFWD (AUTOPLAY_MODE_PLAY | AUTOPLAY_FFWD)
#define AUTOPLAY_MODE_WARP (AUTOPLAY_MODE_FFWD | AUTOPLAY_WARP)
#define AUTOPLAY_MODE_TEST (AUTOPLAY_MODE_WARP | AUTOPLAY_TEST)
#define AUTOPLAY_MODE_FFWD (AUTOPLAY_MODE_PLAY | AUTOPLAY_FFWD)
#define AUTOPLAY_MODE_WARP (AUTOPLAY_MODE_FFWD | AUTOPLAY_WARP)
#define AUTOPLAY_MODE_TEST (AUTOPLAY_MODE_WARP | AUTOPLAY_TEST)
+#define AUTOPLAY_MODE_SAVE (AUTOPLAY_MODE_TEST | AUTOPLAY_SAVE)
+#define AUTOPLAY_MODE_UPLOAD (AUTOPLAY_MODE_TEST | AUTOPLAY_UPLOAD)
+#define AUTOPLAY_MODE_FIX (AUTOPLAY_MODE_TEST | AUTOPLAY_FIX)
#define AUTOPLAY_MODE_WARP_NO_DISPLAY AUTOPLAY_MODE_TEST
#define AUTOPLAY_MODE_WARP_NO_DISPLAY AUTOPLAY_MODE_TEST
@@
-2680,6
+2716,8
@@
struct MenuMainButtonInfo
struct MenuPosInfo insert_solution;
struct MenuPosInfo play_solution;
struct MenuPosInfo insert_solution;
struct MenuPosInfo play_solution;
+
+ struct MenuPosInfo switch_ecs_aga;
};
struct MenuMainTextInfo
};
struct MenuMainTextInfo
@@
-2864,9
+2902,15
@@
struct RequestInfo
int anim_mode;
int align;
int valign;
int anim_mode;
int align;
int valign;
+ int sort_priority;
boolean autowrap;
boolean centered;
boolean wrap_single_words;
boolean autowrap;
boolean centered;
boolean wrap_single_words;
+
+ // run-time values
+ Bitmap *bitmap;
+ int sx, sy;
+ int xsize, ysize;
};
struct PreviewInfo
};
struct PreviewInfo
@@
-3001,10
+3045,31
@@
struct ViewportInfo
struct RectWithBorder door_2[NUM_SPECIAL_GFX_ARGS];
};
struct RectWithBorder door_2[NUM_SPECIAL_GFX_ARGS];
};
-struct HiScore
+struct ScoreEntry
+{
+ char tape_basename[MAX_FILENAME_LEN + 1];
+ char name[MAX_PLAYER_NAME_LEN + 1];
+ int score;
+ int time; // time (in frames) or steps played
+};
+
+struct ScoreInfo
{
{
- char Name[MAX_PLAYER_NAME_LEN + 1];
- int Score;
+ int file_version; // file format version the score is stored with
+ int game_version; // game release version the score was created with
+
+ char level_identifier[MAX_FILENAME_LEN + 1];
+ int level_nr;
+
+ int num_entries;
+ int last_added;
+ int last_added_local;
+
+ boolean updated;
+ boolean uploaded;
+ boolean force_last_added;
+
+ struct ScoreEntry entry[MAX_SCORE_ENTRIES];
};
struct Content
};
struct Content
@@
-3070,6
+3135,7
@@
struct LevelInfo
int time; // available time (seconds)
int gems_needed;
boolean auto_count_gems;
int time; // available time (seconds)
int gems_needed;
boolean auto_count_gems;
+ boolean rate_time_over_score;
char name[MAX_LEVEL_NAME_LEN + 1];
char author[MAX_LEVEL_AUTHOR_LEN + 1];
char name[MAX_LEVEL_NAME_LEN + 1];
char author[MAX_LEVEL_AUTHOR_LEN + 1];
@@
-3115,7
+3181,7
@@
struct LevelInfo
int android_move_time;
int android_clone_time;
boolean ball_random;
int android_move_time;
int android_clone_time;
boolean ball_random;
- boolean ball_
stat
e_initial;
+ boolean ball_
activ
e_initial;
int ball_time;
int lenses_score;
int magnify_score;
int ball_time;
int lenses_score;
int magnify_score;
@@
-3154,6
+3220,8
@@
struct LevelInfo
boolean sb_objects_needed; // all Sokoban objects must be solved
boolean auto_exit_sokoban; // automatically finish solved Sokoban levels
boolean solved_by_one_player; // level is solved if one player enters exit
boolean sb_objects_needed; // all Sokoban objects must be solved
boolean auto_exit_sokoban; // automatically finish solved Sokoban levels
boolean solved_by_one_player; // level is solved if one player enters exit
+ boolean finish_dig_collect; // only finished dig/collect triggers ce action
+ boolean keep_walkable_ce; // keep walkable CE if it changes to the player
boolean continuous_snapping; // repeated snapping without releasing key
boolean block_snap_field; // snapping blocks field to show animation
boolean continuous_snapping; // repeated snapping without releasing key
boolean block_snap_field; // snapping blocks field to show animation
@@
-3171,6
+3239,8
@@
struct LevelInfo
// ('int' instead of 'boolean' because used as selectbox value in editor)
int use_step_counter; // count steps instead of seconds for level
// ('int' instead of 'boolean' because used as selectbox value in editor)
int use_step_counter; // count steps instead of seconds for level
+ int time_score_base; // use time score for 1 or 10 seconds/steps
+
short field[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
boolean use_custom_template; // use custom properties from template file
short field[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
boolean use_custom_template; // use custom properties from template file
@@
-3201,13
+3271,26
@@
struct GlobalInfo
{
char *autoplay_leveldir;
int autoplay_level[MAX_TAPES_PER_SET];
{
char *autoplay_leveldir;
int autoplay_level[MAX_TAPES_PER_SET];
+ int autoplay_mode;
boolean autoplay_all;
boolean autoplay_all;
- boolean autoplay_mode;
+ time_t autoplay_time;
+
+ char *patchtapes_mode;
+ char *patchtapes_leveldir;
+ int patchtapes_level[MAX_TAPES_PER_SET];
+ boolean patchtapes_all;
char *convert_leveldir;
int convert_level_nr;
char *convert_leveldir;
int convert_level_nr;
- char *create_images_dir;
+ char *dumplevel_leveldir;
+ int dumplevel_level_nr;
+
+ char *dumptape_leveldir;
+ int dumptape_level_nr;
+
+ char *create_sketch_images_dir;
+ char *create_collect_images_dir;
int num_toons;
int num_toons;
@@
-3222,6
+3305,8
@@
struct GlobalInfo
int anim_status_next;
boolean use_envelope_request;
int anim_status_next;
boolean use_envelope_request;
+
+ char **user_names;
};
struct ElementChangeInfo
};
struct ElementChangeInfo
@@
-3355,6
+3440,8
@@
struct ElementInfo
int drop_delay_random; // additional random delay after dropping
int move_delay_fixed; // constant delay after moving
int move_delay_random; // additional random delay after moving
int drop_delay_random; // additional random delay after dropping
int move_delay_fixed; // constant delay after moving
int move_delay_random; // additional random delay after moving
+ int step_delay_fixed; // constant delay while moving
+ int step_delay_random; // additional random delay while moving
int move_pattern; // direction movable element moves to
int move_direction_initial; // initial direction element moves to
int move_pattern; // direction movable element moves to
int move_direction_initial; // initial direction element moves to
@@
-3614,15
+3701,13
@@
extern DrawBuffer *fieldbuffer;
extern DrawBuffer *drawto_field;
extern int game_status;
extern DrawBuffer *drawto_field;
extern int game_status;
-extern
boolean
game_status_last_screen;
+extern
int
game_status_last_screen;
extern boolean level_editor_test_game;
extern boolean network_playing;
extern boolean level_editor_test_game;
extern boolean network_playing;
-extern boolean network_server;
-extern SDL_Thread *server_thread;
extern int key_joystick_mapping;
extern int key_joystick_mapping;
-extern short
Feld
[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
+extern short
Tile
[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short Last[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short MovPos[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short MovDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short Last[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short MovPos[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
extern short MovDir[MAX_LEV_FIELDX][MAX_LEV_FIELDY];
@@
-3702,7
+3787,7
@@
extern boolean network_player_action_received;
extern int graphics_action_mapping[];
extern struct LevelInfo level, level_template;
extern int graphics_action_mapping[];
extern struct LevelInfo level, level_template;
-extern struct
HiScore highscore[]
;
+extern struct
ScoreInfo scores, server_scores
;
extern struct TapeInfo tape;
extern struct GlobalInfo global;
extern struct BorderInfo border;
extern struct TapeInfo tape;
extern struct GlobalInfo global;
extern struct BorderInfo border;