/* �H��
 * ���H��ԮɡA���賣�|���@�� chc_act_list �� linked-list�A�����ۨC�U�@�B
 * �ѡA�����N�o�ӰT���ᵹ���ǤH�]socket�^�C
 * �@�}�l���M�N�O���@�ӡA�C���@���[�Ѫ̥[�J�]�[�ѥi�H�q����ζ¤誺�[�I
 * �i��^�A�䤤�@�誺�U�Ѫ̪� act_list �N�|�h�@���O���A����N�|�N�U���Φ�
 * ����U���C�@�B�Ѷǵ� act_list ���Ҧ��ݭn���H�A�F���[�Ѫ��ĪG�C
 */

#define SIDE_ROW           7
#define TURN_ROW           8
#define STEP_ROW           9
#define TIME_ROW          10
#define WARN_ROW          12
#define MYWIN_ROW         17
#define HISWIN_ROW        18

#define CHC_VERSUS		1	/* ���H */
#define CHC_WATCH		2	/* �[�� */
#define CHC_PERSONAL		4	/* ���� */
#define CHC_WATCH_PERSONAL	8	/* �[�H���� */

#define CHE_O(c)          ((c) >> 3)
#define CHE_P(c)          ((c) & 7)
#define RTL(x)            (((x) - 3) >> 1)
#define dim(x)          (sizeof(x) / sizeof(x[0]))
#define LTR(x)            ((x) * 2 + 3)
#define CHE(a, b)         ((a) | ((b) << 3))

#define BLACK_COLOR       "\033[1;36m"
#define RED_COLOR         "\033[1;31m"
#define BLACK_REVERSE     "\033[1;37;46m"
#define RED_REVERSE       "\033[1;37;41m"
#define TURN_COLOR        "\033[1;33m"

typedef struct chcusr_t{
    char    userid[IDLEN + 1];
    int	    win;
    int     lose;
    int     tie;
    unsigned short rating;
    unsigned short orig_rating; // ��l rating, �]���C���}�l�����@��, rating �ȴN�]���F
} chcusr_t;

#define CHC_ACT_BOARD	0x1	/* set if transfered board to this sock */

typedef struct chc_act_list{
    int     sock;
    struct chc_act_list *next;
} chc_act_list;