X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=2db4961c53cbedd3c9d939c9e13339b8c7558025;hb=f44158a4e1de9725bdd1d751b4a4005d29b51271;hp=549d003e45bfda2fda5529629c4535c3ea4e0ef1;hpb=55188fc81fac757089356928ae7ec26f90c4a7d0;p=rocksndiamonds.git diff --git a/src/libgame/system.h b/src/libgame/system.h index 549d003e..2db4961c 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -22,6 +22,8 @@ #include "windows.h" #elif defined(PLATFORM_ANDROID) #include "android.h" +#elif defined(PLATFORM_EMSCRIPTEN) +#include "emscripten.h" #endif #include "sdl.h" @@ -353,16 +355,21 @@ #define ANIM_DEFAULT ANIM_LOOP -// values for special drawing styles (currently only for crumbled graphics) +// values for special drawing styles and event handling #define STYLE_NONE 0 + +// values used for crumbled graphics #define STYLE_ACCURATE_BORDERS (1 << 0) #define STYLE_INNER_CORNERS (1 << 1) + +// values used for game panel graphics #define STYLE_REVERSE (1 << 2) +#define STYLE_LEFTMOST_POSITION (1 << 3) -// values for special event handling style (used for global animation) -#define STYLE_BLOCK (1 << 3) -#define STYLE_PASSTHROUGH (1 << 4) -#define STYLE_MULTIPLE_ACTIONS (1 << 5) +// values used for global animations +#define STYLE_BLOCK (1 << 4) +#define STYLE_PASSTHROUGH (1 << 5) +#define STYLE_MULTIPLE_ACTIONS (1 << 6) #define STYLE_DEFAULT STYLE_NONE @@ -511,7 +518,7 @@ #define MAX_PLAYERS 4 // maximum number of player names -#define MAX_PLAYER_NAMES 10 +#define MAX_PLAYER_NAMES 12 // maximum allowed length of player name #define MAX_PLAYER_NAME_LEN 10 @@ -576,6 +583,9 @@ JOY_BUTTON_2 : \ JOY_NO_ACTION) +// maximum number of level sets in the level set history +#define MAX_LEVELDIR_HISTORY 12 + // default name for empty highscore entry #define EMPTY_PLAYER_NAME "no name" @@ -762,10 +772,14 @@ #define TREE_TYPE_LEVEL_DIR 3 #define TREE_TYPE_LEVEL_NR 4 #define TREE_TYPE_PLAYER_NAME 5 -#define TREE_TYPE_PLAYER_TEAM 6 #define NUM_BASE_TREE_TYPES 4 -#define NUM_TREE_TYPES 7 +#define NUM_TREE_TYPES 6 + +#define TREE_TYPE_IS_DIR(type) ((type) == TREE_TYPE_GRAPHICS_DIR || \ + (type) == TREE_TYPE_SOUNDS_DIR || \ + (type) == TREE_TYPE_MUSIC_DIR || \ + (type) == TREE_TYPE_LEVEL_DIR) #define INFOTEXT_UNDEFINED "" #define INFOTEXT_GRAPHICS_DIR "Custom Graphics" @@ -773,13 +787,14 @@ #define INFOTEXT_MUSIC_DIR "Custom Music" #define INFOTEXT_LEVEL_DIR "Level Sets" #define INFOTEXT_LEVEL_NR "Levels" -#define INFOTEXT_PLAYER_NAME "Player Names" -#define INFOTEXT_PLAYER_TEAM "Player Teams" +#define INFOTEXT_PLAYER_NAME "Players & Teams" + +#define BACKLINK_TEXT_MAIN ".. (main menu)" +#define BACKLINK_TEXT_SETUP ".. (setup menu)" +#define BACKLINK_TEXT_PARENT ".. (parent directory)" #define TREE_INFOTEXT(t) ((t) == TREE_TYPE_PLAYER_NAME ? \ INFOTEXT_PLAYER_NAME : \ - (t) == TREE_TYPE_PLAYER_TEAM ? \ - INFOTEXT_PLAYER_TEAM : \ (t) == TREE_TYPE_LEVEL_NR ? \ INFOTEXT_LEVEL_NR : \ (t) == TREE_TYPE_LEVEL_DIR ? \ @@ -792,6 +807,10 @@ INFOTEXT_MUSIC_DIR : \ INFOTEXT_UNDEFINED) +#define TREE_BACKLINK_TEXT(t) ((t) == TREE_TYPE_LEVEL_DIR ? \ + BACKLINK_TEXT_MAIN : \ + BACKLINK_TEXT_SETUP) + #define TREE_USERDIR(t) ((t) == TREE_TYPE_LEVEL_DIR ? \ getUserLevelDir(NULL) : \ (t) == TREE_TYPE_GRAPHICS_DIR ? \ @@ -1283,6 +1302,8 @@ struct SetupEditorInfo boolean show_element_token; + boolean show_read_only_warning; + boolean use_template_for_new_levels; }; @@ -1291,6 +1312,11 @@ struct SetupAutoSetupInfo int editor_zoom_tilesize; }; +struct SetupLevelSetupInfo +{ + char *last_level_series[MAX_LEVELDIR_HISTORY + 1]; +}; + struct SetupEditorCascadeInfo { boolean el_bd; @@ -1424,7 +1450,8 @@ struct SetupInfo boolean skip_levels; boolean increment_levels; boolean auto_play_next_level; - boolean skip_scores_after_game; + boolean count_score_after_game; + boolean show_scores_after_game; boolean time_limit; boolean fullscreen; int window_scaling_percent; @@ -1434,10 +1461,13 @@ struct SetupInfo boolean ask_on_escape; boolean ask_on_escape_editor; boolean ask_on_game_over; + boolean ask_on_quit_game; + boolean ask_on_quit_program; boolean quick_switch; boolean input_on_focus; boolean prefer_aga_graphics; boolean prefer_lowpass_sounds; + boolean prefer_extra_panel_items; boolean game_speed_extended; int game_frame_delay; boolean sp_show_border_elements; @@ -1460,6 +1490,8 @@ struct SetupInfo char *network_server_hostname; struct SetupAutoSetupInfo auto_setup; + struct SetupLevelSetupInfo level_setup; + struct SetupEditorInfo editor; struct SetupEditorCascadeInfo editor_cascade; struct SetupShortcutInfo shortcut; @@ -1533,6 +1565,7 @@ struct TreeInfo boolean level_group; // directory contains more level series directories boolean parent_link; // entry links back to parent directory + boolean is_copy; // this entry is a copy of another entry in the tree boolean in_user_dir; // user defined levels are stored in home directory boolean user_defined; // levels in user directory and marked as "private" boolean readonly; // readonly levels can not be changed with editor