1 /*#include "src/lib/16_in.h"
\r
2 static word far* clockw= (word far*) 0x046C; // 18.2hz clock
\r
10 #define PaddleMinX (CtlPanelSX + 3)
\r
11 #define PaddleMaxX (CtlPanelEX - 15)
\r
12 #define BallMinX (CtlPanelSX + 2)
\r
13 #define BallMinY (CtlPanelSY + 12 + 2)
\r
14 #define BallMaxX (CtlPanelEX - 6)
\r
15 #define BallMaxY (CtlPanelEY - 13)
\r
16 #define CPaddleY (BallMinY + 4)
\r
17 #define KPaddleY (BallMaxY - 2)
\r
19 USL_DrawPongScore(word k,word c)
\r
21 //++++fontcolor = HiliteColor;
\r
22 //++++PrintY = py = CtlPanelSY + 4;
\r
23 //++++px = CtlPanelSX + 6;
\r
24 //++++VWB_Bar(px,py,42,6,BackColor);
\r
25 //++++USL_DrawString("YOU:");
\r
27 //++++US_PrintUnsigned(k);
\r
28 //++++px = CtlPanelSX + 108;
\r
29 //++++VWB_Bar(px,py,50,6,BackColor);
\r
30 //++++USL_DrawString("COMP:");
\r
32 //++++US_PrintUnsigned(c);
\r
38 boolean ball,killball,revdir,done,lastscore;
\r
47 word balltime,waittime;
\r
48 CursorInfo cursorinfo;
\r
49 word TimeCount = *clockw;
\r
51 kx = cx = PaddleMinX + ((PaddleMaxX - PaddleMinX) / 2);
\r
52 bx = by = bdx = bdy = 0;
\r
53 kscore = cscore = 0;
\r
54 USL_DrawPongScore(0,0);
\r
62 waittime = TimeCount;
\r
64 IN_ReadCursor(&cursorinfo);
\r
65 if (((cursorinfo.x < 0) || IN_KeyDown(sc_LeftArrow)) && (kx > PaddleMinX))
\r
67 else if (((cursorinfo.x > 0) || IN_KeyDown(sc_RightArrow)) && (kx < PaddleMaxX))
\r
73 balltime = TimeCount + TickBase;
\r
78 if (ball && (cycle++ % 3))
\r
82 x += (US_RndT() & 1);
\r
84 if ((cx + 6 < x) && (cx < PaddleMaxX))
\r
86 else if ((cx + 6 > x) && (cx > PaddleMinX))
\r
90 //++++VWB_Bar(BallMinX,BallMinY - 1,
\r
91 // BallMaxX - BallMinX + 5,BallMaxY - BallMinY + 7,
\r
93 //++++VWB_DrawSprite(cx,CPaddleY,PADDLESPR);
\r
94 //++++VWB_DrawSprite(kx,KPaddleY,PADDLESPR);
\r
99 (((bx + bdx) >> 2) > BallMaxX)
\r
100 || (((bx + bdx) >> 2) < BallMinX)
\r
103 //++++SD__PlaySound(BALLBOUNCESND);
\r
108 if (((by + bdy) >> 2) > BallMaxY)
\r
113 //++++SD__PlaySound(COMPSCOREDSND);
\r
114 USL_DrawPongScore(kscore,cscore);
\r
117 USL_CtlDialog("You lost!","Press any key",nil);
\r
122 else if (((by + bdy) >> 2) < BallMinY)
\r
127 //++++SD__PlaySound(KEENSCOREDSND);
\r
128 USL_DrawPongScore(kscore,cscore);
\r
131 USL_CtlDialog("You won!","Press any key",nil);
\r
145 && ((y >= CPaddleY) && (y < CPaddleY + 3))
\r
146 && ((x >= (cx - 5)) && (x < (cx + 11)))
\r
151 //++++SD__PlaySound(COMPPADDLESND);
\r
156 && ((y >= (KPaddleY - 3)) && (y < KPaddleY))
\r
157 && ((x >= (kx - 5)) && (x < (kx + 11)))
\r
160 if (((bdy >> 2) < 3) && !(--speedup))
\r
167 //++++SD__PlaySound(KEENPADDLESND);
\r
172 bdx = ((x + 5 - rx) >> 1) - (1 << 2);
\r
178 //++++VWB_DrawSprite(x,y,(x & 1)? BALL1PIXELTOTHERIGHTSPR : BALLSPR);
\r
180 else if (TimeCount >= balltime)
\r
183 bdx = 1 - (US_RndT() % 3);
\r
187 bx = (BallMinX + ((BallMaxX - BallMinX) / 2)) << 2;
\r
188 by = (BallMinY + ((BallMaxY - BallMinY) / 2)) << 2;
\r
190 //++++VW_UpdateScreen();
\r
191 while (waittime == TimeCount)
\r
192 ; // DEBUG - do adaptiveness
\r
193 } while ((inpu.LastScan != sc_Escape) && !done);
\r
194 IN_ClearKeysDown();
\r
199 USL_PongCustom(UserCall call,struct UserItem far *item)
\r
201 if (call != uic_SetupCard)
\r
204 //++++VWB_DrawPic(0,0,CP_MENUSCREENPIC);
\r
205 //++++VWB_DrawPic(CtlPanelSX + 56,CtlPanelSY,CP_PADDLEWARPIC);
\r
206 //++++VWB_Hlin(CtlPanelSX + 3,CtlPanelEX - 3,CtlPanelSY + 12,HiliteColor ^ BackColor);
\r
207 //++++VWB_Hlin(CtlPanelSX + 3,CtlPanelEX - 3,CtlPanelEY - 7,HiliteColor ^ BackColor);
\r