home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / Games / flying-6.11 / global-d.h < prev    next >
Encoding:
C/C++ Source or Header  |  1995-06-30  |  6.0 KB  |  208 lines

  1. #ifndef    _global_h
  2. #define    _global_h
  3.  
  4. #define    DATA_DIRECTORY        "fly.dta"
  5. #define    PRESET_FILE            "presets.txt"
  6. #define    LOG_FILE                DATA_DIRECTORY"/logfile.txt"
  7.  
  8. //
  9. // Der Time-Cache ist eine Optimierung innerhalb der DynObj's, die nun
  10. // fⁿr alle anderen Objekte einen Zeitenspeicher anlegen, in welchem die
  11. // berechneten Zeiten hinterlegt werden. Bei Kollisionen ⁿberarbeiten dann
  12. // lediglich die von der Kollision betroffenen Objekte ihren Zeitspeicher.
  13. // (Gegebenenfalls mⁿssen sie allerdings auch andere Objekte von den neuen
  14. // Werten in Kenntnis setzen, aber das Verfahren ist eine fⁿhrt zu einer
  15. // erheblichen Beschleunigung.
  16. #define    TIME_CACHE        1
  17.  
  18. //
  19. // Die Kollisionsberechnung wird frⁿhzeitig abgebrochen, wenn die Zeit
  20. // vorraussichtlich ⁿber der Minimalzeit liegen wird.
  21. // Problem: - Bis zum Test zum Abbrechen wird bereits zuviel Rechenzeit ben÷tigt.
  22. //          - Durch den Time-Cache kann der gr÷▀ere Wert spΣter noch einmal
  23. //            von Bedeutung sein und die Berechnung mu▀ nochmal gestartet werden.
  24. #define    ABORT_CALC        0
  25. #if (ABORT_CALC)
  26. #    define    ABORT_CALC_WALL    0
  27. #    define    ABORT_CALC_BALL    0
  28. #endif
  29.  
  30. //
  31. // Die den Vektoren unterlagerte Klasse Real kann ausgetauscht werden.
  32. // float ist schneller, aber natⁿrlich ungenauer, was allerdings in den
  33. // meisten FΣllen durch das gewΣhlte EPS ausgeglichen werden kann.
  34. #ifndef __TURBOC__
  35. #    define    REAL_IS_FLOAT    0
  36. #else
  37. #    define    REAL_IS_FLOAT    1
  38. #endif
  39.  
  40. //
  41. // Bei einer Klasse wird eine eigene Real-Klasse angeboten, die alle
  42. // notwendigen Rechenoperationen definiert. Bei TurboC++ funktioniert
  43. // das aus ungeklΣrten Grⁿnden allerdings nicht.
  44. #define    REAL_IS_CLASS    0
  45.  
  46. //
  47. // Als Test der allgemeinen Vektorklasse der Algebra-Bibliothek koennen
  48. // die beiden Spezial-Klassen Vec2 und Vec3 auch von der allgemeinen Vektor-
  49. // Klasse abgeleitet werden (bei entsprechendem Zeitverlust)
  50. #define    Vec2IsVector    0
  51. #define    Vec3IsVector    0
  52.  
  53. //
  54. // ▄berschaubarer Wand-Algorithmus:
  55. // Der Algorithmus in Wall::HitFromBall() wird ⁿber die allgemeinen Methoden
  56. // Solve und Split der Vektor-Klasse realisiert und ist somit leichter
  57. // verstΣndlich (ist jedoch langsamer als die Speziall÷sung)
  58. #define    EasyWall        0
  59.  
  60. //
  61. // Konstante, die als Zeit fⁿr 'keine Kollision' in der
  62. // Kollisionsberechnung verwendet wird.
  63. //
  64. #define    MAX_TIME                1e10
  65. #define    NO_HIT                MAX_TIME
  66. #define    NO_TARGET            MAX_TIME
  67. #define    RUNNING_LOSE        4e10
  68. #if (ABORT_CALC)
  69. #    define    NOT_REACHABLE    2e10
  70. #endif
  71.  
  72. //
  73. // Konstante, die bei Vergleichen von Real-Werten die Rechenungenauigkeit
  74. // kompensieren soll.
  75. // Bei Verwendung von double 1e-10, floats 1e-3
  76. //
  77. #if (REAL_IS_FLOAT)
  78. #    define    EPS             1e-4
  79. #else
  80. #    define    EPS             1e-10
  81. #endif
  82.  
  83. //
  84. // Variable mit der aktuellen Zeit der Rechnung
  85. // (nicht zu verwechseln mit der Echtzeit aus GetCurrentTime())
  86. //
  87. extern double    current_time;
  88.  
  89. #ifndef __TURBOC__
  90. #    define    _DEBUG
  91. #endif
  92. //
  93. // Debugging ist an verschiedensten Stellen aktiv, wenn zusΣtzlich
  94. // noch der entsprechend mode gesetzt wird.
  95. //
  96. #ifdef DEBUG
  97.  
  98. #include <stdio.h>
  99. #include <stdlib.h>
  100. #include <string.h>
  101.  
  102. extern long        debug;                // Variable der anzuzeigenden modes
  103. #define    ShowLight            0x00000001l
  104. #define    ShowColors            0x00000002l
  105. #define    ShowRings            0x00000004l
  106. #define    ObjectInfo            0x00000008l
  107. #define    BeforCollision        0x00000010l
  108. #define    AfterCollision        0x00000020l
  109. #define    CheckBoundary        0x00000040l
  110. #define    MoveAll                0x00000080l
  111. #define    __Moves                0x000000f8l
  112. #define    PBallHit                0x00000100l
  113. #define    PointerMove            0x00000200l
  114. #define    XWallHit          0x00000400l
  115. #define    YWallHit                0x00000800l
  116. #define    CollCalc                0x00001000l
  117. #define    AbortCalc            0x00002000l
  118. #define    AbortReCalc            0x00004000l
  119. #define    StickLevel            0x00008000l
  120. #define    GameState            0x00010000l
  121. #define    BMover                0x00020000l
  122. #define    BState                0x00040000l
  123. #define    Sync                    0x00080000l
  124. #define    ShowTurns            0x00100000l
  125. #define    Loops                    0x00200000l
  126. #define    __ShowAll            0x00100007l
  127. #define    __Rings                0x00100004l
  128. #define    Intro                    0x00400000l
  129. #define    xdb               0x00800000l
  130. #define    xwd               0x02000000l
  131. #define  ForceCalc         0x01000000l
  132. #define  Motion                0x04000000l
  133.  
  134. #define    TCTrace                0x40000000l
  135. #define    UnixTrace            0x80000000l
  136.  
  137. #define    ShowSubWindow        (ShowLight|ShowColors|ShowRings|ShowTurns)
  138.  
  139. #define    DBG0(m,f)            if (debug&m)    printf( f )
  140. #define    DBG1(m,f,a)            if (debug&m)    printf( f,a )
  141. #define    DBG2(m,f,a,b)        if (debug&m)    printf( f,a,b )
  142. #define    DBG3(m,f,a,b,c)    if (debug&m)    printf( f,a,b,c )
  143. #define    DBG4(m,f,a,b,c,d)    if (debug&m)    printf( f,a,b,c,d )
  144.  
  145. int set_debug( const char *flag_name );
  146. void show_flags();
  147.  
  148. #else
  149. extern "C" {
  150.     int printf(const char *__format, ...);
  151.     void exit(int __status);
  152. };
  153.  
  154. #define    DBG0(m,f)
  155. #define    DBG1(m,f,a)
  156. #define    DBG2(m,f,a,b)
  157. #define    DBG3(m,f,a,b,c)
  158. #define    DBG4(m,f,a,b,c,d)
  159.  
  160. #endif
  161.  
  162. //
  163. // Fⁿr Zeitmessungen kann das Zeichnen der sich bewegenden BΣlle komplett
  164. // unterdrⁿckt werden, indem die DrawCircle()-Funktion durch eine leere
  165. // Funktion ersetzt wird.
  166. #define    STATISTICS
  167. #define    _NO_DRAW
  168.  
  169. //
  170. // Reibungsimplementierung, in dem schrittweise 
  171. // die Geschwindigkeit verkleinert wird. Das Problem ist allerdings, das mit
  172. // jedem Schritt die Zeiten des TIME-CACHE ungⁿltig werden, und daher
  173. // nicht zu viele Schritte pro Sekunden eingelegt werden sollten.
  174. // Die Parametrierung der Reibung und der Aufl÷sung der Schrittberechnung
  175. // geschieht durch virtuelle Funktionen der Game-Klasse
  176. //
  177. // Einschalten der Reibungssimulation durch stufige Verlangsamung:
  178. #define SIM_SLOW                1
  179.  
  180. #if (SIM_SLOW)
  181. #    define    SUPPRESS_SLOWSTEP        -1.0
  182. #endif
  183.  
  184.  
  185. // ===========================================================================
  186. //   'Wissenswertes' aus verschiedenen Bereichen (reduziert AbhΣngigkeiten)
  187. // ===========================================================================
  188.  
  189. extern double w2n;                    // Fensterskalierung                (graph.C)
  190.  
  191. typedef long ColorId;
  192.  
  193.  
  194. #define    SOUND_SUBSYSTEM    1
  195. #if (SOUND_SUBSYSTEM)
  196. extern    int sound_request;    // sound einschalten                            (main.C)
  197. #endif
  198. extern    int size;                // gewⁿnschte (aktuelle) Fenstergr÷▀e    (main.C)
  199. extern    int deluxe;                // Luxus-Flag                          (main.C)
  200.  
  201. #define    ON_ROOT        -1
  202.  
  203.  
  204. void show_defaults();
  205. void load_konfi();
  206.  
  207. #endif
  208.