Exemplo n.º 1
0
//
// D_DoomLoop
//
void D_DoomLoop (void)
{
	while (1)
	{
		try
		{
			SV_RunTics (); // will run at least one tic
		}
		catch (CRecoverableError &error)
		{
			Printf (PRINT_HIGH, "ERROR: %s\n", error.GetMessage().c_str());
			Printf (PRINT_HIGH, "sleeping for 10 seconds before map reload...");

			// denis - drop clients
			SV_SendDisconnectSignal();

			// denis - sleep to conserve server resources (in case of recurring problem)
			I_WaitForTic(I_GetTime() + 1000*10/TICRATE);

			// denis - reload with current settings
			G_ChangeMap ();

			// denis - todo - throw I_FatalError if this keeps happening
		}
	}
}
Exemplo n.º 2
0
void TryRunTics (void)
{
	// get real tics
	static QWORD oldentertics = 0;

	QWORD entertic = I_WaitForTic (oldentertics);
	QWORD realtics = entertic - oldentertics;
	oldentertics = entertic;

	std::string cmd = I_ConsoleInput();
	if (cmd.length())
	{
		AddCommandString (cmd.c_str());
	}
	
	// run the realtics tics
	if(!stepmode)
		TryStepTics(realtics);
	else
	{
		NetUpdate();

		if(nextstep)
		{
			canceltics = 0;
			TryStepTics(nextstep);
			nextstep = 0;

			// debugging output
			extern unsigned char prndindex;
			if(players.size() && players[0].mo)
				Printf(PRINT_HIGH, "level.time %d, prndindex %d, %d %d %d\n", level.time, prndindex, players[0].mo->x, players[0].mo->y, players[0].mo->z);
			else
 				Printf(PRINT_HIGH, "level.time %d, prndindex %d\n", level.time, prndindex);
		}
	}
}
Exemplo n.º 3
0
int I_WaitForTicSelect (int prevtic)
{
	I_SelectTimer();
	return I_WaitForTic (prevtic);
}