PageRenderTime 47ms CodeModel.GetById 20ms RepoModel.GetById 0ms app.codeStats 0ms

/src/dinkvar.h

#
C Header | 264 lines | 163 code | 44 blank | 57 comment | 0 complexity | 26ae2816b68afbf6ca9797e45bfe5e92 MD5 | raw file
Possible License(s): GPL-3.0, MPL-2.0-no-copyleft-exception
  1. /**
  2. * Header for code common to FreeDink and FreeDinkedit
  3. * Copyright (C) 2005, 2007, 2008, 2009, 2010, 2012, 2014 Sylvain Beucler
  4. * This file is part of GNU FreeDink
  5. * GNU FreeDink is free software; you can redistribute it and/or
  6. * modify it under the terms of the GNU General Public License as
  7. * published by the Free Software Foundation; either version 3 of the
  8. * License, or (at your option) any later version.
  9. * GNU FreeDink is distributed in the hope that it will be useful, but
  10. * WITHOUT ANY WARRANTY; without even the implied warranty of
  11. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
  12. * General Public License for more details.
  13. * You should have received a copy of the GNU General Public License
  14. * along with this program. If not, see
  15. * <http://www.gnu.org/licenses/>.
  16. */
  17. #ifndef _DINKVAR_H
  18. #define _DINKVAR_H
  19. /* for RECT ?? */
  20. /* #include <windows.h> */
  21. /* #include <ddraw.h> */
  22. /* #include <dinput.h> */
  23. /* #include <mmsystem.h> */
  24. #include <limits.h>
  25. #include "SDL.h"
  26. #include "SDL2_framerate.h"
  27. #include "game_engine.h"
  28. #include "rect.h"
  29. #include "dinkc.h"
  30. #include "screen.h"
  31. struct attackinfo_struct
  32. {
  33. int time;
  34. /*bool*/int active;
  35. int script;
  36. /*bool*/int hitme;
  37. int last_power;
  38. int wait;
  39. int pull_wait;
  40. };
  41. struct sprite_placement
  42. {
  43. int x, y;
  44. int seq, frame, type; /* DinkC: editor_seq, editor_frame, editor_type */
  45. int size;
  46. BOOL_1BYTE active;
  47. int rotation, special, brain;
  48. char script[13+1]; /* attached DinkC script */
  49. int speed, base_walk, base_idle, base_attack, base_hit, timer, que;
  50. int hard;
  51. rect alt; /* trim left/top/right/bottom */
  52. int is_warp;
  53. int warp_map;
  54. int warp_x;
  55. int warp_y;
  56. int parm_seq;
  57. int base_die, gold, hitpoints, strength, defense, exp, sound, vision, nohit, touch_damage;
  58. int buff[5];
  59. };
  60. /* one screen from map.dat */
  61. struct small_map
  62. {
  63. struct tile t[12*8+1]; // 97 background tiles
  64. struct sprite_placement sprite[100+1];
  65. char script[20+1]; /* script to run when entering the script */
  66. };
  67. extern int GetKeyboard(int key);
  68. extern int add_sprite(int x1, int y, int brain,int pseq, int pframe );
  69. extern int add_sprite_dumb(int x1, int y, int brain,int pseq, int pframe,int size);
  70. extern void check_seq_status(int h);
  71. /* extern void dderror(HRESULT hErr); */
  72. //extern void draw_sprite_game(LPDIRECTDRAWSURFACE lpdest,int h);
  73. extern void draw_sprite_game(SDL_Surface *GFX_lpdest, int h);
  74. extern void duck_brain(int h);
  75. extern /*BOOL*/int init_mouse();
  76. extern int load_map_to(char* path, const int num, struct small_map* screen);
  77. extern int load_script(char filename[15], int sprite, /*bool*/int set_sprite);
  78. extern /*bool*/int locate(int script, char proc[20]);
  79. extern void process_callbacks(void);
  80. extern void run_script (int script);
  81. extern void update_status_all(void);
  82. extern /*bool*/int abort_this_flip;
  83. extern int base_timing;
  84. extern struct attackinfo_struct bow;
  85. extern int dinkspeed;
  86. extern int flife;
  87. extern int flub_mode;
  88. extern int fps_final;
  89. extern int show_inventory;
  90. extern int stop_entire_game;
  91. extern int getpic(int h);
  92. /* show_bmp() currently ran */
  93. struct show_bmp
  94. {
  95. /*bool*/int active;
  96. /*bool*/int showdot;
  97. int reserved;
  98. int script;
  99. int stime;
  100. int picframe;
  101. };
  102. extern struct show_bmp showb;
  103. extern int mbase_count;
  104. extern unsigned long mold;
  105. extern int *pupdate_status;
  106. extern struct small_map pam;
  107. extern int playl;
  108. extern int playx;
  109. extern int playy;
  110. extern int *pmap;
  111. extern int screenlock;
  112. extern int show_dot;
  113. extern Uint32 thisTickCount;
  114. extern Uint32 lastTickCount;
  115. extern FPSmanager framerate_manager;
  116. extern /*bool*/int transition_in_progress;
  117. /* extern HRESULT ddrval; */
  118. /* extern LPDIRECTDRAWPALETTE lpDDPal; /\* The primary surface palette *\/ */
  119. /* extern PALETTEENTRY pe[256]; */
  120. /* Game state */
  121. extern void attach(void);
  122. extern /*bool*/int windowed;
  123. extern int fcur_weapon, fcur_magic;
  124. extern int push_active;
  125. extern int move_screen;
  126. extern int move_counter;
  127. /* Player */
  128. extern /*bool*/int inside_box(int x1, int y1, rect box);
  129. extern int walk_off_screen;
  130. /* Sprites - state */
  131. extern void changedir( int dir1, int k,int base);
  132. /* Sprites - action */
  133. extern void kill_text_owned_by(int sprite);
  134. /* Sprites - global */
  135. extern void kill_sprite_all (int sprite);
  136. extern int find_sprite(int editor_sprite);
  137. /* Scripts */
  138. extern void kill_all_scripts_for_real(void);
  139. extern void kill_returning_stuff(int script);
  140. /* Map */
  141. extern unsigned char get_hard(int x1, int y1);
  142. extern unsigned char get_hard_play(int h, int x1, int y1);
  143. extern void load_hard(void);
  144. extern int load_info_to(char* path, struct map_info *mymap);
  145. extern void load_info(void);
  146. /* OS */
  147. extern int bActive; // is application active?
  148. extern char *command_line; // command line params, used by doInit
  149. /* Startup */
  150. extern void pre_figure_out(char* line);
  151. extern void figure_out(char* line);
  152. /* Metadata */
  153. extern int burn_revision;
  154. /*
  155. * Game & editor
  156. */
  157. //sub struct for tile hardness
  158. struct block_y
  159. {
  160. unsigned char y[51];
  161. };
  162. struct ts_block
  163. {
  164. struct block_y x[51];
  165. BOOL_1BYTE used;
  166. };
  167. //struct for hardness info, INDEX controls which hardness each block has. 800 max
  168. //types available.
  169. #define HARDNESS_NB_TILES 800
  170. struct hardness
  171. {
  172. struct ts_block htile[HARDNESS_NB_TILES];
  173. /* default hardness for each background tile square, 12*8=96 tiles
  174. per screen but indexed % 128 in the code (so 128*(41-1)+12*8=5216
  175. used indexes instead of 12*8*41=3936). */
  176. short btile_default[GFX_TILES_NB_SQUARES];
  177. };
  178. /*bool*/int get_box (int h, rect * box_crap, rect * box_real);
  179. extern /*bool*/int dinkedit;
  180. extern int draw_map_tiny;
  181. extern int cur_map;
  182. extern struct hardness hmap;
  183. /*
  184. * Editor
  185. */
  186. extern void check_sprite_status(int h);
  187. extern void add_hardness(int sprite, int num);
  188. extern /*bool*/int kill_last_sprite(void);
  189. extern void check_frame_status(int h, int frame);
  190. extern void flip_it_second(void);
  191. extern void save_map(const int num);
  192. extern void save_info(void);
  193. extern int realhard(int tile);
  194. extern void save_hard(void);
  195. extern /*bool*/int no_running_main;
  196. extern void fill_screen(int num);
  197. extern void show_bmp(char name[80], int showdot, int script);
  198. extern void copy_bmp( char name[80]);
  199. extern /*bool*/int text_owned_by(int sprite);
  200. extern void fill_hardxy(rect box);
  201. extern int does_sprite_have_text(int sprite);
  202. extern int change_sprite(int h, int val, int * change);
  203. extern int change_sprite_noreturn(int h, int val, int * change);
  204. extern int change_edit_char(int h, int val, unsigned char * change);
  205. extern int change_edit(int h, int val, unsigned short * change);
  206. extern int hurt_thing(int h, int damage, int special);
  207. extern void random_blood(int mx, int my, int h);
  208. extern void check_sprite_status_full(int sprite_no);
  209. /* Game modes */
  210. extern int mode;
  211. extern int keep_mouse;
  212. // + talk.active
  213. extern void set_mode(int new_mode);
  214. extern void set_keep_mouse(int on);
  215. #endif