X-Git-Url: https://git.artsoft.org/?p=rocksndiamonds.git;a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=0ec8a491bb113cb185891f8caf038d49e9d548ea;hp=0d74426f92be24ccb9a3cd3e36832fe72903da6a;hb=bc84d4e4ec1babe815cb9e5b07168afa232bffb5;hpb=0ede483d20ce26c84087e9fe476debe277f4973a diff --git a/src/libgame/system.h b/src/libgame/system.h index 0d74426f..0ec8a491 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -65,15 +65,17 @@ #define STR_SPECIAL_RENDERING_TARGET "target_texture_only" #define STR_SPECIAL_RENDERING_DOUBLE "stream_and_target_texture" +#if defined(PLATFORM_EMSCRIPTEN) +#define STR_SPECIAL_RENDERING_DEFAULT STR_SPECIAL_RENDERING_BITMAP +#else #define STR_SPECIAL_RENDERING_DEFAULT STR_SPECIAL_RENDERING_DOUBLE +#endif #define SPECIAL_RENDERING_OFF 0 #define SPECIAL_RENDERING_BITMAP 1 #define SPECIAL_RENDERING_TARGET 2 #define SPECIAL_RENDERING_DOUBLE 3 -#define SPECIAL_RENDERING_DEFAULT SPECIAL_RENDERING_DOUBLE - // values for vertical screen retrace synchronization (vsync) #define STR_VSYNC_MODE_OFF "off" #define STR_VSYNC_MODE_NORMAL "normal" @@ -351,16 +353,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 @@ -508,6 +515,9 @@ // maximum number of parallel players supported by libgame functions #define MAX_PLAYERS 4 +// maximum number of player names +#define MAX_PLAYER_NAMES 12 + // maximum allowed length of player name #define MAX_PLAYER_NAME_LEN 10 @@ -625,6 +635,7 @@ #define CACHE_DIRECTORY "cache" #define CONF_DIRECTORY "conf" #define NETWORK_DIRECTORY "network" +#define USERS_DIRECTORY "users" #define GFX_CLASSIC_SUBDIR "gfx_classic" #define SND_CLASSIC_SUBDIR "snd_classic" @@ -643,6 +654,7 @@ // file names and filename extensions #define LEVELSETUP_DIRECTORY "levelsetup" #define SETUP_FILENAME "setup.conf" +#define USERSETUP_FILENAME "usersetup.conf" #define AUTOSETUP_FILENAME "autosetup.conf" #define LEVELSETUP_FILENAME "levelsetup.conf" #define EDITORSETUP_FILENAME "editorsetup.conf" @@ -754,9 +766,10 @@ #define TREE_TYPE_MUSIC_DIR ARTWORK_TYPE_MUSIC #define TREE_TYPE_LEVEL_DIR 3 #define TREE_TYPE_LEVEL_NR 4 +#define TREE_TYPE_PLAYER_NAME 5 #define NUM_BASE_TREE_TYPES 4 -#define NUM_TREE_TYPES 5 +#define NUM_TREE_TYPES 6 #define INFOTEXT_UNDEFINED "" #define INFOTEXT_GRAPHICS_DIR "Custom Graphics" @@ -764,8 +777,11 @@ #define INFOTEXT_MUSIC_DIR "Custom Music" #define INFOTEXT_LEVEL_DIR "Level Sets" #define INFOTEXT_LEVEL_NR "Levels" +#define INFOTEXT_PLAYER_NAME "Players & Teams" -#define TREE_INFOTEXT(t) ((t) == TREE_TYPE_LEVEL_NR ? \ +#define TREE_INFOTEXT(t) ((t) == TREE_TYPE_PLAYER_NAME ? \ + INFOTEXT_PLAYER_NAME : \ + (t) == TREE_TYPE_LEVEL_NR ? \ INFOTEXT_LEVEL_NR : \ (t) == TREE_TYPE_LEVEL_DIR ? \ INFOTEXT_LEVEL_DIR : \ @@ -864,6 +880,20 @@ (artwork).snd_first : \ (artwork).mus_first) +#define ARTWORK_CURRENT_PTR(artwork, type) \ + ((type) == ARTWORK_TYPE_GRAPHICS ? \ + &(artwork).gfx_current : \ + (type) == ARTWORK_TYPE_SOUNDS ? \ + &(artwork).snd_current : \ + &(artwork).mus_current) + +#define ARTWORK_CURRENT(artwork, type) \ + ((type) == ARTWORK_TYPE_GRAPHICS ? \ + (artwork).gfx_current : \ + (type) == ARTWORK_TYPE_SOUNDS ? \ + (artwork).snd_current : \ + (artwork).mus_current) + #define ARTWORK_CURRENT_IDENTIFIER_PTR(artwork, type) \ ((type) == ARTWORK_TYPE_GRAPHICS ? \ &(artwork).gfx_current_identifier : \ @@ -1159,6 +1189,8 @@ struct TileCursorInfo int target_x, target_y; // tile cursor target screen position int sx, sy; // tile cursor screen start position + + boolean xsn_debug; // enable or disable XSN debugging }; struct OverlayInfo @@ -1252,6 +1284,8 @@ struct SetupEditorInfo boolean show_element_token; + boolean show_read_only_warning; + boolean use_template_for_new_levels; }; @@ -1364,12 +1398,16 @@ struct SetupDebugInfo boolean frame_delay_use_mod_key; boolean frame_delay_game_only; boolean show_frames_per_second; + int xsn_mode; + int xsn_percent; }; struct SetupInfo { char *player_name; + boolean multiple_users; + boolean sound; boolean sound_loops; boolean sound_music; @@ -1403,6 +1441,7 @@ struct SetupInfo 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; @@ -1437,6 +1476,11 @@ struct SetupInfo struct OptionInfo options; }; +struct UserInfo +{ + int nr; +}; + struct TreeInfo { struct TreeInfo **node_top; // topmost node in tree @@ -1757,6 +1801,7 @@ extern struct AnimInfo anim; extern struct ArtworkInfo artwork; extern struct JoystickInfo joystick; extern struct SetupInfo setup; +extern struct UserInfo user; extern LevelDirTree *leveldir_first_all; extern LevelDirTree *leveldir_first;