示例#1
0
static void
loop(void)
{
    struct interval *tp;
    u_int sltime;
    int logged;

    if (offset <= NOLOG_TIME) {
        logged = 1;
        nolog();
    }
    else
        logged = 0;
    tp = tlist;
    if (tp->timeleft < offset)
        (void)sleep((u_int)(offset - tp->timeleft));
    else {
        while (tp->timeleft && offset < tp->timeleft)
            ++tp;
        /*
         * Warn now, if going to sleep more than a fifth of
         * the next wait time.
         */
        if ((sltime = offset - tp->timeleft)) {
            if (sltime > (u_int)(tp->timetowait / 5))
                timewarn(offset);
            (void)sleep(sltime);
        }
    }
    for (;; ++tp) {
        timewarn(tp->timeleft);
        if (!logged && tp->timeleft <= NOLOG_TIME) {
            logged = 1;
            nolog();
        }
        (void)sleep((u_int)tp->timetowait);
        if (!tp->timeleft)
            break;
    }
    perform_shutdown();
}
示例#2
0
    }
    void log(const WCHAR_T *text)
    {
		if (NO_LOG)
			return;

        if (!enabled)
            return;

        wchar_t *sh = 0;

        nolog();
        ::convFromShortWchar(&sh, text, 0);
        nolog(false);

        std::wofstream out;
        out.open("c:/temp/ncr.txt", std::ios_base::app);
        if (first)
            out << L"----" << std::endl;

        out << text << std::endl;
        first = false;
static void enter_wait_mode(game_display& disp, const config& game_config, mp::chat& chat, config& gamelist, bool observe)
{
	mp::ui::result res;
	game_state state;
	network_game_manager m;
	upload_log nolog(false);

	gamelist.clear();
	statistics::fresh_stats();

	{
		mp::wait ui(disp, game_config, chat, gamelist);

		ui.join_game(observe);

		run_lobby_loop(disp, ui);
		res = ui.get_result();

		if (res == mp::ui::PLAY) {
			ui.start_game();
			// FIXME commented a pointeless if since the else does exactly the same thing
			//if (preferences::skip_mp_replay()){
				//FIXME implement true skip replay
				//state = ui.request_snapshot();
				//state = ui.get_state();
			//}
			//else{
				state = ui.get_state();
			//}
		}
	}

	switch (res) {
	case mp::ui::PLAY:
		play_game(disp, state, game_config, nolog, IO_CLIENT,
			preferences::skip_mp_replay() && observe);
		recorder.clear();

		break;
	case mp::ui::QUIT:
	default:
		break;
	}
}
static void enter_connect_mode(game_display& disp, const config& game_config,
		mp::chat& chat, config& gamelist, const mp_game_settings& params,
		const int num_turns, mp::controller default_controller, bool local_players_only = false)
{
	mp::ui::result res;
	game_state state;
	const network::manager net_manager(1,1);
	network_game_manager m;
	upload_log nolog(false);

	gamelist.clear();
	statistics::fresh_stats();

	{
		mp::connect ui(disp, game_config, chat, gamelist, params, num_turns, default_controller, local_players_only);
		run_lobby_loop(disp, ui);

		res = ui.get_result();

		// start_game() updates the parameters to reflect game start,
		// so it must be called before get_level()
		if (res == mp::ui::PLAY) {
			ui.start_game();
			state = ui.get_state();
		}
	}

	switch (res) {
	case mp::ui::PLAY:
		play_game(disp, state, game_config, nolog, IO_SERVER);
		recorder.clear();

		break;
	case mp::ui::CREATE:
		enter_create_mode(disp, game_config, chat, gamelist, default_controller, local_players_only);
		break;
	case mp::ui::QUIT:
	default:
		network::send_data(config("refresh_lobby"), 0, true);
		break;
	}
}