1 #pragma once
2 
3 //********************************************************************************************
4 //*
5 //*    This file is part of Egoboo.
6 //*
7 //*    Egoboo is free software: you can redistribute it and/or modify it
8 //*    under the terms of the GNU General Public License as published by
9 //*    the Free Software Foundation, either version 3 of the License, or
10 //*    (at your option) any later version.
11 //*
12 //*    Egoboo is distributed in the hope that it will be useful, but
13 //*    WITHOUT ANY WARRANTY; without even the implied warranty of
14 //*    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15 //*    General Public License for more details.
16 //*
17 //*    You should have received a copy of the GNU General Public License
18 //*    along with Egoboo.  If not, see <http://www.gnu.org/licenses/>.
19 //*
20 //********************************************************************************************
21 
22 /// @file egoboo_config.h
23 /// @brief System-dependent global parameters.
24 ///   @todo  some of this stuff is compiler dependent, rather than system dependent.
25 
26 //--------------------------------------------------------------------------------------------
27 //--------------------------------------------------------------------------------------------
28 // compliation flags
29 
30 // object pre-allocations
31 #define MAX_CHR             512             ///< Maximum number of characters
32 #define MAX_ENC             200             ///< Maximum number of enchantments
33 #define MAX_PRT             2048             ///< Maximum number of particles
34 #define TOTAL_MAX_DYNA      64             ///< Maximum number of dynamic lights
35 
36 #define MAX_TEXTURE        (MAX_CHR * 4)     ///< Maximum number of textures
37 #define MAX_ICON           (MAX_TEXTURE + 4) ///< Maximum number of icons
38 
39 #define MAX_SKIN             4               ///< The maxumum number of skins per model. This must remain hard coded at 4 for the moment.
40 
41 /// profile pre-allocations
42 #define MAX_PROFILE        256          ///< Maximum number of object profiles
43 #define MAX_AI             MAX_PROFILE  ///< Maximum number of scripts
44 
45 /// per-object pre-allocations
46 #define MAX_WAVE             30        ///< Maximum number of *.wav/*.ogg per object
47 #define MAX_PIP_PER_PROFILE  13        ///< Maximum number of part*.txt per object
48 #define MAX_PIP             (MAX_PROFILE * MAX_PIP_PER_PROFILE)
49 
50 // Some macro switches
51 #undef  OLD_CAMERA_MODE       ///< Use the old camera style
52 #undef  ENABLE_BODY_GRAB      ///< Enable the grabbing of bodies?
53 #undef  TEST_NAN_RESULT       ///< Test the result of certain math operations
54 
55 #undef  USE_LUA_CONSOLE       ///< LUA support for the console
56 
57 #undef  RENDER_HMAP           ///< render the mesh's heightmap?
58 #undef  DEBUG_MESH_NORMALS    ///< render the mesh normals
59 #define LOG_TO_CONSOLE        ///< dump all log info to file and to the console. Only useful if your compiler generates console for program output. Otherwise the results will end up in a file called stdout.txt
60 
61 #define  DEBUG_BSP             ///< Print debugging info about the BSP/octree state
62 
63 #define  DEBUG_RENDERLIST      ///< Print debugging info for the currently rendered mesh
64 
65 #undef  DEBUG_PROFILE         ///< Switch the profiling functions on and off
66 #undef  DEBUG_PROFILE_DISPLAY ///< Display the results for the performance profiling
67 #undef  DEBUG_PROFILE_RENDER  ///< Display the results for the performance profiling of the generric rendering
68 #undef  DEBUG_PROFILE_MESH    ///< Display the results for the performance profiling of the mesh rendering sub-system
69 #undef  DEBUG_PROFILE_INIT    ///< Display the results for the performance profiling of the rendering initialization
70 
71 #undef  DEBUG_OBJECT_SPAWN    ///< Log debug info for every object spawned
72 
73 #undef   DEBUG_PRT_LIST      ///< Track every single deletion from the PrtList to make sure the same element is not deleted twice. Prevents corruption of the PrtList.free_lst
74 #undef   DEBUG_ENC_LIST      ///< Track every single deletion from the EncList to make sure the same element is not deleted twice. Prevents corruption of the EncList.free_lst
75 #undef   DEBUG_CHR_LIST      ///< Track every single deletion from the ChrList to make sure the same element is not deleted twice. Prevents corruption of the ChrList.free_lst
76 
77 #define CLIP_LIGHT_FANS      ///< is the light_fans() function going to be throttled?
78 #undef  CLIP_ALL_LIGHT_FANS  ///< a switch for selecting how the fans will be updated
79 
80 #undef  DEBUG_WAYPOINTS      ///< display error messages when adding waypoints. It will also prevent "unsafe" waypoint being added to the waypoint list.
81 
82 /// How much script debugging.
83 ///    0 -- debugging off ( requires defined(_DEBUG) )
84 /// >= 1 -- Log the amount of script time that every object uses (requires defined(_DEBUG) and DEBUG_PROFILE)
85 /// >= 2 -- Log the amount of time that every single script command uses (requires defined(_DEBUG) and DEBUG_PROFILE)
86 /// >= 3 -- decompile every script (requires defined(_DEBUG))
87 #define DEBUG_SCRIPT_LEVEL 0
88 
89 //#undef DRAW_CHR_BBOX        ///< display selected character bounding boxes
90 #define DRAW_PRT_BBOX        ///< display selected particle bounding boxes
91 
92 //--------------------------------------------------------------------------------------------
93 //--------------------------------------------------------------------------------------------
94 // do the includes last so that the compile switches are always set
95 #include "egoboo_platform.h"
96 #include "egoboo_endian.h"
97 
98 #define EGOBOO_CONFIG_H
99