Ejemplo n.º 1
0
int main(int argc, char** argv)
{

	std::string nick = "david";
	std::string deck = "deck.xml";

	std::string utility_program;
	std::vector<std::string> util_args;

	bool is_host = false;
	bool is_joining = false;
	for(int n = 0; n != argc; ++n) {
		std::string arg(argv[n]);
		if(arg == "--host") {
			is_host = true;
			nick = "host";
		} else if(arg == "--join") {
			is_joining = true;
		} else if(arg == "--deck" && n+1 != argc) {
			++n;
			deck = argv[n];
		} else if(arg == "--utility" && n + 1 != argc) {
			++n;
			utility_program = argv[n];
			for(++n; n < argc; ++n) {
				const std::string arg(argv[n]);
				util_args.push_back(arg);
			}

			break;
		}
	}

	graphics::texture::manager texture_manager;

	if(utility_program.empty() == false) {
		test::run_utility(utility_program, util_args);
		return 0;
	}

	if(SDL_Init(SDL_INIT_VIDEO|SDL_INIT_JOYSTICK) < 0) {
		std::cerr << "could not init SDL\n";
		return -1;
	}

	if (SDL_SetVideoMode(preferences::actual_screen_width(),preferences::actual_screen_height(),0,SDL_OPENGL|(preferences::fullscreen() ? SDL_FULLSCREEN : 0)) == NULL) {
		std::cerr << "could not set video mode\n";
		return -1;
	}

	SDL_WM_SetCaption("Wizard", "Wizard");

	terrain::init(wml::parse_wml_from_file("data/terrain.xml"));
	font::manager font_manager;
	gui_section::init(wml::parse_wml_from_file("data/gui.xml"));
	framed_gui_element::init(wml::parse_wml_from_file("data/gui.xml"));
	movement_type::init(wml::parse_wml_from_file("data/move.xml"));

	glShadeModel(GL_SMOOTH);
	glEnable(GL_BLEND);
	glEnable(GL_TEXTURE_2D);
	glEnableClientState(GL_VERTEX_ARRAY);
	glEnableClientState(GL_TEXTURE_COORD_ARRAY);
	
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
#ifndef SDL_VIDEO_OPENGL_ES
	GLenum glew_status = glewInit();
	ASSERT_EQ(glew_status, GLEW_OK);
#endif

	network::manager network_manager;

	network::connect("localhost", "17000");

	network::send("<login name=\"" + nick +"\"></login>\n");

	if(is_joining) {
		network::send("<join_game/>\n");
	} else if(is_host) {
		network::send("<create_game/>\n");
		for(;;) {
			wml::const_node_ptr msg = network::receive();
			if(msg && msg->name() == "join_game") {
				break;
			}
			SDL_Delay(1000);
			std::cerr << "waiting...\n";
		}
		network::send("<setup/>\n");
	} else {
		network::send("<create_game bots=\"1\"/>\n");
		network::send("<setup/>\n");
	}

	network::send(sys::read_file(deck));

	client_play_game(nick).play();
}
Ejemplo n.º 2
0
// arg -- cm_ip cm_port
int main(int argc, char *argv[])
{
    int opt;
    int ret;

    char *menu[] =
    {
        "client -i ip -p port\n",
        NULL
    };

    if(argc < 5)
    {
        help(menu);
        return -1;
    }

    while((opt = getopt(argc, argv, "i:p:")) != -1)
    {
        switch(opt)
        {
        case 'i':
            client.cm_s_addr = inet_addr(optarg);
        case 'p':
            client.cm_port = atoi(optarg);
            break;
        case ':':
            printf("option needs a value\n");
            break;
        case '?':
            printf("unknown option: %c\n", optopt);
            break;

        }
    }

    init_log(NULL, NULL);

    log_msg(__FUNCTION__);

    init_err_msg();
    init_cmd_handler();

    ret = client_query_cs(client.cm_s_addr, client.cm_port);
    if(ret != 0)
    {
        log_msg("client_query_cs() failed");
        return -1;
    }

    ret = client_play_game(client.cs_s_addr, client.cs_port);
    if(ret != 0)
    {
        log_msg("client_play_game() failed");
        return -1;
    }

    log_msg("client --- finished");
    printf("client --- finished");

    return 0;
}