home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / games / vmsnet.sources.games / vmsnetrek / part24 < prev    next >
Text File  |  1992-11-14  |  15KB  |  654 lines

  1. Newsgroups: vmsnet.sources.games
  2. 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
  3. From: asdmf@acad2.alaska.edu
  4. Subject: Vmsnetrek 24/47
  5. Message-ID: <1992Nov13.140149.1@acad2.alaska.edu>
  6. Lines: 641
  7. Sender: news@raven.alaska.edu (USENET News System)
  8. Nntp-Posting-Host: acad2.alaska.edu
  9. Organization: University of Alaska
  10. Date: Fri, 13 Nov 1992 18:01:49 GMT
  11. Xref: uunet vmsnet.sources.games:510
  12.  
  13. -+-+-+-+-+-+-+-+ START OF PART 24 -+-+-+-+-+-+-+-+
  14. X`009    break;
  15. X`009case 'U': /* U = Rank list */
  16. X`009    if (W_IsMapped(rankw)) `123
  17. X`009`009W_UnmapWindow(rankw);
  18. X`009    `125 else `123
  19. X`009`009W_MapWindow(rankw);
  20. X`009    `125
  21. X`009    break;
  22. X`009case 'S': /* S = toggle stat mode */
  23. X`009   if (W_IsMapped(statwin)) `123
  24. X`009`009W_UnmapWindow(statwin);
  25. X`009   `125 else `123
  26. X`009`009W_MapWindow(statwin);
  27. X`009   `125
  28. X`009   break;
  29. X`009case 'M': /* M = Toggle Map mode */
  30. X`009    mapmode = !mapmode;
  31. X`009    if (optionWin)
  32. X`009`009optionredrawoption(&mapmode);
  33. X`009    break;
  34. X`009case 'N': /* N = Toggle Name mode */
  35. X`009    namemode = !namemode;
  36. X`009    if (optionWin)
  37. X`009`009optionredrawoption(&namemode);
  38. X`009    break;
  39. X`009case 'i': /* i = get information */
  40. X`009case 'I': /* I = get extended information */
  41. X`009    if (!infomapped)
  42. X`009`009inform(data->Window, data->x, data->y, key);
  43. X`009    else
  44. X`009`009destroyInfo();
  45. X`009    break;
  46. X`009case 'h': /* h = Map help window */
  47. X`009    if (W_IsMapped(helpWin)) `123
  48. X`009`009W_UnmapWindow(helpWin);
  49. X`009    `125 else `123
  50. X`009`009W_MapWindow(helpWin);
  51. X`009    `125
  52. X`009    if (optionWin)
  53. X`009`009optionredrawtarget(helpWin);
  54. X`009    break;
  55. X`009case 'w': /* w = map war stuff */
  56. X`009    if (W_IsMapped(war))
  57. X`009`009W_UnmapWindow(war);
  58. X`009    else
  59. X`009`009warwindow();
  60. X`009    break;
  61. X`009case '+': /* UDP: pop up UDP control window */
  62. X`009    if (udpWin!=NULL && W_IsMapped(udpWin))
  63. X`009`009udpdone();
  64. X`009    else `123
  65. X`009`009char buf`09180`093;
  66. X`009`009udpwindow();
  67. X`009`009sprintf(buf, "UDP client version %.1f",
  68. X`009`009`009(float) UDPVERSION / 10.0);
  69. X`009`009warning(buf);
  70. X`009    `125
  71. X`009    break;
  72. X`009case '=': /* UDP: request for full update */
  73. X`009    sendUdpReq(COMM_UPDATE);
  74. X`009    break;
  75. X`009default:
  76. X`009    W_Beep();
  77. X`009    break;
  78. X    `125
  79. X`125
  80. X
  81. Xbuttonaction(data)
  82. XW_Event *data;
  83. X`123
  84. X    unsigned char course;
  85. X    struct obtype *gettarget();
  86. X
  87. X    if (data->Window!=w && data->Window!=mapw) return;
  88. X    if (data->key==W_RBUTTON) `123
  89. X`009course = getcourse(data->Window, data->x, data->y);
  90. X`009set_course(course);
  91. X    `125
  92. X    else if (data->key==W_LBUTTON) `123
  93. X`009course = getcourse(data->Window, data->x, data->y);
  94. X`009sendTorpReq(course);
  95. X    `125
  96. X    else if (data->key=W_MBUTTON) `123
  97. X`009course = getcourse(data->Window, data->x, data->y);
  98. X`009sendPhaserReq(course);
  99. X    `125
  100. X`125
  101. X
  102. Xgetcourse(ww, x, y)
  103. XW_Window ww;
  104. Xint x, y;
  105. X`123
  106. X    if (ww == mapw) `123
  107. X`009int`009me_x, me_y;
  108. X
  109. X`009me_x = me->p_x * WINSIDE / GWIDTH;
  110. X`009me_y = me->p_y * WINSIDE / GWIDTH;
  111. X`009return((unsigned char) (atan2((double) (x - me_x),
  112. X`009    (double) (me_y - y)) / 3.14159 * 128.));
  113. X    `125
  114. X    else
  115. X`009return((unsigned char) (atan2((double) (x - WINSIDE/2),
  116. X`009    (double) (WINSIDE/2 - y))
  117. X`009`009/ 3.14159 * 128.));
  118. X`125
  119. X
  120. $ CALL UNPACK INPUT.C;1 191896905
  121. $ create/nolog 'f'
  122. X/*
  123. X * interface.c
  124. X *
  125. X * This file will include all the interfaces between the input routines
  126. X *  and the daemon.  They should be useful for writing robots and the
  127. X *  like`032
  128. X */
  129. X#include "copyright.h"
  130. X
  131. X#include <stdio.h>
  132. X#include <math.h>
  133. X#include <signal.h>
  134. X#include "Wlib.h"
  135. X#include "defs.h"
  136. X#include "struct.h"
  137. X#include "data.h"
  138. X#include "packets.h"
  139. X
  140. Xset_speed(speed)
  141. Xint speed;
  142. X`123
  143. X    sendSpeedReq(speed);
  144. X`125
  145. X
  146. Xset_course(dir)
  147. Xunsigned char dir;
  148. X`123
  149. X    sendDirReq(dir);
  150. X`125
  151. X
  152. Xshield_up()
  153. X`123
  154. X    if (!(me->p_flags & PFSHIELD)) `123
  155. X`009sendShieldReq(1);
  156. X    `125
  157. X`125
  158. X
  159. Xshield_down()
  160. X`123
  161. X    if (me->p_flags & PFSHIELD) `123
  162. X`009sendShieldReq(0);
  163. X    `125
  164. X`125
  165. X
  166. Xshield_tog()
  167. X`123
  168. X    if (me->p_flags & PFSHIELD) `123
  169. X`009sendShieldReq(0);
  170. X    `125 else `123
  171. X`009sendShieldReq(1);
  172. X    `125
  173. X`125
  174. X
  175. Xbomb_planet()
  176. X`123
  177. X    if (!(me->p_flags & PFBOMB)) `123
  178. X`009sendBombReq(1);
  179. X    `125
  180. X`125
  181. X
  182. Xbeam_up()
  183. X`123
  184. X    if (!(me->p_flags & PFBEAMUP)) `123
  185. X`009sendBeamReq(1);`009/* 1 means up... */
  186. X    `125
  187. X`125
  188. X
  189. Xbeam_down()
  190. X`123
  191. X    if (!(me->p_flags & PFBEAMDOWN)) `123
  192. X`009sendBeamReq(2);`009/* 2 means down... */
  193. X    `125
  194. X`125
  195. X
  196. Xrepair()
  197. X`123
  198. X    if (!(me->p_flags & PFREPAIR)) `123
  199. X`009sendRepairReq(1);
  200. X    `125
  201. X`125
  202. X
  203. Xrepair_off()
  204. X`123
  205. X    if (me->p_flags & PFREPAIR) `123
  206. X`009sendRepairReq(0);
  207. X    `125
  208. X`125
  209. X
  210. Xrepeat_message()
  211. X`123
  212. X    if (++lastm == MAXMESSAGE) ;
  213. X`009lastm = 0;
  214. X`125
  215. X
  216. Xcloak()
  217. X`123
  218. X    if (me->p_flags & PFCLOAK) `123
  219. X`009sendCloakReq(0);
  220. X    `125 else `123
  221. X`009sendCloakReq(1);
  222. X    `125
  223. X`125
  224. X
  225. Xcloak_on()
  226. X`123
  227. X    if (!(me->p_flags & PFCLOAK)) `123
  228. X`009sendCloakReq(1);
  229. X    `125
  230. X`125
  231. X
  232. Xcloak_off()
  233. X`123
  234. X    if (me->p_flags & PFCLOAK) `123
  235. X`009sendCloakReq(0);
  236. X    `125
  237. X`125
  238. $ CALL UNPACK INTERFACE.C;1 273810177
  239. $ create/nolog 'f'
  240. X
  241. X$ ! COMPILE.COM compiles netrek
  242. X$ ! cc := cc /optimize -- uncomment when compiling the thing for real use;
  243. X$ !                       otherwise, leave commented out so compiles don't
  244. X$ !                       take forever
  245. X$`032
  246. X$ write sys$output "starting compile..."
  247. X$ set verify
  248. X$
  249. X$ ! link .obj files to netrek.exe
  250. X$ cc colors.c
  251. X$ cc coup.c
  252. X$ cc data.c
  253. X$ cc death.c
  254. X$ cc defaults.c
  255. X$ cc detonate.c
  256. X$ cc dmessage.c
  257. X$ cc enter.c
  258. X$ cc findslot.c
  259. X$ cc getname.c
  260. X$ cc getship.c
  261. X$ cc inform.c
  262. X$ cc input.c
  263. X$ cc interface.c
  264. X$ cc main.c
  265. X$ cc newwin.c
  266. X$ cc option.c
  267. X$ cc orbit.c
  268. X$ cc planetlist.c
  269. X$ cc planets.c
  270. X$ cc playerlist.c
  271. X$ cc ranklist.c
  272. X$ cc redraw.c
  273. X$ cc reserved.c
  274. X$ cc scan.c
  275. X$ cc sintab.c
  276. X$ cc smessage.c
  277. X$ cc socket.c
  278. X$ cc stats.c
  279. X$ cc udpopt.c
  280. X$ cc util.c
  281. X$ cc vmsutils.c
  282. X$ cc war.c
  283. X$ cc warning.c
  284. X$ cc x11window.c
  285. X
  286. X$
  287. X$ link /executable=vmsnetrek.exe COLORS, COUP, DATA, DEATH, DEFAULTS, DETONA
  288. VTE, -
  289. X`009DMESSAGE, ENTER, FINDSLOT, GETNAME, GETSHIP, INFORM, INPUT, -
  290. X`009INTERFACE, MAIN, NEWWIN, OPTION, ORBIT, PLANETLIST, PLANETS, -
  291. X`009PLAYERLIST, RANKLIST, REDRAW, RESERVED, SINTAB, SMESSAGE, SOCKET, -
  292. X`009STATS, UTIL, WAR, WARNING, X11WINDOW, udpopt, vmsutils, scan, -
  293. X`009sys$input:/opt
  294. Xsys$share:decw$xlibshr/share
  295. Xsys$share:decw$dwtlibshr/share
  296. Xsys$library:vaxcrtl_for_nas.olb/lib
  297. Xtwg$tcp:`091netdist.lib`093twglib.olb/lib
  298. X$
  299. X$ set noverify
  300. X$ ! set display /create /node='p1 /screen=0 /trans=tcpip
  301. X$
  302. X$ write sys$output "compile done (wish I had an alpha)"
  303. $ CALL UNPACK LINK.COM;1 137395066
  304. $ create/nolog 'f'
  305. X/*
  306. X * main.c
  307. X */
  308. X#include "copyright.h"
  309. X
  310. X#include <stdio.h>
  311. X#include <string.h>
  312. X#include <types.h>
  313. X#include <signal.h>
  314. X#include <setjmp.h>
  315. X#ifndef VMS
  316. X#include <pwd.h>
  317. X#endif
  318. X#ifdef hpux
  319. X#include <time.h>
  320. X#else hpux
  321. X#include <time.h>
  322. X#endif hpux
  323. X#ifndef hpux
  324. X#ifndef VMS
  325. X#include <wait.h>
  326. X#endif VMS
  327. X#endif hpux
  328. X#include "Wlib.h"
  329. X#include "defs.h"
  330. X#include "struct.h"
  331. X#include "data.h"
  332. X#include "packets.h"
  333. X
  334. X#ifdef VMS
  335. X#include "vmsutils.h"
  336. X#endif
  337. X
  338. Xjmp_buf env;
  339. X
  340. Xmain(argc, argv)
  341. Xint argc;
  342. Xchar **argv;
  343. X`123
  344. X    int intrupt();
  345. X    int team, s_type;
  346. X    int pno;
  347. X    char *host = NULL;
  348. X    int usage = 0;
  349. X    int err = 0;
  350. X    char *name, *ptr, *cp, *rindex();
  351. X    char buf`09180`093;
  352. X    struct passwd *pwent, *getpwuid();
  353. X    int reaper();
  354. X    int passive=0;
  355. X    char *defaultsFile=NULL;
  356. X
  357. X    name = *argv++;
  358. X    argc--;
  359. X    if ((ptr = rindex(name, '/')) != NULL)
  360. X`009name = ptr + 1;
  361. X    while (*argv) `123
  362. X`009if (**argv == '-')
  363. X`009    ++*argv;
  364. X`009else
  365. X`009    break;
  366. X
  367. X`009argc--;
  368. X`009ptr = *argv++;
  369. X`009while (*ptr) `123
  370. X`009    switch (*ptr) `123
  371. X`009    case 'u': usage++; break;
  372. X`009    case 's':`032
  373. X`009`009if (*argv) `123
  374. X`009`009    xtrekPort=atoi(*argv);`032
  375. X`009`009    passive=1;`032
  376. X`009`009    argv++;`032
  377. X`009`009    argc--;`032
  378. X`009`009`125
  379. X`009`009break;
  380. X`009    case 'p':
  381. X`009`009if (*argv) `123
  382. X`009`009    xtrekPort=atoi(*argv);
  383. X`009`009    argv++;
  384. X`009`009    argc--;
  385. X`009`009`125`032
  386. X`009`009break;
  387. X`009    case 'd':
  388. X`009`009host = *argv;
  389. X`009`009argc--;
  390. X`009`009argv++;
  391. X`009`009break;
  392. X`009    case 'h':
  393. X`009`009serverName = *argv;
  394. X`009`009argc--;
  395. X`009`009argv++;
  396. X`009`009break;
  397. X`009    case 'r':
  398. X`009`009defaultsFile = *argv;
  399. X`009`009argv++;
  400. X`009`009argc--;
  401. X`009`009break;
  402. X`009    default:`032
  403. X`009`009fprintf(stderr, "%s: unknown option '%c'\n", name, *ptr);
  404. X`009`009err++;
  405. X`009`009break;
  406. X`009    `125
  407. X`009    ptr++;
  408. X`009`125
  409. X    `125
  410. X    initDefaults(defaultsFile);
  411. X    if (usage `124`124 err) `123
  412. X`009printUsage(name);
  413. X`009exit(err);
  414. X    `125
  415. X
  416. X    /* compatability */
  417. X    if (argc > 0)
  418. X`009host = argv`0910`093;
  419. X    srandom(getpid() * time((long *) 0));
  420. X    /* this creates the necessary x windows for the game */
  421. X
  422. X
  423. X#ifdef VMS /* vms already has a newwin so I appended a f*/
  424. X    newwinf(host, name);
  425. X#else
  426. X    newwin(host, name);
  427. X#endif
  428. X    /* open memory...? */
  429. X    openmem();
  430. X
  431. X    if (!passive) `123
  432. X        callServer(xtrekPort, serverName);
  433. X       `032
  434. X    `125 else `123
  435. X`009connectToServer(xtrekPort);
  436. X    `125
  437. X
  438. X    findslot();
  439. X
  440. X   `032
  441. X    lastm = mctl->mc_current;
  442. Xprintf("mapall1\n");
  443. X
  444. X    mapAll();
  445. Xprintf("mapall2\n");
  446. X    signal(SIGINT, SIG_IGN);
  447. X#ifndef VMS
  448. X    /* this doesn't belong in the code either -- I'll take it out for VMS at
  449. V least */
  450. X    (void) signal(SIGCHLD, reaper);
  451. X#endif
  452. X
  453. X    /* Get login name */
  454. X    if ((pwent = getpwuid(getuid())) != NULL)`032
  455. X`009(void) strncpy(login, pwent->pw_name, sizeof(login));
  456. X    else
  457. X`009(void) strncpy(login, "Bozo", sizeof(login));
  458. X    login`091sizeof(login) - 1`093 = '\0';
  459. X
  460. X    if ((cp = getdefault("name")) != 0)
  461. X`009(void) strncpy(pseudo, cp, sizeof(pseudo));
  462. X    else
  463. X`009(void) strncpy(pseudo, login, sizeof(pseudo));
  464. X    pseudo`091sizeof(pseudo) - 1`093 = '\0';
  465. X
  466. X#ifdef VMS /* added f for function to avoid name collision */
  467. X    getnamef(pseudo);
  468. X#else
  469. X    getname(pseudo);
  470. X#endif
  471. X    loggedIn=1;
  472. X
  473. X    showShields = booleanDefault("showshields", showShields);
  474. X    showStats = booleanDefault("showstats", showStats);
  475. X    keeppeace = booleanDefault("keeppeace", keeppeace);
  476. X    reportKills = booleanDefault("reportkills", reportKills);
  477. X    initkeymap();
  478. X    sendOptionsPacket();
  479. X
  480. X    /* Set p_hostile to hostile, so if keeppeace is on, the guy starts off
  481. X       hating everyone (like a good fighter should) */
  482. X    me->p_hostile = (FED`124ROM`124KLI`124ORI);
  483. X
  484. X    sprintf(buf,
  485. X      "Maximum:      %2d  %3d %3d               %3d   %6d   %3d   %3d",
  486. X      0, 0, 0, 0, 0, 0, 0);
  487. X    W_WriteText(tstatw,50,27,textColor,buf,strlen(buf),W_RegularFont);
  488. X    me->p_planets=0;
  489. X    me->p_genoplanets=0;
  490. X    me->p_armsbomb=0;
  491. X    me->p_genoarmsbomb=0;
  492. X    /* Set up a reasonable default */
  493. X    me->p_whydead=KQUIT;
  494. X    me->p_team=ALLTEAM;
  495. X    s_type = CRUISER;
  496. X    setjmp(env);`009`009/* Reentry point of game */
  497. X    /* give the player the motd and find out which team he wants */
  498. X    entrywindow(&team, &s_type);
  499. X    if (team == -1) `123
  500. X`009W_DestroyWindow(w);
  501. X`009sendByeReq();
  502. X`009sleep(1);
  503. X`009printf("OK, bye!\n");
  504. X`009exit(0);
  505. X    `125
  506. X    getship(myship, s_type);
  507. X    redrawall = 1;
  508. X    enter();
  509. X    calibrate_stats();
  510. X    W_ClearWindow(w);
  511. X    /*
  512. X    for (i = 0; i < NSIG; i++) `123
  513. X`009signal(i, SIG_IGN);
  514. X    `125
  515. X    */
  516. X
  517. X    me->p_status = PALIVE;`009`009`009/* Put player in game */
  518. X    me->p_ghostbuster = 0;
  519. X
  520. X    if (showStats)`009`009`009/* Default showstats are on. */
  521. X`009W_MapWindow(statwin);
  522. X
  523. X    /* Get input until the player quits or dies */
  524. X    input();
  525. X`125
  526. X
  527. XprintUsage(prog)
  528. X`009char`009*prog;
  529. X`123
  530. X`009printf("Usage: %s `091-r defaultfile`093 `091-s socketnum`093 `091-h hos
  531. Vtname`093 `091-d display-name`093\n    `091-p connect socketnum`093\n",prog)
  532. V;
  533. X`125
  534. X
  535. X#ifndef VMS /* not needed in VMS */
  536. Xreaper()
  537. X`123
  538. X#ifdef hpux
  539. X    wait((int *) 0);
  540. X#else hpux
  541. X    while (wait3((union wait *) 0, WNOHANG, NULL) > 0)
  542. X`009;
  543. X#endif hpux
  544. X`125
  545. X#endif
  546. $ CALL UNPACK MAIN.C;1 1041697094
  547. $ create/nolog 'f'
  548. X#
  549. X#
  550. X#
  551. X
  552. X#DESTDIR = /usr/games
  553. X#XTREKDIR = /usr/games/lib/xtrekII
  554. X#XTREKOWNER = netrek
  555. XDESTDIR = /usr/local/games/
  556. XLIBDIR = /usr/local/games/lib/netrek/
  557. XXTREKOWNER = fadden
  558. X
  559. XOPTIONS = -DGATEWAY
  560. X
  561. XR_OBJS = colors.o \
  562. X`009    coup.o \
  563. X`009    data.o \
  564. X`009    death.o \
  565. X`009    detonate.o \
  566. X`009    defaults.o \
  567. X`009    dmessage.o \
  568. X`009    enter.o \
  569. X`009    findslot.o \
  570. X`009    getname.o \
  571. X`009    getship.o \
  572. X`009    inform.o \
  573. X`009    interface.o \
  574. X`009    newwin.o \
  575. X`009    orbit.o \
  576. X`009    option.o \
  577. X`009    planetlist.o \
  578. X`009    planets.o \
  579. X`009    playerlist.o \
  580. X`009    ranklist.o \
  581. X`009    reserved.o \
  582. X`009    sintab.o \
  583. X`009    smessage.o \
  584. X`009    socket.o \
  585. X`009    stats.o \
  586. X`009    util.o \
  587. X`009    war.o \
  588. X`009    warning.o \
  589. X`009    scan.o \
  590. X`009    udpopt.o`032
  591. X
  592. XR_FILES = colors.c \
  593. X`009    coup.c \
  594. X`009    data.c \
  595. X`009    death.c \
  596. X`009    detonate.c \
  597. X`009    defaults.c \
  598. X`009    dmessage.c \
  599. X`009    enter.c \
  600. X`009    findslot.c \
  601. X`009    getname.c \
  602. X`009    getship.c \
  603. X`009    inform.c \
  604. X`009    input.c \
  605. X`009    interface.c \
  606. X`009    newwin.c \
  607. X`009    orbit.c \
  608. X`009    option.c \
  609. X`009    planetlist.c \
  610. X`009    planets.c \
  611. X`009    playerlist.c \
  612. X`009    ranklist.c \
  613. X`009    redraw.c \
  614. X`009    reserved.c \
  615. X`009    sintab.c \
  616. X`009    smessage.c \
  617. X`009    socket.c \
  618. X`009    stats.c \
  619. X`009    util.c \
  620. X`009    war.c \
  621. X`009    warning.c \
  622. X`009    scan.c \
  623. X`009    udpopt.c`032
  624. X
  625. XINCLUDES = struct.h \
  626. X`009    packets.h \
  627. X`009    defs.h \
  628. X`009    copyright.h \
  629. X`009    bitmaps.h \
  630. X`009    bitmaps.Iggy.h \
  631. X`009    data.h \
  632. X`009    oldbitmaps.h
  633. X
  634. XINPUT = input.o redraw.o
  635. XMAINOBJ = main.o
  636. XMAINSRC = main.c
  637. XX10LIB = -lX
  638. XX10OBJS = x10window.o
  639. XX11LIB = -lX11
  640. XX11OBJS = x11window.o
  641. XGLLIB = -lgl_s
  642. XGLOBJS = glwindow.o
  643. X
  644. X#LIBS = -lm`032
  645. XLIBS = -lm -lsocket -lbsd
  646. X
  647. XCFLAGS = -O -s $(OPTIONS)
  648. X#CFLAGS = -g
  649. X
  650. Xuts:`009x11netrek
  651. X
  652. Xx10netrek: $(R_OBJS) $(MAINOBJ) $(INPUT) $(X10OBJS)
  653. +-+-+-+-+-+-+-+-  END  OF PART 24 +-+-+-+-+-+-+-+-
  654.