• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Return-To-The-Roots / s25client / 19047185932

03 Nov 2025 07:42PM UTC coverage: 50.469% (-0.005%) from 50.474%
19047185932

Pull #1817

github

web-flow
Merge 82ee3db19 into 7333cc249
Pull Request #1817: Proposal to turn off/on bird sounds

2 of 34 new or added lines in 4 files covered. (5.88%)

5 existing lines in 3 files now uncovered.

22510 of 44602 relevant lines covered (50.47%)

35645.8 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

0.0
/libs/s25main/ingameWindows/iwOptionsWindow.cpp
1
// Copyright (C) 2005 - 2021 Settlers Freaks (sf-team at siedler25.org)
2
//
3
// SPDX-License-Identifier: GPL-2.0-or-later
4

5
#include "iwOptionsWindow.h"
6
#include "Loader.h"
7
#include "MusicPlayer.h"
8
#include "RTTR_Version.h"
9
#include "Settings.h"
10
#include "SoundManager.h"
11
#include "WindowManager.h"
12
#include "controls/ctrlImageButton.h"
13
#include "controls/ctrlProgress.h"
14
#include "drivers/AudioDriverWrapper.h"
15
#include "iwEndgame.h"
16
#include "iwMusicPlayer.h"
17
#include "iwSave.h"
18
#include "iwSettings.h"
19
#include "iwSurrender.h"
20
#include "iwTextfile.h"
21
#include "ogl/FontStyle.h"
22
#include "gameData/const_gui_ids.h"
23

24
namespace {
25
enum
26
{
27
    ID_imgSoldier,
28
    ID_txtRttr,
29
    ID_txtVersion,
30
    ID_txtCopyright,
31
    ID_btKeyboardLayout,
32
    ID_txtKeyboardLayout,
33
    ID_btReadme,
34
    ID_txtReadme,
35
    ID_btSave,
36
    ID_txtSave,
37
    ID_btSoundEffects,
38
    ID_btMusic,
39
    ID_pgEffectVol,
40
    ID_pgMusicVol,
41
    ID_btMusicPlayer,
42
    ID_btAdvanced,
43
    ID_btSurrender,
44
    ID_btEndGame,
45
    ID_cpBirdSounds
46
};
47
}
48

49
iwOptionsWindow::iwOptionsWindow(SoundManager& soundManager)
×
NEW
50
    : IngameWindow(CGI_OPTIONSWINDOW, IngameWindow::posLastOrCenter, Extent(300, 545), _("Game menu"),
×
51
                   LOADER.GetImageN("resource", 41)),
×
52
      soundManager(soundManager)
×
53
{
54
    // Der Soldat oben
55
    AddImage(ID_imgSoldier, DrawPoint(150, 36), LOADER.GetImageN("io", 30));
×
56

57
    AddText(ID_txtRttr, DrawPoint(150, 60), "Return To The Roots", COLOR_YELLOW, FontStyle::CENTER, NormalFont);
×
58
    AddText(ID_txtVersion, DrawPoint(150, 77), rttr::version::GetReadableVersion(), COLOR_YELLOW, FontStyle::CENTER,
×
59
            NormalFont);
×
60
    AddFormattedText(ID_txtCopyright, DrawPoint(150, 94),
×
61
                     "\xC2\xA9"
62
                     "2005 - %s Settlers Freaks",
63
                     COLOR_YELLOW, FontStyle::CENTER, NormalFont)
×
64
      % rttr::version::GetYear();
×
65

66
    AddImageButton(ID_btKeyboardLayout, DrawPoint(35, 120), Extent(35, 35), TextureColor::Green2,
×
67
                   LOADER.GetImageN("io", 79));
×
68
    AddText(ID_txtKeyboardLayout, DrawPoint(85, 140), _("Keyboard layout"), COLOR_YELLOW, FontStyle::BOTTOM,
×
69
            NormalFont);
×
70
    AddImageButton(ID_btReadme, DrawPoint(35, 160), Extent(35, 35), TextureColor::Green2, LOADER.GetImageN("io", 79));
×
71
    AddText(ID_txtReadme, DrawPoint(85, 180), _("Load 'ReadMe' file"), COLOR_YELLOW, FontStyle::BOTTOM, NormalFont);
×
72

73
    // "Spiel laden!"
74
    // TODO: Implement
75
    // AddImageButton( 8, DrawPoint(35, 210), Extent(35, 35), TextureColor::Green2, LOADER.GetImageN("io", 48));
76
    // AddText(9, DrawPoint(85, 230), _("Load game!"), COLOR_YELLOW, 0 | FontStyle::BOTTOM, NormalFont);
77

78
    // "Spiel speichern!"
79
    // TODO: Move back down to y=250 (Button) 270 (Text) after Load button is implemented
80
    AddImageButton(ID_btSave, DrawPoint(35, 230), Extent(35, 35), TextureColor::Green2, LOADER.GetImageN("io", 47));
×
81
    AddText(ID_txtSave, DrawPoint(85, 255), _("Save game!"), COLOR_YELLOW, FontStyle::BOTTOM, NormalFont);
×
82

83
    // Geräusche an/aus
84
    AddImageButton(ID_btSoundEffects, DrawPoint(35, 300), Extent(35, 35), TextureColor::Green2,
×
85
                   LOADER.GetImageN("io", 114 + !SETTINGS.sound.effectsEnabled)); //-V807
×
86

87
    // Musik an/aus
NEW
88
    AddImageButton(ID_btMusic, DrawPoint(35, 371), Extent(35, 35), TextureColor::Green2,
×
89
                   LOADER.GetImageN("io", 116 + !SETTINGS.sound.musicEnabled));
×
90

91
    // Geräuschlautstärke
92
    AddProgress(ID_pgEffectVol, DrawPoint(100, 306), Extent(160, 22), TextureColor::Green2, 139, 138, 100)
×
93
      ->SetPosition((SETTINGS.sound.effectsVolume * 100) / 255);
×
94

95
    // Vogelgeräusche an/aus
NEW
96
    AddCheckBox(ID_cpBirdSounds, DrawPoint(100, 342), Extent(160, 22), TextureColor::Green2, _("Bird sounds"), NormalFont, false);
×
97

98
    // Musiklautstärke
NEW
99
    AddProgress(ID_pgMusicVol, DrawPoint(100, 377), Extent(160, 22), TextureColor::Green2, 139, 138, 100)
×
100
      ->SetPosition((SETTINGS.sound.musicVolume * 100) / 255);
×
101

NEW
102
    AddTextButton(ID_btMusicPlayer, DrawPoint(100, 413), Extent(160, 22), TextureColor::Green2, _("Music player"),
×
103
                  NormalFont);
×
NEW
104
    AddTextButton(ID_btAdvanced, DrawPoint(67, 442), Extent(168, 24), TextureColor::Green2, _("Advanced"), NormalFont);
×
NEW
105
    AddTextButton(ID_btSurrender, DrawPoint(67, 473), Extent(168, 24), TextureColor::Red1, _("Surrender"), NormalFont);
×
NEW
106
    AddTextButton(ID_btEndGame, DrawPoint(67, 504), Extent(168, 24), TextureColor::Red1, _("End game"), NormalFont);
×
UNCOV
107
}
×
108

