home *** CD-ROM | disk | FTP | other *** search
/ ST-Computer Leser-CD 2000 January / LCD_01_2000.iso / games / doom / pmdoom / include / d_think.h < prev    next >
Encoding:
C/C++ Source or Header  |  1999-12-17  |  2.0 KB  |  80 lines

  1. /*  Emacs style mode select   -*- C++ -*-  */
  2. /* ----------------------------------------------------------------------------- */
  3. /*  */
  4. /*  $Id:$ */
  5. /*  */
  6. /*  Copyright (C) 1993-1996 by id Software, Inc. */
  7. /*  */
  8. /*  This source is available for distribution and/or modification */
  9. /*  only under the terms of the DOOM Source Code License as */
  10. /*  published by id Software. All rights reserved. */
  11. /*  */
  12. /*  The source is distributed in the hope that it will be useful, */
  13. /*  but WITHOUT ANY WARRANTY; without even the implied warranty of */
  14. /*  FITNESS FOR A PARTICULAR PURPOSE. See the DOOM Source Code License */
  15. /*  for more details. */
  16. /*  */
  17. /*  DESCRIPTION: */
  18. /*   MapObj data. Map Objects or mobjs are actors, entities, */
  19. /*   thinker, take-your-pick... anything that moves, acts, or */
  20. /*   suffers state changes of more or less violent nature. */
  21. /*  */
  22. /* ----------------------------------------------------------------------------- */
  23.  
  24.  
  25. #ifndef __D_THINK__
  26. #define __D_THINK__
  27.  
  28.  
  29. #ifdef __GNUG__
  30. #pragma interface
  31. #endif
  32.  
  33.  
  34.  
  35. /*  */
  36. /*  Experimental stuff. */
  37. /*  To compile this as "ANSI C with classes" */
  38. /*   we will need to handle the various */
  39. /*   action functions cleanly. */
  40. /*  */
  41. typedef  void (*actionf_v)();
  42. typedef  void (*actionf_p1)( void* );
  43. typedef  void (*actionf_p2)( void*, void* );
  44.  
  45. typedef union
  46. {
  47.   actionf_p1    acp1;
  48.   actionf_v    acv;
  49.   actionf_p2    acp2;
  50.  
  51. } actionf_t;
  52.  
  53.  
  54.  
  55.  
  56.  
  57. /*  Historically, "think_t" is yet another */
  58. /*   function pointer to a routine to handle */
  59. /*   an actor. */
  60. typedef actionf_t  think_t;
  61.  
  62.  
  63. /*  Doubly linked list of actors. */
  64. typedef struct thinker_s
  65. {
  66.     struct thinker_s*    prev;
  67.     struct thinker_s*    next;
  68.     think_t        function;
  69.     
  70. } thinker_t;
  71.  
  72.  
  73.  
  74. #endif
  75. /* ----------------------------------------------------------------------------- */
  76. /*  */
  77. /*  $Log:$ */
  78. /*  */
  79. /* ----------------------------------------------------------------------------- */
  80.