|
|
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 e
Length: 3222 (0xc96)
Types: TextFile
Names: »etc.c«
└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
└─⟦this⟧ »EUUGD18/General/Midway/etc.c«
#include "externs.h"
angle(dr, dc)
register int dr, dc;
{
int add = 0, sub = 0;
if (dr <= 0 && dc < 0)
add = 180;
if (dr > 0 && dc < 0)
sub = 360;
if (dr < 0 && dc >= 0)
sub = 180;
if (abs(dc) > abs(dr) * 2.4)
return(sub ? sub - 90 : 90 + add);
else if (abs(dr) > abs(dc) * 2.4)
return(sub == 360 ? 0 : sub + add);
else
return(sub ? sub - 45 : 45 + add);
}
planesize(planes)
register struct squadron *planes;
{
register int n = 0;
for (; planes; planes = planes -> s_next)
n++;
return(n);
}
wreadstr(win, str)
WINDOW *win;
register char *str;
{
register int n = 0;
register int ch;
while((ch = getchar()) != '\n') {
if (ch == '▶08◀' && n > 0)
n--;
else if (ch == '▶08◀')
continue;
else
str[n++] = ch;
waddch(win, ch);
wrefresh(win);
}
str[n] = '\0';
}
inform(fmt, jerry)
char *fmt;
int jerry;
{
scroll++;
if (scroll > 11) scroll = 0;
wmove(notes, scroll, 0);
wclrtoeol(notes);
if (jerry) {
wprintw(notes, fmt, shiplist[jerry -1].row, shiplist[jerry -1].col);
} else
wprintw(notes, fmt);
wrefresh(notes);
if (automatic == -2)
automatic = 0;
}
char *daytime(time, buf)
int time;
register char buf[];
{
float minutes;
int hours, mins, over = ZERODAY;
minutes = time * 2.5 + ZEROMIN;
hours = minutes/60 + ZEROHOUR;
mins = (int) minutes % 60;
while (hours >= 24) {
hours -= 24;
over++;
}
sprintf(buf, "June %d %02d:%02d:00", over, hours, mins);
return(buf);
}
char shiphit(type, dir, row, col) /* to see if a ship hit by a shell */
register int type, dir, row, col; /* shiphit(type, dir, hit.r - ship.r,*/
{ /* hit.c - ship.c) != ' ' */
if (col >= -2 && col <= 2 && row >= -2 && row <= 2)
return(shapes[type - CV][dir][row+2][col+2]);
else
return(' ');
}
hit (ran, ar, ac, br, bc, dir, offset) /* sees if a plane is hit */
register int ran, ar, ac, br, bc, dir, offset;
{
int dr, dc;
if (range(ar,ac,br,bc) < 5) {
vshape(dir, offset, &dr, &dc);
return(ar - br - dr <= ran && ar - br - dr >= -ran && ac - bc - dc <= ran && ac - bc - dc >= -ran);
} else
return(0);
}
vshape(dir, offset, dr, dc)
int dir, offset, *dr, *dc;
{
switch(dir/45) {
case 0:
*dr = offset < 0 ? -offset : offset;
*dc = offset;
break;
case 1:
*dr = offset < 0 ? 0 : offset;
*dc = offset > 0 ? 0 : offset;
break;
case 2:
*dr = offset;
*dc = offset > 0 ? -offset : offset;
break;
case 3:
*dr = offset < 0 ? offset : 0;
*dc = offset < 0 ? 0 : -offset;
break;
case 4:
*dr = offset < 0 ? offset : -offset;
*dc = -offset;
break;
case 5:
*dr = offset < 0 ? 0 : -offset;
*dc = offset < 0 ? -offset : 0;
break;
case 6:
*dr = -offset;
*dc = offset < 0 ? -offset : offset;
break;
case 7:
*dr = offset < 0 ? -offset : 0;
*dc = offset < 0 ? 0 : offset;
break;
}
}
ditch(planes, head)
register struct squadron *planes, **head;
{
if (planes -> previous)
planes -> previous -> s_next = planes -> s_next;
else {
*head = planes -> s_next;
}
if (planes -> s_next)
planes -> s_next -> previous = planes -> previous;
cfree(planes);
}
range(ar, ac, br, bc)
register int ar, ac, br, bc;
{
ar -= br;
ac -= bc;
ar = abs(ar);
ac = abs(ac);
return(max(ar,ac));
}