home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Usenet 1994 October
/
usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso
/
games
/
vmsnet.sources.games
/
vmsnetrek
/
part24
< prev
next >
Wrap
Text File
|
1992-11-14
|
15KB
|
654 lines
Newsgroups: vmsnet.sources.games
Path: uunet!stanford.edu!agate!usenet.ins.cwru.edu!magnus.acs.ohio-state.edu!zaphod.mps.ohio-state.edu!rpi!usenet.coe.montana.edu!news.u.washington.edu!raven.alaska.edu!acad2.alaska.edu!asdmf
From: asdmf@acad2.alaska.edu
Subject: Vmsnetrek 24/47
Message-ID: <1992Nov13.140149.1@acad2.alaska.edu>
Lines: 641
Sender: news@raven.alaska.edu (USENET News System)
Nntp-Posting-Host: acad2.alaska.edu
Organization: University of Alaska
Date: Fri, 13 Nov 1992 18:01:49 GMT
Xref: uunet vmsnet.sources.games:510
-+-+-+-+-+-+-+-+ START OF PART 24 -+-+-+-+-+-+-+-+
X`009 break;
X`009case 'U': /* U = Rank list */
X`009 if (W_IsMapped(rankw)) `123
X`009`009W_UnmapWindow(rankw);
X`009 `125 else `123
X`009`009W_MapWindow(rankw);
X`009 `125
X`009 break;
X`009case 'S': /* S = toggle stat mode */
X`009 if (W_IsMapped(statwin)) `123
X`009`009W_UnmapWindow(statwin);
X`009 `125 else `123
X`009`009W_MapWindow(statwin);
X`009 `125
X`009 break;
X`009case 'M': /* M = Toggle Map mode */
X`009 mapmode = !mapmode;
X`009 if (optionWin)
X`009`009optionredrawoption(&mapmode);
X`009 break;
X`009case 'N': /* N = Toggle Name mode */
X`009 namemode = !namemode;
X`009 if (optionWin)
X`009`009optionredrawoption(&namemode);
X`009 break;
X`009case 'i': /* i = get information */
X`009case 'I': /* I = get extended information */
X`009 if (!infomapped)
X`009`009inform(data->Window, data->x, data->y, key);
X`009 else
X`009`009destroyInfo();
X`009 break;
X`009case 'h': /* h = Map help window */
X`009 if (W_IsMapped(helpWin)) `123
X`009`009W_UnmapWindow(helpWin);
X`009 `125 else `123
X`009`009W_MapWindow(helpWin);
X`009 `125
X`009 if (optionWin)
X`009`009optionredrawtarget(helpWin);
X`009 break;
X`009case 'w': /* w = map war stuff */
X`009 if (W_IsMapped(war))
X`009`009W_UnmapWindow(war);
X`009 else
X`009`009warwindow();
X`009 break;
X`009case '+': /* UDP: pop up UDP control window */
X`009 if (udpWin!=NULL && W_IsMapped(udpWin))
X`009`009udpdone();
X`009 else `123
X`009`009char buf`09180`093;
X`009`009udpwindow();
X`009`009sprintf(buf, "UDP client version %.1f",
X`009`009`009(float) UDPVERSION / 10.0);
X`009`009warning(buf);
X`009 `125
X`009 break;
X`009case '=': /* UDP: request for full update */
X`009 sendUdpReq(COMM_UPDATE);
X`009 break;
X`009default:
X`009 W_Beep();
X`009 break;
X `125
X`125
X
Xbuttonaction(data)
XW_Event *data;
X`123
X unsigned char course;
X struct obtype *gettarget();
X
X if (data->Window!=w && data->Window!=mapw) return;
X if (data->key==W_RBUTTON) `123
X`009course = getcourse(data->Window, data->x, data->y);
X`009set_course(course);
X `125
X else if (data->key==W_LBUTTON) `123
X`009course = getcourse(data->Window, data->x, data->y);
X`009sendTorpReq(course);
X `125
X else if (data->key=W_MBUTTON) `123
X`009course = getcourse(data->Window, data->x, data->y);
X`009sendPhaserReq(course);
X `125
X`125
X
Xgetcourse(ww, x, y)
XW_Window ww;
Xint x, y;
X`123
X if (ww == mapw) `123
X`009int`009me_x, me_y;
X
X`009me_x = me->p_x * WINSIDE / GWIDTH;
X`009me_y = me->p_y * WINSIDE / GWIDTH;
X`009return((unsigned char) (atan2((double) (x - me_x),
X`009 (double) (me_y - y)) / 3.14159 * 128.));
X `125
X else
X`009return((unsigned char) (atan2((double) (x - WINSIDE/2),
X`009 (double) (WINSIDE/2 - y))
X`009`009/ 3.14159 * 128.));
X`125
X
$ CALL UNPACK INPUT.C;1 191896905
$ create/nolog 'f'
X/*
X * interface.c
X *
X * This file will include all the interfaces between the input routines
X * and the daemon. They should be useful for writing robots and the
X * like`032
X */
X#include "copyright.h"
X
X#include <stdio.h>
X#include <math.h>
X#include <signal.h>
X#include "Wlib.h"
X#include "defs.h"
X#include "struct.h"
X#include "data.h"
X#include "packets.h"
X
Xset_speed(speed)
Xint speed;
X`123
X sendSpeedReq(speed);
X`125
X
Xset_course(dir)
Xunsigned char dir;
X`123
X sendDirReq(dir);
X`125
X
Xshield_up()
X`123
X if (!(me->p_flags & PFSHIELD)) `123
X`009sendShieldReq(1);
X `125
X`125
X
Xshield_down()
X`123
X if (me->p_flags & PFSHIELD) `123
X`009sendShieldReq(0);
X `125
X`125
X
Xshield_tog()
X`123
X if (me->p_flags & PFSHIELD) `123
X`009sendShieldReq(0);
X `125 else `123
X`009sendShieldReq(1);
X `125
X`125
X
Xbomb_planet()
X`123
X if (!(me->p_flags & PFBOMB)) `123
X`009sendBombReq(1);
X `125
X`125
X
Xbeam_up()
X`123
X if (!(me->p_flags & PFBEAMUP)) `123
X`009sendBeamReq(1);`009/* 1 means up... */
X `125
X`125
X
Xbeam_down()
X`123
X if (!(me->p_flags & PFBEAMDOWN)) `123
X`009sendBeamReq(2);`009/* 2 means down... */
X `125
X`125
X
Xrepair()
X`123
X if (!(me->p_flags & PFREPAIR)) `123
X`009sendRepairReq(1);
X `125
X`125
X
Xrepair_off()
X`123
X if (me->p_flags & PFREPAIR) `123
X`009sendRepairReq(0);
X `125
X`125
X
Xrepeat_message()
X`123
X if (++lastm == MAXMESSAGE) ;
X`009lastm = 0;
X`125
X
Xcloak()
X`123
X if (me->p_flags & PFCLOAK) `123
X`009sendCloakReq(0);
X `125 else `123
X`009sendCloakReq(1);
X `125
X`125
X
Xcloak_on()
X`123
X if (!(me->p_flags & PFCLOAK)) `123
X`009sendCloakReq(1);
X `125
X`125
X
Xcloak_off()
X`123
X if (me->p_flags & PFCLOAK) `123
X`009sendCloakReq(0);
X `125
X`125
$ CALL UNPACK INTERFACE.C;1 273810177
$ create/nolog 'f'
X
X$ ! COMPILE.COM compiles netrek
X$ ! cc := cc /optimize -- uncomment when compiling the thing for real use;
X$ ! otherwise, leave commented out so compiles don't
X$ ! take forever
X$`032
X$ write sys$output "starting compile..."
X$ set verify
X$
X$ ! link .obj files to netrek.exe
X$ cc colors.c
X$ cc coup.c
X$ cc data.c
X$ cc death.c
X$ cc defaults.c
X$ cc detonate.c
X$ cc dmessage.c
X$ cc enter.c
X$ cc findslot.c
X$ cc getname.c
X$ cc getship.c
X$ cc inform.c
X$ cc input.c
X$ cc interface.c
X$ cc main.c
X$ cc newwin.c
X$ cc option.c
X$ cc orbit.c
X$ cc planetlist.c
X$ cc planets.c
X$ cc playerlist.c
X$ cc ranklist.c
X$ cc redraw.c
X$ cc reserved.c
X$ cc scan.c
X$ cc sintab.c
X$ cc smessage.c
X$ cc socket.c
X$ cc stats.c
X$ cc udpopt.c
X$ cc util.c
X$ cc vmsutils.c
X$ cc war.c
X$ cc warning.c
X$ cc x11window.c
X
X$
X$ link /executable=vmsnetrek.exe COLORS, COUP, DATA, DEATH, DEFAULTS, DETONA
VTE, -
X`009DMESSAGE, ENTER, FINDSLOT, GETNAME, GETSHIP, INFORM, INPUT, -
X`009INTERFACE, MAIN, NEWWIN, OPTION, ORBIT, PLANETLIST, PLANETS, -
X`009PLAYERLIST, RANKLIST, REDRAW, RESERVED, SINTAB, SMESSAGE, SOCKET, -
X`009STATS, UTIL, WAR, WARNING, X11WINDOW, udpopt, vmsutils, scan, -
X`009sys$input:/opt
Xsys$share:decw$xlibshr/share
Xsys$share:decw$dwtlibshr/share
Xsys$library:vaxcrtl_for_nas.olb/lib
Xtwg$tcp:`091netdist.lib`093twglib.olb/lib
X$
X$ set noverify
X$ ! set display /create /node='p1 /screen=0 /trans=tcpip
X$
X$ write sys$output "compile done (wish I had an alpha)"
$ CALL UNPACK LINK.COM;1 137395066
$ create/nolog 'f'
X/*
X * main.c
X */
X#include "copyright.h"
X
X#include <stdio.h>
X#include <string.h>
X#include <types.h>
X#include <signal.h>
X#include <setjmp.h>
X#ifndef VMS
X#include <pwd.h>
X#endif
X#ifdef hpux
X#include <time.h>
X#else hpux
X#include <time.h>
X#endif hpux
X#ifndef hpux
X#ifndef VMS
X#include <wait.h>
X#endif VMS
X#endif hpux
X#include "Wlib.h"
X#include "defs.h"
X#include "struct.h"
X#include "data.h"
X#include "packets.h"
X
X#ifdef VMS
X#include "vmsutils.h"
X#endif
X
Xjmp_buf env;
X
Xmain(argc, argv)
Xint argc;
Xchar **argv;
X`123
X int intrupt();
X int team, s_type;
X int pno;
X char *host = NULL;
X int usage = 0;
X int err = 0;
X char *name, *ptr, *cp, *rindex();
X char buf`09180`093;
X struct passwd *pwent, *getpwuid();
X int reaper();
X int passive=0;
X char *defaultsFile=NULL;
X
X name = *argv++;
X argc--;
X if ((ptr = rindex(name, '/')) != NULL)
X`009name = ptr + 1;
X while (*argv) `123
X`009if (**argv == '-')
X`009 ++*argv;
X`009else
X`009 break;
X
X`009argc--;
X`009ptr = *argv++;
X`009while (*ptr) `123
X`009 switch (*ptr) `123
X`009 case 'u': usage++; break;
X`009 case 's':`032
X`009`009if (*argv) `123
X`009`009 xtrekPort=atoi(*argv);`032
X`009`009 passive=1;`032
X`009`009 argv++;`032
X`009`009 argc--;`032
X`009`009`125
X`009`009break;
X`009 case 'p':
X`009`009if (*argv) `123
X`009`009 xtrekPort=atoi(*argv);
X`009`009 argv++;
X`009`009 argc--;
X`009`009`125`032
X`009`009break;
X`009 case 'd':
X`009`009host = *argv;
X`009`009argc--;
X`009`009argv++;
X`009`009break;
X`009 case 'h':
X`009`009serverName = *argv;
X`009`009argc--;
X`009`009argv++;
X`009`009break;
X`009 case 'r':
X`009`009defaultsFile = *argv;
X`009`009argv++;
X`009`009argc--;
X`009`009break;
X`009 default:`032
X`009`009fprintf(stderr, "%s: unknown option '%c'\n", name, *ptr);
X`009`009err++;
X`009`009break;
X`009 `125
X`009 ptr++;
X`009`125
X `125
X initDefaults(defaultsFile);
X if (usage `124`124 err) `123
X`009printUsage(name);
X`009exit(err);
X `125
X
X /* compatability */
X if (argc > 0)
X`009host = argv`0910`093;
X srandom(getpid() * time((long *) 0));
X /* this creates the necessary x windows for the game */
X
X
X#ifdef VMS /* vms already has a newwin so I appended a f*/
X newwinf(host, name);
X#else
X newwin(host, name);
X#endif
X /* open memory...? */
X openmem();
X
X if (!passive) `123
X callServer(xtrekPort, serverName);
X `032
X `125 else `123
X`009connectToServer(xtrekPort);
X `125
X
X findslot();
X
X `032
X lastm = mctl->mc_current;
Xprintf("mapall1\n");
X
X mapAll();
Xprintf("mapall2\n");
X signal(SIGINT, SIG_IGN);
X#ifndef VMS
X /* this doesn't belong in the code either -- I'll take it out for VMS at
V least */
X (void) signal(SIGCHLD, reaper);
X#endif
X
X /* Get login name */
X if ((pwent = getpwuid(getuid())) != NULL)`032
X`009(void) strncpy(login, pwent->pw_name, sizeof(login));
X else
X`009(void) strncpy(login, "Bozo", sizeof(login));
X login`091sizeof(login) - 1`093 = '\0';
X
X if ((cp = getdefault("name")) != 0)
X`009(void) strncpy(pseudo, cp, sizeof(pseudo));
X else
X`009(void) strncpy(pseudo, login, sizeof(pseudo));
X pseudo`091sizeof(pseudo) - 1`093 = '\0';
X
X#ifdef VMS /* added f for function to avoid name collision */
X getnamef(pseudo);
X#else
X getname(pseudo);
X#endif
X loggedIn=1;
X
X showShields = booleanDefault("showshields", showShields);
X showStats = booleanDefault("showstats", showStats);
X keeppeace = booleanDefault("keeppeace", keeppeace);
X reportKills = booleanDefault("reportkills", reportKills);
X initkeymap();
X sendOptionsPacket();
X
X /* Set p_hostile to hostile, so if keeppeace is on, the guy starts off
X hating everyone (like a good fighter should) */
X me->p_hostile = (FED`124ROM`124KLI`124ORI);
X
X sprintf(buf,
X "Maximum: %2d %3d %3d %3d %6d %3d %3d",
X 0, 0, 0, 0, 0, 0, 0);
X W_WriteText(tstatw,50,27,textColor,buf,strlen(buf),W_RegularFont);
X me->p_planets=0;
X me->p_genoplanets=0;
X me->p_armsbomb=0;
X me->p_genoarmsbomb=0;
X /* Set up a reasonable default */
X me->p_whydead=KQUIT;
X me->p_team=ALLTEAM;
X s_type = CRUISER;
X setjmp(env);`009`009/* Reentry point of game */
X /* give the player the motd and find out which team he wants */
X entrywindow(&team, &s_type);
X if (team == -1) `123
X`009W_DestroyWindow(w);
X`009sendByeReq();
X`009sleep(1);
X`009printf("OK, bye!\n");
X`009exit(0);
X `125
X getship(myship, s_type);
X redrawall = 1;
X enter();
X calibrate_stats();
X W_ClearWindow(w);
X /*
X for (i = 0; i < NSIG; i++) `123
X`009signal(i, SIG_IGN);
X `125
X */
X
X me->p_status = PALIVE;`009`009`009/* Put player in game */
X me->p_ghostbuster = 0;
X
X if (showStats)`009`009`009/* Default showstats are on. */
X`009W_MapWindow(statwin);
X
X /* Get input until the player quits or dies */
X input();
X`125
X
XprintUsage(prog)
X`009char`009*prog;
X`123
X`009printf("Usage: %s `091-r defaultfile`093 `091-s socketnum`093 `091-h hos
Vtname`093 `091-d display-name`093\n `091-p connect socketnum`093\n",prog)
V;
X`125
X
X#ifndef VMS /* not needed in VMS */
Xreaper()
X`123
X#ifdef hpux
X wait((int *) 0);
X#else hpux
X while (wait3((union wait *) 0, WNOHANG, NULL) > 0)
X`009;
X#endif hpux
X`125
X#endif
$ CALL UNPACK MAIN.C;1 1041697094
$ create/nolog 'f'
X#
X#
X#
X
X#DESTDIR = /usr/games
X#XTREKDIR = /usr/games/lib/xtrekII
X#XTREKOWNER = netrek
XDESTDIR = /usr/local/games/
XLIBDIR = /usr/local/games/lib/netrek/
XXTREKOWNER = fadden
X
XOPTIONS = -DGATEWAY
X
XR_OBJS = colors.o \
X`009 coup.o \
X`009 data.o \
X`009 death.o \
X`009 detonate.o \
X`009 defaults.o \
X`009 dmessage.o \
X`009 enter.o \
X`009 findslot.o \
X`009 getname.o \
X`009 getship.o \
X`009 inform.o \
X`009 interface.o \
X`009 newwin.o \
X`009 orbit.o \
X`009 option.o \
X`009 planetlist.o \
X`009 planets.o \
X`009 playerlist.o \
X`009 ranklist.o \
X`009 reserved.o \
X`009 sintab.o \
X`009 smessage.o \
X`009 socket.o \
X`009 stats.o \
X`009 util.o \
X`009 war.o \
X`009 warning.o \
X`009 scan.o \
X`009 udpopt.o`032
X
XR_FILES = colors.c \
X`009 coup.c \
X`009 data.c \
X`009 death.c \
X`009 detonate.c \
X`009 defaults.c \
X`009 dmessage.c \
X`009 enter.c \
X`009 findslot.c \
X`009 getname.c \
X`009 getship.c \
X`009 inform.c \
X`009 input.c \
X`009 interface.c \
X`009 newwin.c \
X`009 orbit.c \
X`009 option.c \
X`009 planetlist.c \
X`009 planets.c \
X`009 playerlist.c \
X`009 ranklist.c \
X`009 redraw.c \
X`009 reserved.c \
X`009 sintab.c \
X`009 smessage.c \
X`009 socket.c \
X`009 stats.c \
X`009 util.c \
X`009 war.c \
X`009 warning.c \
X`009 scan.c \
X`009 udpopt.c`032
X
XINCLUDES = struct.h \
X`009 packets.h \
X`009 defs.h \
X`009 copyright.h \
X`009 bitmaps.h \
X`009 bitmaps.Iggy.h \
X`009 data.h \
X`009 oldbitmaps.h
X
XINPUT = input.o redraw.o
XMAINOBJ = main.o
XMAINSRC = main.c
XX10LIB = -lX
XX10OBJS = x10window.o
XX11LIB = -lX11
XX11OBJS = x11window.o
XGLLIB = -lgl_s
XGLOBJS = glwindow.o
X
X#LIBS = -lm`032
XLIBS = -lm -lsocket -lbsd
X
XCFLAGS = -O -s $(OPTIONS)
X#CFLAGS = -g
X
Xuts:`009x11netrek
X
Xx10netrek: $(R_OBJS) $(MAINOBJ) $(INPUT) $(X10OBJS)
+-+-+-+-+-+-+-+- END OF PART 24 +-+-+-+-+-+-+-+-