e6y.h 9.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359
  1. /* Emacs style mode select -*- C++ -*-
  2. *-----------------------------------------------------------------------------
  3. *
  4. *
  5. * PrBoom: a Doom port merged with LxDoom and LSDLDoom
  6. * based on BOOM, a modified and improved DOOM engine
  7. * Copyright (C) 1999 by
  8. * id Software, Chi Hoang, Lee Killough, Jim Flynn, Rand Phares, Ty Halderman
  9. * Copyright (C) 1999-2000 by
  10. * Jess Haas, Nicolas Kalkhof, Colin Phipps, Florian Schulze
  11. * Copyright 2005, 2006 by
  12. * Florian Schulze, Colin Phipps, Neil Stevens, Andrey Budko
  13. *
  14. * This program is free software; you can redistribute it and/or
  15. * modify it under the terms of the GNU General Public License
  16. * as published by the Free Software Foundation; either version 2
  17. * of the License, or (at your option) any later version.
  18. *
  19. * This program is distributed in the hope that it will be useful,
  20. * but WITHOUT ANY WARRANTY; without even the implied warranty of
  21. * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  22. * GNU General Public License for more details.
  23. *
  24. * You should have received a copy of the GNU General Public License
  25. * along with this program; if not, write to the Free Software
  26. * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
  27. * 02111-1307, USA.
  28. *
  29. * DESCRIPTION:
  30. *
  31. *-----------------------------------------------------------------------------
  32. */
  33. #ifndef __E6Y__
  34. #define __E6Y__
  35. #include <stdarg.h>
  36. #include "hu_lib.h"
  37. #include "r_demo.h"
  38. #define HU_HUDADDX (HU_HUDX)
  39. #define HU_HUDADDY (HU_HUDY+(-1)*HU_GAPY)
  40. #define HU_CENTERMSGX (320/2)
  41. #define HU_CENTERMSGY ((200-ST_HEIGHT)/2 - 1 - LittleShort(hu_font[0].height))
  42. #define HU_HUDADDX_D (HU_HUDX_LL)
  43. #define HU_HUDADDY_D (HU_HUDY_LL+(-1)*HU_GAPY)
  44. #define STSTR_SECRETFOUND "A secret is revealed!"
  45. #define S_CANT_GL_ARB_MULTITEXTURE 0x10000000
  46. #define S_CANT_GL_ARB_MULTISAMPLEFACTOR 0x20000000
  47. #define GL_COMBINE_ARB 0x8570
  48. #define GL_RGB_SCALE_ARB 0x8573
  49. #define FOV_CORRECTION_FACTOR (1.13776f)
  50. #define FOV90 (90)
  51. typedef struct camera_s
  52. {
  53. long x;
  54. long y;
  55. long z;
  56. long PrevX;
  57. long PrevY;
  58. long PrevZ;
  59. angle_t angle;
  60. angle_t pitch;
  61. angle_t PrevAngle;
  62. angle_t PrevPitch;
  63. int type;
  64. } camera_t;
  65. extern dboolean wasWiped;
  66. extern int totalleveltimes;
  67. extern int secretfound;
  68. extern int demo_skiptics;
  69. extern int demo_tics_count;
  70. extern int demo_curr_tic;
  71. extern int demo_playerscount;
  72. extern char demo_len_st[80];
  73. extern int avi_shot_time;
  74. extern int avi_shot_num;
  75. extern const char *avi_shot_fname;
  76. extern dboolean doSkip;
  77. extern dboolean demo_stoponnext;
  78. extern dboolean demo_stoponend;
  79. extern dboolean demo_warp;
  80. extern int key_speed_up;
  81. extern int key_speed_down;
  82. extern int key_speed_default;
  83. extern int speed_step;
  84. extern int key_level_restart;
  85. extern int key_nextlevel;
  86. extern int key_demo_jointogame;
  87. extern int key_demo_endlevel;
  88. extern int key_demo_skip;
  89. extern int key_walkcamera;
  90. extern int key_showalive;
  91. extern int hudadd_gamespeed;
  92. extern int hudadd_leveltime;
  93. extern int hudadd_demotime;
  94. extern int hudadd_secretarea;
  95. extern int hudadd_smarttotals;
  96. extern int hudadd_demoprogressbar;
  97. extern int hudadd_crosshair;
  98. extern int hudadd_crosshair_scale;
  99. extern int hudadd_crosshair_color;
  100. extern int hudadd_crosshair_health;
  101. extern int hudadd_crosshair_target;
  102. extern int hudadd_crosshair_target_color;
  103. extern int hudadd_crosshair_lock_target;
  104. extern int movement_strafe50;
  105. extern int movement_shorttics;
  106. extern int movement_mouselook;
  107. extern int movement_mouseinvert;
  108. extern int movement_maxviewpitch;
  109. extern int mouse_handler;
  110. extern int mouse_doubleclick_as_use;
  111. extern int render_multisampling;
  112. extern int render_paperitems;
  113. extern int render_wipescreen;
  114. extern int mouse_acceleration;
  115. extern int demo_overwriteexisting;
  116. extern int render_fov;
  117. extern int render_aspect;
  118. extern float render_ratio;
  119. extern float render_fovratio;
  120. extern float render_fovy;
  121. extern float render_multiplier;
  122. void M_ChangeAspectRatio(void);
  123. void M_ChangeStretch(void);
  124. extern int showendoom;
  125. extern int palette_ondamage;
  126. extern int palette_onbonus;
  127. extern int palette_onpowers;
  128. extern camera_t walkcamera;
  129. extern int PitchSign;
  130. extern int mouseSensitivity_mlook;
  131. extern angle_t viewpitch;
  132. extern float skyscale;
  133. extern float screen_skybox_zplane;
  134. extern float maxNoPitch[];
  135. extern float tan_pitch;
  136. extern float skyUpAngle;
  137. extern float skyUpShift;
  138. extern float skyXShift;
  139. extern float skyYShift;
  140. extern dboolean mlook_or_fov;
  141. extern hu_textline_t w_hudadd;
  142. extern hu_textline_t w_centermsg;
  143. extern hu_textline_t w_precache;
  144. extern char hud_add[80];
  145. extern char hud_centermsg[80];
  146. void e6y_assert(const char *format, ...);
  147. void ParamsMatchingCheck();
  148. void e6y_InitCommandLine(void);
  149. void P_WalkTicker ();
  150. void P_SyncWalkcam(dboolean sync_coords, dboolean sync_sight);
  151. void P_ResetWalkcam(void);
  152. extern dboolean sound_inited_once;
  153. void e6y_I_uSleep(unsigned long usecs);
  154. void G_SkipDemoStart(void);
  155. void G_SkipDemoStop(void);
  156. void G_SkipDemoCheck(void);
  157. int G_ReloadLevel(void);
  158. int G_GotoNextLevel(void);
  159. void M_ChangeMouseLook(void);
  160. void M_ChangeMaxViewPitch(void);
  161. void M_ChangeMouseInvert(void);
  162. void M_ChangeFOV(void);
  163. #ifdef GL_DOOM
  164. void M_ChangeUseDetail(void);
  165. void M_ChangeMultiSample(void);
  166. void M_ChangeSpriteClip(void);
  167. void M_ChangeAllowBoomColormaps(void);
  168. void M_ChangeTextureUseHires(void);
  169. void M_ChangeAllowFog(void);
  170. void M_ChangeTextureHQResize(void);
  171. #endif
  172. void M_ChangeSpeed(void);
  173. void M_ChangeScreenMultipleFactor(void);
  174. void M_ChangeInterlacedScanning(void);
  175. void M_MouseMLook(int choice);
  176. void M_MouseAccel(int choice);
  177. void CheckPitch(signed int *pitch);
  178. void I_Init2(void);
  179. dboolean GetMouseLook(void);
  180. dboolean HaveMouseLook(void);
  181. extern float viewPitch;
  182. extern dboolean transparentpresent;
  183. void R_ClearClipSegs (void);
  184. void R_RenderBSPNode(int bspnum);
  185. typedef struct prboom_comp_s
  186. {
  187. unsigned int minver;
  188. unsigned int maxver;
  189. dboolean state;
  190. const char *cmd;
  191. } prboom_comp_t;
  192. enum
  193. {
  194. PC_MONSTER_AVOID_HAZARDS,
  195. PC_REMOVE_SLIME_TRAILS,
  196. PC_NO_DROPOFF,
  197. PC_TRUNCATED_SECTOR_SPECIALS,
  198. PC_BOOM_BRAINAWAKE,
  199. PC_PRBOOM_FRICTION,
  200. PC_REJECT_PAD_WITH_FF,
  201. PC_FORCE_LXDOOM_DEMO_COMPATIBILITY,
  202. PC_ALLOW_SSG_DIRECT,
  203. PC_TREAT_NO_CLIPPING_THINGS_AS_NOT_BLOCKING,
  204. PC_FORCE_INCORRECT_PROCESSING_OF_RESPAWN_FRAME_ENTRY,
  205. PC_FORCE_CORRECT_CODE_FOR_3_KEYS_DOORS_IN_MBF,
  206. PC_UNINITIALIZE_CRUSH_FIELD_FOR_STAIRS,
  207. PC_FORCE_BOOM_FINDNEXTHIGHESTFLOOR,
  208. PC_ALLOW_SKY_TRANSFER_IN_BOOM,
  209. PC_APPLY_GREEN_ARMOR_CLASS_TO_ARMOR_BONUSES,
  210. PC_APPLY_BLUE_ARMOR_CLASS_TO_MEGASPHERE,
  211. PC_FORCE_INCORRECT_BOBBING_IN_BOOM,
  212. PC_BOOM_DEH_PARSER,
  213. PC_MBF_REMOVE_THINKER_IN_KILLMOBJ,
  214. PC_DO_NOT_INHERIT_FRIENDLYNESS_FLAG_ON_SPAWN,
  215. PC_DO_NOT_USE_MISC12_FRAME_PARAMETERS_IN_A_MUSHROOM,
  216. PC_APPLY_MBF_CODEPOINTERS_TO_ANY_COMPLEVEL,
  217. PC_RESET_MONSTERSPAWNER_PARAMS_AFTER_LOADING,
  218. PC_MAX
  219. };
  220. extern prboom_comp_t prboom_comp[];
  221. int StepwiseSum(int value, int direction, int step, int minval, int maxval, int defval);
  222. enum
  223. {
  224. TT_ALLKILL,
  225. TT_ALLITEM,
  226. TT_ALLSECRET,
  227. TT_TIME,
  228. TT_TOTALTIME,
  229. TT_TOTALKILL,
  230. TT_TOTALITEM,
  231. TT_TOTALSECRET,
  232. TT_MAX
  233. };
  234. typedef struct timetable_s
  235. {
  236. char map[16];
  237. int kill[MAXPLAYERS];
  238. int item[MAXPLAYERS];
  239. int secret[MAXPLAYERS];
  240. int stat[TT_MAX];
  241. } timetable_t;
  242. #ifdef _WIN32
  243. const char* WINError(void);
  244. #endif
  245. extern int stats_level;
  246. void e6y_G_DoCompleted(void);
  247. void e6y_WriteStats(void);
  248. void e6y_G_DoWorldDone(void);
  249. void I_ProcessWin32Mouse(void);
  250. void I_StartWin32Mouse(void);
  251. void I_EndWin32Mouse(void);
  252. int AccelerateMouse(int val);
  253. void MouseAccelChanging(void);
  254. extern int mlooky;
  255. extern int realtic_clock_rate;
  256. void e6y_G_Compatibility(void);
  257. extern dboolean zerotag_manual;
  258. dboolean ProcessNoTagLines(line_t* line, sector_t **sec, int *secnum);
  259. char* PathFindFileName(const char* pPath);
  260. void NormalizeSlashes2(char *str);
  261. unsigned int AfxGetFileName(const char* lpszPathName, char* lpszTitle, unsigned int nMax);
  262. void AbbreviateName(char* lpszCanon, int cchMax, int bAtLeastName);
  263. //extern int viewMaxY;
  264. extern dboolean isskytexture;
  265. extern int levelstarttic;
  266. extern int force_singletics_to;
  267. int HU_DrawDemoProgress(int force);
  268. #ifdef _MSC_VER
  269. int GetFullPath(const char* FileName, const char* ext, char *Buffer, size_t BufferLength);
  270. #endif
  271. void I_vWarning(const char *message, va_list argList);
  272. void I_Warning(const char *message, ...);
  273. #define PRB_MB_OK 0x00000000
  274. #define PRB_MB_OKCANCEL 0x00000001
  275. #define PRB_MB_ABORTRETRYIGNORE 0x00000002
  276. #define PRB_MB_YESNOCANCEL 0x00000003
  277. #define PRB_MB_YESNO 0x00000004
  278. #define PRB_MB_RETRYCANCEL 0x00000005
  279. #define PRB_MB_DEFBUTTON1 0x00000000
  280. #define PRB_MB_DEFBUTTON2 0x00000100
  281. #define PRB_MB_DEFBUTTON3 0x00000200
  282. #define PRB_IDOK 1
  283. #define PRB_IDCANCEL 2
  284. #define PRB_IDABORT 3
  285. #define PRB_IDRETRY 4
  286. #define PRB_IDIGNORE 5
  287. #define PRB_IDYES 6
  288. #define PRB_IDNO 7
  289. int I_MessageBox(const char* text, unsigned int type);
  290. dboolean SmoothEdges(unsigned char * buffer,int w, int h);
  291. #ifdef _WIN32
  292. extern int mus_extend_volume;
  293. void I_midiOutSetVolumes(int volume);
  294. #endif
  295. #endif