GameStatus getStatus() { string name; int year; time_t timer, nextRound; wchar_t nameyearstr[MAX_CHAR_LEN]; wchar_t timestr[MAX_CHAR_LEN]; GetWindowText(nameyearH,nameyearstr,sizeof(nameyearstr)); GetWindowText(timeH,timestr,sizeof(timestr)); parseNameYear(nameyearstr, name, year); parseTimer(timestr, timer, nextRound); GameStatus gs = GameStatus(name, year, nextRound, nPlayer); for (int i = 0; i<nPlayer; ++i) { string pname; bool finishedTurn; Status status; int score; wchar_t * playerstr = new wchar_t[MAX_CHAR_LEN]; wchar_t * pingstr = new wchar_t[MAX_CHAR_LEN]; wchar_t * scorestr = new wchar_t[MAX_CHAR_LEN]; GetWindowText(PlayerH[i].nameH, playerstr, MAX_CHAR_LEN); GetWindowText(PlayerH[i].pingH, pingstr, MAX_CHAR_LEN); GetWindowText(PlayerH[i].scoreH, scorestr, MAX_CHAR_LEN); parsePlayer(playerstr, pname, finishedTurn); parsePing(pingstr, status); parseScore(scorestr, score, status); delete[] playerstr; delete[] pingstr; delete[] scorestr; //Player p = new Player(pname, finishedTurn, status, score); gs.setPlayer(i, pname, finishedTurn, status, score); } return gs; }
static void printTextBoard(FILE * pf, const matchstate * pms) { TanBoard anBoard; char szBoard[2048]; char sz[32], szCube[32], szPlayer0[MAX_NAME_LEN + 3], szPlayer1[MAX_NAME_LEN + 3], szScore0[35], szScore1[35], szMatch[35]; char *apch[7] = { NULL, NULL, NULL, NULL, NULL, NULL, NULL }; unsigned int anPips[2]; memcpy(anBoard, pms->anBoard, sizeof(anBoard)); apch[0] = szPlayer0; apch[6] = szPlayer1; if (pms->anScore[0] == 1) sprintf(apch[1] = szScore0, _("%d point"), pms->anScore[0]); else sprintf(apch[1] = szScore0, _("%d points"), pms->anScore[0]); if (pms->anScore[1] == 1) sprintf(apch[5] = szScore1, _("%d point"), pms->anScore[1]); else sprintf(apch[5] = szScore1, _("%d points"), pms->anScore[1]); if (pms->fDoubled) { apch[pms->fTurn ? 4 : 2] = szCube; sprintf(szPlayer0, "O: %s", ap[0].szName); sprintf(szPlayer1, "X: %s", ap[1].szName); sprintf(szCube, _("Cube offered at %d"), pms->nCube << 1); } else { sprintf(szPlayer0, "O: %s", ap[0].szName); sprintf(szPlayer1, "X: %s", ap[1].szName); apch[pms->fMove ? 4 : 2] = sz; if (pms->anDice[0]) sprintf(sz, _("Rolled %d%d"), pms->anDice[0], pms->anDice[1]); else if (!GameStatus((ConstTanBoard) anBoard, pms->bgv)) strcpy(sz, _("On roll")); else sz[0] = 0; if (pms->fCubeOwner < 0) { apch[3] = szCube; if (pms->nMatchTo) sprintf(szCube, _("%d point match (Cube: %d)"), pms->nMatchTo, pms->nCube); else sprintf(szCube, _("(Cube: %d)"), pms->nCube); } else { size_t cch = strlen(ap[pms->fCubeOwner].szName); if (cch > 20) cch = 20; sprintf(szCube, _("%c: %*s (Cube: %d)"), pms->fCubeOwner ? 'X' : 'O', (int) cch, ap[pms->fCubeOwner].szName, pms->nCube); apch[pms->fCubeOwner ? 6 : 0] = szCube; if (pms->nMatchTo) sprintf(apch[3] = szMatch, _("%d point match"), pms->nMatchTo); } } if (pms->fResigned) sprintf(strchr(sz, 0), _(", resigns %s"), gettext(aszGameResult[pms->fResigned - 1])); if (!pms->fMove) SwapSides(anBoard); fputs(DrawBoard(szBoard, (ConstTanBoard) anBoard, pms->fMove, apch, MatchIDFromMatchState(pms), anChequers[ms.bgv]), pf); PipCount((ConstTanBoard) anBoard, anPips); fprintf(pf, "Pip counts: O %u, X %u\n\n", anPips[0], anPips[1]); }