X-Git-Url: http://winboard.nl/cgi-bin?p=gnushogi.git;a=blobdiff_plain;f=gnushogi%2Fcursesdsp.c;h=2ee21ae030de4bd64f9835f2d1ed9847a99d41b9;hp=d2b336bc9261df89e8837498d5dc59628196c56c;hb=7496586755298a8115a3988a8b52b32d41a4dcb7;hpb=3abc03f7170b55bfcf97c4009abb570f62e48a24 diff --git a/gnushogi/cursesdsp.c b/gnushogi/cursesdsp.c index d2b336b..2ee21ae 100644 --- a/gnushogi/cursesdsp.c +++ b/gnushogi/cursesdsp.c @@ -37,6 +37,7 @@ #include #include #include +#include #include #include @@ -44,7 +45,6 @@ #include #include "gnushogi.h" -#include "cursesdsp.h" #if HAVE_UNISTD_H #include @@ -62,24 +62,23 @@ #define FLUSH_SCANW fflush(stdout), scanw -int mycnt1, mycnt2; - #define MARGIN (5) #define TAB (58) #define VIR_C(s) ((flag.reverse) ? (NO_COLS - 1 - column(s)) : column(s)) #define VIR_R(s) ((flag.reverse) ? (NO_ROWS - 1 - row(s)) : row(s)) -unsigned short MV[MAXDEPTH]; -int MSCORE; -char *DRAW; +/**************************************** + * forward declarations + ****************************************/ -/* Forward declarations. */ /* FIXME: change this name, puh-leeze! */ - static void UpdateCatched(void); static void DrawPiece(short sq); static void ShowScore(short score); +static void Curses_UpdateDisplay(short f, short t, short redraw, short isspec); +static void Curses_Die(int sig); +static void Curses_ShowSidetoMove(void); /**************************************** * Trivial output functions. @@ -93,7 +92,7 @@ ClearEoln(void) } -void +static void Curses_ClearScreen(void) { clear(); @@ -115,8 +114,7 @@ ClearMessage(void) ClearEoln(); } - -void +static void Curses_ShowCurrentMove(short pnt, short f, short t) { algbr(f, t, false); @@ -125,7 +123,7 @@ Curses_ShowCurrentMove(short pnt, short f, short t) } -void +static void Curses_ShowDepth(char ch) { gotoXY(TAB, 4); @@ -134,7 +132,7 @@ Curses_ShowDepth(char ch) } -void +static void Curses_ShowGameType(void) { if (flag.post) @@ -145,7 +143,7 @@ Curses_ShowGameType(void) } -void +static void ShowHeader(void) { gotoXY(TAB, 2); @@ -153,13 +151,13 @@ ShowHeader(void) } -void +static void Curses_ShowLine(unsigned short *bstline) { } -void +static void Curses_ShowMessage(char *s) { gotoXY(TAB, 6); @@ -168,32 +166,38 @@ Curses_ShowMessage(char *s) } -void -Curses_AlwaysShowMessage(const char *format, va_list ap) +static void +Curses_AlwaysShowMessage(const char *format, ...) { static char buffer[60]; + va_list ap; + va_start(ap, format); vsnprintf(buffer, sizeof(buffer), format, ap); Curses_ShowMessage(buffer); + va_end(ap); } -void -Curses_Printf(const char *format, va_list ap) +static void +Curses_Printf(const char *format, ...) { static char buffer[60]; + va_list ap; + va_start(ap, format); vsnprintf(buffer, sizeof(buffer), format, ap); printw("%s", buffer); + va_end(ap); } -void +static void Curses_doRequestInputString(const char* fmt, char* buffer) { FLUSH_SCANW(fmt, buffer); } -int +static int Curses_GetString(char* sx) { fflush(stdout); @@ -201,7 +205,7 @@ Curses_GetString(char* sx) } -void +static void Curses_ShowNodeCnt(long NodeCnt) { gotoXY(TAB, 22); @@ -212,7 +216,7 @@ Curses_ShowNodeCnt(long NodeCnt) } -void +static void Curses_ShowPatternCount(short side, short n) { if (flag.post) @@ -237,7 +241,7 @@ ShowPlayers(void) } -void +static void Curses_ShowPrompt(void) { Curses_ShowSidetoMove(); @@ -247,7 +251,7 @@ Curses_ShowPrompt(void) } -void +static void Curses_ShowResponseTime(void) { if (flag.post) @@ -261,7 +265,7 @@ Curses_ShowResponseTime(void) } -void +static void Curses_ShowResults(short score, unsigned short *bstline, char ch) { unsigned char d, ply; @@ -305,7 +309,7 @@ ShowScore(short score) } -void +static void Curses_ShowSidetoMove(void) { gotoXY(TAB, 14); @@ -314,7 +318,7 @@ Curses_ShowSidetoMove(void) } -void +static void Curses_ShowStage(void) { gotoXY(TAB, 19); @@ -327,7 +331,7 @@ Curses_ShowStage(void) * End of trivial output routines. ****************************************/ -void +static void Curses_Initialize(void) { signal(SIGINT, Curses_Die); @@ -337,7 +341,7 @@ Curses_Initialize(void) } -void +static void Curses_ExitShogi(void) { if (!nolist) @@ -353,7 +357,7 @@ Curses_ExitShogi(void) } -void +static void Curses_Die(int sig) { char s[80]; @@ -372,7 +376,7 @@ Curses_Die(int sig) } -void +static void Curses_TerminateSearch(int sig) { signal(SIGINT, SIG_IGN); @@ -388,7 +392,7 @@ Curses_TerminateSearch(int sig) } -void +static void Curses_help(void) { Curses_ClearScreen(); @@ -456,7 +460,7 @@ static const short y0[2] = { 4 + 2 * (NO_ROWS - 1), 4 }; * P* will put a pawn to the captured pieces. */ -void +static void Curses_EditBoard(void) { short a, c, sq, i, found; @@ -522,7 +526,7 @@ Curses_EditBoard(void) } } if (!found) - AlwaysShowMessage("Invalid piece type '%c'", s[0]); + dsp->AlwaysShowMessage("Invalid piece type '%c'", s[0]); continue; } @@ -530,7 +534,7 @@ Curses_EditBoard(void) r = ROW_NUM(s[2]); if ((c < 0) || (c >= NO_COLS) || (r < 0) || (r >= NO_ROWS)) { - AlwaysShowMessage("Out-of-board '%c%c'", s[1], s[2]); + dsp->AlwaysShowMessage("Out-of-board '%c%c'", s[1], s[2]); continue; } @@ -552,7 +556,7 @@ Curses_EditBoard(void) } if (!found) - AlwaysShowMessage("Invalid piece type '%c'", s[0]); + dsp->AlwaysShowMessage("Invalid piece type '%c'", s[0]); DrawPiece(sq); } @@ -621,7 +625,7 @@ UpdateCatched() } -void +static void Curses_SearchStartStuff(short side) { short i; @@ -637,7 +641,7 @@ Curses_SearchStartStuff(short side) } -void +static void Curses_OutputMove(void) { @@ -692,7 +696,7 @@ Curses_OutputMove(void) t = (l + h) >> 1; } - ShowNodeCnt(NodeCnt); + Curses_ShowNodeCnt(NodeCnt); gotoXY(TAB, 23); printw("Max Tree = %5d", t); ClearEoln(); @@ -702,7 +706,7 @@ Curses_OutputMove(void) } -void +static void Curses_UpdateClocks(void) { short m, s; @@ -734,7 +738,7 @@ Curses_UpdateClocks(void) printw("%d:%02d ", m, s); if (flag.post) - ShowNodeCnt(NodeCnt); + Curses_ShowNodeCnt(NodeCnt); refresh(); } @@ -781,13 +785,11 @@ DrawPiece(short sq) /* * Curses_ShowPostnValue(): must have called ExaminePosition() first */ -void +static void Curses_ShowPostnValue(short sq) { - short score; - gotoXY(4 + 5 * VIR_C(sq), 5 + 2 * (7 - VIR_R(sq))); /* CHECKME */ - score = ScorePosition(color[sq]); + (void) ScorePosition(color[sq]); if (color[sq] != neutral) #if defined SAVE_SVALUE @@ -806,7 +808,7 @@ Curses_ShowPostnValue(short sq) } -void +static void Curses_ShowPostnValues(void) { short sq, score; @@ -826,7 +828,7 @@ Curses_ShowPostnValues(void) } -void +static void Curses_UpdateDisplay(short f, short t, short redraw, short isspec) { short i, sq, z; @@ -943,7 +945,7 @@ Curses_UpdateDisplay(short f, short t, short redraw, short isspec) } -void +static void Curses_ChangeAlphaWindow(void) { Curses_ShowMessage("WAwindow = "); @@ -953,7 +955,7 @@ Curses_ChangeAlphaWindow(void) } -void +static void Curses_ChangeBetaWindow(void) { Curses_ShowMessage("WBwindow = "); @@ -963,7 +965,7 @@ Curses_ChangeBetaWindow(void) } -void +static void Curses_GiveHint(void) { char s[40]; @@ -982,8 +984,8 @@ Curses_GiveHint(void) } -void -Curses_ChangeSearchDepth(void) +static void +Curses_ChangeSearchDepth(char* sx) { Curses_ShowMessage("depth = "); FLUSH_SCANW("%hd", &MaxSearchDepth); @@ -991,7 +993,7 @@ Curses_ChangeSearchDepth(void) } -void +static void Curses_ChangeHashDepth(void) { Curses_ShowMessage("hashdepth = "); @@ -1001,7 +1003,7 @@ Curses_ChangeHashDepth(void) } -void +static void Curses_SetContempt(void) { Curses_ShowMessage("contempt = "); @@ -1009,7 +1011,7 @@ Curses_SetContempt(void) } -void +static void Curses_ChangeXwindow(void) { Curses_ShowMessage("xwndw= "); @@ -1017,7 +1019,7 @@ Curses_ChangeXwindow(void) } -void +static void Curses_SelectLevel(char *sx) { int item; @@ -1127,7 +1129,7 @@ Curses_SelectLevel(char *sx) } -void +static void Curses_DoDebug(void) { short c, p, sq, tp, tc, tsq, score; @@ -1174,7 +1176,7 @@ Curses_DoDebug(void) } -void +static void Curses_DoTable(short table[NO_SQUARES]) { short sq; @@ -1188,7 +1190,7 @@ Curses_DoTable(short table[NO_SQUARES]) } -void +static void Curses_PollForInput(void) { int i; @@ -1214,8 +1216,53 @@ Curses_PollForInput(void) } -void +static void Curses_SetupBoard(void) { Curses_ShowMessage("'setup' command is not supported in Cursesmode"); } + + +struct display curses_display = +{ + .ChangeAlphaWindow = Curses_ChangeAlphaWindow, + .ChangeBetaWindow = Curses_ChangeBetaWindow, + .ChangeHashDepth = Curses_ChangeHashDepth, + .ChangeSearchDepth = Curses_ChangeSearchDepth, + .ChangeXwindow = Curses_ChangeXwindow, + .ClearScreen = Curses_ClearScreen, + .DoDebug = Curses_DoDebug, + .DoTable = Curses_DoTable, + .EditBoard = Curses_EditBoard, + .ExitShogi = Curses_ExitShogi, + .GiveHint = Curses_GiveHint, + .Initialize = Curses_Initialize, + .ShowNodeCnt = Curses_ShowNodeCnt, + .OutputMove = Curses_OutputMove, + .PollForInput = Curses_PollForInput, + .SetContempt = Curses_SetContempt, + .SearchStartStuff = Curses_SearchStartStuff, + .SelectLevel = Curses_SelectLevel, + .ShowCurrentMove = Curses_ShowCurrentMove, + .ShowDepth = Curses_ShowDepth, + .ShowGameType = Curses_ShowGameType, + .ShowLine = Curses_ShowLine, + .ShowMessage = Curses_ShowMessage, + .AlwaysShowMessage = Curses_AlwaysShowMessage, + .Printf = Curses_Printf, + .doRequestInputString = Curses_doRequestInputString, + .GetString = Curses_GetString, + .SetupBoard = Curses_SetupBoard, + .ShowPatternCount = Curses_ShowPatternCount, + .ShowPostnValue = Curses_ShowPostnValue, + .ShowPostnValues = Curses_ShowPostnValues, + .ShowPrompt = Curses_ShowPrompt, + .ShowResponseTime = Curses_ShowResponseTime, + .ShowResults = Curses_ShowResults, + .ShowSidetoMove = Curses_ShowSidetoMove, + .ShowStage = Curses_ShowStage, + .TerminateSearch = Curses_TerminateSearch, + .UpdateClocks = Curses_UpdateClocks, + .UpdateDisplay = Curses_UpdateDisplay, + .help = Curses_help, +};