|
|
DataMuseum.dkPresents historical artifacts from the history of: DKUUG/EUUG Conference tapes |
This is an automatic "excavation" of a thematic subset of
See our Wiki for more about DKUUG/EUUG Conference tapes Excavated with: AutoArchaeologist - Free & Open Source Software. |
top - metrics - downloadIndex: T s
Length: 3442 (0xd72)
Types: TextFile
Names: »scorelist.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/X/Xtrek/scorelist.c«
static char sccsid[] = "@(#)scorelist.c 1.1";
/* Copyright (c) 1986 Chris Guthrie */
#include <X11/Xlib.h>
#include <stdio.h>
#include <math.h>
#include <signal.h>
#include "defs.h"
#include "data.h"
#include "bitmaps.h"
#define TEAM(p) (1<<(p))
#define WINSIDE 500
scorelist(p)
register struct player *p;
{
register int i, t;
register int k = 0;
char buf[BUFSIZ];
register struct player *j;
struct player team;
int active_team;
p->infomapped = 1;
p->infow = XCreateWindow(p->display, p->mapw, 10, 10, 77 * fontWidth(p->dfont),
(MAXPLAYER + NUMTEAM + 4) * fontHeight(p->dfont), 2, DefaultDepth(p->display, p->screen), InputOutput,
(Visual *) CopyFromParent, 0L, (XSetWindowAttributes *) 0);
/* (MAXPLAYER + NUMTEAM + 4) * fontHeight(dfont), 2, p->foreTile, p->backTile);*/
XSetWindowBackground(p->display, p->infow, p->backColor);
XMapWindow(p->display, p->infow);
sprintf(buf, " # Name Kills Max Killed Skill Torps Phasers Planets Bombed");
XDrawImageString(p->display, p->infow, p->dfgc, 0, fontHeight(p->dfont), buf,
strlen(buf));
k = 2;
for (i = 0, j = &players[i]; i < MAXPLAYER; i++, j++) {
if (j->p_status == PFREE)
continue;
sprintf(buf, " %1x %-16.16s %6.2f %5.2f %6d %5.2f %7d %7d %7d %6d",
j->p_no,
j->p_name,
j->p_stats.st_kills,
j->p_stats.st_maxkills,
j->p_stats.st_losses,
(j->p_stats.st_losses == 0) ?
0 : j->p_stats.st_kills / j->p_stats.st_losses,
j->p_stats.st_torps,
j->p_stats.st_phasers,
j->p_stats.st_planets,
j->p_stats.st_armsbomb
);
XDrawImageString(p->display, p->infow, p->dfgc, 0, fontHeight(p->dfont) * k++, buf, strlen(buf));
XFlush(p->display);
}
k++; /* leave a blank line between players and teams */
for (t = 0; t < NUMTEAM; t++) {
team.p_no = t;
switch(TEAM(t)) {
case FED:
strcpy(team.p_name, "Federation");
break;
case ROM:
strcpy(team.p_name, "Romulan");
break;
case ORI:
strcpy(team.p_name, "Orion");
break;
case KLI:
strcpy(team.p_name, "Klingon");
break;
}
team.p_stats.st_kills = 0;
team.p_stats.st_maxkills = 0;
team.p_stats.st_losses = 0;
team.p_stats.st_torps = 0;
team.p_stats.st_phasers = 0;
team.p_stats.st_planets = 0;
team.p_stats.st_armsbomb = 0;
active_team = 0;
for (i = 0, j = &players[i]; i < MAXPLAYER; i++, j++) {
if (j->p_status == PFREE || j->p_team != TEAM(t))
continue;
active_team = 1;
team.p_stats.st_kills += j->p_stats.st_kills;
if (team.p_stats.st_maxkills < j->p_stats.st_maxkills)
team.p_stats.st_maxkills = j->p_stats.st_maxkills;
team.p_stats.st_losses += j->p_stats.st_losses;
team.p_stats.st_torps += j->p_stats.st_torps;
team.p_stats.st_phasers += j->p_stats.st_phasers;
team.p_stats.st_planets += j->p_stats.st_planets;
team.p_stats.st_armsbomb += j->p_stats.st_armsbomb;
}
if (active_team) {
sprintf(buf, " %1x %-16.16s %6.2f %5.2f %6d %5.2f %7d %7d %7d %6d",
team.p_no,
team.p_name,
team.p_stats.st_kills,
team.p_stats.st_maxkills,
team.p_stats.st_losses,
(team.p_stats.st_losses == 0) ?
0 : team.p_stats.st_kills / team.p_stats.st_losses,
team.p_stats.st_torps,
team.p_stats.st_phasers,
team.p_stats.st_planets,
team.p_stats.st_armsbomb
);
XDrawImageString(p->display, p->infow, p->dfgc, 0, fontHeight(p->dfont) * k++, buf, strlen(buf));
XFlush(p->display);
}
}
}