/*************************************************************************** * _ _ * * /_\ Chess Board /_\ * * \_/ ------------------- \_/ * * /_\ Settings /_\ * * |_| ------------------- |_| * * /___\ GNU GPL Version 2 /___\ * * * ***************************************************************************/ /* Header Files */ #include "setting.h" /* Window */ static WINDOW *winM; static WINDOW *winN; /* File Open */ FILE *cboard; FILE *enconf; /* Settings */ int nround = 0; float HORI, VERT; char nevent[30] = "Chess Board Match"; char nsite[30] = " "; char wname[30]; char bname[30]; char theme[2]; char ndate[DATE]; /* Class Player */ struct player { /* UCI */ char uci, uciok; /* Engine */ char isready, readyok, ucinewgame; /* Time */ int time; /* Result */ char result; }eboard, wboard, bboard; /*---------------------------------------------------------------------------*/ /* Localtime */ struct tm* dateBoard(void) { /* Date */ struct tm *date; time_t ndate; time(&ndate); date = localtime(&ndate); return date; } /*---------------------------------------------------------------------------*/ /* Color Chess Board */ void colorBoard(char *chess) { /* Colors */ initscr(); start_color(); if(chess[8]) { /* Double Color Pairs */ init_pair(1,COLOR_BLUE,COLOR_WHITE); init_pair(2,COLOR_BLUE,COLOR_BLACK); init_pair(3,COLOR_BLUE,COLOR_YELLOW); init_pair(4,COLOR_GREEN,COLOR_WHITE); init_pair(5,COLOR_GREEN,COLOR_BLACK); init_pair(6,COLOR_GREEN,COLOR_YELLOW); init_pair(7,COLOR_WHITE,COLOR_BLUE); init_pair(8,COLOR_WHITE,-1); init_pair(9,COLOR_WHITE,-1); } else { /* Double Color Pairs */ init_pair(1,COLOR_RED,COLOR_CYAN); init_pair(2,COLOR_RED,COLOR_BLUE); init_pair(3,COLOR_RED,COLOR_GREEN); init_pair(4,COLOR_WHITE,COLOR_CYAN); init_pair(5,COLOR_WHITE,COLOR_BLUE); init_pair(6,COLOR_WHITE,COLOR_GREEN); init_pair(7,COLOR_BLUE,COLOR_WHITE); init_pair(8,COLOR_WHITE,-1); init_pair(9,COLOR_WHITE,-1); } curs_set(0); keypad(stdscr,TRUE); } /*---------------------------------------------------------------------------*/ /* Clock Mode */ void clockmode() { /* Settings */ wboard.time = 7200; bboard.time = 7200; eboard.time = 7200; /* Chess Clock */ if((eboard.time == wboard.time) && (eboard.time == bboard.time)) { wattrset(winN,COLOR_PAIR(12)); mvwprintw(winN,11,24,"YES"); } } /*---------------------------------------------------------------------------*/ /* PGN File */ void pgnmode() { /* PGN Log File Open */ cboard=fopen("/var/log/cboard/cboard.pgn","r+"); if(cboard != NULL) { /* Write Text File */ fprintf(cboard,"[Event \"%s\"]\n",nevent); fprintf(cboard,"[Site \"%s\"]\n",nsite); fprintf(cboard,"[Date \"%s\"]\n",ndate); fprintf(cboard,"[Round \"%d\"]\n",nround); fprintf(cboard,"[White \"%s\"]\n",wname); fprintf(cboard,"[Black \"%s\"]\n",bname); fprintf(cboard,"[TimeControl \"%d+0\"]\n",eboard.time); fprintf(cboard,"[Result \"%c-%c\"]\n\n\n\n",wboard.result,bboard.result); wattrset(winN,COLOR_PAIR(12)); mvwprintw(winN,12,24,"YES"); } /* Chess File Close */ fclose(cboard); } /*---------------------------------------------------------------------------*/ /* UCI Engine */ void ucimode() { /* Config File Open */ enconf=fopen("/etc/cboard.conf","r+"); if(enconf != NULL) { /* Engine in UCI Mode */ eboard.uci = TRUE; if(eboard.uci) { /* The Engine is ready */ eboard.uciok = TRUE; } /* Waiting for the Engine */ eboard.isready = TRUE; if(eboard.isready) { /* Engine has finished */ eboard.readyok = TRUE; } /* Searching for a Game */ eboard.ucinewgame = TRUE; wattrset(winN,COLOR_PAIR(12)); mvwprintw(winN,13,24,"YES"); } /* Config File Close */ fclose(enconf); } /*---------------------------------------------------------------------------*/ /* Windows */ void windows() { winM = newwin(21,43,2,35); attrset(use_default_colors()); box(winM,ACS_VLINE,ACS_HLINE); mvwprintw(winM, 1,2," | a | b | c | d | e | f | g | h | "); mvwprintw(winM, 2,2,"--+---+---+---+---+---+---+---+---+---"); mvwprintw(winM, 3,2," 8 a8 b8 c8 d8 e8 f8 g8 h8 8 "); mvwprintw(winM, 5,2," 7 a7 b7 c7 d7 e7 f7 g7 h7 7 "); mvwprintw(winM, 7,2," 6 a6 b6 c6 d6 e6 f6 g6 h6 6 "); mvwprintw(winM, 9,2," 5 a5 b5 c5 d5 e5 f5 g5 h5 5 "); mvwprintw(winM,11,2," 4 a4 b4 c4 d4 e4 f4 g4 h4 4 "); mvwprintw(winM,13,2," 3 a3 b3 c3 d3 e3 f3 g3 h3 3 "); mvwprintw(winM,15,2," 2 a2 b2 c2 d2 e2 f2 g2 h2 2 "); mvwprintw(winM,17,2," 1 a1 b1 c1 d1 e1 f1 g1 h1 1 "); mvwprintw(winM,18,2,"--+---+---+---+---+---+---+---+---+---"); mvwprintw(winM,19,2," | a | b | c | d | e | f | g | h | "); touchwin(winM); wrefresh(winM); } /*---------------------------------------------------------------------------*/ /* Draw Chess Board */ void settings(char *ipadr, char *chess) { /* Date */ initscr(); winN = newwin(21,32,2,2); attrset(use_default_colors()); box(winN,ACS_VLINE,ACS_HLINE); strftime(ndate, DATE, "%Y.%m.%d", dateBoard()); /* Settings */ colorMenu(); attrset(A_NORMAL); /*-------------------------------------------------------------------*/ /* Chess Settings */ nround++; mvwprintw(winN,2,3,"Event: %s",nevent); mvwprintw(winN,3,3,"Site: %s",nsite); mvwprintw(winN,4,3,"Date: %s",ndate); mvwprintw(winN,5,3,"Round: %d",nround); /* Game Settings */ mvwprintw(winN,10,3,"Color Modus < >"); mvwprintw(winN,11,3,"Chess Clock < >"); mvwprintw(winN,12,3,"PGN File < >"); mvwprintw(winN,13,3,"UCI Protocol < >"); mvwprintw(winN,14,3,"Network < >"); wattrset(winN,COLOR_PAIR(10)); mvwprintw(winN,11,24,"NOT"); mvwprintw(winN,12,24,"NOT"); mvwprintw(winN,13,24,"NOT"); mvwprintw(winN,14,24,"NOT"); /*-------------------------------------------------------------------*/ /* Functions */ colorBoard(chess); clockmode(); ucimode(); pgnmode(); windows(); /*-------------------------------------------------------------------*/ /* Colors */ if(chess[8]) { wattrset(winN,COLOR_PAIR(10)); mvwprintw(winN,10,24,"NOT"); chess[8] = FALSE; } else { wattrset(winN,COLOR_PAIR(12)); mvwprintw(winN,10,24,"YES"); chess[8] = TRUE; } /*-------------------------------------------------------------------*/ /* Network */ if(chess[4] || chess[5]) { wattrset(winN,COLOR_PAIR(12)); mvwprintw(winN,14,24,"YES"); } /*-------------------------------------------------------------------*/ /* Player */ wattrset(winN,A_NORMAL); mvwprintw(winN,7,3,"White: "); wgetstr(winN,wname); mvwprintw(winN,8,3,"Black: "); wgetstr(winN,bname); /*-------------------------------------------------------------------*/ /* Client Ready */ if(chess[5]) { mvwprintw(winN,15,3,"Client < >"); wattrset(winN,COLOR_PAIR(12)); mvwprintw(winN,15,24,"YES"); wattrset(winN,A_NORMAL); mvwprintw(winN,17,3,"Server IP: "); wgetstr(winN,ipadr); } /* Server Ready */ if(chess[4]) { mvwprintw(winN,15,3,"Server < >"); wattrset(winN,COLOR_PAIR(12)); mvwprintw(winN,15,24,"YES"); } touchwin(winN); wrefresh(winN); } /*---------------------------------------------------------------------------*/