381 y += 2; |
381 y += 2; |
382 |
382 |
383 if (!sel->info.compatible) { |
383 if (!sel->info.compatible) { |
384 DrawStringCentered(this->widget[NGWW_DETAILS].left + 115, y, sel->info.version_compatible ? STR_NETWORK_GRF_MISMATCH : STR_NETWORK_VERSION_MISMATCH, TC_FROMSTRING); // server mismatch |
384 DrawStringCentered(this->widget[NGWW_DETAILS].left + 115, y, sel->info.version_compatible ? STR_NETWORK_GRF_MISMATCH : STR_NETWORK_VERSION_MISMATCH, TC_FROMSTRING); // server mismatch |
385 } else if (sel->info.clients_on == sel->info.clients_max) { |
385 } else if (sel->info.clients_on == sel->info.clients_max) { |
386 /* Show: server full, when clients_on == clients_max */ |
386 /* Show: server full, when clients_on == max_clients */ |
387 DrawStringCentered(this->widget[NGWW_DETAILS].left + 115, y, STR_NETWORK_SERVER_FULL, TC_FROMSTRING); // server full |
387 DrawStringCentered(this->widget[NGWW_DETAILS].left + 115, y, STR_NETWORK_SERVER_FULL, TC_FROMSTRING); // server full |
388 } else if (sel->info.use_password) { |
388 } else if (sel->info.use_password) { |
389 DrawStringCentered(this->widget[NGWW_DETAILS].left + 115, y, STR_NETWORK_PASSWORD, TC_FROMSTRING); // password warning |
389 DrawStringCentered(this->widget[NGWW_DETAILS].left + 115, y, STR_NETWORK_PASSWORD, TC_FROMSTRING); // password warning |
390 } |
390 } |
391 |
391 |
686 int y = NSSWND_START; |
685 int y = NSSWND_START; |
687 const FiosItem *item; |
686 const FiosItem *item; |
688 |
687 |
689 /* draw basic widgets */ |
688 /* draw basic widgets */ |
690 SetDParam(1, _connection_types_dropdown[_network_advertise]); |
689 SetDParam(1, _connection_types_dropdown[_network_advertise]); |
691 SetDParam(2, _network_game_info.clients_max); |
690 SetDParam(2, _settings_client.network.max_clients); |
692 SetDParam(3, _network_game_info.companies_max); |
691 SetDParam(3, _settings_client.network.max_companies); |
693 SetDParam(4, _network_game_info.spectators_max); |
692 SetDParam(4, _settings_client.network.max_spectators); |
694 SetDParam(5, STR_NETWORK_LANG_ANY + _network_game_info.server_lang); |
693 SetDParam(5, STR_NETWORK_LANG_ANY + _settings_client.network.server_lang); |
695 this->DrawWidgets(); |
694 this->DrawWidgets(); |
696 |
695 |
697 /* editbox to set game name */ |
696 /* editbox to set game name */ |
698 this->DrawEditBox(NSSW_GAMENAME); |
697 this->DrawEditBox(NSSW_GAMENAME); |
699 |
698 |
700 /* if password is set, draw red '*' next to 'Set password' button */ |
699 /* if password is set, draw red '*' next to 'Set password' button */ |
701 if (_network_game_info.use_password) DoDrawString("*", 408, 23, TC_RED); |
700 if (!StrEmpty(_settings_client.network.server_password)) DoDrawString("*", 408, 23, TC_RED); |
702 |
701 |
703 /* draw list of maps */ |
702 /* draw list of maps */ |
704 GfxFillRect(11, 63, 258, 215, 0xD7); // black background of maps list |
703 GfxFillRect(11, 63, 258, 215, 0xD7); // black background of maps list |
705 |
704 |
706 for (uint pos = this->vscroll.pos; pos < _fios_items.Length() + 1; pos++) { |
705 for (uint pos = this->vscroll.pos; pos < _fios_items.Length() + 1; pos++) { |
760 this->HandleButtonClick(widget); |
759 this->HandleButtonClick(widget); |
761 this->SetDirty(); |
760 this->SetDirty(); |
762 switch (widget) { |
761 switch (widget) { |
763 default: NOT_REACHED(); |
762 default: NOT_REACHED(); |
764 case NSSW_CLIENTS_BTND: case NSSW_CLIENTS_BTNU: |
763 case NSSW_CLIENTS_BTND: case NSSW_CLIENTS_BTNU: |
765 _network_game_info.clients_max = Clamp(_network_game_info.clients_max + widget - NSSW_CLIENTS_TXT, 2, MAX_CLIENTS); |
764 _settings_client.network.max_clients = Clamp(_settings_client.network.max_clients + widget - NSSW_CLIENTS_TXT, 2, MAX_CLIENTS); |
766 break; |
765 break; |
767 case NSSW_COMPANIES_BTND: case NSSW_COMPANIES_BTNU: |
766 case NSSW_COMPANIES_BTND: case NSSW_COMPANIES_BTNU: |
768 _network_game_info.companies_max = Clamp(_network_game_info.companies_max + widget - NSSW_COMPANIES_TXT, 1, MAX_PLAYERS); |
767 _settings_client.network.max_companies = Clamp(_settings_client.network.max_companies + widget - NSSW_COMPANIES_TXT, 1, MAX_PLAYERS); |
769 break; |
768 break; |
770 case NSSW_SPECTATORS_BTND: case NSSW_SPECTATORS_BTNU: |
769 case NSSW_SPECTATORS_BTND: case NSSW_SPECTATORS_BTNU: |
771 _network_game_info.spectators_max = Clamp(_network_game_info.spectators_max + widget - NSSW_SPECTATORS_TXT, 0, MAX_CLIENTS); |
770 _settings_client.network.max_spectators = Clamp(_settings_client.network.max_spectators + widget - NSSW_SPECTATORS_TXT, 0, MAX_CLIENTS); |
772 break; |
771 break; |
773 } |
772 } |
774 } |
773 } |
775 _left_button_clicked = false; |
774 _left_button_clicked = false; |
776 break; |
775 break; |
777 |
776 |
778 case NSSW_CLIENTS_TXT: // Click on number of players |
777 case NSSW_CLIENTS_TXT: // Click on number of players |
779 this->widget_id = NSSW_CLIENTS_TXT; |
778 this->widget_id = NSSW_CLIENTS_TXT; |
780 SetDParam(0, _network_game_info.clients_max); |
779 SetDParam(0, _settings_client.network.max_clients); |
781 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_NETWORK_NUMBER_OF_CLIENTS, 3, 50, this, CS_NUMERAL); |
780 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_NETWORK_NUMBER_OF_CLIENTS, 3, 50, this, CS_NUMERAL); |
782 break; |
781 break; |
783 |
782 |
784 case NSSW_COMPANIES_TXT: // Click on number of companies |
783 case NSSW_COMPANIES_TXT: // Click on number of companies |
785 this->widget_id = NSSW_COMPANIES_TXT; |
784 this->widget_id = NSSW_COMPANIES_TXT; |
786 SetDParam(0, _network_game_info.companies_max); |
785 SetDParam(0, _settings_client.network.max_companies); |
787 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_NETWORK_NUMBER_OF_COMPANIES, 3, 50, this, CS_NUMERAL); |
786 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_NETWORK_NUMBER_OF_COMPANIES, 3, 50, this, CS_NUMERAL); |
788 break; |
787 break; |
789 |
788 |
790 case NSSW_SPECTATORS_TXT: // Click on number of spectators |
789 case NSSW_SPECTATORS_TXT: // Click on number of spectators |
791 this->widget_id = NSSW_SPECTATORS_TXT; |
790 this->widget_id = NSSW_SPECTATORS_TXT; |
792 SetDParam(0, _network_game_info.spectators_max); |
791 SetDParam(0, _settings_client.network.max_spectators); |
793 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_NETWORK_NUMBER_OF_SPECTATORS, 3, 50, this, CS_NUMERAL); |
792 ShowQueryString(STR_CONFIG_PATCHES_INT32, STR_NETWORK_NUMBER_OF_SPECTATORS, 3, 50, this, CS_NUMERAL); |
794 break; |
793 break; |
795 |
794 |
796 case NSSW_LANGUAGE_BTN: { // Language |
795 case NSSW_LANGUAGE_BTN: { // Language |
797 uint sel = 0; |
796 uint sel = 0; |
798 for (uint i = 0; i < lengthof(_language_dropdown) - 1; i++) { |
797 for (uint i = 0; i < lengthof(_language_dropdown) - 1; i++) { |
799 if (_language_dropdown[i] == STR_NETWORK_LANG_ANY + _network_game_info.server_lang) { |
798 if (_language_dropdown[i] == STR_NETWORK_LANG_ANY + _settings_client.network.server_lang) { |
800 sel = i; |
799 sel = i; |
801 break; |
800 break; |
802 } |
801 } |
803 } |
802 } |
804 ShowDropDownMenu(this, _language_dropdown, sel, NSSW_LANGUAGE_BTN, 0, 0); |
803 ShowDropDownMenu(this, _language_dropdown, sel, NSSW_LANGUAGE_BTN, 0, 0); |
870 { |
869 { |
871 if (str == NULL) return; |
870 if (str == NULL) return; |
872 |
871 |
873 if (this->widget_id == NSSW_SETPWD) { |
872 if (this->widget_id == NSSW_SETPWD) { |
874 ttd_strlcpy(_settings_client.network.server_password, str, lengthof(_settings_client.network.server_password)); |
873 ttd_strlcpy(_settings_client.network.server_password, str, lengthof(_settings_client.network.server_password)); |
875 _network_game_info.use_password = !StrEmpty(_settings_client.network.server_password); |
|
876 } else { |
874 } else { |
877 int32 value = atoi(str); |
875 int32 value = atoi(str); |
878 this->InvalidateWidget(this->widget_id); |
876 this->InvalidateWidget(this->widget_id); |
879 switch (this->widget_id) { |
877 switch (this->widget_id) { |
880 default: NOT_REACHED(); |
878 default: NOT_REACHED(); |
881 case NSSW_CLIENTS_TXT: _network_game_info.clients_max = Clamp(value, 2, MAX_CLIENTS); break; |
879 case NSSW_CLIENTS_TXT: _settings_client.network.max_clients = Clamp(value, 2, MAX_CLIENTS); break; |
882 case NSSW_COMPANIES_TXT: _network_game_info.companies_max = Clamp(value, 1, MAX_PLAYERS); break; |
880 case NSSW_COMPANIES_TXT: _settings_client.network.max_companies = Clamp(value, 1, MAX_PLAYERS); break; |
883 case NSSW_SPECTATORS_TXT: _network_game_info.spectators_max = Clamp(value, 0, MAX_CLIENTS); break; |
881 case NSSW_SPECTATORS_TXT: _settings_client.network.max_spectators = Clamp(value, 0, MAX_CLIENTS); break; |
884 } |
882 } |
885 } |
883 } |
886 |
884 |
887 this->SetDirty(); |
885 this->SetDirty(); |
888 } |
886 } |