109
void iwOptionsWindow::Msg_ButtonClick(const unsigned ctrl_id)
×
110
{
111
    switch(ctrl_id)
×
112
    {
113
        case ID_btEndGame:
×
114
            WINDOWMANAGER.ToggleWindow(std::make_unique<iwEndgame>());
×
115
            Close();
×
116
            break;
×
117
        case ID_btKeyboardLayout:
×
118
            WINDOWMANAGER.ToggleWindow(std::make_unique<iwTextfile>("keyboardlayout.txt", _("Keyboard layout")));
×
119
            break;
×
120
        case ID_btReadme: WINDOWMANAGER.ToggleWindow(std::make_unique<iwTextfile>("readme.txt", _("Readme!"))); break;
×
121
        case ID_btSave: WINDOWMANAGER.ToggleWindow(std::make_unique<iwSave>()); break;
×
122

123
        case ID_btSoundEffects:
×
124
            SETTINGS.sound.effectsEnabled = !SETTINGS.sound.effectsEnabled; //-V807
×
125
            GetCtrl<ctrlImageButton>(ID_btSoundEffects)
×
126
              ->SetImage(LOADER.GetTextureN("io", 114 + !SETTINGS.sound.effectsEnabled));
×
127

128
            if(!SETTINGS.sound.effectsEnabled)
×
129
                soundManager.stopAll();
×
130
            break;
×
131

132
        case ID_btMusic:
×
133
            SETTINGS.sound.musicEnabled = !SETTINGS.sound.musicEnabled;
×
134
            GetCtrl<ctrlImageButton>(ID_btMusic)
×
135
              ->SetImage(LOADER.GetTextureN("io", 116 + !SETTINGS.sound.musicEnabled));
×
136
            if(SETTINGS.sound.musicEnabled)
×
137
                MUSICPLAYER.Play();
×
138
            else
139
                MUSICPLAYER.Stop();
×
140
            break;
×
141
        case ID_btMusicPlayer: WINDOWMANAGER.ToggleWindow(std::make_unique<iwMusicPlayer>()); break;
×
142
        case ID_btSurrender:
×
143
            WINDOWMANAGER.ReplaceWindow(std::make_unique<iwSurrender>());
×
144
            Close();
×
145
            break;
×
146
        case ID_btAdvanced:
×
147
            WINDOWMANAGER.ReplaceWindow(std::make_unique<iwSettings>());
×
148
            Close();
×
149
            break;
×
150
    }
151
}
×
152

153
void iwOptionsWindow::Msg_ProgressChange(const unsigned ctrl_id, const unsigned short position)
×
154
{
155
    switch(ctrl_id)
×
156
    {
157
        case ID_pgEffectVol:
×
158
            SETTINGS.sound.effectsVolume = static_cast<uint8_t>((position * 255) / 100);
×
159
            AUDIODRIVER.SetMasterEffectVolume(SETTINGS.sound.effectsVolume);
×
160
            break;
×
161
        case ID_pgMusicVol:
×
162
            SETTINGS.sound.musicVolume = static_cast<uint8_t>((position * 255) / 100);
×
163
            AUDIODRIVER.SetMusicVolume(SETTINGS.sound.musicVolume);
×
164
            break;
×
165
    }
166
}
×
167

NEW
168
void iwOptionsWindow::Msg_CheckboxChange(const unsigned ctrl_id, const bool checked)
×
169
{
NEW
170
    switch(ctrl_id)
×
171
    {
NEW
172
        case ID_cpBirdSounds:
×
173
        {
NEW
174
            SETTINGS.sound.birdsEnabled = checked;
×
NEW
175
            break;
×
176
        }
177
    }
NEW
178
}
×
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc