home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / games / vmsnet / vmstrek / part23 < prev    next >
Encoding:
Text File  |  1992-11-13  |  14.5 KB  |  500 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 23/47
  5. Message-ID: <1992Nov13.140046.1@acad2.alaska.edu>
  6. Lines: 487
  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:00:46 GMT
  11. Xref: uunet vmsnet.sources.games:509
  12.  
  13. -+-+-+-+-+-+-+-+ START OF PART 23 -+-+-+-+-+-+-+-+
  14. V buf, strlen(buf),
  15. X`009`009W_RegularFont);
  16. X`009    sprintf(buf, "Planets: %5.2f  %5d",
  17. X`009`009planetRating(j),
  18. X`009`009j->p_stats.st_planets + j->p_stats.st_tplanets);
  19. X`009    W_WriteText(infow, W_Textwidth, W_Textheight*line++, playerColor(j),
  20. V buf, strlen(buf),
  21. X`009`009W_RegularFont);
  22. X`009    sprintf(buf, "Offense: %5.2f  %5d",
  23. X`009`009offenseRating(j),
  24. X`009`009j->p_stats.st_kills + j->p_stats.st_tkills);
  25. X`009    W_WriteText(infow, W_Textwidth, W_Textheight*line++, playerColor(j),
  26. V buf, strlen(buf),
  27. X`009`009W_RegularFont);
  28. X`009    sprintf(buf, "Defense: %5.2f  %5d",`032
  29. X`009`009defenseRating(j),
  30. X`009`009j->p_stats.st_losses + j->p_stats.st_tlosses);
  31. X`009    W_WriteText(infow, W_Textwidth, W_Textheight*line++, playerColor(j),
  32. V buf, strlen(buf),
  33. X`009`009W_RegularFont);
  34. X`009    if (j->p_ship.s_type == STARBASE) `123
  35. X`009`009sprintf(buf, "  Maxkills: %6.2f", j->p_stats.st_sbmaxkills);
  36. X`009    `125 else `123
  37. X`009`009sprintf(buf, "  Maxkills: %6.2f", j->p_stats.st_maxkills);
  38. X`009    `125
  39. X`009    W_WriteText(infow, W_Textwidth, W_Textheight*line++, playerColor(j),
  40. V buf, strlen(buf),
  41. X`009`009W_RegularFont);
  42. X`009    sprintf(buf, "  Hours:    %6.2f",`032
  43. X`009`009(float) j->p_stats.st_tticks / 36000.0);
  44. X`009    W_WriteText(infow, W_Textwidth, W_Textheight*line++, playerColor(j),
  45. V buf, strlen(buf),
  46. X`009`009W_RegularFont);
  47. X`009`125   `032
  48. X    `125
  49. X    else `123  /* Planet */
  50. X`009/* Too close to the edge? */
  51. X`009if (mx + 20 * W_Textwidth + 2 > windowWidth)
  52. X`009    mx = windowWidth - 25 * W_Textwidth - 2;
  53. X`009if (my + 3 * W_Textheight + 2 > windowHeight)
  54. X`009    my = windowHeight - 3 * W_Textheight - 2;
  55. X
  56. X`009infow = W_MakeWindow("info",mx,my,W_Textwidth*25,W_Textheight*3,ww,
  57. X`009    2,foreColor);
  58. X`009W_MapWindow(infow);
  59. X`009k = &planets`091target->o_num`093;
  60. X`009dist = hypot((double) (me->p_x - k->pl_x),
  61. X`009    (double) (me->p_y - k->pl_y));
  62. X`009if (k->pl_info & me->p_team) `123
  63. X`009    (void) sprintf(buf, "%s (%c)", k->pl_name, teamlet`091k->pl_owner`09
  64. V3);
  65. X`009    W_WriteText(infow, W_Textwidth, W_Textheight*line++, planetColor(k),
  66. V buf, strlen(buf),
  67. X`009`009planetFont(k));
  68. X`009    (void) sprintf(buf, "Armies %d", k->pl_armies);
  69. X`009    W_WriteText(infow, W_Textwidth, W_Textheight*line++, planetColor(k),
  70. V buf, strlen(buf),
  71. X`009`009W_RegularFont);
  72. X`009    (void) sprintf(buf, "%s %s %s %c%c%c%c",
  73. X`009`009(k->pl_flags & PLREPAIR ? "REPAIR" : "      "),
  74. X`009`009(k->pl_flags & PLFUEL ? "FUEL" : "    "),
  75. X`009`009(k->pl_flags & PLAGRI ? "AGRI" : "    "),
  76. X`009`009(k->pl_info & FED ? 'F' : ' '),
  77. X`009`009(k->pl_info & ROM ? 'R' : ' '),
  78. X`009`009(k->pl_info & KLI ? 'K' : ' '),
  79. X`009`009(k->pl_info & ORI ? 'O' : ' '));
  80. X`009    W_WriteText(infow, W_Textwidth, W_Textheight*line++, planetColor(k),
  81. V buf, strlen(buf),
  82. X`009`009W_RegularFont);
  83. X`009`125
  84. X`009else `123
  85. X`009    (void) sprintf(buf, "%s", k->pl_name);
  86. X`009    W_WriteText(infow, W_Textwidth, W_Textheight*line++, planetColor(k),
  87. V buf, strlen(buf),
  88. X`009`009W_RegularFont);
  89. X`009    (void) sprintf(buf, "No other info");
  90. X`009    W_WriteText(infow, W_Textwidth, W_Textheight*line++, planetColor(k),
  91. V buf, strlen(buf),
  92. X`009`009W_RegularFont);
  93. X`009`125
  94. X    `125
  95. X`125
  96. X
  97. X
  98. XdestroyInfo()
  99. X`123
  100. X    W_DestroyWindow(infow);
  101. X    infomapped = 0;
  102. X`125
  103. X
  104. $ CALL UNPACK INFORM.C;1 1280503866
  105. $ create/nolog 'f'
  106. X/*
  107. X * input.c
  108. X *
  109. X * Modified to work as client in socket based protocol
  110. X */
  111. X#include "copyright.h"
  112. X
  113. X#include <stdio.h>
  114. X#include <math.h>
  115. X#include "TWG$TCP:`091NETDIST.INCLUDE.SYS`093types.h"
  116. X#ifdef hpux
  117. X#include <time.h>
  118. X#else /*hpux*/
  119. X#include <time.h>
  120. X#endif /*hpux*/
  121. X#include <signal.h>
  122. X#include <errno.h>
  123. X#include "Wlib.h"
  124. X#include "defs.h"
  125. X#include "struct.h"
  126. X#include "data.h"
  127. X#include "packets.h"
  128. X
  129. X#ifdef VMS
  130. X#include "vmsutils.h"
  131. X#endif
  132. X
  133. Xinitkeymap()
  134. X`123
  135. X    char *str;
  136. X
  137. X    if ((str = getdefault("keymap")) != NULL) `123
  138. X`009while (*str!='\0') `123
  139. X`009    if (*str >= 32 && *str < 127) `123
  140. X`009`009mystats->st_keymap`091*str - 32`093= *(str+1);
  141. X`009    `125
  142. X`009    str+=2;
  143. X`009`125
  144. X    `125
  145. X`125
  146. X
  147. Xinitinput()
  148. X`123
  149. X    /* Nothing doing... */
  150. X`125
  151. X
  152. Xinput()
  153. X`123
  154. X    W_Event data;
  155. X    fd_set readfds;
  156. X/*    int fd;*/
  157. X
  158. X    while (1) `123
  159. X`009while (!W_EventsPending()) `123
  160. X`009    /* Screw it.  It we can't get any damned socket to block on,`032
  161. X`009     *   we will just poll, and blow away the cpu.  Its this systems
  162. X`009     *   damned fault because no socket was provided.
  163. X`009     */
  164. X`009    if (W_Socket() != -1) `123
  165. X/*`009`009fd = ((1 << W_Socket()) `124 (1 << sock));*/
  166. X`009`009FD_ZERO(&readfds);
  167. X`009`009FD_SET(W_Socket(), &readfds);
  168. X`009`009FD_SET(sock, &readfds);
  169. X`009`009if (udpSock >= 0)
  170. X`009`009    FD_SET(udpSock, &readfds);
  171. X`009`009select(32, &readfds, 0, 0, 0);
  172. X`009    `125
  173. X`009    intrupt();
  174. X`009    if (isServerDead()) `123
  175. X`009`009printf("Whoops!  We've been ghostbusted!\n");
  176. X`009`009printf("Pray for a miracle!\n");
  177. X`009`009/* UDP fail-safe */
  178. X`009`009commMode = commModeReq = COMM_TCP;
  179. X`009`009commSwitchTimeout = 0;
  180. X`009`009if (udpSock >= 0)
  181. X`009`009    closeUdpConn();
  182. X`009`009if (udpWin) `123
  183. X`009`009    udprefresh(UDP_CURRENT);
  184. X`009`009    udprefresh(UDP_STATUS);
  185. X`009`009`125
  186. X`009`009connectToServer(nextSocket);
  187. X`009`009printf("Yea!  We've been resurrected!\n");
  188. X`009    `125
  189. X`009`125
  190. X`009W_NextEvent(&data);
  191. X`009switch ((int) data.type) `123
  192. X`009    case W_EV_KEY:
  193. X`009`009if (data.Window==optionWin)
  194. X`009`009    optionaction(&data);
  195. X`009`009else if (data.Window == messagew)`032
  196. X`009`009    smessage(data.key);
  197. X`009`009else`032
  198. X`009`009    keyaction(&data);
  199. X`009`009break;
  200. X`009    case W_EV_BUTTON:
  201. X`009`009if (data.Window == war)`032
  202. X`009`009    waraction(&data);
  203. X`009`009else if (data.Window == optionWin)`032
  204. X`009`009    optionaction(&data);
  205. X`009`009else if (data.Window == udpWin)
  206. X`009`009    udpaction(&data);`009`009/* UDP */
  207. X`009        else buttonaction(&data);
  208. X`009`009break;
  209. X`009    case W_EV_EXPOSE:
  210. X`009`009if (data.Window == statwin)
  211. X`009`009    redrawStats();
  212. X`009`009else if (data.Window == tstatw)
  213. X`009`009    redrawTstats();
  214. X`009`009else if (data.Window == mapw)
  215. X`009`009    redrawall = 1;
  216. X`009`009else if (data.Window == iconWin)
  217. X`009`009    drawIcon();
  218. X`009`009else if (data.Window == helpWin)
  219. X`009`009    fillhelp();
  220. X`009`009else if (data.Window == playerw)`032
  221. X`009`009    playerlist();
  222. X`009`009else if (data.Window == planetw)
  223. X`009`009    planetlist();
  224. X`009`009else if (data.Window == rankw)`032
  225. X`009`009    ranklist();
  226. X`009`009else if (data.Window == warnw)`032
  227. X                    W_ClearWindow(warnw);
  228. X                else if (data.Window == messagew)
  229. X                    W_ClearWindow(messagew);
  230. X`009`009break;
  231. X`009    default:
  232. X`009`009break;
  233. X`009`125
  234. X    `125
  235. X`125
  236. X
  237. Xkeyaction(data)
  238. XW_Event *data;
  239. X`123
  240. X    unsigned char course;
  241. X    struct obtype *gettarget(), *target;
  242. X    char key=data->key;
  243. X
  244. X    if (data->Window!=mapw && data->Window!=w && data->Window!=infow && data
  245. V->Window!=scanw) return;
  246. X    if (!index("sbogadc", key) `124`124 !(localflags & PFREFIT)) `123
  247. X`009if (key >= 32 && key < 127) `123
  248. X`009    key=mystats->st_keymap`091key - 32`093;
  249. X`009`125
  250. X    `125
  251. X    switch(key) `123
  252. X`009case '0':
  253. X`009case '1':
  254. X`009case '2':
  255. X`009case '3':
  256. X`009case '4':
  257. X`009case '5':
  258. X`009case '6':
  259. X`009case '7':
  260. X`009case '8':
  261. X`009case '9':
  262. X`009    set_speed(key - '0');
  263. X`009    localflags &= `126(PFREFIT);
  264. X`009    break;
  265. X`009case 'e': /* Turn off docking permission, eject docked vessels. */
  266. X`009    if (me->p_flags & PFDOCKOK)
  267. X`009`009sendDockingReq(0);
  268. X`009    else
  269. X`009`009sendDockingReq(1);
  270. X`009    break;
  271. X`009case 'r':
  272. X`009    localflags `124= PFREFIT;
  273. X`009    warning("s=scout, d=destroyer, c=cruiser, b=battleship, a=assault, o
  274. V=starbase, g=galaxy");
  275. X`009    break;
  276. X`009case ')':
  277. X`009    set_speed(10);
  278. X`009    localflags &= `126(PFREFIT);
  279. X`009    break;
  280. X`009case '!':
  281. X`009    set_speed(11);
  282. X`009    localflags &= `126(PFREFIT);
  283. X`009    break;
  284. X`009case '@':
  285. X`009    set_speed(12);
  286. X`009    localflags &= `126(PFREFIT);
  287. X`009    break;
  288. X`009case '#':
  289. X`009    set_speed(me->p_ship.s_maxspeed/2);
  290. X`009    localflags &= `126(PFREFIT);
  291. X`009    break;
  292. X`009case '%':
  293. X`009    set_speed(99);`009/* Max speed... */
  294. X`009    localflags &= `126(PFREFIT);
  295. X`009    break;
  296. X`009case 'a':
  297. X`009    if (localflags & PFREFIT) `123
  298. X`009`009do_refit(ASSAULT);
  299. X`009    `125 else `123
  300. X#ifdef OLD_SCAN
  301. X`009`009/* ATM - scanners ("About...") */
  302. X`009`009if (!scanmapped)
  303. X`009`009    scan(data->Window, data->x, data->y);
  304. X`009`009else
  305. X`009`009    destroyScan();
  306. X#endif
  307. X`009`009if (!W_IsMapped(scanwin)) `123
  308. X`009`009    scan(data->Window, data->x, data->y);
  309. X`009`009`125 else `123
  310. X`009`009    if (scanmapped)
  311. X`009`009`009W_UnmapWindow(scanwin);
  312. X`009`009    scanmapped = 0;
  313. X`009`009`125
  314. X`009    `125
  315. X`009    break;
  316. X`009case 'k': /* k = set course */
  317. X`009    course = getcourse(data->Window, data->x, data->y);
  318. X`009    set_course(course);
  319. X`009    me->p_flags &= `126(PFPLOCK `124 PFPLLOCK);
  320. X`009    localflags &= `126(PFREFIT);
  321. X`009    break;
  322. X`009case 'p': /* p = fire phasers */
  323. X`009    course = getcourse(data->Window, data->x, data->y);
  324. X`009    sendPhaserReq(course);
  325. X`009    break;
  326. X`009case 't': /* t = launch torps */
  327. X`009    course = getcourse(data->Window, data->x, data->y);
  328. X`009    sendTorpReq(course);
  329. X`009    break;
  330. X`009case 'f':`032
  331. X`009    /* f = launch plasma torpedos */
  332. X`009    course = getcourse(data->Window, data->x, data->y);
  333. X`009    sendPlasmaReq(course);
  334. X`009    break;
  335. X`009case 'd': /* d = detonate other torps */
  336. X`009    if (localflags & PFREFIT)
  337. X`009`009do_refit(DESTROYER);
  338. X`009    else
  339. X`009`009sendDetonateReq();
  340. X`009    break;
  341. X`009case 'g':
  342. X`009    if (localflags & PFREFIT)
  343. X`009`009do_refit(GALAXY);
  344. X`009    break;
  345. X`009case 'D': /* D = detonate my torps */
  346. X`009    detmine();
  347. X`009    break;
  348. X`009case '`091':
  349. X`009    shield_down();
  350. X`009    break;
  351. X`009case '`093':
  352. X`009    shield_up();
  353. X`009    break;
  354. X`009case 'u': /* u = toggle shields */
  355. X`009    shield_tog();
  356. X`009    break;
  357. X`009case 's': /* For Serge */
  358. X`009    if (localflags & PFREFIT)
  359. X`009`009do_refit(SCOUT);
  360. X`009    else
  361. X`009`009shield_tog();
  362. X`009    break;
  363. X`009case 'b': /* b = bomb planet */
  364. X`009    if (localflags & PFREFIT)
  365. X`009`009do_refit(BATTLESHIP);
  366. X`009    else
  367. X`009`009bomb_planet();
  368. X`009    break;
  369. X`009case 'z': /* z = beam up */
  370. X`009    beam_up();
  371. X`009    break;
  372. X`009case 'x': /* x = beam down */
  373. X`009    beam_down();
  374. X`009    break;
  375. X`009case 'R': /* R = Go into repair mode */
  376. X`009    sendRepairReq(1);
  377. X`009    break;
  378. X`009case 'y':
  379. X`009case 'T':
  380. X`009    if (me->p_flags & (PFTRACT `124 PFPRESS)) `123
  381. X`009`009sendTractorReq(0, me->p_no);
  382. X`009`009break;
  383. X`009    `125
  384. X`009    target = gettarget(data->Window, data->x, data->y, TARG_PLAYER);
  385. X`009    if (key=='T') `123
  386. X`009`009sendTractorReq(1, target->o_num);
  387. X`009    `125 else `123
  388. X`009`009sendRepressReq(1, target->o_num);
  389. X`009    `125
  390. X`009    break;
  391. X`009case 'o': /* o = dock at nearby starbase or orbit nearest planet */
  392. X`009    if (localflags & PFREFIT) `123
  393. X`009`009do_refit(STARBASE);
  394. X`009    `125 else `123
  395. X`009`009sendOrbitReq(1);
  396. X`009    `125
  397. X`009    break;
  398. X`009case 'O': /* O = options Window */
  399. X`009    if (optionWin!=NULL && W_IsMapped(optionWin))
  400. X`009`009optiondone();
  401. X`009    else
  402. X`009`009optionwindow();
  403. X`009    break;
  404. X`009case 'Q':
  405. X`009    sendQuitReq();
  406. X`009    break;
  407. X`009case 'V':
  408. X`009    showlocal++;
  409. X`009    if (showlocal==3) showlocal=0;
  410. X`009    break;
  411. X`009case 'B':
  412. X`009    showgalactic++;
  413. X`009    if (showgalactic==3) showgalactic=0;
  414. X`009    redrawall=1;
  415. X`009    break;
  416. X`009case '?': /* ? = Redisplay all message windows */
  417. X`009    if (!W_IsMapped(reviewWin)) `123
  418. X`009`009if (W_IsMapped(messwa)) `123
  419. X`009`009    W_UnmapWindow(messwa);
  420. X`009`009    W_UnmapWindow(messwt);
  421. X`009`009    W_UnmapWindow(messwi);
  422. X`009`009    W_UnmapWindow(messwk);
  423. X`009`009`125 else `123
  424. X`009`009    W_MapWindow(reviewWin);
  425. X`009`009`125
  426. X`009    `125 else `123
  427. X`009`009W_UnmapWindow(reviewWin);
  428. X`009`009W_MapWindow(messwa);
  429. X`009`009W_MapWindow(messwt);
  430. X`009`009W_MapWindow(messwi);
  431. X`009`009W_MapWindow(messwk);
  432. X    `009    `125
  433. X`009    if (optionWin) `123
  434. X`009`009optionredrawtarget(reviewWin);
  435. X`009`009optionredrawtarget(messwa);
  436. X`009`009optionredrawtarget(messwt);
  437. X`009`009optionredrawtarget(messwi);
  438. X`009`009optionredrawtarget(messwk);
  439. X`009    `125
  440. X`009    break;
  441. X`009case 'c': /* c = cloak */
  442. X`009    if (localflags & PFREFIT)
  443. X`009`009do_refit(CRUISER);
  444. X`009    else
  445. X`009`009cloak();
  446. X`009    break;
  447. X`009case 'C': /* C = coups */
  448. X`009    sendCoupReq();
  449. X`009    break;
  450. X`009case 'l': /* l = lock onto */
  451. X`009    target = gettarget(data->Window, data->x, data->y,
  452. X`009`009TARG_PLAYER`124TARG_PLANET);
  453. X`009    if (target->o_type == PLAYERTYPE) `123
  454. X`009`009sendPlaylockReq(target->o_num);
  455. X`009    `125
  456. X`009    else `123 `009/* It's a planet */
  457. X`009`009sendPlanlockReq(target->o_num);
  458. X`009    `125
  459. X`009    break;
  460. X`009case 'm': /* m = warp mouse to message window */
  461. X`009    W_WarpPointer(messagew);`009/* ATM - mouse warp */
  462. X`009    break;
  463. X`009case '*':
  464. X`009    sendPractrReq();
  465. X`009    break;
  466. X`009/* Start of display functions */
  467. X`009case ' ': /* ' ' = clear special windows */
  468. X`009    W_UnmapWindow(planetw);
  469. X`009    W_UnmapWindow(rankw);
  470. X`009    if (infomapped)
  471. X`009`009destroyInfo();
  472. X`009    W_UnmapWindow(helpWin);
  473. X`009    W_UnmapWindow(war);
  474. X`009    if (optionWin)
  475. X`009`009optiondone();
  476. X`009    if (scanmapped) `123
  477. X`009`009W_UnmapWindow(scanwin);
  478. X`009`009scanmapped = 0;
  479. X`009    `125
  480. X`009    if (udpWin)
  481. X`009`009udpdone();
  482. X`009    break;
  483. X`009case 'E':    /* E = send emergency call */
  484. X`009    emergency();
  485. X`009    break;
  486. X`009case 'L': /* L = Player list */
  487. X`009    if (W_IsMapped(playerw)) `123
  488. X`009`009W_UnmapWindow(playerw);
  489. X`009    `125 else `123
  490. X`009`009W_MapWindow(playerw);
  491. X`009    `125
  492. X`009    break;
  493. X`009case 'P': /* P = Planet list */
  494. X`009    if (W_IsMapped(planetw)) `123
  495. X`009`009W_UnmapWindow(planetw);
  496. X`009    `125 else `123
  497. X`009`009W_MapWindow(planetw);
  498. X`009    `125
  499. +-+-+-+-+-+-+-+-  END  OF PART 23 +-+-+-+-+-+-+-+-
  500.