CompileOptions.h 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624
  1. ////////////////////////////////////////////////////////////////////////////////
  2. //
  3. // Copyright 2016 RWS Inc, All Rights Reserved
  4. //
  5. // This program is free software; you can redistribute it and/or modify
  6. // it under the terms of version 2 of the GNU General Public License as published by
  7. // the Free Software Foundation
  8. //
  9. // This program is distributed in the hope that it will be useful,
  10. // but WITHOUT ANY WARRANTY; without even the implied warranty of
  11. // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
  12. // GNU General Public License for more details.
  13. //
  14. // You should have received a copy of the GNU General Public License along
  15. // with this program; if not, write to the Free Software Foundation, Inc.,
  16. // 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  17. //
  18. // CompileOptions.h
  19. // Special compile options
  20. //
  21. // History:
  22. // 07/21/97 JMI Started tracking history of this file.
  23. // Disabled DISABLE_EDITOR_SAVE_AND_PLAY.
  24. //
  25. // 07/23/97 BRH Changed expiration date.
  26. //
  27. // 07/23/97 JMI 'Uncommented-out' or 'Commented-in' the
  28. // DISABLE_EDITOR_SAVE_AND_PLAY as per Online Beta Demo Patch
  29. // Marketing Extravaganza Fiasco blah blah blah.
  30. //
  31. // 07/28/97 JMI Added MARKETING_RELEASE to indicate that it is, well, a
  32. // marketing release.
  33. //
  34. // 08/17/97 JMI Commented out CHECK_EXPIRATION_DATE.
  35. //
  36. // 08/18/97 JMI Added SALES_DEMO macro.
  37. //
  38. // 09/03/97 JMI Added USE_NEW_CHEATS which signifies to input that it
  39. // should use the new cheats.
  40. //
  41. // 09/04/97 JMI Enabled USE_NEW_CHEATS as we should use it from now on.
  42. //
  43. // 09/11/97 JMI Modified ENABLE_PLAY_SPECIFIC_REALMS_ONLY to be
  44. // "skirts.rlm".
  45. // Also, added COMP_USA_RELEASE for Bill's changes to game.cpp.
  46. //
  47. // 09/11/97 JMI Changed ENABLE_PLAY_SPECIFIC_REALMS_ONLY so it was a mere
  48. // switch and not the realm name that can be played.
  49. //
  50. // 09/11/97 JMI Added commented out SHAREWARE_RELEASE.
  51. //
  52. // 09/11/97 MJR Added macros for specific realms.
  53. //
  54. // 09/12/97 MJR Set macros for the "CompUsa" version
  55. //
  56. // 09/16/97 MJR Renamed to the more-correct ONLINE_DEMO_RELEASE.
  57. // Added conditional compilation for various options.
  58. //
  59. // 09/17/97 JMI Setup correct options for ONLINE_DEMO_RELEASE (correctly
  60. // known as SHAREWARE_RELEASE :) ).
  61. // Also, added USE_LA_PALOMA_CHEATS which is like the 'DOS for
  62. // Dummies' of cheats, allowing us to keep the 'real' cheats
  63. // anonymous and make them easy for the editors' demo.
  64. //
  65. // 09/17/97 JMI Commented out USE_LA_PALOMA_CHEATS.
  66. //
  67. // 09/18/97 JMI Added EXPIRATION_MSG_POSTAL_LAUNCH_WEEKEND.
  68. //
  69. // 09/18/97 JMI Put all settings back to the online demo settings and
  70. // tried to categorize a little.
  71. //
  72. // 09/23/97 JMI Added localization macros.
  73. //
  74. // 09/24/97 JMI Commented out ONLINE_DEMO_RELEASE and
  75. // ENABLE_PLAY_SPECIFIC_REALMS_ONLY.
  76. //
  77. // 09/25/97 JMI Commented out EDITOR_DISABLED.
  78. //
  79. // 10/10/97 JMI Added ALLOW_JOYSTICK macro which enables joystick support.
  80. //
  81. // 10/16/97 JMI Added NO_MPATH macro which, when defined, causes exclusion
  82. // of MPath in game.cpp.
  83. //
  84. // 10/23/97 JMI Uncommented out (i.e., commented in) NO_MPATH macro.
  85. //
  86. // 11/21/97 JMI Added ADD_ON_PACK macro.
  87. //
  88. // 09/27/99 JMI Temporarily (perhaps permanently) removed the must-be-on-cd
  89. // and check-for-cd macros.
  90. //
  91. // JMI Added JAPAN and VIOLENT_LOCALE macros.
  92. //
  93. // 10/07/99 JMI Removed ADD_ON_PACK macro (from Special Delivery).
  94. // Added comment on setup of JAPAN_ADD_ON and SUPER_POSTAL
  95. // macros.
  96. //
  97. // Changed JAPAN_ADD_ON and SUPER_POSTAL to work more like the
  98. // LOCALE macro where there's a macro TARGET defined to either
  99. // JAPAN_ADD_ON or SUPER_POSTAL. JAPAN_ADD_ON and
  100. // SUPER_POSTAL are defined in this file and TARGET is defined
  101. // in the project settings.
  102. //
  103. // 02/04/00 MJR Added PROMPT_FOR_ORIGINAL_CD and enabled it in the case of
  104. // the JAPAN_ADD_ON.
  105. // Also cleaned up the whole file to make it easier to read.
  106. //
  107. // 03/30/00 MJR Another huge clean up plus lots of new documentation.
  108. // Added REQUIRE_POSTAL_CD as a subset of what CHECK_FOR_CD
  109. // used to do.
  110. // Added POSTAL_PLUS and added appropriate support for it.
  111. // Moved APP_NAME and PREFS_FILE macros into here.
  112. //
  113. // More docs and a few minor tweaks.
  114. //
  115. // Cleaned up docs a bit more.
  116. // Added START_MENU_ADDON_ITEM for POSTAL_PLUS.
  117. //
  118. // 06/24/01 MJR Added DEMO macro to support the creation of demo
  119. // versions of whatever TARGET is set to. HOWEVER,
  120. // I only paid attention to the POSTAL PLUS target, so
  121. // demo version of other targets may or may not work!
  122. //
  123. // Added SHOW_EXIT_SCREEN macro (see description below).
  124. //
  125. // Renamed some of the older macros to make it more clear
  126. // what they do. Only did this because they seemed related
  127. // to the new DEMO macro, although in the end it turned out
  128. // they were only vaguely related.
  129. //
  130. // Got rid of the CompUSA macros, which are totally obsolete.
  131. //
  132. // Added MULTIPLAYER_DISABLED macro (see description below).
  133. //
  134. ////////////////////////////////////////////////////////////////////////////////
  135. //
  136. // This file basically determines which game configuration will be built.
  137. //
  138. // There are three key macros that control the compilation of the game:
  139. // TARGET
  140. // LOCALE
  141. // SPAWN
  142. // These macros should be set via the compiler preprocessor options.
  143. // They are described in detail in separate sections below.
  144. //
  145. // In general, any code that uses the TARGET and LOCALE macros should belong
  146. // to a project that defines those macros. In that case, the code can
  147. // assume the macros are defined and set to valid values (there are tests
  148. // below to validate the macros).
  149. //
  150. // However, it is possible that a header file that uses TARGET or LOCALE
  151. // might be included by files belonging to a project that does NOT define
  152. // those macros. In that case, the header should properly handle the case
  153. // where the macros are not defined. (For example: SampleMaster.h)
  154. //
  155. // There are many other macros defined in this file that are dependant
  156. // on TARGET and LOCALE. This creates an indirect dependency that may not
  157. // be immediately obvious. It's something to keep in mind when writing
  158. // code that uses any of these macros.
  159. //
  160. // Additional sections below provide details on other macros.
  161. //
  162. ////////////////////////////////////////////////////////////////////////////////
  163. #ifndef COMPILE_OPTIONS_H
  164. #define COMPILE_OPTIONS_H
  165. ////////////////////////////////////////////////////////////////////////////////
  166. // The TARGET macro must be set equal to one of the macros defined below.
  167. // It should be set in Project Settings (in the C/C++ Preprocessor section).
  168. //
  169. // To add a new target, just define one below using the next available value,
  170. // then make the necessary source file changes to accomodate it.
  171. //
  172. // Do a Find-In-Files for "TARGET" to find out what features are currently
  173. // based on this macro.
  174. //
  175. // Note that there are no targets here for the original Postal or for
  176. // Special Delivery. This is because this scheme didn't exist back then.
  177. // The source you're working with now is based on the original source, but
  178. // has in fact been branched off entirely. It is not possible to actually
  179. // rebuild those two titles EXACTLY from this source base. Many features
  180. // and changes have been made, such as faster multiplayer, faster rendering,
  181. // and a multitude of other, smaller changes. If you did want to recreate
  182. // the original versions, you'd have to use the original source base.
  183. ////////////////////////////////////////////////////////////////////////////////
  184. // This is an add-on pack that adds Japanese voice and a couple of Japanese
  185. // levels to the original Postal.
  186. #define JAPAN_ADD_ON 1
  187. // This is a standalone product that used Japanese voice and included all the
  188. // original levels, Special Delivery levels, and two new Japanese levels.
  189. #define SUPER_POSTAL 2
  190. // This is a standalone product that combines the original levels and
  191. // Special Delivery levels.
  192. #define POSTAL_PLUS 3
  193. // Added a define for POSTAL_2015 (Steam version)
  194. #define POSTAL_2015 4
  195. // If it's defined, make sure it's valid. See end of file for what
  196. // happens when it's not defined.
  197. #if defined(TARGET)
  198. #if TARGET == JAPAN_ADD_ON
  199. #elif TARGET == SUPER_POSTAL
  200. #elif TARGET == POSTAL_PLUS
  201. #elif TARGET == POSTAL_2015
  202. #else
  203. #error TARGET is set to an unrecognized value
  204. #endif
  205. #endif
  206. ////////////////////////////////////////////////////////////////////////////////
  207. // The LOCALE macro must be set equal to one of the macros defined below.
  208. // It should be set in Project Settings (in the C/C++ Preprocessor section).
  209. //
  210. // To add a new locale, just define one below using the next available value,
  211. // then make the necessary source file changes to accomodate it.
  212. //
  213. // Do a Find-In-Files for "LOCALE" to find out what features are currently
  214. // based on this macro.
  215. ////////////////////////////////////////////////////////////////////////////////
  216. #define US 1
  217. #define UK 2
  218. #define ARIAN 3
  219. #define MIME 4
  220. #define JAPAN 5
  221. // Synomyms for the humor-impaired
  222. #define GERMAN ARIAN
  223. #define FRENCH MIME
  224. // If it's defined, make sure it's valid. See end of file for what
  225. // happens when it's not defined.
  226. #if defined(LOCALE)
  227. // Verify that it was set to a good value
  228. #if LOCALE == US
  229. #elif LOCALE == UK
  230. #elif LOCALE == ARIAN
  231. #elif LOCALE == MIME
  232. #elif LOCALE == JAPAN
  233. #else
  234. #error LOCALE is set to an unrecognized value
  235. #endif
  236. #endif
  237. // This macro is true when the LOCALE allows the full level of violence
  238. #define VIOLENT_LOCALE (LOCALE == US || LOCALE == JAPAN)
  239. // This macro is true when the LOCALE is okay with the use of English text
  240. #define ENGLISH_LOCALE (LOCALE == US || LOCALE == UK || LOCALE == JAPAN)
  241. ////////////////////////////////////////////////////////////////////////////////
  242. // The DEMO macro should be defined to create a demo version.
  243. // It should be set in Project Settings (in the C/C++ Preprocessor section).
  244. //
  245. // A demo version is based on the full product but includes only one level
  246. // and does not include the editor or multiplayer support.
  247. //
  248. // DEMO is currently only setup to work with the TARGET set to POSTAL PLUS.
  249. // It's relatively easy to get it to work with other targets, but since
  250. // they weren't needed at the time, and I didn't want to test them, I
  251. // didn't bother adding support for that.
  252. //
  253. // To create a DEMO version, all that is necessary is to define the macro.
  254. // If you don't define it, you get the normal version of the game.
  255. //
  256. // You can NOT use DEMO and SPAWN at the same time!
  257. ////////////////////////////////////////////////////////////////////////////////
  258. #if defined (SPAWN) && defined (DEMO)
  259. #error DEMO and SPAWN cannot be used together.
  260. #endif
  261. ////////////////////////////////////////////////////////////////////////////////
  262. // The SPAWN macro should be defined to create a multiplayer-only version.
  263. // It should be set in Project Settings (in the C/C++ Preprocessor section).
  264. //
  265. // "Spawn" is (or was) the popular term for a limited, multiplayer version of
  266. // a game that was included on the game CD so that other people could play
  267. // without having to buy their own copy of the game.
  268. //
  269. // To create a SPAWN version, all that is necessary is to define the macro.
  270. // If you don't define it, you get the normal version of the game.
  271. //
  272. // You can NOT use DEMO and SPAWN at the same time!
  273. ////////////////////////////////////////////////////////////////////////////////
  274. #if defined (SPAWN) && defined (DEMO)
  275. #error DEMO and SPAWN cannot be used together.
  276. #endif
  277. ////////////////////////////////////////////////////////////////////////////////
  278. // Set APP_NAME to the text to be displayed in various message boxes and used
  279. // as the title of the main application window.
  280. //
  281. // Set MAIN_MENU_TITLE to the title for the main menu. This should generally
  282. // match APP_NAME, except it should be all-caps.
  283. //
  284. // In previous products, these names were always "POSTAL" which seems stupid in
  285. // retrospect. Now, the idea is to set them to match the product's consumer
  286. // name (which is probably different than its internal project name).
  287. //
  288. // Note that these macros do NOT effect the executable name! Use Project
  289. // Settings to verify the executable name. By default, it seems to be
  290. // based on the Project (.dsp) name, but if it was ever modified manually
  291. // then it may need to be updated manually. And again, the executable
  292. // name should be set to the product's consumer name.
  293. //
  294. ////////////////////////////////////////////////////////////////////////////////
  295. #if defined(TARGET) && defined(LOCALE)
  296. #if TARGET == POSTAL_PLUS
  297. #if defined(SPAWN)
  298. #define APP_NAME "Postal Plus MP"
  299. #define MAIN_MENU_TITLE "POSTAL PLUS MP"
  300. #elif defined (DEMO)
  301. #define APP_NAME "Postal Plus Demo"
  302. #define MAIN_MENU_TITLE "POSTAL PLUS DEMO"
  303. #else
  304. #define APP_NAME "Postal Plus"
  305. #define MAIN_MENU_TITLE "POSTAL PLUS"
  306. #endif
  307. #else
  308. // Prior to this point, all targets used the same name, so for
  309. // consistency sake, let's leave it that way.
  310. #define APP_NAME "Postal"
  311. #define MAIN_MENU_TITLE "POSTAL"
  312. #endif
  313. #endif
  314. ////////////////////////////////////////////////////////////////////////////////
  315. // Preference file name (in other words, the all important .ini file).
  316. ////////////////////////////////////////////////////////////////////////////////
  317. #if defined(TARGET) && defined(LOCALE)
  318. #if LOCALE == US
  319. #if TARGET == POSTAL_PLUS
  320. #if defined(SPAWN)
  321. #define PREFS_FILE "Postal Plus MP.ini"
  322. #elif defined (DEMO)
  323. #define PREFS_FILE "Postal Plus Demo.ini"
  324. #else
  325. #if PLATFORM_UNIX
  326. #define PREFS_FILE "postal_plus.ini"
  327. #else
  328. #define PREFS_FILE "Postal Plus.ini"
  329. #endif
  330. #endif
  331. #else
  332. #define PREFS_FILE "POSTAL.INI"
  333. #endif
  334. #elif LOCALE == UK
  335. #define PREFS_FILE "PostalUK.INI"
  336. #elif LOCALE == FRENCH
  337. #define PREFS_FILE "PostalFr.INI"
  338. #elif LOCALE == GERMAN
  339. #define PREFS_FILE "PostalGr.INI"
  340. #elif LOCALE == JAPAN
  341. #if TARGET == JAPAN_ADD_ON
  342. #define PREFS_FILE "Postal Japan Add On.ini"
  343. #elif TARGET == SUPER_POSTAL
  344. #define PREFS_FILE "Super Postal.ini"
  345. #endif
  346. #endif
  347. #endif
  348. ////////////////////////////////////////////////////////////////////////////////
  349. // The following macros can be defined in order to enable/disable various
  350. // features.
  351. //
  352. // EDITOR_DISABLED When defined, the editor item on the main menu is
  353. // disabled, and much of the editor code is not
  354. // included in the executable.
  355. //
  356. // REQUIRE_POSTAL_CD When defined, the program will check to see if
  357. // the CD appears to be the original Postal CD. It
  358. // does this by checking that one particular file
  359. // exists and one other particular file doesn't
  360. // exist. This was designed to tell the difference
  361. // between the Postal and Special Delivery CD's.
  362. // Now that several other Postal-related CD's have
  363. // been released, this particular test will not
  364. // be able to properly tell them apart. Therefore,
  365. // this macro is pretty much obsolete.
  366. //
  367. // Idea: If the need to differentiate CD's comes up
  368. // again, we might be able to use the fact that
  369. // newer versions (Japan and Postal Plus) have used
  370. // specifically-named ini files.
  371. //
  372. // MUST_BE_ON_CD When defined, the program makes sure that the
  373. // drive refered to by the CD path is actually a
  374. // CD-ROM drive as far as the operating system knows.
  375. // This only works for Windows.
  376. //
  377. // CHECK_FOR_COOKIE When defined, the program will check for a
  378. // "cookie" (special value) at a particular position
  379. // in a particularly large file on the CD. If the
  380. // cookie is incorrect, the program will not operate
  381. // correctly. This would typically be used when you
  382. // want an extra degree of anti-piracy. This was
  383. // used by the original Postal.
  384. //
  385. // DISABLE_EDITOR_SAVE_AND_PLAY When defined, the editor's save and play
  386. // features are both disabled. This would typically
  387. // be used for single-level demo releases, where you
  388. // don't want players to be able to create their own
  389. // levels because they haven't yet bought the game.
  390. //
  391. // PROMPT_FOR_ORIGINAL_CD When defined, the player is prompted (before the
  392. // title screens even appear) to make sure the
  393. // original CD is inserted. No actual test is done
  394. // to verify that the CD was inserted. This would
  395. // typically be used for "add-on packs" that require
  396. // the original CD.
  397. //
  398. // START_MENU_ADDON_ITEM When defined, an additional item appears on the
  399. // start menu that allows the user to start on the
  400. // first add-on level. If this macro is used, you
  401. // must add customized text for the menu items
  402. // in localize.cpp.
  403. //
  404. // TITLE_SHOW_DISTRIBUTOR When defined, the distributor screen is shown.
  405. // Otherwise, it is not.
  406. //
  407. // SHOW_EXIT_SCREEN When defined, we show a screen when the player
  408. // chooses to exit the app. The screen stays up
  409. // until the player clicks or hits a button.
  410. //
  411. // MULTIPLAYER_DISABLED When defined, all multiplayer support is disabled.
  412. //
  413. // ENABLE_PLAY_SPECIFIC_REALMS_ONLY When defined, the game will only
  414. // play specific realms. See elsewhere for more
  415. // info on how this works.
  416. //
  417. // The above macros should be defined below (as appropriate) based on the
  418. // current TARGET, LOCALE and SPAWN macros.
  419. ////////////////////////////////////////////////////////////////////////////////
  420. #if defined(TARGET) && defined(LOCALE)
  421. #if TARGET == JAPAN_ADD_ON
  422. #if defined(SPAWN)
  423. #define EDITOR_DISABLED
  424. #else
  425. #define PROMPT_FOR_ORIGINAL_CD
  426. #define START_MENU_ADDON_ITEM
  427. #define TITLE_SHOW_DISTRIBUTOR
  428. #endif
  429. #elif TARGET == SUPER_POSTAL
  430. #if defined(SPAWN)
  431. #define EDITOR_DISABLED
  432. #else
  433. #define TITLE_SHOW_DISTRIBUTOR
  434. #endif
  435. #elif TARGET == POSTAL_PLUS
  436. #if defined(SPAWN)
  437. #define EDITOR_DISABLED
  438. #elif defined (DEMO)
  439. #define EDITOR_DISABLED
  440. #define MULTIPLAYER_DISABLED
  441. #define ENABLE_PLAY_SPECIFIC_REALMS_ONLY
  442. #define SHOW_EXIT_SCREEN
  443. #elif defined(WIN32)
  444. //#define MUST_BE_ON_CD
  445. //#define START_MENU_ADDON_ITEM
  446. #endif
  447. #elif TARGET == POSTAL_2015
  448. #define MULTIPLAYER_REMOVED
  449. #define EDITOR_REMOVED
  450. #define LOADLEVEL_REMOVED
  451. #define START_MENU_ADDON_ITEM
  452. #endif
  453. #endif
  454. // Turn off multiplayer on MacOSX/Linux...not worth it. --ryan.
  455. // This just takes it out of the menus...code is still compiled in.
  456. #if 1 //PLATFORM_UNIX
  457. #define MULTIPLAYER_REMOVED
  458. #define EDITOR_REMOVED
  459. #define LOADLEVEL_REMOVED // bleh, no file dialog thingey. :/
  460. #endif
  461. ////////////////////////////////////////////////////////////////////////////////
  462. // Define the character to be used as the separator in the audio sak filenames.
  463. //
  464. // This was originally hard-wired to "_" which gave us names like
  465. // 11025_16.sak
  466. // where the separator is used between the rate and the number of bits.
  467. //
  468. // For the Japanese version of Postal, the audio was re-recorded in Japanese.
  469. // If this had been purely a stand-alone product, no change would have been
  470. // required in the audio sak filenames. However, it was also available as
  471. // an add-on that would change all the audio in the original Postal to the new
  472. // Japanese audio. However, we also wanted the user to be able to go back to
  473. // the original Postal installation and play the game with the original English
  474. // audio. Therefore, a new naming scheme was devised so we could keep both
  475. // versions of the audio files in the same folder. For the Japanese versions,
  476. // the "_" was changed to "j".
  477. //
  478. // That led to the creation of this macro to make this feature easy to maintain.
  479. ////////////////////////////////////////////////////////////////////////////////
  480. #if defined(TARGET) && defined(LOCALE)
  481. #if LOCALE == JAPAN
  482. #define AUDIO_SAK_SEPARATOR_CHAR 'j'
  483. #else
  484. #define AUDIO_SAK_SEPARATOR_CHAR '_'
  485. #endif
  486. #endif
  487. ////////////////////////////////////////////////////////////////////////////////
  488. // Cheating
  489. //
  490. // These macros control which cheat-keys are enabled. If USE_LA_PALOMA_CHEATS
  491. // is defined, then USE_NEW_CHEATS has no effect. Since the LaPaloma cheats
  492. // were designed just to be used for a specific event, they should probably
  493. // never be needed again. And since the "new cheats" were designed to replace
  494. // values that had become public too soon, that should probably always be
  495. // defined, unless we decide to change them again some time in the future.
  496. ////////////////////////////////////////////////////////////////////////////////
  497. //#define USE_LA_PALOMA_CHEATS
  498. #define USE_NEW_CHEATS
  499. // Enable this for sales demos. This enables a cheat ("sell") that gives you
  500. // everything plus invincibility and ability to go to next level at any time.
  501. //#define SALES_DEMO
  502. ////////////////////////////////////////////////////////////////////////////////
  503. // Expiration Check
  504. //
  505. // When CHECK_EXPIRATION_DATE is defined, the game will check to see whether
  506. // it has expired (according to the dates defined below) and if so, it will
  507. // no longer play properly (all the characters will burst into flames shortly
  508. // after the start of a level).
  509. //
  510. // If this feature is used, then you need to set the release and expiration
  511. // date values.
  512. //
  513. // RELEASE_DATE is the earliest date the game will be run. If it is run
  514. // before this date, it will assume the user is trying to circumvent the
  515. // expiration feature, and it will consider itself expired.
  516. //
  517. // EXPIRATION_DATE is the latest date the game will run. After this date,
  518. // it will be expired.
  519. //
  520. // SAFE_DATE appears to be some date far in the future. I can't remember
  521. // what it was used for.
  522. //
  523. // Dates are calculated using the following math:
  524. //
  525. // Time to 1/1/97 from 1/1/70 = 852076800
  526. // 1/1/70 = 0
  527. // 1/1/97 = (365*27) + 7 extra leap year days) * 24 * 60 * 60 = 852076800
  528. // 7/17/97 = 198th day in the year = 198 * 24 * 60 * 60
  529. // 9/22/97 = 265th day in the year = 265 * 24 * 60 * 60 = 22896000
  530. //
  531. ////////////////////////////////////////////////////////////////////////////////
  532. #define RELEASE_DATE 869443200 // Real release date - change before sending 7/20/97
  533. #define EXPIRATION_DATE (22896000+852076800-1) // 11:59pm Sepember 30, 1997 (day 273)
  534. #define SAFE_DATE 2047483000 // We'll all be dead.
  535. // These macros cause customized expiration messages to be displayed instead
  536. // of the standard expiration message. These particular messages are obsolete,
  537. // but I left these in just to illustrate how the messages could be customized.
  538. //#define EXPIRATION_MSG_MARKETING_RELEASE
  539. //#define EXPIRATION_MSG_POSTAL_LAUNCH_WEEKEND
  540. ////////////////////////////////////////////////////////////////////////////////
  541. // Level Limitations
  542. //
  543. // The game can be set to only allow playing of a specific realm. This is
  544. // normally used for demos which are limited to one level.
  545. //
  546. // To enable this feature, simply define ENABLE_PLAY_SPECIFIC_REALMS_ONLY.
  547. //
  548. // The following macros determine which realm will be used for multiplayer
  549. // games. Note that the text, file name, and number MUST match the associated
  550. // values in the "standard" realms.ini!!! Also note that changing these values
  551. // to a different realm is only one step -- you must also change the files
  552. // being included by MemFileFest.cpp!!!
  553. ////////////////////////////////////////////////////////////////////////////////
  554. #if defined(ENABLE_PLAY_SPECIFIC_REALMS_ONLY)
  555. #define SPECIFIC_MP_REALM_TEXT "Build Your Own Death"
  556. #define SPECIFIC_MP_REALM_FILE "res/levels/multi/mpconsit.rlm"
  557. #define SPECIFIC_MP_REALM_NUM 10
  558. #endif
  559. ////////////////////////////////////////////////////////////////////////////////
  560. // Miscellaneous Stuff
  561. ////////////////////////////////////////////////////////////////////////////////
  562. #define ALLOW_JOYSTICK
  563. #endif // COMPILE_OPTIONS_H
  564. ////////////////////////////////////////////////////////////////////////////////
  565. // EOF
  566. ////////////////////////////////////////////////////////////////////////////////