#import "MBCBoard.h"
#import <sys/time.h>
struct MBCColor {
GLfloat color[4];
operator GLfloat *() { return color; }
NSColor * GetColor() const;
void SetColor(NSColor * newColor);
};
struct MBCPosition {
GLfloat pos[3];
operator GLfloat *() { return pos; }
GLfloat & operator[](int i) { return pos[i]; }
GLfloat operator[](int i) const { return pos[i]; }
float FlatDistance(const MBCPosition & other)
{
return hypot(pos[0]-other[0], pos[2]-other[2]);
}
};
MBCPosition operator-(const MBCPosition & a, const MBCPosition & b);
extern MBCPieceCode gInHandOrder[];
const float kInHandPieceX = 51.0f;
const float kInHandPieceZOffset = 3.0f;
const float kInHandPieceSize = 8.0f;
const float kPromotionPieceX = 50.0f;
const float kPromotionPieceZ = 35.0f;
const float kBoardRadius = 40.0f;
const float kBorderWidth = 6.25f;
const float kMinElevation = 10.0f;
const float kMaxElevation = 80.0f;
@class MBCInteractivePlayer;
@class MBCDrawStyle;
@class MBCBoardWin;
@interface MBCBoardView : NSOpenGLView
{
MBCBoardWin * fController;
MBCInteractivePlayer *fInteractive;
MBCBoard * fBoard;
MBCSquare fPickedSquare;
MBCPiece fSelectedPiece;
MBCSquare fSelectedSquare;
MBCSquare fSelectedDest;
MBCPosition fSelectedPos;
MBCPosition fLastSelectedPos;
float fRawAzimuth;
NSPoint fOrigMouse;
NSPoint fCurMouse;
struct timeval fLastRedraw;
@public
float fAzimuth;
float fElevation;
float fBoardReflectivity;
float fLabelIntensity;
float fAmbient;
MBCDrawStyle * fBoardDrawStyle[2];
MBCDrawStyle * fPieceDrawStyle[2];
MBCDrawStyle * fBorderDrawStyle;
MBCDrawStyle * fSelectedPieceDrawStyle;
GLfloat fLightPos[4];
@private
GLuint fNumberTextures[8];
GLuint fLetterTextures[8];
int fMaxFSAA;
int fCurFSAA;
int fLastFSAASize;
bool fNeedStaticModels;
bool fIsPickingFormat;
bool fIsFloating;
bool fWantMouse;
bool fNeedPerspective;
bool fInAnimation;
bool fInBoardManipulation;
MBCVariant fVariant;
MBCSide fSide;
MBCSide fPromotionSide;
NSDictionary * fBoardAttr;
NSDictionary * fPieceAttr;
NSString * fBoardStyle;
NSString * fPieceStyle;
MBCMove * fHintMove;
MBCMove * fLastMove;
NSCursor * fHandCursor;
NSCursor * fArrowCursor;
MBCPiece fLastPieceDrawn;
char fKeyBuffer;
float fAnisotropy;
GLint fNumSamples;
NSTrackingArea * fTrackingArea;
}
- (id) initWithFrame:(NSRect)rect;
- (void) awakeFromNib;
- (void) drawRect:(NSRect)rect;
- (void) startGame:(MBCVariant)variant playing:(MBCSide) side;
- (void) drawNow; - (void) profileDraw; - (void) needsUpdate; - (void) endGame; - (void) startAnimation; - (void) animationDone;
- (void) pickPixelFormat:(BOOL)afterFailure;
- (void) setStyleForBoard:(NSString *)boardStyle pieces:(NSString *)pieceStyle;
- (void) selectPiece:(MBCPiece)piece at:(MBCSquare)square;
- (void) selectPiece:(MBCPiece)piece at:(MBCSquare)square to:(MBCSquare)dest;
- (void) moveSelectionTo:(MBCPosition *)position;
- (void) unselectPiece;
- (void) clickPiece;
- (void) showMoveAsHint:(MBCMove *)move;
- (void) showMoveAsLast:(MBCMove *)move;
- (void) hideMoves;
- (MBCSquare) positionToSquare:(const MBCPosition *)position;
- (MBCSquare) positionToSquareOrRegion:(const MBCPosition *)position;
- (MBCPosition) squareToPosition:(MBCSquare)square;
- (void) snapToSquare:(MBCPosition *)position;
- (MBCSide) facing; - (BOOL) facingWhite;
- (void) wantMouse:(BOOL)wantIt;
@end