1 /* 2 * Copyright 2009-2018 Peter Kosyh <p.kosyh at gmail.com> 3 * 4 * Permission is hereby granted, free of charge, to any person 5 * obtaining a copy of this software and associated documentation files 6 * (the "Software"), to deal in the Software without restriction, 7 * including without limitation the rights to use, copy, modify, merge, 8 * publish, distribute, sublicense, and/or sell copies of the Software, 9 * and to permit persons to whom the Software is furnished to do so, 10 * subject to the following conditions: 11 * 12 * The above copyright notice and this permission notice shall be 13 * included in all copies or substantial portions of the Software. 14 * 15 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, 16 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF 17 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND 18 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE 19 * LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION 20 * OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION 21 * WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 22 * 23 */ 24 25 #ifndef __GAME_H__ 26 #define __GAME_H__ 27 #include <SDL_mixer.h> 28 #include "utils.h" 29 30 #define SND_CHANNELS MIX_CHANNELS 31 32 #ifndef GAMES_PATH 33 #define GAMES_PATH "./games" 34 #endif 35 36 #define HZ 100 37 38 extern int game_grab_events; 39 extern int game_wait_use; 40 extern int game_running; 41 extern int game_theme_changed; 42 43 extern int nosound_sw; 44 extern int debug_sw; 45 extern int fullscreen_sw; 46 extern int hires_sw; 47 extern int window_sw; 48 extern int nopause_sw; 49 extern int nocursor_sw; 50 extern int game_own_theme; /* current game has own theme */ 51 extern char *games_sw; 52 extern char game_cwd[PATH_MAX]; /* current game cwd */ 53 extern char *curgame_dir; 54 extern int vsync_sw; 55 extern int resizable_sw; 56 extern int scale_sw; 57 extern int standalone_sw; 58 extern char *render_sw; 59 extern int dpi_sw; 60 61 extern char *appdir(void); 62 63 extern void game_clear(int x, int y, int w, int h); 64 extern void game_clear_all(void); 65 extern void game_redraw_all(void); 66 67 extern char *game_local_games_path(int cr); 68 extern char *game_local_themes_path(void); 69 extern char *game_tmp_path(void); 70 extern int game_theme_select(const char *name); 71 72 extern int game_init(const char *game); 73 extern void game_flip(void); 74 extern int game_loop(void); 75 extern void game_done(int err); 76 extern char *game_reset_name(void); 77 78 extern int game_load_theme(const char *path); 79 extern int game_apply_theme(void); 80 extern int game_use_theme(void); 81 extern void game_release_theme(int force); 82 extern int game_reset(void); 83 extern int game_cfg_save(void); 84 85 extern void game_music_player(void); 86 87 extern void game_stop_mus(int ms); 88 89 extern int game_change_vol(int d, int val); 90 extern int game_change_hz(int hz); 91 92 extern int games_lookup(const char *path); 93 extern struct game *game_lookup(const char *name); 94 95 extern int is_game(const char *games, const char *name); 96 extern int games_remove(int nr); 97 extern int games_replace(const char *path, const char *dir); 98 extern int games_rename(void); 99 100 extern void game_res_err_msg(const char *s, int alert); 101 extern int game_error(void); 102 103 extern int game_restart(void); 104 extern int game_select(const char *name); 105 106 extern void game_gfx_clip(void); 107 extern void game_gfx_noclip(void); 108 109 #define GAME_CMD_CLICK 1 110 #define GAME_CMD_FILE 2 111 #define GAME_CMD_NOHL 4 112 113 extern int game_cmd(char *cmd, int flags); 114 115 extern void game_menu(int nr); /* select and show menu */ 116 extern int game_menu_box(int show, const char *txt); /* show menu */ 117 extern int game_menu_box_wh(const char *txt, int *w, int *h); 118 extern int game_menu_box_width(int show, const char *txt, int width); 119 120 extern void mouse_reset(int hl); 121 extern int mouse_restore(void); 122 123 extern int game_load(int nr); 124 extern int game_save(int nr); 125 extern int game_saves_enabled(void); 126 127 extern char *game_cfg_path(void); 128 extern char *game_save_path(int rc, int nr); 129 130 extern char *game_locale(void); 131 132 extern int game_freezed(void); 133 134 extern int game_paused(void); 135 136 extern char *open_file_dialog(void); 137 138 extern int game_from_disk(void); 139 140 extern int game_pict_modify(img_t p); 141 extern int game_bg_modify(img_t p); 142 143 extern int game_pict_coord(int *x, int *y, int *w, int *h); 144 extern void menu_toggle(int menu); 145 extern int menu_visible(void); 146 extern void game_channel_finished(int channel); 147 148 extern void sound_play_click(void); 149 extern void *sound_get(const char *fname); 150 extern void sound_put(void *sn); 151 152 extern int game_tag_valid(const char *p); 153 154 void game_gfx_commit(int sync); 155 156 #define CURSOR_CLEAR -1 157 #define CURSOR_OFF 0 158 #define CURSOR_ON 1 159 #define CURSOR_DRAW 2 160 161 extern void game_cursor(int on); /* must be called with -1 before gfx change and 1 after, 2 - not update */ 162 extern int game_cursor_show; 163 164 struct game { 165 char *path; 166 char *name; 167 char *author; 168 char *version; 169 char *info; 170 char *dir; 171 char *direction; 172 /* char *api; */ 173 int idf; 174 }; 175 176 extern struct game *games; 177 extern int games_nr; 178 179 extern unsigned long timer_counter; 180 #endif 181