summaryrefslogtreecommitdiffstats
path: root/gnu/games/chess/Xchess/clock.c
diff options
context:
space:
mode:
Diffstat (limited to 'gnu/games/chess/Xchess/clock.c')
-rw-r--r--gnu/games/chess/Xchess/clock.c291
1 files changed, 0 insertions, 291 deletions
diff --git a/gnu/games/chess/Xchess/clock.c b/gnu/games/chess/Xchess/clock.c
deleted file mode 100644
index 88228b0..0000000
--- a/gnu/games/chess/Xchess/clock.c
+++ /dev/null
@@ -1,291 +0,0 @@
-
-/* This file contains code for X-CHESS.
- Copyright (C) 1986 Free Software Foundation, Inc.
-
-This file is part of X-CHESS.
-
-X-CHESS is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY. No author or distributor
-accepts responsibility to anyone for the consequences of using it
-or for whether it serves any particular purpose or works at all,
-unless he says so in writing. Refer to the X-CHESS General Public
-License for full details.
-
-Everyone is granted permission to copy, modify and redistribute
-X-CHESS, but only under the conditions described in the
-X-CHESS General Public License. A copy of this license is
-supposed to have been given to you along with X-CHESS so you
-can know your rights and responsibilities. It should be in a
-file named COPYING. Among other things, the copyright notice
-and this notice must be preserved on all copies. */
-
-
-/* RCS Info: $Revision: 1.1.1.1 $ on $Date: 1993/06/12 14:41:08 $
- * $Source: /home/ncvs/src/gnu/games/chess/Xchess/clock.c,v $
- * Copyright (c) 1986 Wayne A. Christopher, U. C. Berkeley CAD Group
- * Permission is granted to do anything with this code except sell it
- * or remove this message.
- *
- * Do stuff with the clocks. The way things work is as follows. We call
- * clock_init to draw the clocks initially, but they don't actually start
- * running until we call clock_switch for the first time.
- */
-
-#include "xchess.h"
-
-int movesperunit = 0;
-int timeunit = 0;
-bool clock_started = false;
-int whiteseconds, blackseconds;
-
-static bool white_running = true;
-static long lastwhite, lastblack;
-static bool firstmove = true;
-
-extern void dohands(), hilight();
-
-#define PI 3.1415926535897932384
-
-void
-clock_draw(win, col)
- windata *win;
- color col;
-{
- int i;
- char buf[BSIZE];
- int x = CLOCK_WIDTH / 2, y = CLOCK_WIDTH / 2;
- int xp, yp;
- int rad = CLOCK_WIDTH / 2 - 10;
- Window w = ((col == WHITE) ? win->wclockwin : win->bclockwin);
-
- /* Draw a clock face and the hands. */
- XCircle(w, x, y, rad, 0.0, 0.0, 1, 1, win->textcolor.pixel, GXcopy,
- AllPlanes);
- rad -= 8;
-
- XSetFont(win->display, DefaultGC(win->display, 0),
- win->small->fid);
- XSetForeground(win->display, DefaultGC(win->display, 0),
- win->textcolor.pixel);
- XSetBackground(win->display, DefaultGC(win->display, 0),
- win->textback.pixel);
- for (i = 1; i <= 12; i++) {
- xp = x + rad * cos(PI * 3 / 2 + i * PI / 6) - 4;
- yp = y + rad * sin(PI * 3 / 2 + i * PI / 6) - 5;
- sprintf(buf, "%d", i);
- XDrawString(win->display, w, DefaultGC(win->display, 0),
- xp, yp, buf, strlen(buf));
- }
-
- dohands(win, col);
-
- if (white_running) {
- hilight(win, WHITE, true);
- hilight(win, BLACK, false);
- } else {
- hilight(win, WHITE, false);
- hilight(win, BLACK, true);
- }
- return;
-}
-
-void
-clock_init(win, col)
- windata *win;
- color col;
-{
- whiteseconds = blackseconds = 0;
- clock_started = false;
- firstmove = true;
- clock_draw(win, col);
-
- return;
-}
-
-void
-clock_update()
-{
- int now = time((long *) NULL);
- int i;
-
- if (!clock_started) {
- lastwhite = lastblack = now;
- return;
- }
-
- if (white_running) {
- whiteseconds += now - lastwhite;
- lastwhite = now;
- dohands(win1, WHITE);
- if (!oneboard)
- dohands(win2, WHITE);
- if (timeunit) {
- i = whiteseconds / timeunit;
- if ((i > 0) && (whiteseconds > i * timeunit) &&
- (whiteseconds < i * timeunit + 10) &&
- (movesperunit * i > movenum)) {
- message_add(win1,
- "White has exceeded his time limit\n",
- true);
- if (!oneboard) {
- message_add(win2,
- "White has exceeded his time limit\n",
- true);
- }
- timeunit = 0;
- }
- }
- } else {
- blackseconds += now - lastblack;
- lastblack = now;
- dohands(win1, BLACK);
- if (!oneboard)
- dohands(win2, BLACK);
- if (timeunit) {
- i = blackseconds / timeunit;
- if ((i > 0) && (blackseconds > i * timeunit) &&
- (blackseconds < i * timeunit + 10) &&
- (movesperunit * i > movenum)) {
- message_add(win1,
- "Black has exceeded his time limit\n",
- true);
- if (!oneboard) {
- message_add(win2,
- "Black has exceeded his time limit\n",
- true);
- }
- timeunit = 0;
- }
- }
- }
- return;
-}
-
-void
-clock_switch()
-{
- if (firstmove) {
- clock_started = true;
- firstmove = false;
- lastwhite = lastblack = time((long *) NULL);
- }
- if (white_running) {
- white_running = false;
- lastblack = time((long *) NULL);
- hilight(win1, WHITE, false);
- hilight(win1, BLACK, true);
- if (!oneboard) {
- hilight(win2, WHITE, false);
- hilight(win2, BLACK, true);
- }
- } else {
- white_running = true;
- lastwhite = time((long *) NULL);
- hilight(win1, WHITE, true);
- hilight(win1, BLACK, false);
- if (!oneboard) {
- hilight(win2, WHITE, true);
- hilight(win2, BLACK, false);
- }
- }
- return;
-}
-
-static void
-dohands(win, col)
- windata *win;
- color col;
-{
- int cx = CLOCK_WIDTH / 2, cy = CLOCK_WIDTH / 2;
- double *h = (col == WHITE) ? win->whitehands : win->blackhands;
- Window w = (col == WHITE) ? win->wclockwin : win->bclockwin;
- long secs = (col == WHITE) ? whiteseconds : blackseconds;
- int rad, x, y, i;
-
- /* First erase the old hands. */
- XSetState(win->display, DefaultGC(win->display, 0),
- win->textback.pixel, win->textback.pixel,
- GXcopy, AllPlanes);
-
- rad = CLOCK_WIDTH / 2 - 30;
- for (i = 0; i < 3; i++) {
- x = cx + rad * sin(PI - h[i]);
- y = cy + rad * cos(PI - h[i]);
- XSetLineAttributes(win->display,
- DefaultGC(win->display, 0),
- i, LineSolid, 0, 0);
- XDrawLine(win->display, w, DefaultGC(win->display, 0),
- cx, cy, x, y);
- rad -= 8;
- }
-
- h[0] = (secs % 60) * 2 * PI / 60;
- h[1] = ((secs / 60) % 60) * 2 * PI / 60;
- h[2] = ((secs / 3600) % 12) * 2 * PI / 12;
-
- /* Now draw the new ones. */
-
- XSetState(win->display, DefaultGC(win->display, 0),
- win->textcolor.pixel, win->textback.pixel,
- GXcopy, AllPlanes);
-
- rad = CLOCK_WIDTH / 2 - 30;
- for (i = 0; i < 3; i++) {
- x = cx + rad * sin(PI - h[i]);
- y = cy + rad * cos(PI - h[i]);
- XSetLineAttributes(win->display,
- DefaultGC(win->display, 0),
- i, LineSolid, 0, 0);
- XDrawLine(win->display, w, DefaultGC(win->display, 0),
- cx, cy, x, y);
- rad -= 8;
- }
- XFlush(win->display);
- return;
-}
-
-static void
-hilight(win, col, on)
- windata *win;
- color col;
- bool on;
-{
- Window w = (col == WHITE) ? win->wclockwin : win->bclockwin;
- char *s = (col == WHITE) ? " WHITE " : " BLACK ";
- int x;
-
-
- x = XTextWidth(win->large, s, strlen(s));
- if (on)
- XSetState(win->display, DefaultGC(win->display, 0),
- win->textback.pixel,
- win->textcolor.pixel,
- GXcopy,
- AllPlanes);
- else
- XSetState(win->display, DefaultGC(win->display, 0),
- win->textcolor.pixel,
- win->textback.pixel,
- GXcopy, AllPlanes);
-
- XSetLineAttributes(win->display, DefaultGC(win->display, 0),
- BORDER_WIDTH, LineSolid, CapButt, JoinMiter);
- XSetFont(win->display, DefaultGC(win->display, 0),
- win->large->fid);
-
- XDrawLine(win->display, w, DefaultGC(win->display, 0),
- 0, CLOCK_HEIGHT - 26,
- CLOCK_WIDTH, CLOCK_HEIGHT - 26);
-
- XDrawImageString(win->display, w, DefaultGC(win->display, 0),
- (CLOCK_WIDTH - x) / 2, CLOCK_HEIGHT,
- s, strlen(s));
-
- if (on)
- XSetState(win->display, DefaultGC(win->display, 0),
- win->textcolor.pixel,
- win->textback.pixel,
- GXcopy, AllPlanes);
- return;
-}
-
OpenPOWER on IntegriCloud