X-Git-Url: https://git.artsoft.org/?a=blobdiff_plain;f=src%2Flibgame%2Fsystem.h;h=c1da0145b8d7fd2b58732c8c02aec8e55b1a2d79;hb=cb0ddc73cbd791f57009f4b2e9037069fb6cdff0;hp=77c6c367601a1d6b8e304e374be19cd8ef7fba04;hpb=9bbc42c66f07e770752e643c0ee4cacec95780d3;p=rocksndiamonds.git diff --git a/src/libgame/system.h b/src/libgame/system.h index 77c6c367..c1da0145 100644 --- a/src/libgame/system.h +++ b/src/libgame/system.h @@ -16,9 +16,9 @@ #include "types.h" -#if defined(PLATFORM_MACOSX) +#if defined(PLATFORM_MAC) #include "macosx.h" -#elif defined(PLATFORM_WIN32) +#elif defined(PLATFORM_WINDOWS) #include "windows.h" #elif defined(PLATFORM_ANDROID) #include "android.h" @@ -111,6 +111,17 @@ #define API_SERVER_METHOD "POST" #define API_SERVER_URI_ADD "/api/scores/add" #define API_SERVER_URI_GET "/api/scores/get" +#define API_SERVER_URI_GETTAPE "/api/scores/gettape" +#define API_SERVER_URI_RENAME "/api/players/rename" +#define API_SERVER_URI_RESETUUID "/api/players/resetuuid" + +#if defined(TESTING) +#undef API_SERVER_HOSTNAME +#define API_SERVER_HOSTNAME "api-test.artsoft.org" +#define TEST_PREFIX "test." +#else +#define TEST_PREFIX "" +#endif // values for touch control #define TOUCH_CONTROL_OFF "off" @@ -137,7 +148,7 @@ #define USE_TOUCH_INPUT_OVERLAY #define USE_COMPLETE_DISPLAY #define HAS_SCREEN_KEYBOARD -#define SCREEN_KEYBOARD_POS(h) ((h) / 2) +#define SCREEN_KEYBOARD_POS(h) ((h) * 40 / 100) #endif // values for drag-and-drop support (some parts not added before SDL 2.0.5) @@ -152,7 +163,7 @@ #define DEFAULT_KEY_RIGHT KSYM_Right #define DEFAULT_KEY_UP KSYM_Up #define DEFAULT_KEY_DOWN KSYM_Down -#if defined(PLATFORM_MACOSX) +#if defined(PLATFORM_MAC) #define DEFAULT_KEY_SNAP KSYM_Control_L #define DEFAULT_KEY_DROP KSYM_KP_Enter #else @@ -165,6 +176,8 @@ // default shortcut keys #define DEFAULT_KEY_SAVE_GAME KSYM_F1 #define DEFAULT_KEY_LOAD_GAME KSYM_F2 +#define DEFAULT_KEY_RESTART_GAME KSYM_F3 +#define DEFAULT_KEY_PAUSE_BEFORE_END KSYM_F4 #define DEFAULT_KEY_TOGGLE_PAUSE KSYM_space #define DEFAULT_KEY_FOCUS_PLAYER_1 KSYM_F5 #define DEFAULT_KEY_FOCUS_PLAYER_2 KSYM_F6 @@ -227,6 +240,7 @@ #define MB_MENU_MARK TRUE #define MB_MENU_INITIALIZE (-1) #define MB_MENU_LEAVE (-2) +#define MB_MENU_CONTINUE (-3) #define MB_LEFTBUTTON 1 #define MB_MIDDLEBUTTON 2 #define MB_RIGHTBUTTON 3 @@ -359,6 +373,8 @@ #define ANIM_STATIC_PANEL (1 << 13) #define ANIM_ALL (1 << 14) #define ANIM_ONCE (1 << 15) +#define ANIM_TILED (1 << 16) +#define ANIM_RANDOM_STATIC (1 << 17) #define ANIM_DEFAULT ANIM_LOOP @@ -614,6 +630,9 @@ // default value for undefined levelset #define UNDEFINED_LEVELSET "[NONE]" +// default value for undefined password +#define UNDEFINED_PASSWORD "[undefined]" + // default value for undefined parameter #define ARG_DEFAULT "[DEFAULT]" @@ -624,18 +643,11 @@ // default value for off-screen positions #define POS_OFFSCREEN (-1000000) -// definitions for game sub-directories -#ifndef RO_GAME_DIR -#define RO_GAME_DIR "." -#endif - -#ifndef RW_GAME_DIR -#define RW_GAME_DIR "." +// definitions for game base path and sub-directories +#ifndef BASE_PATH +#define BASE_PATH "." #endif -#define RO_BASE_PATH RO_GAME_DIR -#define RW_BASE_PATH RW_GAME_DIR - // directory names #define GRAPHICS_DIRECTORY "graphics" #define SOUNDS_DIRECTORY "sounds" @@ -644,10 +656,14 @@ #define TAPES_DIRECTORY "tapes" #define SCORES_DIRECTORY "scores" #define DOCS_DIRECTORY "docs" +#define ELEMENTS_DIRECTORY "elements" +#define CREDITS_DIRECTORY "credits" +#define PROGRAM_INFO_DIRECTORY "program" #define CACHE_DIRECTORY "cache" #define CONF_DIRECTORY "conf" #define NETWORK_DIRECTORY "network" #define USERS_DIRECTORY "users" +#define PERSISTENT_DIRECTORY "/persistent" #define GFX_CLASSIC_SUBDIR "gfx_classic" #define SND_CLASSIC_SUBDIR "snd_classic" @@ -669,6 +685,7 @@ #define USERSETUP_FILENAME "usersetup.conf" #define AUTOSETUP_FILENAME "autosetup.conf" #define LEVELSETUP_FILENAME "levelsetup.conf" +#define SERVERSETUP_FILENAME "serversetup.conf" #define EDITORSETUP_FILENAME "editorsetup.conf" #define EDITORCASCADE_FILENAME "editorcascade.conf" #define HELPANIM_FILENAME "helpanim.conf" @@ -679,12 +696,15 @@ #define MUSICINFO_FILENAME "musicinfo.conf" #define ARTWORKINFO_CACHE_FILE "artworkinfo.cache" #define LEVELTEMPLATE_FILENAME "template.level" +#define UPLOADED_FILENAME ".uploaded" #define LEVELFILE_EXTENSION "level" #define TAPEFILE_EXTENSION "tape" #define SCOREFILE_EXTENSION "score" #define GAMECONTROLLER_BASENAME "gamecontrollerdb.txt" +#define FALLBACK_TEXT_FILENAME "fallback.txt" + #define LOG_OUT_BASENAME "stdout.txt" #define LOG_ERR_BASENAME "stderr.txt" @@ -704,7 +724,7 @@ #define STRING_NEWLINE_UNIX "\n" #define STRING_NEWLINE_DOS "\r\n" -#if defined(PLATFORM_WIN32) +#if defined(PLATFORM_WINDOWS) #define CHAR_PATH_SEPARATOR CHAR_PATH_SEPARATOR_DOS #define STRING_PATH_SEPARATOR STRING_PATH_SEPARATOR_DOS #define STRING_NEWLINE STRING_NEWLINE_DOS @@ -779,9 +799,10 @@ #define TREE_TYPE_LEVEL_DIR 3 #define TREE_TYPE_LEVEL_NR 4 #define TREE_TYPE_PLAYER_NAME 5 +#define TREE_TYPE_SCORE_ENTRY 6 #define NUM_BASE_TREE_TYPES 4 -#define NUM_TREE_TYPES 6 +#define NUM_TREE_TYPES 7 #define TREE_TYPE_IS_DIR(type) ((type) == TREE_TYPE_GRAPHICS_DIR || \ (type) == TREE_TYPE_SOUNDS_DIR || \ @@ -795,12 +816,17 @@ #define INFOTEXT_LEVEL_DIR "Level Sets" #define INFOTEXT_LEVEL_NR "Levels" #define INFOTEXT_PLAYER_NAME "Players & Teams" +#define INFOTEXT_SCORE_ENTRY "Hall of Fame" #define BACKLINK_TEXT_MAIN ".. (main menu)" #define BACKLINK_TEXT_SETUP ".. (setup menu)" #define BACKLINK_TEXT_PARENT ".. (parent directory)" +#define BACKLINK_TEXT_BACK "back" +#define BACKLINK_TEXT_NEXT "next" -#define TREE_INFOTEXT(t) ((t) == TREE_TYPE_PLAYER_NAME ? \ +#define TREE_INFOTEXT(t) ((t) == TREE_TYPE_SCORE_ENTRY ? \ + INFOTEXT_SCORE_ENTRY : \ + (t) == TREE_TYPE_PLAYER_NAME ? \ INFOTEXT_PLAYER_NAME : \ (t) == TREE_TYPE_LEVEL_NR ? \ INFOTEXT_LEVEL_NR : \ @@ -814,7 +840,9 @@ INFOTEXT_MUSIC_DIR : \ INFOTEXT_UNDEFINED) -#define TREE_BACKLINK_TEXT(t) ((t) == TREE_TYPE_LEVEL_DIR ? \ +#define TREE_BACKLINK_TEXT(t) ((t) == TREE_TYPE_SCORE_ENTRY ? \ + BACKLINK_TEXT_BACK : \ + (t) == TREE_TYPE_LEVEL_DIR ? \ BACKLINK_TEXT_MAIN : \ BACKLINK_TEXT_SETUP) @@ -975,7 +1003,12 @@ #define UPDATE_BUSY_STATE() \ { \ if (gfx.draw_busy_anim_function != NULL) \ - gfx.draw_busy_anim_function(); \ + gfx.draw_busy_anim_function(TRUE); \ +} +#define UPDATE_BUSY_STATE_NOT_LOADING() \ +{ \ + if (gfx.draw_busy_anim_function != NULL) \ + gfx.draw_busy_anim_function(FALSE); \ } @@ -1017,8 +1050,7 @@ struct ProgramInfo void (*exit_message_function)(char *, va_list); void (*exit_function)(int); - boolean global_scores; - boolean many_scores_per_name; + int api_thread_count; boolean headless; }; @@ -1040,7 +1072,7 @@ struct RuntimeInfo { boolean uses_touch_device; - boolean api_server; + boolean use_api_server; }; struct OptionInfo @@ -1048,8 +1080,7 @@ struct OptionInfo char *server_host; int server_port; - char *ro_base_directory; - char *rw_base_directory; + char *base_directory; char *level_directory; char *graphics_directory; char *sounds_directory; @@ -1058,10 +1089,17 @@ struct OptionInfo char *conf_directory; char *execute_command; + char *tape_log_filename; char *special_flags; char *debug_mode; + char *player_name; + char *identifier; + char *level_nr; + + int display_nr; + boolean mytapes; boolean serveronly; boolean network; @@ -1089,14 +1127,12 @@ struct VideoSystemInfo int vsync_mode; unsigned int frame_counter; - unsigned int frame_delay; - unsigned int frame_delay_value; + DelayCounter frame_delay; boolean shifted_up; int shifted_up_pos; int shifted_up_pos_last; - unsigned int shifted_up_delay; - unsigned int shifted_up_delay_value; + DelayCounter shifted_up_delay; boolean initialized; }; @@ -1194,7 +1230,7 @@ struct GfxInfo int anim_random_frame; - void (*draw_busy_anim_function)(void); + void (*draw_busy_anim_function)(boolean); void (*draw_global_anim_function)(int, int); void (*draw_global_border_function)(int); void (*draw_tile_cursor_function)(int); @@ -1273,6 +1309,8 @@ struct SetupTouchInfo boolean draw_pressed; boolean grid_initialized; + + boolean overlay_buttons; }; struct SetupInputInfo @@ -1342,6 +1380,7 @@ struct SetupEditorCascadeInfo boolean el_steel_chars; boolean el_ce; boolean el_ge; + boolean el_es; boolean el_ref; boolean el_user; boolean el_dynamic; @@ -1351,6 +1390,8 @@ struct SetupShortcutInfo { Key save_game; Key load_game; + Key restart_game; + Key pause_before_end; Key toggle_pause; Key focus_player[MAX_PLAYERS]; @@ -1421,6 +1462,15 @@ struct SetupInternalInfo boolean menu_shortcuts; boolean menu_exit; boolean menu_save_and_exit; + + boolean info_title; + boolean info_elements; + boolean info_music; + boolean info_credits; + boolean info_program; + boolean info_version; + boolean info_levelset; + boolean info_exit; }; struct SetupDebugInfo @@ -1437,6 +1487,8 @@ struct SetupDebugInfo struct SetupInfo { char *player_name; + char *player_uuid; + int player_version; boolean multiple_users; @@ -1452,6 +1504,7 @@ struct SetupInfo int engine_snapshot_memory; boolean fade_screens; boolean autorecord; + boolean auto_pause_on_start; boolean show_titlescreen; boolean quick_doors; boolean team_mode; @@ -1481,8 +1534,9 @@ struct SetupInfo int game_frame_delay; boolean sp_show_border_elements; boolean small_game_graphics; - boolean show_snapshot_buttons; - boolean only_show_local_scores; + boolean show_load_save_buttons; + boolean show_undo_redo_buttons; + char *scores_in_highscore_list; char *graphics_set; char *sounds_set; @@ -1499,8 +1553,14 @@ struct SetupInfo int network_player_nr; char *network_server_hostname; - boolean api_server; + boolean use_api_server; char *api_server_hostname; + char *api_server_password; + boolean ask_for_uploading_tapes; + boolean ask_for_remaining_tapes; + boolean provide_uploading_tapes; + boolean ask_for_using_api_server; + boolean has_remaining_tapes; struct SetupAutoSetupInfo auto_setup; struct SetupLevelSetupInfo level_setup; @@ -1569,10 +1629,14 @@ struct TreeInfo char *special_flags; // flags for special actions performed on level file + char *empty_level_name; // name pattern if level title is "nameless level" + boolean force_level_name; // force also renaming non-nameless level titles + int levels; // number of levels in level series int first_level; // first level number (to allow start with 0 or 1) int last_level; // last level number (automatically calculated) int sort_priority; // sort levels by 'sort_priority' and then by name + int pos; // custom position information of node in tree boolean latest_engine;// force level set to use the latest game engine @@ -1583,6 +1647,7 @@ struct TreeInfo boolean user_defined; // levels in user directory and marked as "private" boolean readonly; // readonly levels can not be changed with editor boolean handicap; // level set has no handicap when set to "false" + boolean time_limit; // level set has no time limit when set to "false" boolean skip_levels; // levels can be skipped when set to "true" boolean use_emc_tiles;// use (swapped) V5/V6 EMC tiles when set to "true" @@ -1839,7 +1904,6 @@ extern struct AudioSystemInfo audio; extern struct GfxInfo gfx; extern struct TileCursorInfo tile_cursor; extern struct OverlayInfo overlay; -extern struct AnimInfo anim; extern struct ArtworkInfo artwork; extern struct JoystickInfo joystick; extern struct SetupInfo setup; @@ -1875,7 +1939,6 @@ void InitProgramInfo(char *, char *, char *, char *, char *, char *, char *, void InitNetworkInfo(boolean, boolean, boolean, char *, int); void InitRuntimeInfo(void); -void InitScoresInfo(void); void SetWindowTitle(void); void InitWindowTitleFunction(char *(*window_title_function)(void)); @@ -1892,7 +1955,7 @@ void InitGfxDoor3Info(int, int, int, int); void InitGfxWindowInfo(int, int); void InitGfxScrollbufferInfo(int, int); void InitGfxClipRegion(boolean, int, int, int, int); -void InitGfxDrawBusyAnimFunction(void (*draw_busy_anim_function)(void)); +void InitGfxDrawBusyAnimFunction(void (*draw_busy_anim_function)(boolean)); void InitGfxDrawGlobalAnimFunction(void (*draw_global_anim_function)(int, int)); void InitGfxDrawGlobalBorderFunction(void (*draw_global_border_function)(int)); void InitGfxDrawTileCursorFunction(void (*draw_tile_cursor_function)(int)); @@ -1938,7 +2001,7 @@ void ClearRectangle(Bitmap *, int, int, int, int); void ClearRectangleOnBackground(Bitmap *, int, int, int, int); void BlitBitmapMasked(Bitmap *, Bitmap *, int, int, int, int, int, int); boolean DrawingDeactivatedField(void); -boolean DrawingDeactivated(int, int, int, int); +boolean DrawingDeactivated(int, int); boolean DrawingOnBackground(int, int); boolean DrawingAreaChanged(void); void BlitBitmapOnBackground(Bitmap *, Bitmap *, int, int, int, int, int, int); @@ -1946,12 +2009,10 @@ void BlitTexture(Bitmap *, int, int, int, int, int, int); void BlitTextureMasked(Bitmap *, int, int, int, int, int, int); void BlitToScreen(Bitmap *, int, int, int, int, int, int); void BlitToScreenMasked(Bitmap *, int, int, int, int, int, int); -void DrawSimpleBlackLine(Bitmap *, int, int, int, int); void DrawSimpleWhiteLine(Bitmap *, int, int, int, int); void DrawLines(Bitmap *, struct XY *, int, Pixel); Pixel GetPixel(Bitmap *, int, int); Pixel GetPixelFromRGB(Bitmap *, unsigned int,unsigned int,unsigned int); -Pixel GetPixelFromRGBcompact(Bitmap *, unsigned int); void KeyboardAutoRepeatOn(void); void KeyboardAutoRepeatOff(void); @@ -1964,6 +2025,7 @@ Bitmap *LoadImage(char *); Bitmap *LoadCustomImage(char *); void ReloadCustomImage(Bitmap *, char *); +Bitmap *ZoomBitmap(Bitmap *, int, int); void ReCreateGameTileSizeBitmap(Bitmap **); void CreateBitmapWithSmallBitmaps(Bitmap **, int, int); void CreateBitmapTextures(Bitmap **); @@ -1991,6 +2053,7 @@ KeyMod GetKeyModStateFromEvents(void); void StartTextInput(int, int, int, int); void StopTextInput(void); void PushUserEvent(int, int, int); +boolean PendingEscapeKeyEvent(void); void InitJoysticks(void); boolean ReadJoystick(int, int *, int *, boolean *, boolean *);