- messageYPos = 25;
- messageWidth = x - messageXPos - 2;
- if ((messageHeight = y - messageYPos - 1) < 0) messageHeight = 0;
- else DrawBox(messageXPos - 2, messageYPos - 1,
- messageXPos + messageWidth + 1, messageYPos + messageHeight);
- prevscr = me;
- for (scr = 1; scr < MAX_SCREENS; scr++) if (scr != me) {
- boardXPos[scr] =
- boardXPos[prevscr] + 2 * Players[prevscr].boardWidth + 3;
- if (prevscr == me)
- boardXPos[scr] += 14; //scorebar
- boardYPos[scr] = 22;
- if (x < boardXPos[scr] + 2 * Players[scr].boardWidth + 1)
- Players[scr].spy = 0; //field doesn't fit on screen
- prevscr = scr;
+ messageYPos = 24;
+ messageWidth = MIN(x - messageXPos - 2, MSG_WIDTH);
+ messageHeight = MIN(y - messageYPos - 1, MSG_HEIGHT);
+ if (messageHeight < 3) {
+ messageWidth = MIN(x - statusXPos - 18, 27);
+ messageHeight = y - 3;
+ messageXPos = statusXPos + 16;
+ messageYPos = 2;
+ } //messagebox doesn't fit below
+ window_border(messageXPos - 2, messageYPos - 1,
+ messageXPos + messageWidth + 1, messageYPos+messageHeight);
+ if (msgwin = subwin(stdscr, messageHeight, messageWidth,
+ messageYPos, messageXPos))
+ scrollok(msgwin, 1); //allow scrolling
+ wmove(msgwin, messageHeight - 2, 0);
+ for (i = messageHeight - 2; i >= 0; i--) //display message history
+ msg_draw(message[i]);
+
+ spaceavail = x;
+ for (i = 1; i <= maxPlayer; i++)
+ spaceavail -= Players[i].boardWidth+2;
+ prev = me;
+ for (i = 1; i < MAX_SCREENS; i++) if (i != me) {
+ window[i].posy = 21;
+ window[i].posx =
+ window[prev].posx + 2 + window[prev].size * Players[prev].boardWidth;
+ if (prev == me) {
+ window[i].posx += 15; //scorebar
+ if (messageYPos < 24)
+ window[i].posx += messageWidth + 4; //messagebox
+ spaceavail -= window[i].posx - 3;
+ } //stuff before second player
+ if (spaceavail >= 0) {
+ window[i].size = 2;
+ spaceavail -= Players[i].boardWidth;
+ } //not enough space, half width
+ else
+ window[i].size = 1;
+ if (x < window[i].posx + 1 + window[i].size * Players[i].boardWidth)
+ window[i].shown = 0; //field doesn't fit on screen
+ else
+ window[i].shown = 1;
+ prev = i;