changeset 5339 | 96ac3f4933bb |
parent 5247 | 1f982de55b88 |
child 5343 | fb6c70256464 |
5338:a78592405640 | 5339:96ac3f4933bb |
---|---|
24 #include "network_server.h" |
24 #include "network_server.h" |
25 #include "network_udp.h" |
25 #include "network_udp.h" |
26 #include "settings.h" |
26 #include "settings.h" |
27 #include "string.h" |
27 #include "string.h" |
28 #include "town.h" |
28 #include "town.h" |
29 #include "newgrf.h" |
|
29 |
30 |
30 #define BGC 5 |
31 #define BGC 5 |
31 #define BTC 15 |
32 #define BTC 15 |
32 |
33 |
33 typedef struct network_d { |
34 typedef struct network_d { |
239 SetWindowWidgetDisabledState(w, 16, sel == NULL || // no Selected Server |
240 SetWindowWidgetDisabledState(w, 16, sel == NULL || // no Selected Server |
240 !sel->online || // Server offline |
241 !sel->online || // Server offline |
241 sel->info.clients_on >= sel->info.clients_max || // Server full |
242 sel->info.clients_on >= sel->info.clients_max || // Server full |
242 !sel->info.compatible); // Revision mismatch |
243 !sel->info.compatible); // Revision mismatch |
243 |
244 |
245 SetWindowWidgetHiddenState(w, 18, sel == NULL || |
|
246 !sel->online || |
|
247 sel->info.grfconfig == NULL); |
|
248 |
|
244 SetDParam(0, 0x00); |
249 SetDParam(0, 0x00); |
245 SetDParam(7, _lan_internet_types_dropdown[_network_lan_internet]); |
250 SetDParam(7, _lan_internet_types_dropdown[_network_lan_internet]); |
246 DrawWindowWidgets(w); |
251 DrawWindowWidgets(w); |
247 |
252 |
248 DrawEditBox(w, &WP(w, network_ql_d).q, 3); |
253 DrawEditBox(w, &WP(w, network_ql_d).q, 3); |
286 if (cur_item->online) { |
291 if (cur_item->online) { |
287 // draw a lock if the server is password protected. |
292 // draw a lock if the server is password protected. |
288 if (cur_item->info.use_password) DrawSprite(SPR_LOCK, w->widget[8].left + 5, y - 1); |
293 if (cur_item->info.use_password) DrawSprite(SPR_LOCK, w->widget[8].left + 5, y - 1); |
289 |
294 |
290 // draw red or green icon, depending on compatibility with server. |
295 // draw red or green icon, depending on compatibility with server. |
291 DrawSprite(SPR_BLOT | (cur_item->info.compatible ? PALETTE_TO_GREEN : PALETTE_TO_RED), w->widget[8].left + 15, y); |
296 DrawSprite(SPR_BLOT | (cur_item->info.compatible ? PALETTE_TO_GREEN : (cur_item->info.version_compatible ? PALETTE_TO_YELLOW : PALETTE_TO_RED)), w->widget[8].left + 15, y); |
292 |
297 |
293 // draw flag according to server language |
298 // draw flag according to server language |
294 DrawSprite(SPR_FLAGS_BASE + cur_item->info.server_lang, w->widget[8].left + 25, y); |
299 DrawSprite(SPR_FLAGS_BASE + cur_item->info.server_lang, w->widget[8].left + 25, y); |
295 } |
300 } |
296 |
301 |
360 y += 10; |
365 y += 10; |
361 |
366 |
362 y += 2; |
367 y += 2; |
363 |
368 |
364 if (!sel->info.compatible) { |
369 if (!sel->info.compatible) { |
365 DrawStringCentered(425, y, STR_NETWORK_VERSION_MISMATCH, 0); // server mismatch |
370 DrawStringCentered(425, y, sel->info.version_compatible ? STR_NETWORK_GRF_MISMATCH : STR_NETWORK_VERSION_MISMATCH, 0); // server mismatch |
366 } else if (sel->info.clients_on == sel->info.clients_max) { |
371 } else if (sel->info.clients_on == sel->info.clients_max) { |
367 // Show: server full, when clients_on == clients_max |
372 // Show: server full, when clients_on == clients_max |
368 DrawStringCentered(425, y, STR_NETWORK_SERVER_FULL, 0); // server full |
373 DrawStringCentered(425, y, STR_NETWORK_SERVER_FULL, 0); // server full |
369 } else if (sel->info.use_password) { |
374 } else if (sel->info.use_password) { |
370 DrawStringCentered(425, y, STR_NETWORK_PASSWORD, 0); // password warning |
375 DrawStringCentered(425, y, STR_NETWORK_PASSWORD, 0); // password warning |
434 break; |
439 break; |
435 case 17: // Refresh |
440 case 17: // Refresh |
436 if (nd->server != NULL) |
441 if (nd->server != NULL) |
437 NetworkQueryServer(nd->server->info.hostname, nd->server->port, true); |
442 NetworkQueryServer(nd->server->info.hostname, nd->server->port, true); |
438 break; |
443 break; |
444 case 18: // NewGRF Settings |
|
445 if (nd->server != NULL) ShowNewGRFSettings(false, false, &nd->server->info.grfconfig); |
|
446 break; |
|
439 |
447 |
440 } break; |
448 } break; |
441 |
449 |
442 case WE_DROPDOWN_SELECT: /* we have selected a dropdown item in the list */ |
450 case WE_DROPDOWN_SELECT: /* we have selected a dropdown item in the list */ |
443 switch (e->we.dropdown.button) { |
451 switch (e->we.dropdown.button) { |
494 } |
502 } |
495 |
503 |
496 static const Widget _network_game_window_widgets[] = { |
504 static const Widget _network_game_window_widgets[] = { |
497 { WWT_CLOSEBOX, RESIZE_NONE, BGC, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
505 { WWT_CLOSEBOX, RESIZE_NONE, BGC, 0, 10, 0, 13, STR_00C5, STR_018B_CLOSE_WINDOW}, |
498 { WWT_CAPTION, RESIZE_NONE, BGC, 11, 549, 0, 13, STR_NETWORK_MULTIPLAYER, STR_NULL}, |
506 { WWT_CAPTION, RESIZE_NONE, BGC, 11, 549, 0, 13, STR_NETWORK_MULTIPLAYER, STR_NULL}, |
499 { WWT_PANEL, RESIZE_NONE, BGC, 0, 549, 14, 249, 0x0, STR_NULL}, |
507 { WWT_PANEL, RESIZE_NONE, BGC, 0, 549, 14, 261, 0x0, STR_NULL}, |
500 |
508 |
501 /* LEFT SIDE */ |
509 /* LEFT SIDE */ |
502 { WWT_PANEL, RESIZE_NONE, BGC, 310, 461, 22, 33, 0x0, STR_NETWORK_ENTER_NAME_TIP}, |
510 { WWT_PANEL, RESIZE_NONE, BGC, 310, 461, 22, 33, 0x0, STR_NETWORK_ENTER_NAME_TIP}, |
503 |
511 |
504 { WWT_INSET, RESIZE_NONE, BGC, 90, 181, 22, 33, STR_NETWORK_COMBO1, STR_NETWORK_CONNECTION_TIP}, |
512 { WWT_INSET, RESIZE_NONE, BGC, 90, 181, 22, 33, STR_NETWORK_COMBO1, STR_NETWORK_CONNECTION_TIP}, |
506 |
514 |
507 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 10, 170, 42, 53, STR_NETWORK_GAME_NAME, STR_NETWORK_GAME_NAME_TIP}, |
515 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 10, 170, 42, 53, STR_NETWORK_GAME_NAME, STR_NETWORK_GAME_NAME_TIP}, |
508 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 171, 250, 42, 53, STR_NETWORK_CLIENTS_CAPTION, STR_NETWORK_CLIENTS_CAPTION_TIP}, |
516 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 171, 250, 42, 53, STR_NETWORK_CLIENTS_CAPTION, STR_NETWORK_CLIENTS_CAPTION_TIP}, |
509 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 251, 290, 42, 53, STR_EMPTY, STR_NETWORK_INFO_ICONS_TIP}, |
517 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 251, 290, 42, 53, STR_EMPTY, STR_NETWORK_INFO_ICONS_TIP}, |
510 |
518 |
511 { WWT_MATRIX, RESIZE_NONE, BGC, 10, 290, 54, 222, (12 << 8) + 1, STR_NETWORK_CLICK_GAME_TO_SELECT}, |
519 { WWT_MATRIX, RESIZE_NONE, BGC, 10, 290, 54, 234, (12 << 8) + 1, STR_NETWORK_CLICK_GAME_TO_SELECT}, |
512 { WWT_SCROLLBAR, RESIZE_NONE, BGC, 291, 302, 42, 222, STR_NULL, STR_0190_SCROLL_BAR_SCROLLS_LIST}, |
520 { WWT_SCROLLBAR, RESIZE_NONE, BGC, 291, 302, 42, 234, STR_NULL, STR_0190_SCROLL_BAR_SCROLLS_LIST}, |
513 |
521 |
514 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 30, 130, 232, 243, STR_NETWORK_FIND_SERVER, STR_NETWORK_FIND_SERVER_TIP}, |
522 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 30, 130, 244, 255, STR_NETWORK_FIND_SERVER, STR_NETWORK_FIND_SERVER_TIP}, |
515 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 180, 280, 232, 243, STR_NETWORK_ADD_SERVER, STR_NETWORK_ADD_SERVER_TIP}, |
523 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 180, 280, 244, 255, STR_NETWORK_ADD_SERVER, STR_NETWORK_ADD_SERVER_TIP}, |
516 |
524 |
517 /* RIGHT SIDE */ |
525 /* RIGHT SIDE */ |
518 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 315, 415, 232, 243, STR_NETWORK_START_SERVER, STR_NETWORK_START_SERVER_TIP}, |
526 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 315, 415, 244, 255, STR_NETWORK_START_SERVER, STR_NETWORK_START_SERVER_TIP}, |
519 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 430, 535, 232, 243, STR_012E_CANCEL, STR_NULL}, |
527 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 430, 535, 244, 255, STR_012E_CANCEL, STR_NULL}, |
520 |
528 |
521 { WWT_PANEL, RESIZE_NONE, BGC, 310, 540, 42, 222, 0x0, STR_NULL}, |
529 { WWT_PANEL, RESIZE_NONE, BGC, 310, 540, 42, 234, 0x0, STR_NULL}, |
522 |
530 |
523 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 315, 415, 201, 212, STR_NETWORK_JOIN_GAME, STR_NULL}, |
531 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 315, 415, 213, 224, STR_NETWORK_JOIN_GAME, STR_NULL}, |
524 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 430, 535, 201, 212, STR_NETWORK_REFRESH, STR_NETWORK_REFRESH_TIP}, |
532 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 430, 535, 213, 224, STR_NETWORK_REFRESH, STR_NETWORK_REFRESH_TIP}, |
533 |
|
534 { WWT_PUSHTXTBTN, RESIZE_NONE, BTC, 430, 535, 195, 206, STR_NEWGRF_SETTINGS_BUTTON, STR_NULL}, |
|
525 |
535 |
526 { WIDGETS_END}, |
536 { WIDGETS_END}, |
527 }; |
537 }; |
528 |
538 |
529 static const WindowDesc _network_game_window_desc = { |
539 static const WindowDesc _network_game_window_desc = { |
530 WDP_CENTER, WDP_CENTER, 550, 250, |
540 WDP_CENTER, WDP_CENTER, 550, 262, |
531 WC_NETWORK_WINDOW,0, |
541 WC_NETWORK_WINDOW,0, |
532 WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, |
542 WDF_STD_TOOLTIPS | WDF_DEF_WIDGET | WDF_UNCLICK_BUTTONS, |
533 _network_game_window_widgets, |
543 _network_game_window_widgets, |
534 NetworkGameWindowWndProc, |
544 NetworkGameWindowWndProc, |
535 }; |
545 }; |