#ifndef GRAPHICS_CARDS_I
#define GRAPHICS_CARDS_I TRUE

/*
**  $VER: cards.i V0.8B
**
**  (C) Copyright 1996-1997 DreamWorld Productions.
**      All Rights Reserved.
**
*/

#ifndef DPKERNEL_H
#include <games/dpkernel.h>
#endif

/***************************************************************************
** Module details.
*/

Cards_ModVersion  =  0
Cards_ModRevision =  8

/***************************************************************************
** The CardSet structure for playing cards.
*/

#define CSVERSION    1
#define TAGS_CARDSET ((ID_SPCTAGS<<16)|ID_CARDSET)

struct CardSet {
  struct Head Head;     /* 00: Standard header */
  WORD	 Card;          /* 12: Card number to draw */
  WORD	 AmtCards;      /* 14: Number of cards in deck */
  LONG	 AmtColours;    /* 16: Amount of colours */
  LONG   *Palette;      /* 20: Pointer to palette */
  LONG	 Options;       /* 24: Options like GETPALETTE */
  LONG	 Attrib;        /* 28: Blitting attributes */
  APTR	 Source;        /* 32: File that the cardset comes from */
  struct Bob *Bob;      /* 36: Bob structure */
  APTR	 Owner;         /* 40: Pointer to Bitmap owner */
  WORD	 ScrMode;       /* 44: Screen mode */

  /*** Private fields start now ***/

  BYTE   prvAFlags;     /* Record of previous allocations */
  BYTE   prvPad;        /* Empty */
  WORD   prvCardWidth;  /* Card width rounded up 16 pixels */
  LONG   prvCardSize;   /* Bytes used by each card */
  LONG   prvViewmode;   /* OS Viewmode ID */
  LONG   prvRekoRaw;    /* Raw file - cardset */
  LONG   prvTaglistBob; /* Tag list used for Bob */
  LONG   prvGfxDirect;  /* Pointer to first graphic */
  LONG   prvGfxEnd;     /* LISTEND terminator for the above */
  LONG   prvMaskDirect; /* Pointer to first mask */
  LONG   prvMaskEnd;    /* LISTEND terminator for the above */
};

/* CardSet Tags */

#define CSA_AmtColours (16|TLONG)
#define CSA_Palette    (20|TAPTR)
#define CSA_Options    (24|TLONG)
#define CSA_Attrib     (28|TLONG)
#define CSA_Source     (32|TAPTR)
#define CSA_BobTags    (36|TSTEPIN)
#define CSA_Owner      (40|TAPTR)
#define CSA_ScrMode    (44|TWORD)
#define CSA_CardTags   (TAGEND)

/* Flags for shuffling */

#define SHUFFLE_NORMAL   0  /* Mix some times */
#define SHUFFLE_BABY     1  /* Move blocks of card in a different position */
#define SHUFFLE_CROUPIER 2  /* Divide in two decks and then bend and releasing them */
#define SHUFFLE_MACHINE  3  /* Simulate a casino shuffling machine */
#define SHUFFLE_GAMBLING 4  /* Shuffle maintain blocks of cards closer */
#define SHUFFLE_PARANOID 5  /* Shuffle many many times */

#endif /* GRAPHICS_CARDS_I */
