Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
pong.qc File Reference
#include "pong.qh"
Include dependency graph for pong.qc:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Functions

vector box_nearest (vector box_min, vector box_max, vector p)
void pong_add_score (entity minigame, int team_thrower, int team_receiver, int delta)
entity pong_ai_spawn (entity minigame, entity paddle)
void pong_ai_think (entity this)
void pong_ball_reset (entity ball)
void pong_ball_think (entity this)
void pong_ball_throw (entity ball)
void pong_ball_throwthink (entity this)
bool pong_goal (entity minigame, entity ball, int pteam)
void pong_paddle_bounce (entity ball, int pteam)
bool pong_paddle_hit (entity minigame, entity ball, int pteam)
entity pong_paddle_spawn (entity minigame, int pl_team, entity real_player)
void pong_paddle_think (entity this)
int pong_server_event (entity minigame, string event,...)
vector pong_team_to_box_halfsize (int nteam, float length, float width)
vector pong_team_to_paddlepos (int nteam)
 REGISTER_MINIGAME (pong, _("Pong"))

Variables

float autocvar_sv_minigames_pong_ai_thinkspeed
float autocvar_sv_minigames_pong_ai_tolerance
float autocvar_sv_minigames_pong_ball_number
float autocvar_sv_minigames_pong_ball_radius
float autocvar_sv_minigames_pong_ball_speed
float autocvar_sv_minigames_pong_ball_wait
float autocvar_sv_minigames_pong_paddle_size
float autocvar_sv_minigames_pong_paddle_speed
entity pong_ai_paddle
const int PONG_KEY_BOTH = 0x03
const int PONG_KEY_DECREASE = 0x02
const int PONG_KEY_INCREASE = 0x01
int pong_keys
float pong_length
const int PONG_MAX_PLAYERS = 4
entity pong_paddles [PONG_MAX_PLAYERS]
int pong_score
const int PONG_SF_BALLTEAM = MINIG_SF_CUSTOM
const int PONG_SF_PLAYERSCORE = MINIG_SF_CUSTOM
const int PONG_SPECTATOR_TEAM = 255
const int PONG_STATUS_PLAY = 0x0020
const int PONG_STATUS_WAIT = 0x0010

Function Documentation

◆ box_nearest()

vector box_nearest ( vector box_min,
vector box_max,
vector p )

Definition at line 97 of file pong.qc.

98{
99 return vec2( p.x > box_max.x ? box_max.x : ( p.x < box_min.x ? box_min.x : p.x ),
100 p.y > box_max.y ? box_max.y : ( p.y < box_min.y ? box_min.y : p.y ) );
101}
#define vec2(...)
Definition vector.qh:95

References vec2, and vector.

Referenced by pong_paddle_hit().

◆ pong_add_score()

void pong_add_score ( entity minigame,
int team_thrower,
int team_receiver,
int delta )

Definition at line 77 of file pong.qc.

78{
79 if ( !minigame )
80 return;
81
82 if ( team_thrower == 0 )
83 team_thrower = team_receiver;
84
85 if ( team_thrower == team_receiver )
86 delta *= -1;
87
88 entity paddle_thrower = minigame.pong_paddles[team_thrower-1];
89 if ( paddle_thrower.realowner.minigame_players )
90 {
91 paddle_thrower.realowner.minigame_players.pong_score += delta;
92 paddle_thrower.realowner.minigame_players.SendFlags |= PONG_SF_PLAYERSCORE;
93 }
94}
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
const int PONG_SF_PLAYERSCORE
Definition pong.qc:10

References entity(), and PONG_SF_PLAYERSCORE.

Referenced by pong_goal().

◆ pong_ai_spawn()

entity pong_ai_spawn ( entity minigame,
entity paddle )

Definition at line 262 of file pong.qc.

263{
264 entity ai = msle_spawn(minigame,new(pong_ai));
265 ai.minigame_players = ai;
266 ai.team = paddle.team;
268 ai.nextthink = time;
269 ai.pong_ai_paddle = paddle;
270
271 paddle.realowner = ai;
272
273 return ai;
274}
float time
entity msle_spawn(entity minigame_session, entity e)
Definition minigames.qc:96
void pong_ai_think(entity this)
Definition pong.qc:212
#define setthink(e, f)

