network_gui.c
changeset 105 44e894da0fef
parent 1 0ea1e0a5c4df
child 172 8d8b3383470d
equal deleted inserted replaced
104:ba246e85459f 105:44e894da0fef
    19 
    19 
    20 
    20 
    21 static byte _selected_field;
    21 static byte _selected_field;
    22 char *direct_ip = NULL;
    22 char *direct_ip = NULL;
    23 
    23 
    24 
       
    25 void ConnectToServer(byte* b)
       
    26 {
       
    27 	_networking = true;
       
    28 	
       
    29 	NetworkInitialize(b);
       
    30 	DEBUG(misc, 1) ("Connecting to %s %d\n", b, _network_port);
       
    31 	NetworkConnect(b, _network_port);
       
    32 }
       
    33 
       
    34 static const StringID _connection_types_dropdown[] = {
    24 static const StringID _connection_types_dropdown[] = {
    35 	STR_NETWORK_LAN,
    25 	STR_NETWORK_LAN,
    36 	STR_NETWORK_INTERNET,
    26 	STR_NETWORK_INTERNET,
    37 	INVALID_STRING_ID
    27 	INVALID_STRING_ID
    38 };
    28 };
    63 		switch(e->click.widget) {
    53 		switch(e->click.widget) {
    64 
    54 
    65 		case 0:  // close X
    55 		case 0:  // close X
    66 		case 15: // cancel button
    56 		case 15: // cancel button
    67 			DeleteWindowById(WC_NETWORK_WINDOW, 0);
    57 			DeleteWindowById(WC_NETWORK_WINDOW, 0);
    68 			break;
    58 			NetworkLobbyShutdown();
       
    59 			break;
       
    60 		case 3: // find server automaticaly
       
    61 			{
       
    62 			byte *b = "auto";
       
    63 			NetworkCoreConnectGame(b,_network_server_port);
       
    64 			}
       
    65 			break;
       
    66 
    69 		case 4: // connect via direct ip
    67 		case 4: // connect via direct ip
    70 			{
    68 			{
    71 				StringID str;
    69 				StringID str;
    72 				str = AllocateName((byte*)_decode_parameters, 0);
    70 				str = AllocateName((byte*)_decode_parameters, 0);
    73 				
    71 				
   109 
   107 
   110 	case WE_ON_EDIT_TEXT: {
   108 	case WE_ON_EDIT_TEXT: {
   111 		byte *b = e->edittext.str;
   109 		byte *b = e->edittext.str;
   112 		if (*b == 0)
   110 		if (*b == 0)
   113 			return;
   111 			return;
   114 		ConnectToServer(b);
   112 		NetworkCoreConnectGame(b,_network_server_port);
   115 	} break;
   113 	} break;
   116 
   114 
   117 	}
   115 	}
   118 }
   116 }
   119 
   117 
   157 
   155 
   158 void ShowNetworkGameWindow()
   156 void ShowNetworkGameWindow()
   159 {
   157 {
   160 	Window *w;
   158 	Window *w;
   161 	DeleteWindowById(WC_NETWORK_WINDOW, 0);
   159 	DeleteWindowById(WC_NETWORK_WINDOW, 0);
       
   160 
       
   161 	NetworkLobbyInit();
   162 	
   162 	
   163 	w = AllocateWindowDesc(&_network_game_window_desc);
   163 	w = AllocateWindowDesc(&_network_game_window_desc);
   164 	strcpy(_edit_str_buf, "Your name");
   164 	strcpy(_edit_str_buf, "Your name");
   165 
   165 
   166 	
   166 	
   167 	WP(w,querystr_d).caret = 1;
   167 	WP(w,querystr_d).caret = 1;
   168 	WP(w,querystr_d).maxlen = MAX_QUERYSTR_LEN;
   168 	WP(w,querystr_d).maxlen = MAX_QUERYSTR_LEN;
   169 	WP(w,querystr_d).maxwidth = 240;
   169 	WP(w,querystr_d).maxwidth = 240;
   170 	WP(w,querystr_d).buf = _edit_str_buf;
   170 	WP(w,querystr_d).buf = _edit_str_buf;
   171 	
   171 	// ShowErrorMessage(-1, TEMP_STRING_NO_NETWORK, 0, 0);
   172 	
   172 }
   173 	ShowErrorMessage(-1, TEMP_STRING_NO_NETWORK, 0, 0);
       
   174 }
       
   175 
       
   176 
       
   177 void StartServer()
       
   178 {
       
   179 	_networking = true;
       
   180 	NetworkInitialize(NULL);
       
   181 	DEBUG(misc, 1) ("Listening on port %d\n", _network_port);
       
   182 	NetworkListen(_network_port);
       
   183 	_networking_server = true;
       
   184 	DoCommandP(0, 0, 0, NULL, CMD_START_NEW_GAME);
       
   185 }
       
   186 
       
   187 
       
   188 
   173 
   189 static const StringID _players_dropdown[] = {
   174 static const StringID _players_dropdown[] = {
   190 	STR_NETWORK_2_PLAYERS,
   175 	STR_NETWORK_2_PLAYERS,
   191 	STR_NETWORK_3_PLAYERS,
   176 	STR_NETWORK_3_PLAYERS,
   192 	STR_NETWORK_4_PLAYERS,
   177 	STR_NETWORK_4_PLAYERS,
   230 			break;
   215 			break;
   231 		case 8:
   216 		case 8:
   232 			ShowDropDownMenu(w, _players_dropdown, _opt_mod_ptr->currency, e->click.widget, 0);
   217 			ShowDropDownMenu(w, _players_dropdown, _opt_mod_ptr->currency, e->click.widget, 0);
   233 			return;
   218 			return;
   234 		case 9: // start game
   219 		case 9: // start game
   235 			StartServer();
   220 			NetworkCoreStartGame();
   236 			ShowNetworkLobbyWindow();
   221 			ShowNetworkLobbyWindow();
       
   222 			DoCommandP(0, 0, 0, NULL, CMD_START_NEW_GAME);
   237 			break;
   223 			break;
   238 		}
   224 		}
   239 
   225 
   240 	case WE_MOUSELOOP:
   226 	case WE_MOUSELOOP:
   241 		if(_selected_field == 3)
   227 		if(_selected_field == 3)
   306 	WP(w,querystr_d).maxlen = MAX_QUERYSTR_LEN;
   292 	WP(w,querystr_d).maxlen = MAX_QUERYSTR_LEN;
   307 	WP(w,querystr_d).maxwidth = 240;
   293 	WP(w,querystr_d).maxwidth = 240;
   308 	WP(w,querystr_d).buf = _edit_str_buf;
   294 	WP(w,querystr_d).buf = _edit_str_buf;
   309 }
   295 }
   310 
   296 
   311 
       
   312 
       
   313 
       
   314 
       
   315 static void NetworkLobbyWindowWndProc(Window *w, WindowEvent *e)
   297 static void NetworkLobbyWindowWndProc(Window *w, WindowEvent *e)
   316 {
   298 {
   317 	switch(e->event) {
   299 	switch(e->event) {
   318 	case WE_PAINT: {
   300 	case WE_PAINT: {
   319 	
   301