mirror of
https://git.code.sf.net/p/quake/game-source
synced 2024-11-22 20:11:49 +00:00
112 lines
2.1 KiB
C++
112 lines
2.1 KiB
C++
|
#include "common.qh"
|
||
|
|
||
|
#include "server.qh"
|
||
|
|
||
|
#include "damage.qh"
|
||
|
#include "bodyque.qh"
|
||
|
#include "weapon.qh"
|
||
|
#include "client.qh"
|
||
|
#include "sz_watch.qh"
|
||
|
|
||
|
#include "mdl_player.qh"
|
||
|
#include "mdl_eyes.qh"
|
||
|
|
||
|
#include "act_player.qh"
|
||
|
|
||
|
#include "delays.qh"
|
||
|
|
||
|
#define SV_FRAMES_BEFORE_SPAWN 3
|
||
|
|
||
|
void() main = {
|
||
|
local entity walk;
|
||
|
|
||
|
/* Must be first. */
|
||
|
max_clients = 0;
|
||
|
walk = world;
|
||
|
while (walk = nextent(walk)) max_clients++;
|
||
|
|
||
|
sv_spawning = SV_FRAMES_BEFORE_SPAWN;
|
||
|
|
||
|
damage_init();
|
||
|
bodyque_init();
|
||
|
weapon_init();
|
||
|
client_init();
|
||
|
SZ_init();
|
||
|
|
||
|
mdl_player_init();
|
||
|
mdl_eyes_init();
|
||
|
|
||
|
act_player_init();
|
||
|
};
|
||
|
|
||
|
float players_frame_started;
|
||
|
void() StartFrame = {
|
||
|
if (sv_spawning) {
|
||
|
sv_spawning = sv_spawning - 1;
|
||
|
if (!sv_spawning) {
|
||
|
if (!intermission_head)
|
||
|
intermission_head = spawn_head;
|
||
|
|
||
|
if (!spawn_head)
|
||
|
error("Unable to find a spawn point.\n");
|
||
|
}
|
||
|
}
|
||
|
|
||
|
SZ_frame();
|
||
|
|
||
|
rocket_jump = stof(infokey(world, "rj"));
|
||
|
if (rocket_jump <= 1) rocket_jump = 0;
|
||
|
|
||
|
sv_mintic = cvar("sv_mintic");
|
||
|
sv_maxtic = cvar("sv_maxtic");
|
||
|
|
||
|
sv_gravity = cvar("sv_gravity");
|
||
|
|
||
|
sv_stopspeed = cvar("sv_stopspeed");
|
||
|
sv_maxspeed = cvar("sv_maxspeed");
|
||
|
sv_spectatormaxspeed = cvar("sv_spectatormaxspeed");
|
||
|
|
||
|
sv_accelerate = cvar("sv_accelerate");
|
||
|
sv_airaccelerate = cvar("sv_airaccelerate");
|
||
|
sv_wateraccelerate = cvar("sv_wateraccelerate");
|
||
|
|
||
|
sv_friction = cvar("sv_friction");
|
||
|
sv_waterfriction = cvar("sv_waterfriction");
|
||
|
|
||
|
cl_rollangle = cvar("cl_rollangle");
|
||
|
cl_rollspeed = cvar("cl_rollspeed");
|
||
|
|
||
|
PlayerStartFrame();
|
||
|
players_frame_started = -1;
|
||
|
};
|
||
|
|
||
|
/* This is really called by QSG engines */
|
||
|
// void() EndFrame = { };
|
||
|
|
||
|
void() PlayerStartFrame = {
|
||
|
if (players_frame_started == -1) {
|
||
|
/* First player after StartFrame */
|
||
|
players_frame_started = TRUE;
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
if (players_frame_started)
|
||
|
return;
|
||
|
|
||
|
players_frame_started = TRUE;
|
||
|
|
||
|
delays_swapin_stats_all();
|
||
|
};
|
||
|
|
||
|
void() PlayerEndFrame = {
|
||
|
/* Unfortunately, a newmis can us damage this frame,
|
||
|
after our postthink has been called. Damn. */
|
||
|
/* We just force an update this frame for now. */
|
||
|
if (newmis) {
|
||
|
delays_force_update_all();
|
||
|
} else {
|
||
|
players_frame_started = FALSE;
|
||
|
delays_swapout_stats_all();
|
||
|
}
|
||
|
};
|