home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 October / usenetsourcesnewsgroupsinfomagicoctober1994disk2.iso / games / vmsnet.sources.games / vmsnetrek / part33 < prev    next >
Internet Message Format  |  1992-11-20  |  15KB

  1. Path: uunet!usc!sol.ctr.columbia.edu!destroyer!cs.ubc.ca!bcsystems!spruce.pfc.forestry.ca!news.u.washington.edu!raven.alaska.edu!acad2.alaska.edu!asdmf
  2. Newsgroups: vmsnet.sources.games
  3. Subject: Vmsnetrek 33/47
  4. Message-ID: <1992Nov20.200638.1@acad2.alaska.edu>
  5. From: asdmf@acad2.alaska.edu
  6. Date: Sat, 21 Nov 1992 00:06:38 GMT
  7. Sender: news@raven.alaska.edu (USENET News System)
  8. Organization: University of Alaska
  9. Nntp-Posting-Host: acad2.alaska.edu
  10. Lines: 546
  11. Xref: uunet vmsnet.sources.games:532
  12.  
  13. -+-+-+-+-+-+-+-+ START OF PART 33 -+-+-+-+-+-+-+-+
  14. X    char pad1;
  15. X    char pad2;
  16. X`125;
  17. X
  18. Xstruct playlock_cpacket `123
  19. X    char type;`009`009/* CP_PLAYLOCK */
  20. X    char pnum;
  21. X    char pad1;
  22. X    char pad2;
  23. X`125;
  24. X
  25. Xstruct bomb_cpacket `123
  26. X    char type;`009`009/* CP_BOMB */
  27. X    char state;
  28. X    char pad1;
  29. X    char pad2;
  30. X`125;
  31. X
  32. Xstruct beam_cpacket `123
  33. X    char type;`009`009/* CP_BEAM */
  34. X    char state;
  35. X    char pad1;`032
  36. X    char pad2;
  37. X`125;
  38. X
  39. Xstruct cloak_cpacket `123
  40. X    char type;`009`009/* CP_CLOAK */
  41. X    char state;`009`009
  42. X    char pad1;
  43. X    char pad2;
  44. X`125;
  45. X
  46. Xstruct det_torps_cpacket `123
  47. X    char type;`009`009/* CP_DET_TORPS */
  48. X    char pad1;
  49. X    char pad2;
  50. X    char pad3;
  51. X`125;
  52. X
  53. Xstruct det_mytorp_cpacket `123
  54. X    char type;`009`009/* CP_DET_MYTORP */
  55. X    char pad1;
  56. X    short tnum;
  57. X`125;
  58. X
  59. Xstruct copilot_cpacket `123
  60. X    char type;`009`009/* CP_COPLIOT */
  61. X    char state;
  62. X    char pad1;
  63. X    char pad2;
  64. X`125;
  65. X
  66. Xstruct refit_cpacket `123
  67. X    char type;`009`009/* CP_REFIT */
  68. X    char ship;
  69. X    char pad1;
  70. X    char pad2;
  71. X`125;
  72. X
  73. Xstruct tractor_cpacket `123
  74. X    char type;`009`009/* CP_TRACTOR */
  75. X    char state;
  76. X    char pnum;
  77. X    char pad2;
  78. X`125;
  79. X
  80. Xstruct repress_cpacket `123
  81. X    char type;`009`009/* CP_REPRESS */
  82. X    char state;
  83. X    char pnum;
  84. X    char pad2;
  85. X`125;
  86. X
  87. Xstruct coup_cpacket `123
  88. X    char type;`009`009/* CP_COUP */
  89. X    char pad1;
  90. X    char pad2;
  91. X    char pad3;
  92. X`125;
  93. X
  94. Xstruct socket_cpacket `123
  95. X    char type;`009`009/* CP_SOCKET */
  96. X    char version;
  97. X    char udp_version;`009/* was pad2 */
  98. X    char pad3;
  99. X    unsigned socket;
  100. X`125;
  101. X
  102. Xstruct options_cpacket `123
  103. X    char type;`009`009/* CP_OPTIONS */
  104. X    char pad1;
  105. X    char pad2;
  106. X    char pad3;
  107. X    unsigned flags;
  108. X    char keymap`09196`093;
  109. X`125;
  110. X
  111. Xstruct bye_cpacket `123
  112. X    char type;`009`009/* CP_BYE */
  113. X    char pad1;
  114. X    char pad2;
  115. X    char pad3;
  116. X`125;
  117. X
  118. Xstruct dockperm_cpacket `123
  119. X    char type;`009`009/* CP_DOCKPERM */
  120. X    char state;
  121. X    char pad2;
  122. X    char pad3;
  123. X`125;
  124. X
  125. Xstruct updates_cpacket `123
  126. X    char type;`009`009/* CP_UPDATES */
  127. X    char pad1;
  128. X    char pad2;
  129. X    char pad3;
  130. X    unsigned usecs;
  131. X`125;
  132. X
  133. Xstruct resetstats_cpacket `123
  134. X    char type;`009`009/* CP_RESETSTATS */
  135. X    char verify;`009/* 'Y' - just to make sure he meant it */
  136. X    char pad2;
  137. X    char pad3;
  138. X`125;
  139. X
  140. Xstruct reserved_cpacket `123
  141. X    char type;`009`009/* CP_RESERVED */
  142. X    char pad1;
  143. X    char pad2;
  144. X    char pad3;
  145. X    char data`09116`093;
  146. X    char resp`09116`093;
  147. X`125;
  148. X
  149. Xstruct scan_cpacket `123`009`009/* ATM */
  150. X    char type;`009`009/* CP_SCAN */
  151. X    char pnum;
  152. X    char pad1;
  153. X    char pad2;
  154. X`125;
  155. X
  156. Xstruct udp_req_cpacket `123`009/* UDP */
  157. X    char type;`009`009/* CP_UDP_REQ */
  158. X    char request;
  159. X    char connmode;`009/* respond with port # or just send UDP packet? */
  160. X    char pad2;
  161. X    int  port;`009`009/* compensate for hosed recvfrom() */
  162. X`125;
  163. X
  164. Xstruct sequence_cpacket `123`009/* UDP */
  165. X    char type;`009`009/* CP_SEQUENCE */
  166. X    char pad1;
  167. X    unsigned short sequence;
  168. X`125;
  169. X
  170. $ CALL UNPACK PACKETS.H;1 1410954082
  171. $ create/nolog 'f'
  172. X/*
  173. X * planetlist.c
  174. X */
  175. X#include "copyright.h"
  176. X#include <stdio.h>
  177. X#include "Wlib.h"
  178. X#include "defs.h"
  179. X#include "struct.h"
  180. X#include "data.h"
  181. X
  182. Xstatic char *teamname`0919`093 = `123
  183. X    "IND",
  184. X    "FED",
  185. X    "ROM",
  186. X    "",
  187. X    "KLI",
  188. X    "",
  189. X    "",
  190. X    "",
  191. X    "ORI"
  192. X`125;
  193. X
  194. X/*
  195. X** Open a window which contains all the planets and their current
  196. X** statistics.  Players will not know about planets that their team
  197. X** has not orbited.
  198. X*/
  199. X
  200. Xplanetlist()
  201. X`123
  202. X    register int i;
  203. X    register int k = 0;
  204. X    char buf`091BUFSIZ`093;
  205. X    register struct planet *j;
  206. X
  207. X    W_ClearWindow(planetw);
  208. X    (void) sprintf(buf, "Planet Name      own armies REPAIR FUEL AGRI info")
  209. V;
  210. X    W_WriteText(planetw, 2, 1, textColor, buf, strlen(buf), W_RegularFont);
  211. X    k = 2;
  212. X    for (i = 0, j = &planets`091i`093; i < MAXPLANETS; i++, j++) `123
  213. X`009if (j->pl_info & me->p_team) `123
  214. X`009    (void) sprintf(buf, "%-16s %3s %3d    %6s %4s %4s %c%c%c%c",
  215. X`009`009j->pl_name,
  216. X`009`009teamname`091j->pl_owner`093,
  217. X`009`009j->pl_armies,
  218. X`009`009(j->pl_flags & PLREPAIR ? "REPAIR" : "      "),
  219. X`009`009(j->pl_flags & PLFUEL ? "FUEL" : "    "),
  220. X`009`009(j->pl_flags & PLAGRI ? "AGRI" : "    "),
  221. X`009`009(j->pl_info & FED ? 'F' : ' '),
  222. X`009`009(j->pl_info & ROM ? 'R' : ' '),
  223. X`009`009(j->pl_info & KLI ? 'K' : ' '),
  224. X`009`009(j->pl_info & ORI ? 'O' : ' '));
  225. X`009    W_WriteText(planetw, 2, k++, planetColor(j), buf, strlen(buf),
  226. X`009`009planetFont(j));
  227. X`009`125
  228. X`009else `123
  229. X`009    (void) sprintf(buf, "%-16s",
  230. X`009`009j->pl_name);
  231. X`009    W_WriteText(planetw, 2, k++, unColor, buf, strlen(buf),
  232. X`009`009W_RegularFont);
  233. X`009`125
  234. X    `125
  235. X`125
  236. $ CALL UNPACK PLANETLIST.C;1 1294516970
  237. $ create/nolog 'f'
  238. X/*`032
  239. X * planets.c
  240. X *
  241. X * Kevin P. Smith  2/21/89
  242. X *
  243. X * This file contains the galaxy definition as well as some support for`032
  244. X *  determining when parts of the galactic map need to be redrawn.
  245. X */
  246. X#include "copyright2.h"
  247. X
  248. X#include <stdio.h>
  249. X#include <math.h>
  250. X#include "Wlib.h"
  251. X#include "defs.h"
  252. X#include "struct.h"
  253. X#include "data.h"
  254. X
  255. X/* Note:  DETAIL * MUST * be a factor of GWIDTH. */
  256. X#define DETAIL 40`009`009/* Size of redraw array */
  257. X#define DIST 4500`009`009/* Distance to turn on redraw flag */
  258. X#define SIZE (GWIDTH/DETAIL)
  259. X
  260. Xint redraws`091DETAIL`093`091DETAIL`093;
  261. Xstatic int initialized=0;
  262. X
  263. XinitPlanets()
  264. X`123
  265. X    int i,j,k;
  266. X    int endi, endj;
  267. X    struct planet *pl;
  268. X    int offset=DIST/SIZE+1;
  269. X    float dist;
  270. X
  271. X    for (i=0; i<DETAIL; i++) `123
  272. X`009for (j=0; j<DETAIL; j++) `123
  273. X`009    redraws`091i`093`091j`093= -1;
  274. X`009`125
  275. X    `125
  276. X
  277. X    for (k=0, pl=planets; k<MAXPLANETS; k++, pl++) `123
  278. X`009endi=pl->pl_x / SIZE+offset+1;
  279. X`009for (i=(pl->pl_x / SIZE)-offset; i<endi && i<DETAIL; i++) `123
  280. X`009    if (i<0) i=0;
  281. X`009    endj=pl->pl_y / SIZE+offset+1;
  282. X`009    for (j=(pl->pl_y / SIZE) - offset; j<endj && j<DETAIL; j++) `123
  283. X`009`009dist=hypot((float) (pl->pl_x - (i*SIZE + SIZE/2)),
  284. X`009`009`009   (float) (pl->pl_y - (j*SIZE + SIZE/2)));
  285. X`009`009if (dist<=DIST) `123
  286. X`009`009    redraws`091i`093`091j`093=k;
  287. X`009`009`125
  288. X`009    `125
  289. X`009`125
  290. X    `125
  291. X    initialized=1;
  292. X`125
  293. X
  294. XcheckRedraw(x,y)
  295. Xint x,y;
  296. X`123
  297. X    int i;
  298. X
  299. X    if (!initialized `124`124 x<0 `124`124 y<0 `124`124 x>=GWIDTH `124`124 y
  300. V>=GWIDTH) return;
  301. X    i=redraws`091x/SIZE`093`091y/SIZE`093;
  302. X    if (i==-1) return;
  303. X    planets`091i`093.pl_flags `124= PLREDRAW;
  304. X`125
  305. $ CALL UNPACK PLANETS.C;1 812796066
  306. $ create/nolog 'f'
  307. X/*
  308. X * playerlist.c
  309. X */
  310. X#include "copyright.h"
  311. X
  312. X#include <stdio.h>
  313. X#include "Wlib.h"
  314. X#include "defs.h"
  315. X#include "struct.h"
  316. X#include "data.h"
  317. X
  318. Xstatic char *classes`091NUM_TYPES`093 = `123
  319. X`009"SC", "DD", "CA", "BB", "AS", "SB", "GA", "??"`009/* ATM - Galaxy */
  320. X`125;
  321. X
  322. Xplayerlist()
  323. X`123
  324. X    int i;
  325. X    char buf`091100`093;
  326. X
  327. X    W_ClearWindow(playerw);
  328. X    (void) strcpy(buf, "  Type Rank      Name            Kills   Win  Loss
  329. V  Ratio Offense Defense     DI");
  330. X    W_WriteText(playerw, 0, 1, textColor, buf, strlen(buf), W_RegularFont);
  331. X    for (i=0; i<MAXPLAYER; i++) `123
  332. X`009updatePlayer`091i`093=1;
  333. X    `125
  334. X    playerlist2();
  335. X`125
  336. X
  337. Xplayerlist2()
  338. X`123
  339. X    register int i;
  340. X    char buf`091100`093;
  341. X    register struct player *j;
  342. X    int kills, losses;
  343. X    double ratio;
  344. X    float pRating, oRating, dRating, bRating;
  345. X
  346. X    if (!W_IsMapped(playerw)) return;
  347. X    for (i = 0, j = &players`091i`093; i < MAXPLAYER; i++, j++) `123
  348. X`009if (!updatePlayer`091i`093) continue;
  349. X`009if (!j->p_stats.st_tticks) continue;`009/* avoid bronco FP exception */
  350. X`009updatePlayer`091i`093=0;
  351. X`009if (j->p_status != PALIVE) `123
  352. X`009    W_ClearArea(playerw, 0, i+2, 83, 1, backColor);
  353. X`009    continue;
  354. X`009`125
  355. X`009if (j->p_ship.s_type == STARBASE) `123
  356. X`009    kills=j->p_stats.st_sbkills;
  357. X`009    losses=j->p_stats.st_sblosses;
  358. X`009`125 else `123
  359. X`009    kills=j->p_stats.st_kills + j->p_stats.st_tkills;
  360. X`009    losses=j->p_stats.st_losses + j->p_stats.st_tlosses;
  361. X`009`125
  362. X`009if (losses==0) `123
  363. X`009    ratio=kills;
  364. X`009`125 else `123
  365. X`009    ratio=(double) kills/losses;
  366. X`009`125
  367. X`009oRating = offenseRating(j);
  368. X`009dRating = defenseRating(j);
  369. X`009pRating = planetRating(j);
  370. X`009bRating = bombingRating(j);
  371. X`009(void) sprintf(buf, "%c%c %s  %-9.9s %-16.16s%5.2f %5d %5d %6.2lf   %5.2
  372. Vf   %5.2f %8.2f",
  373. X`009    teamlet`091j->p_team`093,
  374. X`009    shipnos`091j->p_no`093,
  375. X`009    classes`091j->p_ship.s_type`093,
  376. X`009    ranks`091j->p_stats.st_rank`093.name,
  377. X`009    j->p_name,
  378. X`009    j->p_kills,
  379. X`009    kills,
  380. X`009    losses,
  381. X`009    ratio,
  382. X`009    oRating,
  383. X`009    dRating,
  384. X`009    (oRating+pRating+bRating)*(j->p_stats.st_tticks/36000.0));
  385. X`009W_WriteText(playerw, 0, i+2, playerColor(j), buf, strlen(buf),
  386. X`009    shipFont(j));
  387. X    `125
  388. X`125
  389. $ CALL UNPACK PLAYERLIST.C;1 1752417274
  390. $ create/nolog 'f'
  391. X/*`032
  392. X * ranklist.c
  393. X *
  394. X * Kevin P. Smith 12/5/88
  395. X *
  396. X */
  397. X#include "copyright2.h"
  398. X
  399. X#include <stdio.h>
  400. X#include "Wlib.h"
  401. X#include "defs.h"
  402. X#include "struct.h"
  403. X#include "data.h"
  404. X
  405. Xranklist()
  406. X`123
  407. X    register int i;
  408. X    char buf`09180`093;
  409. X
  410. X    W_ClearWindow(rankw);
  411. X    (void) strcpy(buf, "  Rank       Hours  Defense  Ratings      DI");
  412. X    W_WriteText(rankw, 1, 1, textColor, buf, strlen(buf), W_BoldFont);
  413. X    for (i = 0; i < NUMRANKS; i++) `123
  414. X`009sprintf(buf, "%-11.11s %5.0f %8.2f %8.2f   %7.2f",
  415. X`009    ranks`091i`093.name,
  416. X`009    ranks`091i`093.hours,
  417. X`009    ranks`091i`093.defense,
  418. X`009    ranks`091i`093.ratings,
  419. X`009    ranks`091i`093.ratings * ranks`091i`093.hours);
  420. X`009if (mystats->st_rank==i) `123
  421. X`009    W_WriteText(rankw, 1, i+2, W_Cyan, buf, strlen(buf), W_BoldFont);
  422. X`009`125 else `123
  423. X`009    W_WriteText(rankw, 1, i+2, textColor, buf, strlen(buf), W_RegularFon
  424. Vt);
  425. X`009`125
  426. X    `125
  427. X    strcpy(buf, "To achieve a rank, you need a high enough defense, and");
  428. X    W_WriteText(rankw, 1, i+3, textColor, buf, strlen(buf), W_RegularFont);
  429. X    strcpy(buf, "either enough hours, and bombing + planet + offense ratings
  430. V");
  431. X    W_WriteText(rankw, 1, i+4, textColor, buf, strlen(buf), W_RegularFont);
  432. X    strcpy(buf, "above shown ratings, or too few hours, and a DI rating abov
  433. Ve");
  434. X    W_WriteText(rankw, 1, i+5, textColor, buf, strlen(buf), W_RegularFont);
  435. X    strcpy(buf, "the shown DI rating.");
  436. X    W_WriteText(rankw, 1, i+6, textColor, buf, strlen(buf), W_RegularFont);
  437. X`125
  438. $ CALL UNPACK RANKLIST.C;1 1649156320
  439. $ create/nolog 'f'
  440. Xnetrek
  441. X `032
  442. X  The client half of the xtrek code.
  443. X
  444. X  This half of the code will call up the xtrek server, and interfaces
  445. X  the user with the game.  It also reads a .xtrekrc file to set up the`032
  446. X  user defaults (a different file may be specified by netrek -r filename).
  447. X  A sample .xtrekrc file is provided herein.
  448. X `032
  449. X  Currently, there is an X10 version, and an X11 version and an SGI
  450. X  gl version.  It would conceivably be "easy" to add another graphics`032
  451. X  interface, though, by simply writing another module like x10window.c,
  452. X  x11window.c, or glwindow.c (about 1300 lines of code).
  453. X
  454. X  Options include:
  455. X
  456. X  -r defaultfile:`009Specify your own .xtrekrc file.
  457. X  -s socketnum:`009`009Use a specific socket number for connection.  This`03
  458. V2
  459. X`009`009`009requires the ntserv program to be started up by hand.
  460. X  -h hostname:`009`009Specify xtrek host to connect to.
  461. X  -d display:`009`009Specify display to connect to.
  462. X  -p socketnum:`009`009Specifies the foreign port to attempt a connection
  463. X`009`009`009to.
  464. X
  465. XAdditional notes:
  466. X  Many people don't like it when the client gets those window manager border
  467. Vs.
  468. X  If you don't like them, then remove all XSetClassHints() calls, and the`03
  469. V2
  470. X  XSetWMHints() calls which immediately follow them.  Also, set all of`032
  471. X  the override_redirect flags to True (they are all being explicitly set`032
  472. X  to false currently).
  473. $ CALL UNPACK README._1;1 509809021
  474. $ create/nolog 'f'
  475. X/*
  476. X * redraw.c
  477. X */
  478. X#include "copyright.h"
  479. X
  480. X#include <stdio.h>
  481. X#include <signal.h>
  482. X#include <math.h>
  483. X#include "Wlib.h"
  484. X#include "defs.h"
  485. X#include "struct.h"
  486. X#include "data.h"
  487. X#include "packets.h"
  488. X
  489. Xstatic int clearzone`0914`093`091(MAXTORP + 1) * MAXPLAYER +`032
  490. X`009`009`009(MAXPLASMA + 1) * MAXPLAYER + MAXPLANETS`093;
  491. Xstatic int clearcount;
  492. Xstatic int clearline`0914`093`091MAXPLAYER`093;
  493. Xstatic int clearlcount;
  494. Xstatic int mclearzone`0916`093`091MAXPLAYER`093;`009/* For map window */
  495. X
  496. Xstatic short nplayers;
  497. Xstatic int vissup = 0;`009`009/* vis tractor sup: 0=unk, 1=sup, -1=notsup */
  498. X
  499. Xintrupt()
  500. X`123
  501. X    static long lastread;
  502. X    long time();
  503. X
  504. X    udcounter++;
  505. X    if (readFromServer()) `123
  506. X`009lastread=time(NULL);
  507. X`009redraw();
  508. X`009playerlist2();
  509. X    `125
  510. X    if (reinitPlanets) `123
  511. X`009initPlanets();
  512. X`009reinitPlanets=0;
  513. X    `125
  514. X    if (lastread+3 < time(NULL)) `123
  515. X`009/* We haven't heard from server for awhile...`032
  516. X`009 * Strategy:  send a useless packet to "ping" server.
  517. X`009 */
  518. X`009sendWarReq(me->p_hostile);
  519. X    `125
  520. X    if (me->p_status==POUTFIT) `123
  521. X`009death();
  522. X    `125
  523. X`125
  524. X
  525. Xredraw()
  526. X`123
  527. X
  528. X    /* erase warning line if necessary */
  529. X    if ((warntimer <= udcounter) && (warncount > 0)) `123
  530. X`009W_ClearArea(warnw, 5, 5, W_Textwidth * warncount, W_Textheight, backColo
  531. Vr);
  532. X`009warncount = 0;
  533. X    `125
  534. X
  535. X    if (W_FastClear) `123
  536. X`009W_ClearWindow(w);
  537. X`009clearcount=0;
  538. X`009clearlcount=0;
  539. X    `125 else `123
  540. X`009while (clearcount) `123
  541. X`009    clearcount--;
  542. X`009    W_ClearArea(w, clearzone`0910`093`091clearcount`093, clearzone`0911`
  543. V093`091clearcount`093,
  544. X`009`009clearzone`0912`093`091clearcount`093, clearzone`0913`093`091clearcou
  545. Vnt`093,
  546. X`009`009backColor);
  547. X`009`125
  548. X`009while (clearlcount) `123
  549. X`009    clearlcount--;
  550. X`009    W_MakeLine(w, clearline`0910`093`091clearlcount`093, clearline`0911`
  551. V093`091clearlcount`093,
  552. X`009`009clearline`0912`093`091clearlcount`093, clearline`0913`093`091clearlc
  553. Vount`093,
  554. X`009`009backColor);
  555. X`009`125
  556. X    `125
  557. X
  558. +-+-+-+-+-+-+-+-  END  OF PART 33 +-+-+-+-+-+-+-+-
  559.