Update codebase to remove clang warnings (and a couple of legit errors
[typhoon.git] / src / piece.c
1 /**
2
3 Copyright (c) Scott Gasch
4
5 Module Name:
6
7     piece.c
8
9 Abstract:
10
11     Chess piece related code.
12
13 Author:
14
15     Scott Gasch ([email protected]) 14 Apr 2004
16
17 Revision History:
18
19     $Id: piece.c 345 2007-12-02 22:56:42Z scott $
20
21 **/
22
23 #include "chess.h"
24
25 PIECE_DATA g_PieceData[] =
26 {
27     // piece value  piece value / 100     invert value   piece name
28     { 0,            0,                    0,             "NONE" },
29     { VALUE_PAWN,   (VALUE_PAWN / 100),   INVERT_PAWN,   "PAWN" },
30     { VALUE_KNIGHT, (VALUE_KNIGHT / 100), INVERT_KNIGHT, "KNIGHT" },
31     { VALUE_BISHOP, (VALUE_BISHOP / 100), INVERT_BISHOP, "BISHOP" },
32     { VALUE_ROOK,   (VALUE_ROOK / 100),   INVERT_ROOK,   "ROOK" },
33     { VALUE_QUEEN,  (VALUE_QUEEN / 100),  INVERT_QUEEN,  "QUEEN" },
34     { VALUE_KING,   100,                  INVERT_KING,   "KING" },
35     { 0,            0,                    0,             "NONE" }
36 };
37
38
39 CHAR *
40 PieceAbbrev(PIECE p) 
41 {
42     static char _PieceAbbrev[] =
43     {
44         '-', 'p', 'n', 'b', 'r', 'q', 'k', '\0'
45     };
46     static char buf[3];
47
48     if (!IS_VALID_PIECE(p))
49     {
50         buf[0] = buf[1] = '?';
51         buf[2] = 0;
52         return(buf);
53     }
54
55     buf[1] = _PieceAbbrev[PIECE_TYPE(p)];
56     if (PIECE_COLOR(p) == WHITE) 
57     {
58         buf[0] = '.'; 
59         buf[1] = (char)toupper(buf[1]);
60     }
61     else 
62     {
63         buf[0] = '*';
64     }
65     buf[2] = 0;
66     
67     return(buf);
68 }
69
70 ULONG
71 PieceValueOver100(PIECE p)
72 {
73     return(PIECE_VALUE_OVER_100(p));
74 }
75
76 ULONG
77 PieceValue(PIECE p)
78 {
79     return(PIECE_VALUE(p));
80 }
81
82 ULONG
83 PieceInvertedValue(PIECE p)
84 {
85     return(INVERTED_PIECE_VALUE(p));
86 }