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

  1. Newsgroups: vmsnet.sources.games
  2. Path: uunet!stanford.edu!agate!spool.mu.edu!darwin.sura.net!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 27/47
  5. Message-ID: <1992Nov13.140910.1@acad2.alaska.edu>
  6. Lines: 520
  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:09:10 GMT
  11. Xref: uunet vmsnet.sources.games:515
  12.  
  13. -+-+-+-+-+-+-+-+ START OF PART 27 -+-+-+-+-+-+-+-+
  14. X`009`009me->p_ghostbuster = 0;
  15. X`009`009tv.tv_sec = 1;
  16. X`009`009tv.tv_usec = 0;
  17. X`009`009/* If we don't have a socket, we go nuts polling. */
  18. X`009`009if (W_Socket() != -1) `123
  19. X`009`009    mask = 1 << W_Socket();
  20. X`009`009    select(32, &mask, 0, 0, &tv);
  21. X`009`009`125
  22. X`009`009elapsed = time(0) - startTime;
  23. X`009`009if (elapsed > AUTOQUIT) `123
  24. X`009`009    printf("Auto-Quit.\n");
  25. X`009`009    *team = 4;
  26. X`009`009    break;
  27. X`009`009`125
  28. X`009`009if (lasttime != time(0)) `123
  29. X`009`009    showTimeLeft(elapsed, AUTOQUIT);
  30. X`009`009    lasttime=time(0);
  31. X`009`009`125
  32. X
  33. X`009`009okayMask = tournMask;
  34. X
  35. X                for (i = 0; i < 4; i++) `123
  36. X                    if ((okayMask `094 lastOkayMask) & (1 << i)) `123
  37. X                        if (okayMask & (1 << i)) `123
  38. X`009`009`009    W_UnTileWindow(teamWin`091i`093);
  39. X                        `125 else `123
  40. X`009`009`009    W_TileWindow(teamWin`091i`093, stipple);
  41. X                        `125
  42. X                        lastplayercount`091i`093 = -1;        /* force updat
  43. Ve */
  44. X                    `125
  45. X                    redrawTeam(teamWin`091i`093, i, &lastplayercount`091i`09
  46. V3);
  47. X                `125
  48. X                lastOkayMask = okayMask;
  49. X`009    `125
  50. X`009    if (*team == 4)
  51. X`009`009break;
  52. X`009   `032
  53. X`009    if (time(0) - startTime <= spareTime) `123
  54. X`009`009spareTime -= time(0) - startTime;
  55. X`009`009startTime = time(0);
  56. X`009    `125 else `123
  57. X`009`009startTime += spareTime;
  58. X`009`009spareTime = 0;
  59. X`009    `125
  60. X`009    if (!W_EventsPending()) continue;
  61. X`009    W_NextEvent(&event);
  62. X`009    typeok=1;
  63. X`009    switch ((int) event.type) `123
  64. X`009    case W_EV_KEY:
  65. X`009`009switch (event.key) `123
  66. X`009`009case 's': *s_type = SCOUT;
  67. X`009`009`009  break;
  68. X`009`009case 'd': *s_type = DESTROYER;
  69. X`009`009`009  break;
  70. X`009`009case 'c': *s_type = CRUISER;
  71. X`009`009`009  break;
  72. X`009`009case 'b': *s_type = BATTLESHIP;
  73. X`009`009`009  break;
  74. X`009`009case 'a': *s_type = ASSAULT;
  75. X`009`009`009  break;
  76. X`009`009case 'o': *s_type = STARBASE;
  77. X`009`009`009  break;`009`009/* FIX */
  78. X`009`009case 'g': *s_type = GALAXY;`009/* ATM - Galaxy */
  79. X`009`009`009  break;
  80. X`009`009case '*': *s_type = ATT;
  81. X`009`009`009  break;
  82. X`009`009default:  typeok = 0;
  83. X`009`009`009  break;
  84. X`009`009`125
  85. X`009`009if (event.Window == w) `123
  86. X`009`009    switch(event.key) `123
  87. X`009`009    case 'y':
  88. X`009`009`009if (resetting) `123
  89. X`009`009`009    sendResetStatsReq('Y');
  90. X`009`009`009    warning("OK, your stats have been reset.");
  91. X`009`009`009    resetting=0;
  92. X`009`009`009`125
  93. X`009`009`009break;
  94. X`009`009    case 'n':
  95. X`009`009`009if (resetting) `123
  96. X`009`009`009    warning("I didn't think so.");
  97. X`009`009`009    resetting=0;
  98. X`009`009`009`125
  99. X`009`009`009break;
  100. X`009`009    case 'R':
  101. X`009`009`009warning("Are you sure you want to reset your stats?");
  102. X`009`009`009resetting=1;
  103. X`009`009`009break;
  104. X`009`009    case 'f':`009`009/* Scroll motd forward */
  105. X`009`009`009line=line+28;
  106. X`009`009`009if (line>maxline) `123
  107. X`009`009`009    line=line-28;
  108. X`009`009`009    break;
  109. X`009`009`009`125
  110. X`009`009`009showMotd();
  111. X`009`009`009break;
  112. X`009`009    case 'b':`009`009/* Scroll motd backward */
  113. X`009`009`009if (line==0) break;
  114. X`009`009`009line=line-28;
  115. X`009`009`009if (line<0) line=0;
  116. X`009`009`009showMotd();
  117. X`009`009`009break;
  118. X`009`009    `125
  119. X`009`009`125
  120. X`009`009/* No break, we just fall through */
  121. X`009    case W_EV_BUTTON:
  122. X`009`009if (typeok == 0) break;
  123. X`009`009for (i = 0; i < 4; i++)
  124. X`009`009    if (event.Window == teamWin`091i`093) `123
  125. X`009`009`009*team = i;
  126. X`009`009`009break;
  127. X`009`009    `125
  128. X`009`009if (event.Window == qwin)`123
  129. X`009`009    *team = 4;
  130. X`009`009    break;
  131. X`009`009`125
  132. X`009`009if (*team!=-1 && !teamRequest(*team, *s_type)) `123
  133. X`009`009    *team= -1;
  134. X`009`009`125
  135. X`009`009break;
  136. X`009    case W_EV_EXPOSE:
  137. X`009`009for (i = 0; i < 4; i++)
  138. X`009`009    if (event.Window == teamWin`091i`093) `123
  139. X`009`009`009lastplayercount`091i`093 = -1;    /* force update */
  140. X`009`009`009redrawTeam(teamWin`091i`093, i, &lastplayercount`091i`093);
  141. X`009`009`009break;
  142. X`009`009    `125
  143. X`009`009if (event.Window == qwin)
  144. X`009`009    redrawQuit();
  145. X`009`009else if (event.Window == tstatw)
  146. X`009`009    redrawTstats();
  147. X`009`009else if (event.Window == iconWin)
  148. X`009`009    drawIcon();
  149. X`009`009else if (event.Window == w)
  150. X`009`009    showMotd();
  151. X`009`009else if (event.Window == helpWin)
  152. X`009`009    fillhelp();
  153. X`009`009else if (event.Window == playerw)`032
  154. X`009`009    playerlist();
  155. X`009`009else if (event.Window == warnw)`032
  156. X`009`009    W_ClearWindow(warnw);
  157. X`009`009else if (event.Window == messagew)
  158. X`009`009    W_ClearWindow(messagew);
  159. X`009`009break;
  160. X`009    `125
  161. X    `125 while (*team < 0);
  162. X    if (event.Window != qwin)
  163. X`009warning("Welcome aboard Captain!");
  164. X
  165. X    if (*team == 4) `123
  166. X`009*team = -1;
  167. X    `125
  168. X`009`009`009`009
  169. X    for (i = 0; i < 4; i++)
  170. X        W_UnmapWindow(teamWin`091i`093);
  171. X    W_UnmapWindow(qwin);
  172. X`125
  173. X
  174. X/* Attempt to pick specified team & ship */
  175. XteamRequest(team, ship)`032
  176. Xint team,ship;
  177. X`123
  178. X    int lastTime;
  179. X
  180. X    pickOk= -1;
  181. X    sendTeamReq(team,ship);
  182. X    lastTime=time(NULL);
  183. X    while (pickOk == -1) `123
  184. X`009if (lastTime+3 < time(NULL)) `123
  185. X`009    sendTeamReq(team,ship);
  186. X`009`125
  187. X`009socketPause();
  188. X`009readFromServer();
  189. X`009if (isServerDead()) `123
  190. X`009    printf("Whoops!  We've been ghostbusted!\n");
  191. X`009    printf("Pray for a miracle!\n");
  192. X`009    /* UDP fail-safe */
  193. X`009    commMode = commModeReq = COMM_TCP;
  194. X`009    commSwitchTimeout = 0;
  195. X`009    if (udpSock >= 0)
  196. X`009`009closeUdpConn();
  197. X`009    if (udpWin) `123
  198. X`009`009udprefresh(UDP_CURRENT);
  199. X`009`009udprefresh(UDP_STATUS);
  200. X`009    `125
  201. X`009    connectToServer(nextSocket);
  202. X`009    printf("Yea!  We've been resurrected!\n");
  203. X`009    pickOk=0;
  204. X`009    break;
  205. X`009`125
  206. X    `125
  207. X    return(pickOk);
  208. X`125
  209. X
  210. XnumShips(owner)
  211. X`123
  212. X`009int`009`009i, num = 0;
  213. X`009struct player`009*p;
  214. X
  215. X`009for (i = 0, p = players; i < MAXPLAYER; i++, p++)
  216. X`009`009if (p->p_status == PALIVE && p->p_team == owner)
  217. X`009`009`009num++;
  218. X`009return (num);
  219. X`125
  220. X
  221. XrealNumShips(owner)
  222. X`123
  223. X`009int`009`009i, num = 0;
  224. X`009struct player`009*p;
  225. X
  226. X`009for (i = 0, p = players; i < MAXPLAYER; i++, p++)
  227. X`009`009if (p->p_status != PFREE &&`032
  228. X`009`009    p->p_team == owner)
  229. X`009`009`009num++;
  230. X`009return (num);
  231. X`125
  232. X
  233. XdeadTeam(owner)
  234. Xint owner;
  235. X/* The team is dead if it has no planets and cannot coup it's home planet */
  236. X`123
  237. X    int i,num=0;
  238. X    struct planet *p;
  239. X
  240. X    if (planets`091remap`091owner`093*10-10`093.pl_couptime == 0) return(0);
  241. X    for (i=0, p=planets; i<MAXPLANETS; i++,p++) `123
  242. X`009if (p->pl_owner & owner) `123
  243. X`009    num++;
  244. X`009`125
  245. X    `125
  246. X    if (num!=0) return(0);
  247. X    return(1);
  248. X`125
  249. X
  250. Xstatic char`009*AUTHOR`091`093 = `123
  251. X    "",
  252. X    "---  XtrekII Release Version 6.1 ---",
  253. X    "",
  254. X    "By Chris Guthrie, Ed James,",
  255. X    "Scott Silvey (scott@scam), and Kevin Smith (ksmith@miro)",
  256. X    "",
  257. X    "Amdahl UDP Version",`009`009/* UDP */
  258. X`125;
  259. X
  260. XcheckBold(line)
  261. X/* Determine if that line should be highlighted on sign-on screen */
  262. X/* Which is done when it is the players own score being displayed */
  263. Xchar *line;
  264. X`123
  265. X    char *s, *t;
  266. X    int i;
  267. X    int end=0;
  268. X
  269. X    if (strlen(line) < 60) return(0);
  270. X    s = line+4;
  271. X    t = me->p_name;
  272. X
  273. X    for (i=0; i<16; i++) `123
  274. X`009if (!end) `123
  275. X`009    if (*t == '\0') end=1;
  276. X`009    else if (*t != *s) return(0);
  277. X`009`125
  278. X`009if (end) `123
  279. X`009    if (*s != ' ') return(0);
  280. X`009`125
  281. X`009s++;
  282. X`009t++;
  283. X    `125
  284. X    return(1);
  285. X`125
  286. X
  287. Xstruct list `123
  288. X    char bold;
  289. X    struct list *next;
  290. X    char *data;
  291. X`125;
  292. Xstatic struct list *motddata = NULL;
  293. X
  294. XshowMotd()
  295. X`123
  296. X    FILE *fopen();
  297. X    int`009i, length, top, center;
  298. X    struct list *data;
  299. X    static int first=1;
  300. X    int count;
  301. X
  302. X    W_ClearWindow(w);
  303. X    for (i = 0; i < SIZEOF(AUTHOR); i++) `123
  304. X`009length = strlen(AUTHOR`091i`093);
  305. X`009center = WINSIDE / 2 - (length * W_Textwidth) / 2;
  306. X`009W_WriteText(w, center, i*W_Textheight, textColor, AUTHOR`091i`093, lengt
  307. Vh,
  308. X`009    W_RegularFont);
  309. X    `125
  310. X    top = SIZEOF(AUTHOR) + 5;`009`009/* UDP: was 7 */
  311. X
  312. X    if (first) `123
  313. X`009first=0;
  314. X`009data=motddata;
  315. X`009while (data!=NULL) `123
  316. X`009    data->bold=checkBold(data->data);
  317. X`009    data=data->next;
  318. X`009`125
  319. X    `125
  320. X
  321. X    data=motddata;
  322. X    for (i=0; i<line; i++) `123
  323. X`009if (data==NULL) `123
  324. X`009    line=0;
  325. X`009    data=motddata;
  326. X`009    break;
  327. X`009`125
  328. X`009data=data->next;
  329. X    `125
  330. X    count=28;`009/* Magical # of lines to display */
  331. X    for (i=top; i<50; i++) `123
  332. X`009if (data==NULL) break;
  333. X`009if (!strcmp(data->data, "\t@@@"))`009`009/* ATM */
  334. X`009    break;
  335. X`009if (data->bold) `123
  336. X`009    W_WriteText(w, 20, i*W_Textheight, textColor, data->data,
  337. X`009`009strlen(data->data), W_BoldFont);
  338. X`009`125 else `123
  339. X`009    W_WriteText(w, 20, i*W_Textheight, textColor, data->data,
  340. X`009`009strlen(data->data), W_RegularFont);
  341. X`009`125
  342. X`009data=data->next;
  343. X`009count--;
  344. X`009if (count<=0) break;
  345. X    `125
  346. X
  347. X    showValues(data);
  348. X`125
  349. X
  350. X/*
  351. X * ATM: show the current values of the .sysdef parameters.
  352. X */
  353. XshowValues(data)
  354. Xstruct list *data;
  355. X`123
  356. X    int i;
  357. X    static char *msg = "OPTIONS SET WHEN YOU STARTED WERE:";
  358. X
  359. X    /* try to find the start of the info */
  360. X    while (1) `123
  361. X`009if (data == NULL) return;
  362. X`009if (!strcmp(data->data, STATUS_TOKEN))
  363. X`009    break;
  364. X`009data = data->next;
  365. X    `125
  366. X    data = data->next;
  367. X
  368. X    W_WriteText(mapw, 20, 14*W_Textheight, textColor, msg,
  369. X`009strlen(msg), W_RegularFont);
  370. X    for (i = 16; i < 50; i += 2) `123
  371. X`009if (data == NULL) break;
  372. X`009if (data->data`0910`093 == '+')`009/* quick boldface hack */
  373. X`009    W_WriteText(mapw, 20, i*W_Textheight, textColor, data->data+1,
  374. X`009`009strlen(data->data)-1, W_BoldFont);
  375. X`009else
  376. X`009    W_WriteText(mapw, 20, i*W_Textheight, textColor, data->data,
  377. X`009`009strlen(data->data), W_RegularFont);
  378. X`009data = data->next;
  379. X    `125
  380. X`125
  381. X
  382. XnewMotdLine(line)
  383. Xchar *line;
  384. X`123
  385. X    static struct list **temp = &motddata;
  386. X    static int statmode = 0;`009`009`009/* ATM */
  387. X
  388. X    if (!statmode && !strcmp(line, STATUS_TOKEN))
  389. X`009statmode = 1;
  390. X    if (!statmode) maxline++;`009`009`009/* ATM - don't show on left */
  391. X    (*temp) = (struct list *) malloc(sizeof(struct list));
  392. X    (*temp)->next = NULL;
  393. X    (*temp)->data = malloc(strlen(line)+1);
  394. X    strcpy((*temp)->data, line);
  395. X    temp= &((*temp)->next);
  396. X`125
  397. X
  398. XgetResources(prog)
  399. Xchar`009*prog;
  400. X`123
  401. X    getColorDefs(prog);
  402. X    getTiles();
  403. X`125
  404. X
  405. XgetTiles()
  406. X`123
  407. X    stipple = W_StoreBitmap(stipple_width, stipple_height, stipple_bits, w);
  408. X`125
  409. X
  410. XredrawTeam(win, teamNo, lastnum)
  411. XW_Window win;
  412. Xint *lastnum;
  413. X`123
  414. X    char buf`091BUFSIZ`093;
  415. X    static char *teams`091`093 = `123 "Federation", "Romulan", "Klingon", "O
  416. Vrion" `125;
  417. X    int num = numShips(1 << teamNo);
  418. X
  419. X    /* Only redraw if number of players has changed */
  420. X    if (*lastnum == num)
  421. X        return;
  422. X
  423. X    W_ClearWindow(win);
  424. X    W_WriteText(win, 5, 5, shipCol`091teamNo + 1`093, teams`091teamNo`093,`0
  425. V32
  426. X`009strlen(teams`091teamNo`093), W_RegularFont);
  427. X    (void) sprintf(buf, "%d", num);
  428. X    W_MaskText(win, 5, 46, shipCol`091teamNo + 1`093, buf, strlen(buf),`032
  429. X`009W_BigFont);
  430. X    *lastnum = num;
  431. X`125
  432. X
  433. XredrawQuit()
  434. X`123
  435. X    W_WriteText(qwin, 5, 5, textColor, "Quit xtrek", 10, W_RegularFont);
  436. X`125
  437. X
  438. Xchar *help_message`091`093 = `123
  439. X    "0-9   Set speed",
  440. X    ")     speed = 10",
  441. X    "!     speed = 11",
  442. X    "@     speed = 12",
  443. X    "k     Set course",
  444. X    "p     Fire phaser",
  445. X    "t     Fire photon torpedo",
  446. X    "f     Fire plasma torpedo",
  447. X    "a     Use scanning beam",
  448. X    "d     Detonate enemy torps",
  449. X    "D     Detonate own torps",
  450. X    "L     List players",
  451. X    "P     List planets",
  452. X    "S     Status graph toggle",
  453. X    "M     Turn on/off map window updating",
  454. X    "`093     Put up shields",
  455. X    "`091     Put down shields",
  456. X    "u     Shield toggle",
  457. X    "i     Info on player/planet",
  458. X    "I     Extended info on player",
  459. X    "b     Bomb planet",
  460. X    "z     Beam up armies",
  461. X    "x     Beam down armies",
  462. X    "T     Toggle tractor beam",
  463. X    "y     Toggle pressor beam",
  464. X    "R     Enter repair mode",
  465. X    "o     Orbit planet or dock to outpost",
  466. X    "e     Docking permission toggle",
  467. X    "r     Change vessels (ship type)",
  468. X    "Q     Quit",
  469. X    "?     Message window toggle",
  470. X    "c     Cloaking device toggle",
  471. X    "C     Coup a planet",
  472. X    "l     Lock on to player/planet",
  473. X    "h     Help window toggle",
  474. X    "w     War declarations window",
  475. X    "N     Planet names toggle",
  476. X    "V     Rotate local planet display",
  477. X    "B     Rotate galactic planet display",
  478. X    "E     Send distress call",
  479. X    "*     Send in practice robot",
  480. X    "U     Show rankings window",
  481. X    "+     Show UDP options window",
  482. X    "=     Update all",
  483. X    "Space Remove info, planet, rank windows",
  484. X    0,
  485. X`125;
  486. X
  487. X#define MAXHELP 40
  488. X
  489. Xfillhelp()
  490. X`123
  491. X    register int i = 0, row, column;
  492. X
  493. X    W_ClearWindow(helpWin);
  494. X    for (column = 0; column < 4; column++) `123
  495. X`009for (row = 1; row < 12; row++) `123
  496. X`009    if (help_message`091i`093 == 0)
  497. X`009`009break;
  498. X`009    else `123
  499. X`009`009W_WriteText(helpWin, MAXHELP * column, row, textColor,
  500. X`009`009    help_message`091i`093, strlen(help_message`091i`093), W_RegularF
  501. Vont);
  502. X`009`009i++;
  503. X`009    `125
  504. X`009`125
  505. X`009if (help_message`091i`093 == 0)
  506. X`009    break;
  507. X    `125
  508. X`125
  509. X
  510. XdrawIcon()
  511. X`123
  512. X    W_WriteBitmap(0, 0, icon, W_White);
  513. X`125
  514. X
  515. X#define CLOCK_WID`009(BOXSIDE * 9 / 10)
  516. X#define CLOCK_HEI`009(BOXSIDE * 2 / 3)
  517. X#define CLOCK_BDR`0090
  518. X#define CLOCK_X`009`009(BOXSIDE / 2 - CLOCK_WID / 2)
  519. X#define CLOCK_Y`009`009(BOXSIDE / 2 - CLOCK_HEI / 2)
  520. X
  521. X#define PI`009`0093.141592654
  522. X
  523. XshowTimeLeft(time, max)
  524. Xint time, max;
  525. X`123
  526. X    char`009buf`091BUFSIZ`093, *cp;
  527. X    int`009cx, cy, ex, ey, tx, ty;
  528. X
  529. X    if ((max - time) < 10 && time & 1) `123
  530. X`009W_Beep();
  531. X    `125
  532. +-+-+-+-+-+-+-+-  END  OF PART 27 +-+-+-+-+-+-+-+-
  533.