home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / Libraries / SAT 2.3a1 / SAT CW Lib ƒ / SAT.h next >
Encoding:
Text File  |  1994-11-17  |  8.8 KB  |  251 lines  |  [TEXT/KAHL]

  1. /* #include file for the C interface to SAT */
  2.  
  3. /* Comment out under TC5: */
  4. /*#include <Color.h>*/
  5. /*#include <WindowMgr.h>*/
  6. /*#include <DialogMgr.h>*/
  7.  
  8. // Will it work with C++ if I do like this?
  9. #pragma once
  10. #ifdef _cplusplus
  11. extern "C" {
  12. #endif
  13.  
  14. #ifndef true
  15. #define true 1
  16. #endif
  17.  
  18. #ifndef false
  19. #define false 0
  20. #endif
  21.  
  22. #ifndef nil
  23. #define nil 0L
  24. #endif
  25.  
  26.     typedef struct Face {
  27.         char            *colorData;
  28.         short            resNum;
  29.         BitMap        iconMask;
  30.         short            rowBytes; /* Note! No flags in the highest bits!*/
  31.         struct face    *next;
  32.         RgnHandle        maskRgn;
  33.         } Face, *FacePtr;
  34.  
  35.     typedef struct Sprite {
  36. /* Variables that you should change as appropriate */
  37.         short            kind;
  38.         Point            position;    
  39.         Rect            hotRect, hotRect2;    // Only change hotRect, SAT handles hotRect2
  40.         FacePtr            face;
  41.         pascal void        (*task) (struct Sprite *);
  42.         pascal void        (*hitTask) (struct Sprite *, struct Sprite *);
  43.         pascal void        (*destructTask) (struct Sprite *);
  44.         RgnHandle        clip; /* Clip region to be used when this sprite is drawn. */
  45. /* SAT variables that you shouldn't change: */
  46.         Point            oldpos;
  47.         struct Sprite    *next, *prev;
  48.         Rect            r, oldr;
  49.         FacePtr        oldFace;            //Used by RunSAT2
  50.         Boolean        dirty;        //Used by RunSAT2
  51. /* Variables for free use by the application: */
  52.         short        layer;
  53.         Point            speed;
  54.         short        mode;
  55.         Ptr            appPtr;
  56.         long            appLong;
  57.         } Sprite, *SpritePtr;
  58.  
  59. typedef struct{
  60.         short    patternType;     /* 1 = Pattern, PatHandle, 2 = PixPat, PixPatHandle */
  61.         PixPatHandle    thePat;         /* or PatHandle */
  62.         }    SATPattern, *SATPatPtr, **SATPatHandle;
  63.  
  64. #define    UpdatePtr    Ptr
  65.  
  66. typedef struct {
  67.         WindowPtr    wind;
  68.         short        offSizeH, offSizeV;
  69.         GrafPtr        offScreen, backScreen;
  70.         GDHandle        offScreenGD, backScreenGD;
  71.         long            ox, oy;
  72.         short        pict, bwpict;
  73.         Boolean        fitThePICTs;
  74.         short        sorting, collision, searchWidth;
  75.         GDHandle        device;
  76.         PixMapHandle    screen;
  77.         Rect            bounds;
  78.         short        initDepth;
  79.         pascal Boolean    (*synchHook) ();
  80.         SpritePtr        sRoot;
  81.         UpdatePtr        updateRoot;
  82.         Boolean        anyMonsters;
  83.  
  84.         CGrafPtr        ditherOff;
  85.         GDHandle        ditherOffGD;
  86.         CGrafPtr        iconPort;
  87.         GDHandle        iconPortGD;
  88.         CGrafPtr        iconPort2;
  89.         GDHandle        iconPort2GD;
  90.         GrafPtr            bwIconPort;
  91.  
  92. /* Environment-independent globals: */
  93.         FacePtr            faceRoot;    /* Face list */
  94.         Boolean            colorFlag; /* Is this Mac color capable? */
  95.         } SATglobalsRec;
  96.  
  97. /* Constants for SATConfigure */
  98.     enum{kVPositionSort=0, kLayerSort, kNoSort};
  99.     enum{kKindCollision=0, kForwardCollision, kBackwardCollision, kNoCollision, kForwardOneCollision};
  100.  
  101. /* Global variables */
  102.     extern SATglobalsRec    GSAT;    /* Most globals */
  103.     extern pascal void        (*gSoundErrorProc)(OSErr); /* Sound errors reported here */
  104.  
  105. // Bug in CodeWarrior! gSAT is declared as gSAT in my code, and the docs,
  106. // but the lib seems to name it GSAT. :-(
  107. // Temporary fix:
  108. #define    gSAT    GSAT
  109.  
  110.  
  111. /* SAT routines */
  112.  
  113.     typedef pascal void (*TaskPtr)(SpritePtr);
  114.     typedef pascal Boolean (*SynchPtr)(void);
  115.     typedef pascal void (*EmergencyPtr)(void);
  116.  
  117. /* Initialization */
  118.     pascal void SATConfigure(Boolean, short, short, short);
  119.     pascal void SATInit (short, short, short, short);
  120.     pascal void SATCustomInit (short, short, Rect *, WindowPtr, GDHandle, Boolean, Boolean, Boolean, Boolean, Boolean);
  121. /* Maintainance, background manipulation etc. */
  122.     pascal Boolean SATDepthChangeTest(void);
  123.     pascal void SATDrawPICTs (short, short);
  124.     pascal void SATRedraw(void);
  125. /* Drawing */
  126.     pascal void SATPlotFace(FacePtr, GrafPtr, GDHandle, Point, Boolean); /*Draw a Face (icon).*/
  127.     pascal void SATPlotFaceToScreen(FacePtr, Point, Boolean);
  128.     pascal void SATCopyBits(GrafPtr, GrafPtr, GDHandle, Rect*, Rect*, Boolean);
  129.     pascal void SATCopyBitsToScreen(GrafPtr, Rect, Rect, Boolean);
  130.     pascal void SATBackChanged (Rect *); /*Tell SAT about changes in BackScreen*/
  131. /* SetPort replacements */
  132.     pascal void SATGetPort (GrafPtr*,  GDHandle*);
  133.     pascal void SATSetPort (GrafPtr, GDHandle);
  134.     pascal void SATSetPortOffScreen(void); /*Use before Quick-Drawing on offScreen*/
  135.     pascal void SATSetPortBackScreen(void); /*Use before Quick-Drawing on BackScreen*/
  136.     pascal void SATSetPortScreen(void); /*Use to restore after drawing off/backscreen*/
  137. /* Sprite handling */
  138.     pascal FacePtr SATGetFace (short);
  139.     pascal void SATDisposeFace (FacePtr);
  140.     pascal SpritePtr SATNewSprite (short,short,short, TaskPtr); // (*void)(SpritePtr));
  141.     pascal SpritePtr SATNewSpriteAfter (SpritePtr,short,short,short, TaskPtr);
  142.     pascal void SATKillSprite (SpritePtr);
  143. /* Animating */
  144.     pascal void    SATRun (Boolean);
  145.     pascal void    SATRun2 (Boolean); //Alternate routine for allowing resting sprites}
  146. /* Advanced special-purpose calls */
  147.     pascal void SATInstallSynch (SynchPtr);
  148.     pascal void SATInstallEmergency (EmergencyPtr);
  149.     pascal void SATSetSpriteRecSize (long);
  150.     pascal void SATSkip(void);
  151.     pascal void SATKill(void); /*Dispose of offscreen buffers to allow re-init*/
  152. /* Offscreen - use only if you need an *extra* offscreen buffer. These calls are likely to change in the future!*/
  153.     pascal void SATMakeOffscreen (GrafPtr*, Rect*, GDHandle*);    /*Make offscreen buffer in current screen depth and CLUT.*/
  154.     pascal void SATDisposeOffScreen (GrafPtr*, GDHandle);        /*Get rid of offscreen*/
  155.     pascal OSErr CreateOffScreen (Rect*, short, CTabHandle, CGrafPtr*, GDHandle*); /*From Principia Offscreen*/
  156.     pascal void DisposeOffScreen (CGrafPtr, GDHandle);            /*From Principia Offscreen*/
  157. /* Face manipulation */
  158.     pascal void SATSetPortMask (FacePtr);
  159.     pascal void SATSetPortFace (FacePtr);
  160.     pascal void SATSetPortFace2 (FacePtr);
  161.     pascal FacePtr SATNewFace (Rect*);
  162.     pascal void SATChangedFace (FacePtr);
  163.  
  164. /* Most common old names, uncomment for compatibility with old programs */
  165. // #define ConfigureSAT        SATConfigure
  166. // #define InitSAT            SATInit
  167. // #define CustomInitSAT    SATCustomInit
  168. // #define KillSAT            SATKill
  169. // #define RunSAT            SATRun
  170. // #define SkipSAT            SATSkip
  171. // #define GetFace            SATGetFace
  172. // #define DisposeFace        SATDisposeFace
  173. // #define NewSprite        SATNewSprite
  174. // #define NewSpriteAfter    SATNewSpriteAfter
  175. // #define KillSprite        SATKillSprite
  176. // #define NewFace            SATNewFace
  177. // #define ChangedFace        SATChangedFace
  178. // #define PeekOffscreen    SATRedraw
  179.  
  180. /* New procedures, EXPERIMENTAL, intended for making a C++ interface */
  181.     pascal SpritePtr SATNewSpritePP(SpritePtr, Ptr, short, short, short, TaskPtr);
  182.     pascal void SATCopySprite(SpritePtr, SpritePtr);
  183.     pascal FacePtr SATNewFacePP(Rect*, Ptr);
  184.     pascal FacePtr SATGetFacePP (short, Ptr);
  185.     pascal void SATCopyFace(FacePtr, FacePtr);
  186.     pascal void SATDisposeFacePP (FacePtr);
  187.  
  188. /* Cicn utilities */
  189.     pascal CIconHandle SATGetCicn (short);
  190.     pascal void SATPlotCicn (CIconHandle, GrafPtr, GDHandle, Rect*);
  191.     pascal void SATDisposeCicn (CIconHandle);
  192.  
  193. /*Utilities*/
  194.     pascal void SATSetStrings (Str255, Str255, Str255, Str255, Str255, Str255, Str255, Str255);
  195.     pascal Boolean SATTrapAvailable (short);
  196.     pascal void DrawInt (short);
  197.     pascal void DrawLong (long);
  198.     pascal short Rand (short);
  199.     pascal short Rand10(void);
  200.     pascal short Rand100(void);
  201.     pascal void ReportStr (Str255);
  202.     pascal Boolean QuestionStr(Str255);
  203.     pascal void CheckNoMem (Ptr); /*If the Ptr is nil, out of memory emergency exit*/
  204.     pascal short SATFakeAlert (Str255, Str255, Str255, Str255, short, short, short, Str255, Str255, Str255);
  205.     pascal void SetMouse (Point);
  206. /* Pattern utilities */
  207.     pascal void SATPenPat (SATPatHandle);
  208.     pascal void SATBackPat (SATPatHandle);
  209.     pascal SATPatHandle SATGetPat (short);
  210.     pascal void SATDisposePat (SATPatHandle);
  211. /* Menu bar utilities */
  212.     pascal void SATShowMBar(void);
  213.     pascal void SATHideMBar(WindowPtr);
  214. /* PICT utilities */
  215.     pascal void SATGetandDrawPICTRes (short id);
  216.     pascal void SATGetandDrawPICTResInRect (short id, Rect *frame);
  217.     pascal void SATGetandCenterPICTResInRect (short id, Rect *frame);
  218. /*Sound*/
  219.     pascal void InitSATSound(void);            /* No longer necessary */
  220.     pascal void SATSoundPlay (Handle, short, Boolean);    /* Play sounds with priority handling */
  221.     pascal void SATSoundShutup(void);        /*Silence, dispose of sound channel*/
  222.     pascal void SATSoundEvents(void);        /* Call this once in a while when not calling RunSAT often */
  223.     pascal Boolean SATSoundDone(void);    /* Any sound going on?*/
  224.     pascal Handle SATGetSound (short);
  225.     pascal Handle SATGetNamedSound (Str255);
  226.     pascal void SATDisposeSound (Handle);
  227.     pascal void SATSoundOn(void);
  228.     pascal void SATSoundOff(void);
  229. /* Multi-channel sound routines */
  230.     pascal short SATSoundInitChannels (short);
  231.     pascal Boolean SATSoundDoneChannel (short);
  232.     pascal void SATSoundPlayChannel (Handle, short);
  233.     pascal void SATSoundReserveChannel (short, Boolean);
  234.     pascal void SATSoundShutupChannel (short);
  235.     pascal void SATPreloadChannels(void);
  236. /* Experimental, likely to be renamed/removed/changed: */
  237.     pascal void SATSoundPlay2 (Handle, short, Boolean,Boolean);
  238.     pascal void SATSoundPlayEasy (Handle, Boolean);
  239. /* More multi-channel: */
  240.     pascal int SATGetNumChannels(void);
  241.     pascal Ptr SATGetChannel (int);
  242. /* Customization */
  243.     pascal void SATSetSoundInitParams (long);
  244.  
  245.  
  246. // Will it work with C++ if I do like this?
  247. #ifdef _cplusplus
  248. }
  249. #endif
  250.  
  251.