home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Games / SpriteFight 2002 v2.0a1 / SpriteWorld.h < prev    next >
Encoding:
Text File  |  1994-04-25  |  4.6 KB  |  188 lines  |  [TEXT/KAHL]

  1. ///--------------------------------------------------------------------------------------
  2. //    SpriteWorld.h
  3. //
  4. //    Created:    Wednesday, May 29, 1991 at 10:43:28 PM
  5. //    By:                Tony Myles
  6. //
  7. //    Copyright: © 1991-94 Tony Myles, All rights reserved worldwide
  8. //
  9. //    Description:    constants, structures, and prototypes for sprite worlds
  10. ///--------------------------------------------------------------------------------------
  11.  
  12.  
  13. #ifndef __SPRITEWORLD__
  14. #define __SPRITEWORLD__
  15.  
  16. #ifndef __SWCOMMON__
  17. #include "SWCommonHeaders.h"
  18. #endif
  19.  
  20. #ifndef __SPRITELAYER__
  21. #include "SpriteLayer.h"
  22. #endif
  23.  
  24. #ifndef __SPRITE__
  25. #include "Sprite.h"
  26. #endif
  27.  
  28. #ifndef __FRAME__
  29. #include "Frame.h"
  30. #endif
  31.  
  32.  
  33. ///--------------------------------------------------------------------------------------
  34. //    sprite world error constants
  35. ///--------------------------------------------------------------------------------------
  36.  
  37. enum
  38. {
  39.     kQuickDrawTooOldErr = 100,
  40.     kTimeMgrNotPresentErr,
  41.     kTimeMgrTooOldErr,
  42.     kMaxFramesErr,                    // attempt to exceed maximum number of frames for a sprite
  43.     kInvalidFramesIndexErr    // frame index out of range
  44. };
  45.  
  46.  
  47.  
  48.  
  49. ///--------------------------------------------------------------------------------------
  50. //    sprite world type definitions
  51. ///--------------------------------------------------------------------------------------
  52.  
  53. typedef struct SpriteWorldRec SpriteWorldRec;
  54. typedef SpriteWorldRec *SpriteWorldPtr, **SpriteWorldHdl;
  55.  
  56.  
  57. #ifdef __cplusplus
  58. extern "C" {
  59. #endif
  60.  
  61. typedef SW_FUNC void (*WorldDrawProcPtr)(
  62.     FramePtr srcFrameP,
  63.     FramePtr dstFrameP,
  64.     Rect *drawRect);
  65.  
  66. #ifdef __cplusplus
  67. };
  68. #endif
  69.  
  70. ///--------------------------------------------------------------------------------------
  71. //    sprite world data structure
  72. ///--------------------------------------------------------------------------------------
  73.  
  74. struct SpriteWorldRec
  75. {
  76.     SpriteLayerPtr headSpriteLayerP;    // head of the sprite layer linked list
  77.     SpriteLayerPtr tailSpriteLayerP;    // tail of the sprite layer linked list
  78.  
  79.     FramePtr windowFrameP;                // frame for drawing to the screen
  80.     FramePtr backFrameP;                    // frame for drawing from the background
  81.     FramePtr loadFrameP;                    // frame for drawing to the loader
  82.  
  83.     WorldDrawProcPtr eraseDrawProc;            // callback for erasing sprites offscreen
  84.     WorldDrawProcPtr screenDrawProc;        // callback for drawing sprite pieces onscreen
  85.  
  86.     long userData;                            // reserved for user
  87. };
  88.  
  89.  
  90. ///--------------------------------------------------------------------------------------
  91. //    sprite world function prototypes
  92. ///--------------------------------------------------------------------------------------
  93.  
  94.  
  95. #ifdef __cplusplus
  96. extern "C" {
  97. #endif
  98.  
  99. SW_FUNC OSErr SWEnterSpriteWorld(void);
  100.  
  101. SW_FUNC void SWExitSpriteWorld(void);
  102.  
  103. SW_FUNC OSErr SWCreateSpriteWorld(
  104.     SpriteWorldPtr *spriteWorldP,
  105.     FramePtr windowFrameP,
  106.     FramePtr backFrameP,
  107.     FramePtr loadFrameP);
  108.  
  109. SW_FUNC OSErr SWCreateSpriteWorldFromWindow(
  110.     SpriteWorldPtr* spriteWorldP,
  111.     CWindowPtr srcWindowP,
  112.     Rect* worldRect);
  113.  
  114. SW_FUNC void SWDisposeSpriteWorld(
  115.     SpriteWorldPtr spriteWorldP);
  116.  
  117. SW_FUNC void SWAddSpriteLayer(
  118.     SpriteWorldPtr spriteWorldP,
  119.     SpriteLayerPtr spriteLayerP);
  120.  
  121. SW_FUNC void SWRemoveSpriteLayer(
  122.     SpriteWorldPtr spriteWorldP,
  123.     SpriteLayerPtr spriteLayerP);
  124.  
  125. SW_FUNC void SWSwapSpriteLayer(
  126.     SpriteWorldPtr spriteWorldP,
  127.     SpriteLayerPtr srcSpriteLayerP,
  128.     SpriteLayerPtr dstSpriteLayerP);
  129.  
  130. SW_FUNC SpriteLayerPtr SWGetNextSpriteLayer(
  131.     SpriteWorldPtr spriteWorldP,
  132.     SpriteLayerPtr curSpriteLayerP);
  133.  
  134. SW_FUNC void SWLockSpriteWorld(
  135.     SpriteWorldPtr spriteWorldP);
  136.  
  137. SW_FUNC void SWUnlockSpriteWorld(
  138.     SpriteWorldPtr spriteWorldP);
  139.  
  140. SW_FUNC void SWSetPortToBackGround(
  141.     SpriteWorldPtr spriteWorldP);
  142.  
  143. SW_FUNC void SWSetPortToWindow(
  144.     SpriteWorldPtr spriteWorldP);
  145.  
  146. SW_FUNC void SWSetSpriteWorldEraseProc(
  147.     SpriteWorldPtr spriteWorldP,
  148.     WorldDrawProcPtr eraseProc);
  149.  
  150. SW_FUNC void SWSetSpriteWorldDrawProc(
  151.     SpriteWorldPtr spriteWorldP,
  152.     WorldDrawProcPtr drawProc);
  153.  
  154. SW_FUNC void SWStdWorldDrawProc(
  155.     FramePtr srcFrameP,
  156.     FramePtr dstFrameP,
  157.     Rect* drawRect);
  158.  
  159. SW_FUNC void SWUpdateSpriteWorld(
  160.     SpriteWorldPtr spriteWorldP);
  161.  
  162. SW_FUNC void SWProcessSpriteWorld(
  163.     SpriteWorldPtr spriteWorldP);
  164.  
  165. SW_FUNC void SWAnimateSpriteWorld(
  166.     SpriteWorldPtr spriteWorldP);
  167.  
  168. SW_FUNC void SWFastAnimateSpriteWorld(
  169.     SpriteWorldPtr spriteWorldP);
  170.  
  171. SW_FUNC void SWBlastAnimateSpriteWorld(
  172.     SpriteWorldPtr spriteWorldP);
  173.  
  174. void SWCheckIdleSpriteOverlap(
  175.     SpriteWorldPtr spriteWorldP,
  176.     SpritePtr curSpriteP,
  177.     SpritePtr headActiveSpriteP);
  178.  
  179. void SWFastCheckIdleSpriteOverlap(
  180.     SpriteWorldPtr spriteWorldP,
  181.     SpritePtr curSpriteP,
  182.     SpritePtr headActiveSpriteP);
  183.  
  184. #ifdef __cplusplus
  185. };
  186. #endif
  187.  
  188. #endif /* __SPRITEWORLD__ */