| 676 | } |
| 677 | |
| 678 | void DrawWidget(const Rect &r, WidgetID widget) const override |
| 679 | { |
| 680 | switch (widget) { |
| 681 | case WID_GO_BASE_GRF_DESCRIPTION: |
| 682 | DrawStringMultiLine(r, GetString(STR_JUST_RAW_STRING, BaseGraphics::GetUsedSet()->GetDescription(GetCurrentLanguageIsoCode())), GAME_OPTIONS_SELECTED); |
| 683 | break; |
| 684 | |
| 685 | case WID_GO_BASE_SFX_DESCRIPTION: |
| 686 | DrawStringMultiLine(r, GetString(STR_JUST_RAW_STRING, BaseSounds::GetUsedSet()->GetDescription(GetCurrentLanguageIsoCode())), GAME_OPTIONS_SELECTED); |
| 687 | break; |
| 688 | |
| 689 | case WID_GO_BASE_MUSIC_DESCRIPTION: |
| 690 | DrawStringMultiLine(r, GetString(STR_JUST_RAW_STRING, BaseMusic::GetUsedSet()->GetDescription(GetCurrentLanguageIsoCode())), GAME_OPTIONS_SELECTED); |
| 691 | break; |
| 692 | |
| 693 | case WID_GO_GUI_SCALE: |
| 694 | DrawSliderWidget(r, GAME_OPTIONS_BACKGROUND, GAME_OPTIONS_BUTTON, TC_BLACK, MIN_INTERFACE_SCALE, MAX_INTERFACE_SCALE, SCALE_NMARKS, this->gui_scale, ScaleMarkFunc); |
| 695 | break; |
| 696 | |
| 697 | case WID_GO_VIDEO_DRIVER_INFO: |
| 698 | DrawStringMultiLine(r, GetString(STR_GAME_OPTIONS_VIDEO_DRIVER_INFO, std::string{VideoDriver::GetInstance()->GetInfoString()}), GAME_OPTIONS_SELECTED); |
| 699 | break; |
| 700 | |
| 701 | case WID_GO_BASE_SFX_VOLUME: |
| 702 | DrawSliderWidget(r, GAME_OPTIONS_BACKGROUND, GAME_OPTIONS_BUTTON, TC_BLACK, 0, INT8_MAX, VOLUME_NMARKS, _settings_client.music.effect_vol, VolumeMarkFunc); |
| 703 | break; |
| 704 | |
| 705 | case WID_GO_BASE_MUSIC_VOLUME: |
| 706 | DrawSliderWidget(r, GAME_OPTIONS_BACKGROUND, GAME_OPTIONS_BUTTON, TC_BLACK, 0, INT8_MAX, VOLUME_NMARKS, _settings_client.music.music_vol, VolumeMarkFunc); |
| 707 | break; |
| 708 | |
| 709 | case WID_GO_OPTIONSPANEL: { |
| 710 | Rect tr = r.Shrink(WidgetDimensions::scaled.frametext, WidgetDimensions::scaled.framerect); |
| 711 | tr.top += this->warn_lines * BaseSettingEntry::line_height; |
| 712 | uint last_row = this->vscroll->GetPosition() + this->vscroll->GetCapacity() - this->warn_lines; |
| 713 | int next_row = GetSettingsTree().Draw(settings_ptr, tr.left, tr.right, tr.top, |
| 714 | this->vscroll->GetPosition(), last_row, this->last_clicked); |
| 715 | if (next_row == 0) DrawString(tr, STR_CONFIG_SETTINGS_NONE); |
| 716 | break; |
| 717 | } |
| 718 | |
| 719 | case WID_GO_SETTING_PROPERTIES: |
| 720 | if (this->last_clicked != nullptr) { |
| 721 | const IntSettingDesc *sd = this->last_clicked->setting; |
| 722 | |
| 723 | Rect tr = r; |
| 724 | std::string str; |
| 725 | switch (sd->GetType()) { |
| 726 | case ST_COMPANY: str = GetString(STR_CONFIG_SETTING_TYPE, _game_mode == GM_MENU ? STR_CONFIG_SETTING_TYPE_COMPANY_MENU : STR_CONFIG_SETTING_TYPE_COMPANY_INGAME); break; |
| 727 | case ST_CLIENT: str = GetString(STR_CONFIG_SETTING_TYPE, STR_CONFIG_SETTING_TYPE_CLIENT); break; |
| 728 | case ST_GAME: str = GetString(STR_CONFIG_SETTING_TYPE, _game_mode == GM_MENU ? STR_CONFIG_SETTING_TYPE_GAME_MENU : STR_CONFIG_SETTING_TYPE_GAME_INGAME); break; |
| 729 | default: NOT_REACHED(); |
| 730 | } |
| 731 | DrawString(tr, str); |
| 732 | tr.top += GetCharacterHeight(FS_NORMAL); |
| 733 | |
| 734 | auto [param1, param2] = sd->GetValueParams(sd->GetDefaultValue()); |
| 735 | DrawString(tr, GetString(STR_CONFIG_SETTING_DEFAULT_VALUE, param1, param2)); |
nothing calls this directly
no test coverage detected