home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / games / vmsnet / vmstrek / part35 < prev    next >
Encoding:
Internet Message Format  |  1992-11-20  |  14.6 KB

  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 35/47
  4. Message-ID: <1992Nov20.201736.1@acad2.alaska.edu>
  5. From: asdmf@acad2.alaska.edu
  6. Date: Sat, 21 Nov 1992 00:17:36 GMT
  7. Sender: news@raven.alaska.edu (USENET News System)
  8. Organization: University of Alaska
  9. Nntp-Posting-Host: acad2.alaska.edu
  10. Lines: 408
  11. Xref: uunet vmsnet.sources.games:534
  12.  
  13. -+-+-+-+-+-+-+-+ START OF PART 35 -+-+-+-+-+-+-+-+
  14. X`009for (h=0, pt = &plasmatorps`091MAXPLASMA * i + h`093; h < MAXPLASMA; h++
  15. V, pt++) `123
  16. X`009    if (!pt->pt_status)
  17. X`009`009continue;
  18. X`009    dx = pt->pt_x - me->p_x;
  19. X`009    dy = pt->pt_y - me->p_y;
  20. X`009    if (dx > view `124`124 dx < -view `124`124 dy > view `124`124 dy < -
  21. Vview)
  22. X`009`009continue;
  23. X`009    dx = dx / SCALE + WINSIDE / 2;
  24. X`009    dy = dy / SCALE + WINSIDE / 2;
  25. X`009    if (pt->pt_status == PTEXPLODE) `123
  26. X`009`009pt->pt_fuse--;
  27. X`009`009if (pt->pt_fuse <= 0) `123
  28. X`009`009    pt->pt_status=PTFREE;
  29. X`009`009    j->p_nplasmatorp--;
  30. X`009`009    continue;
  31. X`009`009`125
  32. X`009`009if (pt->pt_fuse>=NUMDETFRAMES) `123
  33. X`009`009    pt->pt_fuse=NUMDETFRAMES-1;
  34. X`009`009`125
  35. X`009`009W_WriteBitmap(dx - (plasmacloud_width/2),
  36. X`009`009     dy - (plasmacloud_height/2),`032
  37. X`009`009     plasmacloud`091pt->pt_fuse`093, plasmatorpColor(pt));
  38. X`009`009clearzone`0910`093`091clearcount`093 = dx - (plasmacloud_width/2);
  39. X`009`009clearzone`0911`093`091clearcount`093 = dy - (plasmacloud_height/2);
  40. X`009`009clearzone`0912`093`091clearcount`093 = plasmacloud_width;
  41. X`009`009clearzone`0913`093`091clearcount`093 = plasmacloud_height;
  42. X`009`009clearcount++;
  43. X`009    `125
  44. X`009    else if (pt->pt_owner != me->p_no && ((pt->pt_war & me->p_team) `124
  45. V`124
  46. X`009`009      (players`091pt->pt_owner`093.p_team & (me->p_hostile `124 me->
  47. Vp_swar))))
  48. X`009    `123
  49. X`009`009W_WriteBitmap(dx - (eplasmatorp_width/2),
  50. X`009`009     dy - (eplasmatorp_height/2),`032
  51. X`009`009     eplasmatorp, plasmatorpColor(pt));
  52. X`009`009clearzone`0910`093`091clearcount`093 = dx - (eplasmatorp_width/2);
  53. X`009`009clearzone`0911`093`091clearcount`093 = dy - (eplasmatorp_height/2);
  54. X`009`009clearzone`0912`093`091clearcount`093 = eplasmatorp_width;
  55. X`009`009clearzone`0913`093`091clearcount`093 = eplasmatorp_height;
  56. X`009`009clearcount++;
  57. X`009    `125
  58. X`009    else `123
  59. X`009`009W_WriteBitmap(dx - (mplasmatorp_width/2),
  60. X`009`009     dy - (mplasmatorp_height/2),`032
  61. X`009`009     mplasmatorp, plasmatorpColor(pt));
  62. X`009`009clearzone`0910`093`091clearcount`093 = dx - (mplasmatorp_width/2);
  63. X`009`009clearzone`0911`093`091clearcount`093 = dy - (mplasmatorp_height/2);
  64. X`009`009clearzone`0912`093`091clearcount`093 = mplasmatorp_width;
  65. X`009`009clearzone`0913`093`091clearcount`093 = mplasmatorp_height;
  66. X`009`009clearcount++;
  67. X`009    `125
  68. X`009`125
  69. X    `125
  70. X    /* Draw Edges */
  71. X    if (me->p_x < (WINSIDE / 2) * SCALE) `123
  72. X`009int`009sy, ey;
  73. X
  74. X`009dx = (WINSIDE / 2) - (me->p_x) / SCALE;
  75. X`009sy = (WINSIDE / 2) + (0 - me->p_y) / SCALE;
  76. X`009ey = (WINSIDE / 2) + (GWIDTH - me->p_y) / SCALE;
  77. X`009if (sy < 0) sy = 0;
  78. X`009if (ey > WINSIDE - 1) ey = WINSIDE - 1;
  79. X`009W_MakeLine(w, dx, sy, dx, ey, warningColor);
  80. X`009clearline`0910`093`091clearlcount`093 = dx;
  81. X`009clearline`0911`093`091clearlcount`093 = sy;
  82. X`009clearline`0912`093`091clearlcount`093 = dx;
  83. X`009clearline`0913`093`091clearlcount`093 = ey;
  84. X`009clearlcount++;
  85. X    `125
  86. X    if ((GWIDTH - me->p_x) < (WINSIDE / 2) * SCALE) `123
  87. X`009int`009sy, ey;
  88. X
  89. X`009dx = (WINSIDE / 2) + (GWIDTH - me->p_x) / SCALE;
  90. X`009sy = (WINSIDE / 2) + (0 - me->p_y) / SCALE;
  91. X`009ey = (WINSIDE / 2) + (GWIDTH - me->p_y) / SCALE;
  92. X`009if (sy < 0) sy = 0;
  93. X`009if (ey > WINSIDE - 1) ey = WINSIDE - 1;
  94. X`009W_MakeLine(w, dx, sy, dx, ey, warningColor);
  95. X`009clearline`0910`093`091clearlcount`093 = dx;
  96. X`009clearline`0911`093`091clearlcount`093 = sy;
  97. X`009clearline`0912`093`091clearlcount`093 = dx;
  98. X`009clearline`0913`093`091clearlcount`093 = ey;
  99. X`009clearlcount++;
  100. X    `125
  101. X    if (me->p_y < (WINSIDE / 2) * SCALE) `123
  102. X`009int`009sx, ex;
  103. X
  104. X`009dy = (WINSIDE / 2) - (me->p_y) / SCALE;
  105. X`009sx = (WINSIDE / 2) + (0 - me->p_x) / SCALE;
  106. X`009ex = (WINSIDE / 2) + (GWIDTH - me->p_x) / SCALE;
  107. X`009if (sx < 0) sx = 0;
  108. X`009if (ex > WINSIDE - 1) ex = WINSIDE - 1;
  109. X`009W_MakeLine(w, sx, dy, ex, dy, warningColor);
  110. X`009clearline`0910`093`091clearlcount`093 = sx;
  111. X`009clearline`0911`093`091clearlcount`093 = dy;
  112. X`009clearline`0912`093`091clearlcount`093 = ex;
  113. X`009clearline`0913`093`091clearlcount`093 = dy;
  114. X`009clearlcount++;
  115. X    `125
  116. X    if ((GWIDTH - me->p_y) < (WINSIDE / 2) * SCALE) `123
  117. X`009int`009sx, ex;
  118. X
  119. X`009dy = (WINSIDE / 2) + (GWIDTH - me->p_y) / SCALE;
  120. X`009sx = (WINSIDE / 2) + (0 - me->p_x) / SCALE;
  121. X`009ex = (WINSIDE / 2) + (GWIDTH - me->p_x) / SCALE;
  122. X`009if (sx < 0) sx = 0;
  123. X`009if (ex > WINSIDE - 1) ex = WINSIDE - 1;
  124. X`009W_MakeLine(w, sx, dy, ex, dy, warningColor);
  125. X`009clearline`0910`093`091clearlcount`093 = sx;
  126. X`009clearline`0911`093`091clearlcount`093 = dy;
  127. X`009clearline`0912`093`091clearlcount`093 = ex;
  128. X`009clearline`0913`093`091clearlcount`093 = dy;
  129. X`009clearlcount++;
  130. X    `125
  131. X
  132. X    /* Change border color to signify alert status */
  133. X
  134. X    if (oldalert != (me->p_flags & (PFGREEN`124PFYELLOW`124PFRED))) `123
  135. X        oldalert = (me->p_flags & (PFGREEN`124PFYELLOW`124PFRED));
  136. X`009switch (oldalert) `123
  137. X`009    case PFGREEN:
  138. X`009`009W_ChangeBorder(baseWin, gColor);
  139. X`009`009W_ChangeBorder(iconWin, gColor);
  140. X`009`009break;
  141. X`009    case PFYELLOW:
  142. X`009`009W_ChangeBorder(baseWin, yColor);
  143. X`009`009W_ChangeBorder(iconWin, yColor);
  144. X`009`009break;
  145. X`009    case PFRED:
  146. X`009`009W_ChangeBorder(baseWin, rColor);
  147. X`009`009W_ChangeBorder(iconWin, rColor);
  148. X`009`009break;
  149. X`009`125
  150. X    `125
  151. X`125
  152. X
  153. Xmap()
  154. X`123
  155. X    register int i;
  156. X    register struct player *j;
  157. X    register struct planet *l;
  158. X    int dx, dy;
  159. X
  160. X    if (redrawall) W_ClearWindow(mapw);
  161. X    /* Erase ships */
  162. X    else for (i = 0, j = &players`091i`093; i < MAXPLAYER; i++, j++) `123
  163. X`009lastUpdate`091i`093++;
  164. X`009/* Erase the guy if:
  165. X`009 * redrawPlayer`091i`093 is set and the mapmode setting allows it.
  166. X`009 */
  167. X`009if (!redrawPlayer`091i`093 `124`124 (mapmode==1 && lastUpdate`091i`093<5
  168. V))
  169. X`009    continue;
  170. X`009lastUpdate`091i`093=0;
  171. X`009/* Clear his old image... */
  172. X`009if (mclearzone`0912`093`091i`093) `123
  173. X`009    W_ClearArea(mapw, mclearzone`0910`093`091i`093, mclearzone`0911`093`
  174. V091i`093,
  175. X`009`009mclearzone`0912`093`091i`093, mclearzone`0913`093`091i`093, backColo
  176. Vr);
  177. X`009    /* Redraw the hole just left next update */
  178. X`009    checkRedraw(mclearzone`0914`093`091i`093, mclearzone`0915`093`091i`0
  179. V93);
  180. X`009    mclearzone`0912`093`091i`093=0;
  181. X`009`125
  182. X    `125
  183. X    /* Draw Planets */
  184. X    for (i = 0, l = &planets`091i`093; i < MAXPLANETS; i++, l++) `123
  185. X`009if (!(l->pl_flags & PLREDRAW) && (!redrawall))
  186. X`009    continue;
  187. X`009l->pl_flags &= `126PLREDRAW; `009/* Turn redraw flag off! */
  188. X`009dx = l->pl_x * WINSIDE / GWIDTH;
  189. X`009dy = l->pl_y * WINSIDE / GWIDTH;
  190. X`009W_ClearArea(mapw, dx - (mplanet_width/2), dy - (mplanet_height/2),`032
  191. X`009    mplanet_width, mplanet_height, backColor);
  192. X`009W_WriteBitmap(dx - (mplanet_width/2), dy - (mplanet_height/2),
  193. X`009    planetmBitmap(l), planetColor(l));
  194. X`009W_WriteText(mapw, dx - (mplanet_width/2), dy + (mplanet_height/2),
  195. X`009    planetColor(l), l->pl_name, 3, planetFont(l));
  196. X    `125
  197. X    /* Draw ships */
  198. X    for (i = 0, j = &players`091i`093; i < MAXPLAYER; i++, j++) `123
  199. X`009/* We draw the guy if redrawall, or we just erased him.
  200. X`009 * Also, we redraw if we haven't drawn for 30 frames.
  201. X`009 * (in case he was erased by other ships).
  202. X`009 */
  203. X`009if (lastUpdate`091i`093!=0 && (!redrawall) && lastUpdate`091i`093<30)`03
  204. V2
  205. X`009    continue;
  206. X`009if (j->p_status != PALIVE)`032
  207. X`009    continue;
  208. X`009lastUpdate`091i`093=0;
  209. X`009dx = j->p_x * WINSIDE / GWIDTH;
  210. X`009dy = j->p_y * WINSIDE / GWIDTH;
  211. X`009if (j->p_flags & PFCLOAK) `123
  212. X`009    W_WriteText(mapw, dx - W_Textwidth,
  213. X`009`009dy - W_Textheight/2, unColor, "??", 2, W_RegularFont);
  214. X`009`125 else `123
  215. X`009    W_WriteText(mapw, dx - W_Textwidth,`032
  216. X`009`009dy - W_Textheight/2, playerColor(j), j->p_mapchars, 2,
  217. X`009`009shipFont(j));
  218. X`009`125
  219. X
  220. X`009mclearzone`0910`093`091i`093 = dx - W_Textwidth;
  221. X`009mclearzone`0911`093`091i`093 = dy - W_Textheight/2;
  222. X`009mclearzone`0912`093`091i`093 = W_Textwidth * 2;
  223. X`009mclearzone`0913`093`091i`093 = W_Textheight;
  224. X`009/* Set these so we can checkRedraw() next time */
  225. X`009mclearzone`0914`093`091i`093 = j->p_x;
  226. X`009mclearzone`0915`093`091i`093 = j->p_y;
  227. X`009redrawPlayer`091i`093=0;
  228. X    `125
  229. X    redrawall = 0;
  230. X`125
  231. X
  232. Xstline(flag)
  233. Xint flag;
  234. X`123
  235. X    static char buf1`09180`093;
  236. X    static char buf2`09180`093;
  237. X    static char whichbuf=0;
  238. X    register char *buf, *oldbuf;
  239. X    register char *s;
  240. X    register int i,j;
  241. X    int k;
  242. X
  243. X    /* Instead of one sprintf, we do all this by hand for optimization */
  244. X
  245. X    if (flag) whichbuf=0;`009/* We must completely refresh */
  246. X
  247. X    if (whichbuf!=2) `123
  248. X`009buf=buf1;
  249. X`009oldbuf=buf2;
  250. X    `125 else `123
  251. X`009buf=buf2;
  252. X`009oldbuf=buf1;
  253. X    `125
  254. X    buf`0910`093 = (me->p_flags & PFSHIELD ? 'S': ' ');
  255. X    if (me->p_flags & PFGREEN)
  256. X`009buf`0911`093 = 'G';
  257. X    else if (me->p_flags & PFYELLOW)
  258. X`009buf`0911`093 = 'Y';
  259. X    else if (me->p_flags & PFRED)
  260. X`009buf`0911`093 = 'R';
  261. X    buf`0912`093 = (me->p_flags & (PFPLLOCK `124 PFPLOCK) ? 'L': ' ');
  262. X    buf`0913`093 = (me->p_flags & PFREPAIR ? 'R': ' ');
  263. X    buf`0914`093 = (me->p_flags & PFBOMB ? 'B': ' ');
  264. X    buf`0915`093 = (me->p_flags & PFORBIT ? 'O': ' ');
  265. X    if (me->p_ship.s_type == STARBASE)
  266. X`009buf`0916`093 = (me->p_flags & PFDOCKOK ? 'D' : ' ');
  267. X    else
  268. X`009buf`0916`093 = (me->p_flags & PFDOCK ? 'D' : ' ');
  269. X    buf`0917`093 = (me->p_flags & PFCLOAK ? 'C': ' ');
  270. X    buf`0918`093 = (me->p_flags & PFWEP ? 'W': ' ');
  271. X    buf`0919`093 = (me->p_flags & PFENG ? 'E': ' ');
  272. X    if (me->p_flags & PFPRESS)
  273. X       buf`09110`093 = 'P';
  274. X    else if (me->p_flags & PFTRACT)
  275. X       buf`09110`093 = 'T';
  276. X    else
  277. X       buf`09110`093 = ' ';
  278. X    if (me->p_flags & PFBEAMUP)
  279. X`009buf`09111`093 = 'u';
  280. X    else if (me->p_flags & PFBEAMDOWN)
  281. X`009buf`09111`093 = 'd';
  282. X    else
  283. X`009buf`09111`093 = ' ';
  284. X    buf`09112`093 = (status->tourn) ? 't' : ' ';
  285. X    buf`09113`093 = ' ';
  286. X    buf`09114`093 = '0' + ((me->p_speed % 100) / 10);
  287. X    if (buf`09114`093 == '0')
  288. X`009buf`09114`093 = ' ';
  289. X    buf`09115`093 = '0' + (me->p_speed % 10);`009/* speed */
  290. X    buf`09116`093 = ' ';
  291. X    buf`09117`093 = ' ';
  292. X    buf`09118`093 = '0' + (me->p_damage / 100);
  293. X    if (buf`09118`093 == '0')
  294. X`009buf`09118`093 = ' ';
  295. X    buf`09119`093 = '0' + ((me->p_damage % 100) / 10);
  296. X    if ((buf`09119`093 == '0') && (me->p_damage < 100))
  297. X`009buf`09119`093 = ' ';
  298. X    buf`09120`093 = '0' + (me->p_damage % 10);
  299. X    buf`09121`093 = ' ';
  300. X    buf`09122`093 = '0' + (me->p_shield / 100);
  301. X    if (buf`09122`093 == '0')
  302. X`009buf`09122`093 = ' ';
  303. X    buf`09123`093 = '0' + ((me->p_shield % 100) / 10);
  304. X    if ((buf`09123`093 == '0') && (me->p_shield < 100))
  305. X`009buf`09123`093 = ' ';
  306. X    buf`09124`093 = '0' + (me->p_shield % 10);
  307. X    buf`09125`093 = ' ';
  308. X    buf`09126`093 = ' ';
  309. X    buf`09127`093 = '0' + ((me->p_ntorp % 100) / 10);
  310. X    if (buf`09127`093 == '0')
  311. X`009buf`09127`093 = ' ';
  312. X    buf`09128`093 = '0' + (me->p_ntorp % 10);
  313. X    buf`09129`093 = ' ';
  314. X    buf`09130`093 = ' ';
  315. X    buf`09131`093 = ' ';
  316. X    buf`09132`093 = ' ';
  317. X    buf`09133`093 = '0' + ((int) (me->p_kills / 10));
  318. X    if (buf`09133`093 == '0')
  319. X`009buf`09133`093 = ' ';
  320. X    buf`09134`093 = '0' + (((int) me->p_kills) % 10);
  321. X    buf`09135`093 = '.';
  322. X    buf`09136`093 = '0' + (((int) (me->p_kills * 10)) % 10);
  323. X    buf`09137`093 = '0' + (((int) (me->p_kills * 100)) % 10);
  324. X    buf`09138`093 = ' ';
  325. X    buf`09139`093 = ' ';
  326. X    buf`09140`093 = ' ';
  327. X    buf`09141`093 = '0' + ((me->p_armies % 100) / 10);
  328. X    if (buf`09141`093 == '0')
  329. X`009buf`09141`093 = ' ';
  330. X    buf`09142`093 = '0' + (me->p_armies % 10);
  331. X    buf`09143`093 = ' ';
  332. X    buf`09144`093 = ' ';
  333. X    buf`09145`093 = ' ';
  334. X
  335. X    buf`09146`093 = '0' + (me->p_fuel / 100000);
  336. X    if (buf`09146`093 == '0')
  337. X`009buf`09146`093 = ' ';
  338. X    buf`09147`093 = '0' + ((me->p_fuel % 100000) / 10000);
  339. X    if ((buf`09147`093 == '0') && (me->p_fuel < 100000))
  340. X`009buf`09147`093 = ' ';
  341. X    buf`09148`093 = '0' + ((me->p_fuel % 10000) / 1000);
  342. X    if ((buf`09148`093 == '0') && (me->p_fuel < 10000))
  343. X`009buf`09148`093 = ' ';
  344. X    buf`09149`093 = '0' + ((me->p_fuel % 1000) / 100);
  345. X    if ((buf`09149`093 == '0') && (me->p_fuel < 1000))
  346. X`009buf`09149`093 = ' ';
  347. X    buf`09150`093 = '0' + ((me->p_fuel % 100) / 10);
  348. X    if ((buf`09150`093 == '0') && (me->p_fuel < 100))
  349. X`009buf`09150`093 = ' ';
  350. X    buf`09151`093 = '0' + (me->p_fuel % 10);
  351. X    buf`09152`093 = ' ';
  352. X    buf`09153`093 = ' ';
  353. X    buf`09154`093 = ' ';
  354. X
  355. X    buf`09155`093 = '0' + ((me->p_wtemp / 10) / 100);
  356. X    if (buf`09155`093 == '0')
  357. X`009buf`09155`093 = ' ';
  358. X    buf`09156`093 = '0' + (((me->p_wtemp / 10) % 100) / 10);
  359. X    if ((buf`09156`093 == '0') && (me->p_wtemp < 1000))
  360. X`009buf`09156`093 = ' ';
  361. X    buf`09157`093 = '0' + ((me->p_wtemp / 10) % 10);
  362. X
  363. X    buf`09158`093 = ' ';
  364. X    buf`09159`093 = ' ';
  365. X    buf`09160`093 = ' ';
  366. X
  367. X    buf`09161`093 = '0' + ((me->p_etemp / 10) / 100);
  368. X    if (buf`09161`093 == '0')
  369. X`009buf`09161`093 = ' ';
  370. X    buf`09162`093 = '0' + (((me->p_etemp / 10) % 100) / 10);
  371. X    if ((buf`09162`093 == '0') && (me->p_etemp < 1000))
  372. X`009buf`09162`093 = ' ';
  373. X    buf`09163`093 = '0' + ((me->p_etemp / 10) % 10);
  374. X
  375. X    if (whichbuf==0) `123
  376. X`009/* Draw status line */
  377. X`009W_WriteText(tstatw, 50, 16, textColor, buf, 64, W_RegularFont);
  378. X`009whichbuf=1;
  379. X    `125 else `123`009/* Hacks to make it print only what is necessary */
  380. X`009whichbuf=3-whichbuf;
  381. X`009j= -1;
  382. X`009for (i=0; i<64; i++) `123
  383. X`009    if (*(buf++) != *(oldbuf++)) `123
  384. X`009`009/* Different string */
  385. X`009`009if (j==-1) `123
  386. X`009`009    k=i;
  387. X`009`009    s=buf-1;
  388. X`009`009`125
  389. X`009`009j=0;
  390. X`009    `125 else `123
  391. X`009`009/* Same string */
  392. X`009`009if (j==-1) continue;
  393. X`009`009j++;
  394. X`009`009if (j==20) `123`009/* Random number */
  395. X`009`009    W_WriteText(tstatw, 50+W_Textwidth*k, 16, textColor,
  396. X`009`009`009s, i-k-19, W_RegularFont);
  397. X`009`009    j= -1;
  398. X`009`009`125
  399. X`009    `125
  400. X`009`125
  401. X`009if (j!=-1) `123
  402. X`009    W_WriteText(tstatw, 50+W_Textwidth*k, 16, textColor, s, i-k-j,
  403. X`009`009W_RegularFont);
  404. X`009`125
  405. X    `125
  406. X`125
  407. X
  408. Xnewcourse(x, y)
  409. Xint x, y;
  410. X`123
  411. X    return((unsigned char) (atan2((double) (x - me->p_x),
  412. X`009(double) (me->p_y - y)) / 3.14159 * 128.));
  413. X`125
  414. X
  415. XredrawTstats()
  416. X`123
  417. X    char`009buf`091BUFSIZ`093;
  418. X
  419. X    W_ClearWindow(tstatw);
  420. +-+-+-+-+-+-+-+-  END  OF PART 35 +-+-+-+-+-+-+-+-
  421.