DataMuseum.dk

Presents historical artifacts from the history of:

DKUUG/EUUG Conference tapes

This is an automatic "excavation" of a thematic subset of
artifacts from Datamuseum.dk's BitArchive.

See our Wiki for more about DKUUG/EUUG Conference tapes

Excavated with: AutoArchaeologist - Free & Open Source Software.


top - metrics - download
Index: T e

⟦cf3d2f628⟧ TextFile

    Length: 3222 (0xc96)
    Types: TextFile
    Names: »etc.c«

Derivation

└─⟦b20c6495f⟧ Bits:30007238 EUUGD18: Wien-båndet, efterår 1987
    └─⟦this⟧ »EUUGD18/General/Midway/etc.c« 

TextFile

#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));
}