/*
 * $VER: jack.h v1.0 (03.08.94)
 *
 * This file defines the card structure and creates a compleat deck.
 */

#include "face.h"

/*
 * Data and Image structures for the suits
 */
static UWORD __chip diamond_data[] = {
	0x0800, 0x3E00, 0x7F00, 0xFF80, 0x7F00, 0x3E00, 0x0800, 
	0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80,
};
struct Image diamond = {
	0, 0, 9, 7, 2, diamond_data, 0x3, 0x0, NULL,
};

static UWORD __chip heart_data[] = {
	0x7700, 0xFF80, 0xFF80, 0x7F00, 0x3E00, 0x1C00, 0x0800, 
	0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80, 0xFF80,
};
struct Image heart = {
	0, 0, 9, 7, 2, heart_data, 0x3, 0x0, NULL,
};

static UWORD __chip spade_data[] = {
	0x0800, 0x3E00, 0x7F00, 0xFF80, 0x7F00, 0x0800, 0x3E00, 
	0xF780, 0xC180, 0x8080, 0x0000, 0x8080, 0xF780, 0xC180,
};
struct Image spade = {
	0, 0, 9, 7, 2, spade_data, 0x3, 0x0, NULL,
};

static UWORD __chip club_data[] = {
	0x1C00, 0x1C00, 0x7F00, 0xFF80, 0x7F00, 0x0800, 0x3E00, 
	0xE380, 0xE380, 0x8080, 0x0000, 0x8080, 0xF780, 0xC180,
};
struct Image club = {
	0, 0, 9, 7, 2, club_data, 0x3, 0x0, NULL,
};


#define HEARTS   0x80
#define DIAMONDS 0x40
#define SPADES   0x20
#define CLUBS    0x10

struct Card {                /* The Card structure                     */
    UBYTE         Flags;     /* Suit | ID number (1 - 13);             */
    UBYTE        *Cords;     /* Co-ordinates to draw suit image        */
    UBYTE        *Name;      /* Letter to print in card                */
    struct Image *Face;      /* If a face-card, ptr-to Image structure */
};

/*
 * Co-ordinates for the card structures
 */
static UBYTE co1[] = {25, 17};
static UBYTE co2[] = {26,12, 26,21};
static UBYTE co3[] = {10,12, 26,17, 41,21};
static UBYTE co4[] = {12,12, 39,12, 12,21, 39,21};
static UBYTE co5[] = {10,12, 41,12, 26,17, 10,21, 41,21};
static UBYTE co6[] = {10,12, 26,12, 41,12, 10,21, 26,21, 41,21};
static UBYTE co7[] = {10,9, 26,9, 41,9, 26,17, 10,25, 26,25, 41,25};
static UBYTE co8[] = {5,12,19,12, 33,12, 46,12, 5,21, 19,21, 33,21, 46,21};
static UBYTE co9[] = {5,9,19,9,33,9, 12,17,26,17,40,17, 19,25,33,25,46,25};
static UBYTE co0[] = {5,9,19,9,33,9,46,9,12,17,39,17,5,25,19,25,33,25,46,25};
static UBYTE coF[] = {4, 9};

/*
 * A complete 'deck' of Cards.
 */
struct Card jdeck[] = {
    { HEARTS | 0x1, co1, "A", NULL},
    { HEARTS | 0x2, co2, "2", NULL},
    { HEARTS | 0x3, co3, "3", NULL},
    { HEARTS | 0x4, co4, "4", NULL},
    { HEARTS | 0x5, co5, "5", NULL},
    { HEARTS | 0x6, co6, "6", NULL},
    { HEARTS | 0x7, co7, "7", NULL},
    { HEARTS | 0x8, co8, "8", NULL},
    { HEARTS | 0x9, co9, "9", NULL},
    { HEARTS | 0xA, co0, "10", NULL},
    { HEARTS | 0xB, coF, "J", &jack},
    { HEARTS | 0xC, coF, "Q", &queen},
    { HEARTS | 0xD, coF, "K", &king},
    { DIAMONDS | 0x1, co1, "A", NULL},
    { DIAMONDS | 0x2, co2, "2", NULL},
    { DIAMONDS | 0x3, co3, "3", NULL},
    { DIAMONDS | 0x4, co4, "4", NULL},
    { DIAMONDS | 0x5, co5, "5", NULL},
    { DIAMONDS | 0x6, co6, "6", NULL},
    { DIAMONDS | 0x7, co7, "7", NULL},
    { DIAMONDS | 0x8, co8, "8", NULL},
    { DIAMONDS | 0x9, co9, "9", NULL},
    { DIAMONDS | 0xA, co0, "10", NULL},
    { DIAMONDS | 0xB, coF, "J", &jack},
    { DIAMONDS | 0xC, coF, "Q", &queen},
    { DIAMONDS | 0xD, coF, "K", &king},
    { SPADES | 0x1, co1, "A", NULL},
    { SPADES | 0x2, co2, "2", NULL},
    { SPADES | 0x3, co3, "3", NULL},
    { SPADES | 0x4, co4, "4", NULL},
    { SPADES | 0x5, co5, "5", NULL},
    { SPADES | 0x6, co6, "6", NULL},
    { SPADES | 0x7, co7, "7", NULL},
    { SPADES | 0x8, co8, "8", NULL},
    { SPADES | 0x9, co9, "9", NULL},
    { SPADES | 0xA, co0, "10", NULL},
    { SPADES | 0xB, coF, "J", &jack},
    { SPADES | 0xC ,coF, "Q", &queen},
    { SPADES | 0xD, coF, "K", &king},
    { CLUBS | 0x1, co1, "A", NULL},
    { CLUBS | 0x2, co2, "2", NULL},
    { CLUBS | 0x3, co3, "3", NULL},
    { CLUBS | 0x4, co4, "4", NULL},
    { CLUBS | 0x5, co5, "5", NULL},
    { CLUBS | 0x6, co6, "6", NULL},
    { CLUBS | 0x7, co7, "7", NULL},
    { CLUBS | 0x8, co8, "8", NULL},
    { CLUBS | 0x9, co9, "9", NULL},
    { CLUBS | 0xA, co0, "10", NULL},
    { CLUBS | 0xB, coF, "J", &jack},
    { CLUBS | 0xC, coF, "Q", &queen},
    { CLUBS | 0xD, coF, "K", &king},
};