References entity(), msle_spawn(), pong_ai_think(), setthink, and time.

Referenced by pong_paddle_spawn(), and pong_server_event().

◆ pong_ai_think()

void pong_ai_think ( entity this)

Definition at line 212 of file pong.qc.

213{
215 this.nextthink = time + think_speed;
216
217 float distance;
218 float next_distance;
219 float min_distance = 1;
220 entity ball = NULL;
221 entity mayball = NULL;
222 while ( ( mayball = findfloat(mayball,minigame_id,this.minigame_id) ) )
223 if ( mayball.classname == "pong_ball" )
224 {
225 distance = vlen(mayball.origin-this.pong_ai_paddle.origin);
226 next_distance = vlen(mayball.origin+mayball.velocity-this.pong_ai_paddle.origin);
227 if ( distance < min_distance && ( distance < 0.5 || next_distance < distance ) )
228 {
229 min_distance = distance;
230 ball = mayball;
231 }
232 }
233
234 float target = 0.5;
235 float my_pos;
236
237
238 if ( this.team <= 2 )
239 {
240 if ( ball )
241 target = ball.origin_y + ball.velocity_y*think_speed;
242 my_pos = this.pong_ai_paddle.origin_y;
243 }
244 else
245 {
246 if ( ball )
247 target = ball.origin_x + ball.velocity_x*think_speed;
248 my_pos = this.pong_ai_paddle.origin_x;
249 }
250
253
254 if (target < my_pos - distance)
256 else if (target > my_pos + distance)
258 else
259 this.pong_keys = 0;
260}
int team
Definition main.qh:188
float nextthink
float vlen(vector v)
entity findfloat(entity start,.float field, float match)
int minigame_id
Unique ID for the minigame session, associated with all objects currently the result of etof(minigame...
Definition minigames.qh:49
float autocvar_sv_minigames_pong_paddle_speed
Definition pong.qc:31
int pong_keys
Definition pong.qc:23
const int PONG_KEY_INCREASE
Definition pong.qc:15
entity pong_ai_paddle
Definition pong.qc:26
float autocvar_sv_minigames_pong_ai_thinkspeed
Definition pong.qc:38
const int PONG_KEY_DECREASE
Definition pong.qc:16
float autocvar_sv_minigames_pong_ai_tolerance
Definition pong.qc:39
float pong_length
Definition pong.qc:25
#define NULL
Definition post.qh:14
string target
Definition triggers.qh:55

References autocvar_sv_minigames_pong_ai_thinkspeed, autocvar_sv_minigames_pong_ai_tolerance, autocvar_sv_minigames_pong_paddle_speed, entity(), findfloat(), minigame_id, nextthink, NULL, pong_ai_paddle, PONG_KEY_DECREASE, PONG_KEY_INCREASE, pong_keys, pong_length, target, team, time, and vlen().

Referenced by pong_ai_spawn().

◆ pong_ball_reset()

void pong_ball_reset ( entity ball)

Definition at line 65 of file pong.qc.

66{
67 ball.velocity = '0 0 0';
68 ball.origin = '0.5 0.5 0';
70 ball.team = 0;
71 ball.SendFlags |= MINIG_SF_UPDATE|PONG_SF_BALLTEAM;
74}
const int MINIG_SF_UPDATE
Definition minigames.qh:113
const int PONG_SF_BALLTEAM
Definition pong.qc:12
float autocvar_sv_minigames_pong_ball_wait
Definition pong.qc:33
void pong_ball_throwthink(entity this)
Definition pong.qc:59
void SUB_NullThink(entity this)
Definition subs.qc:3

References autocvar_sv_minigames_pong_ball_wait, entity(), MINIG_SF_UPDATE, pong_ball_throwthink(), PONG_SF_BALLTEAM, setthink, SUB_NullThink(), and time.

Referenced by pong_goal(), and pong_server_event().

◆ pong_ball_think()

void pong_ball_think ( entity this)

Definition at line 155 of file pong.qc.

156{
157 entity minigame = this.owner;
158 float think_speed = autocvar_sys_ticrate;
159 this.nextthink = time + think_speed;
160
161 this.origin_x += this.velocity_x * think_speed;
162 this.origin_y += this.velocity_y * think_speed;
164
165 int i;
166 for ( i = 1; i <= PONG_MAX_PLAYERS; ++i )
167 if ( pong_paddle_hit(minigame, this, i) )
168 {
169 pong_paddle_bounce(this,i);
170 this.team = i;
172 return;
173 }
174
175 if ( this.origin_y <= this.pong_length )
176 {
177 if ( !pong_goal(minigame,this,3) )
178 {
179 this.origin_y = this.pong_length;
180 this.velocity_y *= -1;
181 }
182 }
183 else if ( this.origin_y >= 1-this.pong_length )
184 {
185 if ( !pong_goal(minigame,this,4) )
186 {
187 this.origin_y = 1-this.pong_length;
188 this.velocity_y *= -1;
189 }
190 }
191
192 if ( this.origin_x <= this.pong_length )
193 {
194 if ( !pong_goal(minigame,this,2) )
195 {
196 this.origin_x = this.pong_length;
197 this.velocity_x *= -1;
198 }
199 }
200 else if ( this.origin_x >= 1-this.pong_length )
201 {
202 if ( !pong_goal(minigame,this,1) )
203 {
204 this.origin_x = 1-this.pong_length;
205 this.velocity_x *= -1;
206 }
207 }
208
209}
entity owner
Definition main.qh:87
int SendFlags
Definition net.qh:159
const int PONG_MAX_PLAYERS
Definition pong.qc:20
bool pong_goal(entity minigame, entity ball, int pteam)
Definition pong.qc:138
bool pong_paddle_hit(entity minigame, entity ball, int pteam)
Definition pong.qc:122
void pong_paddle_bounce(entity ball, int pteam)
Definition pong.qc:103
float autocvar_sys_ticrate
Definition main.qh:17

References autocvar_sys_ticrate, entity(), MINIG_SF_UPDATE, nextthink, owner, pong_goal(), pong_length, PONG_MAX_PLAYERS, pong_paddle_bounce(), pong_paddle_hit(), PONG_SF_BALLTEAM, SendFlags, team, and time.

Referenced by pong_ball_throw().

◆ pong_ball_throw()

void pong_ball_throw ( entity ball)

Definition at line 44 of file pong.qc.

45{
46 float angle;
47 do
48 angle = random() * (2 * M_PI);
49 while ( fabs(sin(angle)) < 0.17 || fabs(cos(angle)) < 0.17 );
53 ball.nextthink = time;
54 ball.team = 0;
55 ball.SendFlags |= MINIG_SF_UPDATE|PONG_SF_BALLTEAM;
56}
float angle
Definition viewloc.qc:114
#define M_PI
pi
Definition mathlib.qh:114
float cos(float f)
float random(void)
float sin(float f)
float fabs(float f)
void pong_ball_think(entity this)
Definition pong.qc:155
float autocvar_sv_minigames_pong_ball_speed
Definition pong.qc:34

References angle, autocvar_sv_minigames_pong_ball_speed, cos(), entity(), fabs(), M_PI, MINIG_SF_UPDATE, pong_ball_think(), PONG_SF_BALLTEAM, random(), setthink, sin(), and time.

Referenced by pong_ball_throwthink().

◆ pong_ball_throwthink()

void pong_ball_throwthink ( entity this)

Definition at line 59 of file pong.qc.

60{
61 pong_ball_throw(this);
62}
void pong_ball_throw(entity ball)
Definition pong.qc:44

References entity(), and pong_ball_throw().

Referenced by pong_ball_reset().

◆ pong_goal()

bool pong_goal ( entity minigame,
entity ball,
int pteam )

Definition at line 138 of file pong.qc.

139{
140 entity paddle = minigame.pong_paddles[pteam-1];
141 if (!paddle)
142 return false;
143
144 if ( !pong_paddle_hit(minigame, ball, pteam) )
145 {
146 pong_add_score(minigame,ball.team, pteam, 1);
147 pong_ball_reset(ball);
148 return true;
149 }
150
151 return false;
152}
void pong_add_score(entity minigame, int team_thrower, int team_receiver, int delta)
Definition pong.qc:77
void pong_ball_reset(entity ball)
Definition pong.qc:65

References entity(), pong_add_score(), pong_ball_reset(), and pong_paddle_hit().

Referenced by pong_ball_think().

◆ pong_paddle_bounce()

void pong_paddle_bounce ( entity ball,
int pteam )

Definition at line 103 of file pong.qc.

104{
105 switch(pteam)
106 {
107 case 1: ball.velocity_x = -fabs(ball.velocity_x); break;
108 case 2: ball.velocity_x = fabs(ball.velocity_x); break;
109 case 3: ball.velocity_y = fabs(ball.velocity_y); break;
110 case 4: ball.velocity_y = -fabs(ball.velocity_y); break;
111 }
112
113 float angle = atan2(ball.velocity_y, ball.velocity_x);
114 angle += ( random() - 0.5 ) * 2 * M_PI/6;
115 float speed = vlen(ball.velocity);
116
117 ball.velocity_y = speed * sin(angle);
118 ball.velocity_x = speed * cos(angle);
119}
float speed
Definition dynlight.qc:9

References angle, cos(), entity(), fabs(), M_PI, random(), sin(), speed, and vlen().

Referenced by pong_ball_think().

◆ pong_paddle_hit()

bool pong_paddle_hit ( entity minigame,
entity ball,
int pteam )

Definition at line 122 of file pong.qc.

123{
124 entity paddle = minigame.pong_paddles[pteam-1];
125 if (!paddle)
126 return false;
127
128#if 1
129 vector near_point = box_nearest(paddle.m_mins+paddle.origin,
130 paddle.m_maxs+paddle.origin, ball.origin);
131 return vdist(near_point - ball.origin, <=, ball.pong_length);
132#else
133 return boxesoverlap(paddle.m_mins + paddle.origin, paddle.m_maxs + paddle.origin, ball.m_mins + ball.origin, ball.m_maxs + ball.origin);
134#endif
135}
vector box_nearest(vector box_min, vector box_max, vector p)
Definition pong.qc:97
vector
Definition self.qh:96
#define vdist(v, cmp, f)
Vector distance comparison, avoids sqrt().
Definition vector.qh:8
ERASEABLE float boxesoverlap(vector m1, vector m2, vector m3, vector m4)
Requires that m2>m1 in all coordinates, and that m4>m3.
Definition vector.qh:72

References box_nearest(), boxesoverlap(), entity(), vdist, and vector.

Referenced by pong_ball_think(), and pong_goal().

◆ pong_paddle_spawn()

entity pong_paddle_spawn ( entity minigame,
int pl_team,
entity real_player )

Definition at line 321 of file pong.qc.

322{
323 entity paddle = msle_spawn(minigame,new(pong_paddle));
324 paddle.pong_length = autocvar_sv_minigames_pong_paddle_size;
325 paddle.origin = pong_team_to_paddlepos(pl_team);
327 paddle.nextthink = time;
328 paddle.team = pl_team;
329 paddle.m_mins = pong_team_to_box_halfsize(pl_team,-paddle.pong_length,-1/16);
330 paddle.m_maxs = pong_team_to_box_halfsize(pl_team,paddle.pong_length,1/16);
331
332 if ( real_player == NULL )
333 pong_ai_spawn(minigame, paddle);
334 else
335 paddle.realowner = real_player;
336
337 minigame.pong_paddles[pl_team-1] = paddle;
338
339 return paddle;
340
341}
vector pong_team_to_paddlepos(int nteam)
Definition pong.qc:307
float autocvar_sv_minigames_pong_paddle_size
Definition pong.qc:30
void pong_paddle_think(entity this)
Definition pong.qc:277
entity pong_ai_spawn(entity minigame, entity paddle)
Definition pong.qc:262
vector pong_team_to_box_halfsize(int nteam, float length, float width)
Definition pong.qc:300

References autocvar_sv_minigames_pong_paddle_size, entity(), msle_spawn(), NULL, pong_ai_spawn(), pong_paddle_think(), pong_team_to_box_halfsize(), pong_team_to_paddlepos(), setthink, and time.

Referenced by pong_server_event().

◆ pong_paddle_think()

void pong_paddle_think ( entity this)

Definition at line 277 of file pong.qc.

278{
279 float think_speed = autocvar_sys_ticrate;
280 this.nextthink = time + think_speed;
281
282 if ( this.realowner.minigame_players.pong_keys == PONG_KEY_INCREASE ||
283 this.realowner.minigame_players.pong_keys == PONG_KEY_DECREASE )
284 {
285 float pmovement = autocvar_sv_minigames_pong_paddle_speed * think_speed;
286 float halflen = this.pong_length/2;
287
288 if ( this.realowner.minigame_players.pong_keys == PONG_KEY_DECREASE )
289 pmovement *= -1;
290
291 if ( this.team > 2 )
292 this.origin_x = bound(halflen, this.origin_x+pmovement, 1-halflen);
293 else
294 this.origin_y = bound(halflen, this.origin_y+pmovement, 1-halflen);
295
297 }
298}
float bound(float min, float value, float max)
entity realowner

References autocvar_sv_minigames_pong_paddle_speed, autocvar_sys_ticrate, bound(), entity(), MINIG_SF_UPDATE, nextthink, PONG_KEY_DECREASE, PONG_KEY_INCREASE, pong_length, realowner, SendFlags, team, and time.

Referenced by pong_paddle_spawn().

◆ pong_server_event()

int pong_server_event ( entity minigame,
string event,
... )

Definition at line 344 of file pong.qc.

345{
346 switch (event)
347 {
348 case "start":
349 {
350 minigame.minigame_flags |= PONG_STATUS_WAIT;
351 return true;
352 }
353 case "join":
354 {
355 // Don't allow joining a match that is already running
356 if ( minigame.minigame_flags & PONG_STATUS_PLAY )
357 return PONG_SPECTATOR_TEAM;
358
359 entity player = ...(0,entity);
360 int i;
361 for ( i = 0; i < PONG_MAX_PLAYERS; ++i )
362 {
363 if ( minigame.pong_paddles[i] == NULL )
364 {
365 pong_paddle_spawn(minigame,i+1,player);
366 return i+1;
367 }
368 }
369
370 return PONG_SPECTATOR_TEAM;
371 }
372 case "part":
373 {
374 entity player = ...(0,entity);
375 entity paddle;
376 entity ai;
377 int i;
378 for ( i = 0; i < PONG_MAX_PLAYERS; ++i )
379 {
380 paddle = minigame.pong_paddles[i];
381 if ( paddle != NULL && paddle.realowner == player )
382 {
383 ai = pong_ai_spawn(minigame, paddle);
384 ai.pong_score = player.minigame_players.pong_score;
385 break;
386 }
387
388 }
389 return false;
390 }
391 case "cmd":
392 {
393 entity player = ...(0,entity);
394 bool event_blocked = (player.team == PONG_SPECTATOR_TEAM);
395 switch(argv(0))
396 {
397 case "throw":
398 if(event_blocked)
399 return true;
400 if ( minigame.minigame_flags & PONG_STATUS_WAIT )
401 {
402 minigame.minigame_flags = PONG_STATUS_PLAY |
403 (minigame.minigame_flags & ~PONG_STATUS_WAIT);
404 minigame.SendFlags |= MINIG_SF_UPDATE;
405
406 entity ball;
407 for ( int j = 0; j < autocvar_sv_minigames_pong_ball_number; ++j )
408 {
409 ball = msle_spawn(minigame,new(pong_ball));
411 ball.m_mins = vec2(-ball.pong_length, -ball.pong_length);
412 ball.m_maxs = vec2(ball.pong_length, ball.pong_length);
413 pong_ball_reset(ball);
414 }
415 }
416 return true;
417 case "+movei":
418 if(event_blocked)
419 return true;
420 player.pong_keys |= PONG_KEY_INCREASE;
421 return true;
422 case "+moved":
423 if(event_blocked)
424 return true;
425 player.pong_keys |= PONG_KEY_DECREASE;
426 return true;
427 case "-movei":
428 if(event_blocked)
429 return true;
430 player.pong_keys &= ~PONG_KEY_INCREASE;
431 return true;
432 case "-moved":
433 if(event_blocked)
434 return true;
435 player.pong_keys &= ~PONG_KEY_DECREASE;
436 return true;
437 case "move":
438 if(event_blocked)
439 return true;
440 if(argv(1))
441 player.pong_keys = stoi(argv(1));
442 return true;
443 case "pong_aimore":
444 {
445 if(event_blocked)
446 return true;
447 // keep declaration here, moving it into for() reverses weapon order
448 // potentially compiler bug
449 int j;
450 if ( minigame.minigame_flags & PONG_STATUS_WAIT )
451 for ( j = 0; j < PONG_MAX_PLAYERS; ++j )
452 //for ( int j = 0; j < PONG_MAX_PLAYERS; ++j )
453 {
454 if ( minigame.pong_paddles[j] == NULL )
455 {
456 pong_paddle_spawn(minigame,j+1,NULL);
457 return true;
458 }
459 }
460 sprint(player.minigame_players,"Cannot spawn AI\n");
461 return true;
462 }
463 case "pong_ailess":
464 {
465 if(event_blocked)
466 return true;
467 if ( minigame.minigame_flags & PONG_STATUS_WAIT )
468 {
469 entity paddle;
470 for ( int j = PONG_MAX_PLAYERS-1; j >= 0; --j )
471 {
472 paddle = minigame.pong_paddles[j];
473 if ( paddle != NULL &&
474 paddle.realowner.classname == "pong_ai" )
475 {
476 minigame.pong_paddles[j] = NULL;
477 delete(paddle.realowner);
478 delete(paddle);
479 return true;
480 }
481 }
482 }
483 sprint(player.minigame_players,"Cannot remove AI\n");
484 return true;
485 }
486
487 }
488 return false;
489 }
490 case "network_send":
491 {
492 entity sent = ...(0,entity);
493 int sf = ...(1,int);
494 if ( sent.classname == "minigame_player" && (sf & PONG_SF_PLAYERSCORE ) )
495 {
496 WriteLong(MSG_ENTITY,sent.pong_score);
497 }
498 return false;
499 }
500 }
501 return false;
502}
#define stoi(s)
Definition int.qh:4
#define int
Definition _all.inc:20
const int MSG_ENTITY
Definition net.qh:156
void WriteLong(float data, float dest, float desto)
void sprint(float clientnum, string text,...)
string argv(float n)
float autocvar_sv_minigames_pong_ball_number
Definition pong.qc:36
float autocvar_sv_minigames_pong_ball_radius
Definition pong.qc:35
const int PONG_STATUS_PLAY
Definition pong.qc:6
entity pong_paddle_spawn(entity minigame, int pl_team, entity real_player)
Definition pong.qc:321
const int PONG_SPECTATOR_TEAM
Definition pong.qc:21
const int PONG_STATUS_WAIT
Definition pong.qc:5

References argv(), autocvar_sv_minigames_pong_ball_number, autocvar_sv_minigames_pong_ball_radius, entity(), int, MINIG_SF_UPDATE, MSG_ENTITY, msle_spawn(), NULL, pong_ai_spawn(), pong_ball_reset(), PONG_KEY_DECREASE, PONG_KEY_INCREASE, PONG_MAX_PLAYERS, pong_paddle_spawn(), PONG_SF_PLAYERSCORE, PONG_SPECTATOR_TEAM, PONG_STATUS_PLAY, PONG_STATUS_WAIT, sprint(), stoi, vec2, and WriteLong().

◆ pong_team_to_box_halfsize()

vector pong_team_to_box_halfsize ( int nteam,
float length,
float width )

Definition at line 300 of file pong.qc.

301{
302 if ( nteam > 2 )
303 return vec2(length/2, width/2);
304 return vec2(width/2, length/2);
305}

References vec2, and vector.

Referenced by pong_paddle_spawn().

◆ pong_team_to_paddlepos()

vector pong_team_to_paddlepos ( int nteam)

Definition at line 307 of file pong.qc.

308{
309 switch(nteam)
310 {
311 case 1: return '0.99 0.5 0';
312 case 2: return '0.01 0.5 0';
313 case 3: return '0.5 0.01 0';
314 case 4: return '0.5 0.99 0';
315 default:return '0 0 0';
316 }
317}

References vector.

Referenced by pong_paddle_spawn().

◆ REGISTER_MINIGAME()

REGISTER_MINIGAME ( pong ,
_("Pong")  )

Variable Documentation

◆ autocvar_sv_minigames_pong_ai_thinkspeed

float autocvar_sv_minigames_pong_ai_thinkspeed

Definition at line 38 of file pong.qc.

Referenced by pong_ai_think().

◆ autocvar_sv_minigames_pong_ai_tolerance

float autocvar_sv_minigames_pong_ai_tolerance

Definition at line 39 of file pong.qc.

Referenced by pong_ai_think().

◆ autocvar_sv_minigames_pong_ball_number

float autocvar_sv_minigames_pong_ball_number

Definition at line 36 of file pong.qc.

Referenced by pong_server_event().

◆ autocvar_sv_minigames_pong_ball_radius

float autocvar_sv_minigames_pong_ball_radius

Definition at line 35 of file pong.qc.

Referenced by pong_server_event().

◆ autocvar_sv_minigames_pong_ball_speed

float autocvar_sv_minigames_pong_ball_speed

Definition at line 34 of file pong.qc.

Referenced by pong_ball_throw().

◆ autocvar_sv_minigames_pong_ball_wait

float autocvar_sv_minigames_pong_ball_wait

Definition at line 33 of file pong.qc.

Referenced by pong_ball_reset().

◆ autocvar_sv_minigames_pong_paddle_size

float autocvar_sv_minigames_pong_paddle_size

Definition at line 30 of file pong.qc.

Referenced by pong_paddle_spawn().

◆ autocvar_sv_minigames_pong_paddle_speed

float autocvar_sv_minigames_pong_paddle_speed

Definition at line 31 of file pong.qc.

Referenced by pong_ai_think(), and pong_paddle_think().

◆ pong_ai_paddle

entity pong_ai_paddle

Definition at line 26 of file pong.qc.

Referenced by pong_ai_think().

◆ PONG_KEY_BOTH

const int PONG_KEY_BOTH = 0x03

Definition at line 17 of file pong.qc.

◆ PONG_KEY_DECREASE

const int PONG_KEY_DECREASE = 0x02

Definition at line 16 of file pong.qc.

Referenced by pong_ai_think(), pong_paddle_think(), and pong_server_event().

◆ PONG_KEY_INCREASE

const int PONG_KEY_INCREASE = 0x01

Definition at line 15 of file pong.qc.

Referenced by pong_ai_think(), pong_paddle_think(), and pong_server_event().

◆ pong_keys

int pong_keys

Definition at line 23 of file pong.qc.

Referenced by pong_ai_think().

◆ pong_length

float pong_length

Definition at line 25 of file pong.qc.

Referenced by pong_ai_think(), pong_ball_think(), and pong_paddle_think().

◆ PONG_MAX_PLAYERS

const int PONG_MAX_PLAYERS = 4

Definition at line 20 of file pong.qc.

Referenced by pong_ball_think(), and pong_server_event().

◆ pong_paddles

entity pong_paddles[PONG_MAX_PLAYERS]

Definition at line 24 of file pong.qc.

◆ pong_score

int pong_score

Definition at line 22 of file pong.qc.

◆ PONG_SF_BALLTEAM

const int PONG_SF_BALLTEAM = MINIG_SF_CUSTOM

Definition at line 12 of file pong.qc.

Referenced by pong_ball_reset(), pong_ball_think(), and pong_ball_throw().

◆ PONG_SF_PLAYERSCORE

const int PONG_SF_PLAYERSCORE = MINIG_SF_CUSTOM

Definition at line 10 of file pong.qc.

Referenced by pong_add_score(), and pong_server_event().

◆ PONG_SPECTATOR_TEAM

const int PONG_SPECTATOR_TEAM = 255

Definition at line 21 of file pong.qc.

Referenced by pong_server_event().

◆ PONG_STATUS_PLAY

const int PONG_STATUS_PLAY = 0x0020

Definition at line 6 of file pong.qc.

Referenced by pong_server_event().

◆ PONG_STATUS_WAIT

const int PONG_STATUS_WAIT = 0x0010

Definition at line 5 of file pong.qc.

Referenced by pong_server_event().