Rise
The Vieneo Province
ConfigurationDialog.cpp
Go to the documentation of this file.
1 #include "ConfigurationDialog.h"
2 
3 #include "../gui.h"
4 #include "../Networking.h"
5 #include "../GameClass.h"
6 #include "../Viewscreen/Viewscreen.h"
7 #include "RakNetStatistics.h"
8 #include "GetTime.h"
9 #include "InformationDialog.h"
10 #include "../StringUtilities.h"
11 
13 {
14  logger->AddToCallStack("ConfigurationDialog::ctor");
15  usesHUD = true;
16  HUD.Init(&gui->g_DialogResourceManager, true, L"Textures\\GUI\\dxutcontrols.png");
17  HUD.SetCallback(&ConfigurationDialog::DialogCallback, this);
18  HUD.EnableKeyboardInput(true);
19 
20  RECT rect; rect.left = rect.right = 0; rect.top = rect.bottom = -1;
21  WCHAR langTest[2];
22  UTF8_to_WChar(langTest, "汉");
23  gui->g_pFont->DrawTextW(gui->g_pTextSprite, langTest, 1, &rect, DT_CALCRECT, 0L);
24  if (rect.right == 12)
25  gui->eastasian = true;
26  else
27  gui->eastasian = false;
28 
29  normalinterlace = false;
30  windowdefaultlocation = D3DXVECTOR3(3, 3, 0);
31  defaultwidth = 640;
32  defaultheight = MAX_LINES * 16;
33 
34  tabs = 6; // this gets saved
41 
42  icon = 14;
44  allowresize = false;
45  allowscroll = false;
46 }
47 
49 {
50  logger->AddToCallStack("ConfigurationDialog::UpdateMenu");
51  if (activetab < 0 || activetab >= MAX_TAB)
52  {
53  logger->Log("ConfigurationDialog::UpdateMenu activetab was out-of-bounds", Logger::Level::Debug);
54  activetab = 0;
55  }
57  {
58  CDXUTRadioButton* windowed = HUD.GetRadioButton(DXUTSETTINGSDLG_WINDOWED);
59  if (windowed == nullptr)
60  logger->Log("ConfigurationDialog::UpdateMenu DXUTSETTINGSDLG_WINDOWED is nullptr", Logger::Level::Debug);
61  else
62  windowed->SetChecked(!gui->game->config.g_bStartFullscreen);
63  CDXUTRadioButton* full_screen = HUD.GetRadioButton(DXUTSETTINGSDLG_FULLSCREEN);
64  if (full_screen == nullptr)
65  logger->Log("ConfigurationDialog::UpdateMenu DXUTSETTINGSDLG_FULLSCREEN is nullptr", Logger::Level::Debug);
66  else
67  full_screen->SetChecked(gui->game->config.g_bStartFullscreen);
68  }
69  logger->AddToCallStack("ConfigurationDialog::UpdateMenu DONE");
70 }
71 
72 void ConfigurationDialog::ShowStatus(InputConfig* input_config, int y, D3DXVECTOR3* tracked, bool engine) const
73 {
74  RECT rect;
75  rect.top = static_cast<LONG>(y + tracked->y);
76  rect.left = static_cast<LONG>(500.0f + tracked->x);
77  rect.bottom = rect.right = 0;
78 
79  if (input_config->guid == MYGUID_NULL)
80  {
81  gui->g_pFont->DrawTextW(gui->g_pTextSprite, gui->strings[L_CONFIG_OK].c_str(), -1, &rect, DT_NOCLIP, 0xFF00FF00);
82  return;
83  }
84 
85  long value = 99999;
86  DIJOYSTATE js;
87  WCHAR str[6];
88  // ReSharper disable once CppExpressionWithoutSideEffects
89  gui->game->viewscreen->ptrJoystick->Poll(input_config, &value, &js);
90  if (value != 99999)
91  {
92  const int nullzone = gui->game->viewscreen->ptrJoystick->nullzone;
93  if (!engine)
94  {
95  swprintf_s(str, 6, L"%+i", value);
96  gui->g_pFont->DrawTextW(gui->g_pTextSprite, str, -1, &rect, DT_NOCLIP, abs(value) > nullzone ? 0xFFFFFF00 : 0xFF00FF00);
97  }
98  else
99  {
100  value = (-value + 1000) / 2;
101  if (value != 500)
102  {
103  swprintf_s(str, 6, L"%+i", value);
104  gui->g_pFont->DrawTextW(gui->g_pTextSprite, str, -1, &rect, DT_NOCLIP, value > nullzone ? 0xFFFFFF00 : 0xFF00FF00);
105  }
106  else
107  {
108  gui->g_pFont->DrawTextW(gui->g_pTextSprite, gui->strings[L_CONFIG_MOVE].c_str(), -1, &rect, DT_NOCLIP, 0xFFFFFF00);
109  }
110  }
111  }
112  else
113  {
114  gui->g_pFont->DrawTextW(gui->g_pTextSprite, gui->strings[L_CONFIG_FAIL].c_str(), -1, &rect, DT_NOCLIP, 0xFFFF0000);
115  }
116 }
117 
119 {
120  logger->AddToCallStack("ConfigurationDialog::Update");
121 
122  if (redraw)
123  {
124  ActiveTab();
125  redraw = false;
126  }
127 
129  {
131  }
133  {
134  const float cpu = BASS_GetCPU();
135  swprintf_s(msgbartext, HELP_SIZE, gui->strings[L_MESSAGE_SOUNDUTILIZATION].c_str(), cpu, gui->strings[L_LIST_PERCENT].c_str(), BASS_GetVersion());
136  if (cpu > 2.0f)
137  msgbarcolor = 3; // red
138  else if (cpu > 1.0f)
139  msgbarcolor = 2; // yellow
140  else
141  msgbarcolor = 1; // green
142  }
144  {
145  const int pingtime = gui->networking->GetPingTime();
146  if (pingtime > 250)
147  msgbarcolor = 3; // red
148  else if (pingtime > 100)
149  msgbarcolor = 2; // yellow
150  else
151  msgbarcolor = 1; // green
152  swprintf_s(msgbartext, HELP_SIZE, gui->strings[L_MESSAGE_NETWORKLAG].c_str(), pingtime);
153  }
155  {
156  const float fps = DXUTGetFPS();
157  if (fps < 24.0f)
158  msgbarcolor = 3; // red
159  else if (fps < 42.0f)
160  msgbarcolor = 2; // yellow
161  else
162  msgbarcolor = 1; // green
163  swprintf_s(msgbartext, HELP_SIZE, L"%s", DXUTGetFrameStats(true));
164  }
165 }
166 
167 void ConfigurationDialog::Draw(D3DXVECTOR3* tracked)
168 {
169  logger->AddToCallStack("ConfigurationDialog::Draw");
170 
172  {
173  RECT rect;
174  rect.top = static_cast<long>(tracked->y) + 2;
175  rect.left = static_cast<long>(tracked->x) + 5;
176  rect.bottom = 0;
177  rect.right = 0;
178 
179  char msg[99];
180  RakNet::RakNetStatistics* s = gui->networking->GetStatistics();
181 
182  sprintf_s(msg, 99, "Actual bytes per second sent %llu", s->valueOverLastSecond[RakNet::ACTUAL_BYTES_SENT]);
183  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
184  rect.top += 10;
185 
186  sprintf_s(msg, 99, "Actual bytes per second received %llu", s->valueOverLastSecond[RakNet::ACTUAL_BYTES_RECEIVED]);
187  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
188  rect.top += 10;
189 
190  sprintf_s(msg, 99, "Message bytes per second sent %llu", s->valueOverLastSecond[RakNet::USER_MESSAGE_BYTES_SENT]);
191  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
192  rect.top += 10;
193 
194  sprintf_s(msg, 99, "Message bytes per second resent %llu", s->valueOverLastSecond[RakNet::USER_MESSAGE_BYTES_RESENT]);
195  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
196  rect.top += 10;
197 
198  sprintf_s(msg, 99, "Message bytes per second pushed %llu", s->valueOverLastSecond[RakNet::USER_MESSAGE_BYTES_PUSHED]);
199  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
200  rect.top += 10;
201 
202  sprintf_s(msg, 99, "Message bytes per second returned %llu", s->valueOverLastSecond[RakNet::USER_MESSAGE_BYTES_RECEIVED_PROCESSED]);
203  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
204  rect.top += 10;
205 
206  sprintf_s(msg, 99, "Message bytes per second ignored %llu", s->valueOverLastSecond[RakNet::USER_MESSAGE_BYTES_RECEIVED_IGNORED]);
207  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
208  rect.top += 10;
209 
210  sprintf_s(msg, 99, "Total bytes sent %llu", s->runningTotal[RakNet::ACTUAL_BYTES_SENT]);
211  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
212  rect.top += 10;
213 
214  sprintf_s(msg, 99, "Total bytes received %llu", s->runningTotal[RakNet::ACTUAL_BYTES_RECEIVED]);
215  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
216  rect.top += 10;
217 
218  sprintf_s(msg, 99, "Total message bytes sent %llu", s->runningTotal[RakNet::USER_MESSAGE_BYTES_SENT]);
219  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
220  rect.top += 10;
221 
222  sprintf_s(msg, 99, "Total message bytes resent %llu", s->runningTotal[RakNet::USER_MESSAGE_BYTES_RESENT]);
223  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
224  rect.top += 10;
225 
226  sprintf_s(msg, 99, "Total message bytes pushed %llu", s->runningTotal[RakNet::USER_MESSAGE_BYTES_PUSHED]);
227  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
228  rect.top += 10;
229 
230  sprintf_s(msg, 99, "Total message bytes returned %llu", s->runningTotal[RakNet::USER_MESSAGE_BYTES_RECEIVED_PROCESSED]);
231  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
232  rect.top += 10;
233 
234  sprintf_s(msg, 99, "Total message bytes ignored %llu", s->runningTotal[RakNet::USER_MESSAGE_BYTES_RECEIVED_IGNORED]);
235  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
236  rect.top += 10;
237 
238  sprintf_s(msg, 99, "Messages in send buffer, by priority %i,%i,%i,%i", s->messageInSendBuffer[IMMEDIATE_PRIORITY], s->messageInSendBuffer[HIGH_PRIORITY], s->messageInSendBuffer[MEDIUM_PRIORITY], s->messageInSendBuffer[LOW_PRIORITY]);
239  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
240  rect.top += 10;
241 
242  sprintf_s(msg, 99, "Bytes in send buffer, by priority %.0f,%.0f,%.0f,%.0f", s->bytesInSendBuffer[IMMEDIATE_PRIORITY], s->bytesInSendBuffer[HIGH_PRIORITY], s->bytesInSendBuffer[MEDIUM_PRIORITY], s->bytesInSendBuffer[LOW_PRIORITY]);
243  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
244  rect.top += 10;
245 
246  sprintf_s(msg, 99, "Messages in resend buffer %i", s->messagesInResendBuffer);
247  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
248  rect.top += 10;
249 
250  sprintf_s(msg, 99, "Bytes in resend buffer %llu", s->bytesInResendBuffer);
251  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
252  rect.top += 10;
253 
254  sprintf_s(msg, 99, "Current packet loss %.1f%%", s->packetlossLastSecond*100.0f);
255  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
256  rect.top += 10;
257 
258  sprintf_s(msg, 99, "Average packet loss %.1f%%", s->packetlossTotal*100.0f);
259  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
260  rect.top += 10;
261 
262  sprintf_s(msg, 99, "Elapsed connection time in seconds %llu", (RakNet::GetTimeUS() - s->connectionStartTime) / 1000000);
263  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
264  rect.top += 10;
265 
266  if (s->BPSLimitByCongestionControl != 0)
267  {
268  sprintf_s(msg, 99, "Send capacity %llu bytes per second (%.0f%%)", s->BPSLimitByCongestionControl, 100.0f * s->valueOverLastSecond[RakNet::ACTUAL_BYTES_SENT] / s->BPSLimitByCongestionControl);
269  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
270  rect.top += 10;
271  }
272 
273  if (s->BPSLimitByOutgoingBandwidthLimit != 0)
274  {
275  sprintf_s(msg, 99, "Send limit %llu (%.0f%%)", s->BPSLimitByOutgoingBandwidthLimit, 100.0f * s->valueOverLastSecond[RakNet::ACTUAL_BYTES_SENT] / s->BPSLimitByOutgoingBandwidthLimit);
276  gui->g_pFont->DrawTextA(gui->g_pTextSprite, msg, -1, &rect, DT_NOCLIP, 0xFFFFFFFF);
277  rect.top += 10;
278  }
279  }
281  {
282  int y = 6;
283  ShowStatus(&gui->game->config.inputConfigLookLateral, y += 32, tracked, false);
284  ShowStatus(&gui->game->config.inputConfigLookVertical, y += 32, tracked, false);
285  ShowStatus(&gui->game->config.inputConfigWalkLateral, y += 32, tracked, false);
286  ShowStatus(&gui->game->config.inputConfigWalkVertical, y += 32, tracked, false);
287  ShowStatus(&gui->game->config.inputConfigSteer, y += 32, tracked, false);
288  ShowStatus(&gui->game->config.inputConfigGas, y += 32, tracked, true);
289  ShowStatus(&gui->game->config.inputConfigBrake, y += 32, tracked, true);
290  ShowStatus(&gui->game->config.inputConfigPitch, y += 32, tracked, false);
291  ShowStatus(&gui->game->config.inputConfigPitchTrim, y += 32, tracked, false);
292  ShowStatus(&gui->game->config.inputConfigRoll, y += 32, tracked, false);
293  ShowStatus(&gui->game->config.inputConfigYaw, y += 32, tracked, false);
294  ShowStatus(&gui->game->config.inputConfigThrustLeft, y += 32, tracked, true);
295  ShowStatus(&gui->game->config.inputConfigThrustRight, y += 32, tracked, true);
296  ShowStatus(&gui->game->config.inputConfigLeftToeBrake, y += 32, tracked, true);
297  ShowStatus(&gui->game->config.inputConfigRightToeBrake, y += 32, tracked, true);
298  }
299 }
300 
301 void ConfigurationDialog::CreateAxisDropdown(int control, int y, InputConfig* config)
302 {
303  HUD.AddComboBox(control, static_cast<int>(384.0f * gui->game->displayscale), y, static_cast<int>(104.0f * gui->game->displayscale), static_cast<int>(24.0f * gui->game->displayscale));
304  HUD.GetComboBox(control)->SetDropHeight(static_cast<int>(124.0f * gui->game->displayscale));
305  HUD.GetComboBox(control)->AddItem(gui->strings[L_CONFIG_AXIS_X].c_str(), nullptr); // 0
306  HUD.GetComboBox(control)->AddItem(gui->strings[L_CONFIG_AXIS_Y].c_str(), nullptr); // 1
307  HUD.GetComboBox(control)->AddItem(gui->strings[L_CONFIG_AXIS_Z].c_str(), nullptr); // 2
308  HUD.GetComboBox(control)->AddItem(gui->strings[L_CONFIG_AXIS_RX].c_str(), nullptr); // 3
309  HUD.GetComboBox(control)->AddItem(gui->strings[L_CONFIG_AXIS_RY].c_str(), nullptr); // 4
310  HUD.GetComboBox(control)->AddItem(gui->strings[L_CONFIG_AXIS_RZ].c_str(), nullptr); // 5
311  HUD.GetComboBox(control)->AddItem(gui->strings[L_CONFIG_AXIS_S1].c_str(), nullptr); // 6
312  HUD.GetComboBox(control)->AddItem(gui->strings[L_CONFIG_AXIS_S2].c_str(), nullptr); // 7
313  HUD.GetComboBox(control)->SetSelectedByIndex(config->axis);
314  HUD.GetComboBox(control)->SetEnabled(config->g_pJoystick);
315 }
316 
318 {
319  logger->AddToCallStack("ConfigurationDialog::UpdateInput");
320 
321  gui->game->config.Save();
322 
324 
325  logger->AddToCallStack("ConfigurationDialog::UpdateInput DONE");
326 }
327 
328 void CALLBACK ConfigurationDialog::DialogCallback(UINT nEvent, int nControlID, CDXUTControl* pControl, void* pUserContext)
329 {
330  logger->AddToCallStack("ConfigurationDialog::DialogCallback");
331 
332  ConfigurationDialog* cfd = static_cast<ConfigurationDialog*>(pUserContext);
333 
334  switch (nControlID)
335  {
336 #pragma region Interface
337 
338  case IDC_KEYCARD:
339  ShellExecuteW(nullptr, nullptr, L"https://www.risetvp.com/Keycard", nullptr, nullptr, SW_SHOW);
340  break;
341 
342  case IDC_PLAYERPORTAL:
343  ShellExecuteW(nullptr, nullptr, L"https://portal.risetvp.com", nullptr, nullptr, SW_SHOW);
344  break;
345 
346  case IDC_LANGUAGE:
347  if (nEvent == EVENT_COMBOBOX_SELECTION_CHANGED)
348  {
349  const unsigned char oldlang = gui->game->config.language;
350  gui->game->config.language = static_cast<unsigned char>(cfd->HUD.GetComboBox(IDC_LANGUAGE)->GetSelectedIndex());
351 
352  if (!gui->eastasian)
353  {
354  if (gui->game->config.language >= 1)
355  gui->game->config.language++;
356  if (gui->game->config.language >= 7)
357  gui->game->config.language += 2;
358  }
359 
360  if (oldlang != gui->game->config.language)
361  {
362  gui->LoadLanguage(); // do this first so if it fails it doesn't save it
363  gui->game->config.Save();
364  cfd->ActiveTab();
365 
367  gui->networking->RequestVerbiage(0); // just changing language... same as ActiveHelp::MessageOfTheDay
368  }
369  }
370  break;
371 
372  case IDC_SCALEMAGNIFY:
373  {
374  float maxScale = 1.5f * gui->game->dpiscale;
375  const float xScale = gui->game->displayWidth / designedWidthC; // canary 2.3
376  const float yScale = gui->game->displayHeight / designedHeightC; // canary 2.1
377  if (maxScale > xScale * 1.5f)
378  maxScale = xScale * 1.5f; // dpi now 2.3x
379  if (maxScale > yScale * 1.5f)
380  maxScale = yScale * 1.5f; // dpi now 2.1x
381  if ((gui->game->config.scale + 0.1f) > maxScale) break;
382  const float oldScale = gui->game->config.scale;
383  gui->game->config.scale += 0.1f;
384  gui->game->displayscale *= gui->game->config.scale / oldScale;
385  OnDeviceReset();
386  gui->game->config.Save();
387  }
388  break;
389  case IDC_SCALEMINIFY:
390  {
391  const float minScale = max(1, 0.5f * gui->game->dpiscale);
392  if ((gui->game->config.scale - 0.1f) < minScale)
393  break;
394  const float oldScale = gui->game->config.scale;
395  gui->game->config.scale -= 0.1f;
396  gui->game->displayscale *= gui->game->config.scale / oldScale;
397  OnDeviceReset();
398  gui->game->config.Save();
399  }
400  break;
401 
402 #pragma endregion
403 
404 #pragma region Input
410  case IDC_INPUTDEVICEGAS:
414  case IDC_INPUTDEVICEROLL:
415  case IDC_INPUTDEVICEYAW:
420  {
421  void* pData = cfd->HUD.GetComboBox(nControlID)->GetSelectedItem()->pData;
422  InputConfig* inputConfig = static_cast<InputConfig*>(pData);
423  const int selectedIndex = cfd->HUD.GetComboBox(nControlID)->GetSelectedIndex();
424  if (selectedIndex > 0)
425  inputConfig->guid = gui->game->viewscreen->ptrJoystick->deviceList.at(selectedIndex - 1).guidInstance;
426  else
427  inputConfig->guid = MYGUID_NULL;
428  if ((nControlID == IDC_INPUTDEVICELOOKLATERAL || nControlID == IDC_INPUTDEVICELOOKVERTICAL))
429  {
430  if (selectedIndex == 0) // mouse
431  {
432  inputConfig->axis = 0;
436  }
437  else
438  {
442  }
443  }
444  cfd->UpdateInput(inputConfig);
445 
446  logger->AddToCallStack("ConfigurationDialog::DialogCallback AxisDisable1");
447  cfd->HUD.GetComboBox(nControlID + 1)->SetEnabled(selectedIndex > 0); // Axis is always next door
448  logger->AddToCallStack("ConfigurationDialog::DialogCallback SplitDisable");
449  CDXUTCheckBox* splitCheckbox = cfd->HUD.GetCheckBox(nControlID + 3);
450  if (splitCheckbox)
451  {
452  cfd->HUD.GetCheckBox(nControlID + 2)->SetEnabled(selectedIndex > 0); // Invert is always right down the street
453  splitCheckbox->SetEnabled(selectedIndex > 0); // Split is always right down the street
454  }
455  logger->AddToCallStack("ConfigurationDialog::DialogCallback DisableDone");
456  }
457  break;
459  {
460  const int selectedIndex = cfd->HUD.GetComboBox(nControlID)->GetSelectedIndex();
461  gui->game->config.inputConfigLookLateral.axis = selectedIndex;
463  }
464  break;
466  {
467  const int selectedIndex = cfd->HUD.GetComboBox(nControlID)->GetSelectedIndex();
468  gui->game->config.inputConfigLookVertical.axis = selectedIndex;
470  }
471  break;
473  {
474  const int selectedIndex = cfd->HUD.GetComboBox(nControlID)->GetSelectedIndex();
475  gui->game->config.inputConfigWalkLateral.axis = selectedIndex;
477  }
478  break;
480  {
481  const int selectedIndex = cfd->HUD.GetComboBox(nControlID)->GetSelectedIndex();
482  gui->game->config.inputConfigWalkVertical.axis = selectedIndex;
484  }
485  break;
487  {
488  const int selectedIndex = cfd->HUD.GetComboBox(nControlID)->GetSelectedIndex();
489  gui->game->config.inputConfigSteer.axis = selectedIndex;
491  }
492  break;
493  case IDC_INPUTAXISGAS:
494  {
495  const int selectedIndex = cfd->HUD.GetComboBox(nControlID)->GetSelectedIndex();
496  gui->game->config.inputConfigGas.axis = selectedIndex;
498  }
499  break;
500  case IDC_INPUTAXISBRAKE:
501  {
502  const int selectedIndex = cfd->HUD.GetComboBox(nControlID)->GetSelectedIndex();
503  gui->game->config.inputConfigBrake.axis = selectedIndex;
505  }
506  break;
507  case IDC_INPUTAXISPITCH:
508  {
509  const int selectedIndex = cfd->HUD.GetComboBox(nControlID)->GetSelectedIndex();
510  gui->game->config.inputConfigPitch.axis = selectedIndex;
512  }
513  break;
515  {
516  const int selectedIndex = cfd->HUD.GetComboBox(nControlID)->GetSelectedIndex();
517  gui->game->config.inputConfigPitchTrim.axis = selectedIndex;
519  }
520  break;
521  case IDC_INPUTAXISROLL:
522  {
523  const int selectedIndex = cfd->HUD.GetComboBox(nControlID)->GetSelectedIndex();
524  gui->game->config.inputConfigRoll.axis = selectedIndex;
526  }
527  break;
528  case IDC_INPUTAXISYAW:
529  {
530  const int selectedIndex = cfd->HUD.GetComboBox(nControlID)->GetSelectedIndex();
531  gui->game->config.inputConfigYaw.axis = selectedIndex;
533  }
534  break;
536  {
537  const int selectedIndex = cfd->HUD.GetComboBox(nControlID)->GetSelectedIndex();
538  gui->game->config.inputConfigThrustLeft.axis = selectedIndex;
540  }
541  break;
543  {
544  const int selectedIndex = cfd->HUD.GetComboBox(nControlID)->GetSelectedIndex();
545  gui->game->config.inputConfigThrustRight.axis = selectedIndex;
547  }
548  break;
550  {
551  const int selectedIndex = cfd->HUD.GetComboBox(nControlID)->GetSelectedIndex();
552  gui->game->config.inputConfigLeftToeBrake.axis = selectedIndex;
554  }
555  break;
557  {
558  const int selectedIndex = cfd->HUD.GetComboBox(nControlID)->GetSelectedIndex();
559  gui->game->config.inputConfigRightToeBrake.axis = selectedIndex;
561  }
562  break;
564  {
565  gui->game->config.inputConfigLookLateral.invert = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
567  }
568  break;
570  {
571  gui->game->config.inputConfigLookVertical.invert = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
573  }
574  break;
576  {
577  gui->game->config.inputConfigWalkLateral.invert = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
579  }
580  break;
582  {
583  gui->game->config.inputConfigWalkVertical.invert = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
585  }
586  break;
588  {
589  gui->game->config.inputConfigSteer.invert = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
591  }
592  break;
593  case IDC_INPUTINVGAS:
594  {
595  gui->game->config.inputConfigGas.invert = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
597  }
598  break;
599  case IDC_INPUTINVBRAKE:
600  {
601  gui->game->config.inputConfigBrake.invert = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
603  }
604  break;
605  case IDC_INPUTINVPITCH:
606  {
607  gui->game->config.inputConfigPitch.invert = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
609  }
610  break;
612  {
613  gui->game->config.inputConfigPitchTrim.invert = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
615  }
616  break;
617  case IDC_INPUTINVROLL:
618  {
619  gui->game->config.inputConfigRoll.invert = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
621  }
622  break;
623  case IDC_INPUTINVYAW:
624  {
625  gui->game->config.inputConfigYaw.invert = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
627  }
628  break;
630  {
631  gui->game->config.inputConfigThrustLeft.invert = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
633  }
634  break;
636  {
637  gui->game->config.inputConfigThrustRight.invert = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
639  }
640  break;
642  {
643  gui->game->config.inputConfigLeftToeBrake.invert = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
645  }
646  break;
648  {
649  gui->game->config.inputConfigRightToeBrake.invert = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
651  }
652  break;
654  {
655  gui->game->config.inputConfigThrustLeft.split = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
657  }
658  break;
660  {
661  gui->game->config.inputConfigThrustRight.split = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
663  }
664  break;
666  {
667  gui->game->config.inputConfigLeftToeBrake.split = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
669  }
670  break;
672  {
673  gui->game->config.inputConfigRightToeBrake.split = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
675  }
676  break;
677  case IDC_INPUTSPLITGAS:
678  {
679  gui->game->config.inputConfigGas.split = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
681  }
682  break;
683  case IDC_INPUTSPLITBRAKE:
684  {
685  gui->game->config.inputConfigBrake.split = cfd->HUD.GetCheckBox(nControlID)->GetChecked();
687  }
688  break;
689 
690 #pragma endregion
691 
692 #pragma region Sound
697  {
698  if (nEvent == EVENT_COMBOBOX_SELECTION_CHANGED)
699  {
700  CDXUTComboBox* cdxut_combo_box = cfd->HUD.GetComboBox(nControlID);
701  SoundConfig* modifyConfig = static_cast<SoundConfig*>(cdxut_combo_box->GetSelectedItem()->pData);
702 
703  const int selected_index = cdxut_combo_box->GetSelectedIndex();
704  modifyConfig->guid = gui->game->sound->deviceGuids.at(selected_index);
705  modifyConfig->bassDevice = selected_index;
706 
707  gui->game->sound->InitDevice(modifyConfig);
708 
709  if (nControlID != IDC_SOUNDDEVICERADIO)
710  {
711  for (int i = 0; i < SOUND_ENUMERATION; i++)
712  gui->game->sound->LoadSounds(i);
713  gui->game->sound->ChangeCockpit(false);
715  }
716  else
717  {
719  gui->game->sound->FrameMoveAAC();
720  }
721 
722  gui->game->config.Save();
723 
724  cfd->redraw = true;
725  }
726  }
727  break;
728 
729  case IDC_SOUNDPLAYINTRO:
730  gui->game->config.g_bSoundIntroMusic = cfd->HUD.GetCheckBox(IDC_SOUNDPLAYINTRO)->GetChecked();
731  gui->game->config.Save();
732 
734  BASS_ChannelStop(gui->game->sound->g_pSoundIntro);
735  break;
736 
738  gui->game->config.soundConfigLegacy.volume = 0.01f*static_cast<float>(cfd->HUD.GetSlider(nControlID)->GetValue());
740  gui->game->config.Save();
741  break;
743  gui->game->config.soundConfigComputer.volume = 0.01f*static_cast<float>(cfd->HUD.GetSlider(nControlID)->GetValue());
745  gui->game->config.Save();
746  break;
748  gui->game->config.soundConfigComms.volume = 0.01f*static_cast<float>(cfd->HUD.GetSlider(nControlID)->GetValue());
750  gui->game->config.Save();
751  break;
753  gui->game->config.soundConfigRadio.volume = 0.01f*static_cast<float>(cfd->HUD.GetSlider(nControlID)->GetValue());
755  gui->game->config.Save();
756  break;
757 #pragma endregion
758 
759  case IDC_REMEMBERLOGIN:
760  gui->game->config.g_bAutoLogin = cfd->HUD.GetCheckBox(IDC_REMEMBERLOGIN)->GetChecked();
761  gui->game->config.Save();
762  break;
763 
766  gui->game->config.g_bStartFullscreen = cfd->HUD.GetRadioButton(DXUTSETTINGSDLG_FULLSCREEN)->GetChecked();
767  gui->game->config.Save(); // save first in case it bombs!
769  break;
770 
771  case IDC_RESTOREDEFAULTS:
773  break;
774 
775  case IDC_GAMEHELPRESET:
776  for (int i = 0; i < vphelpC; i++)
777  {
778  if (gui->game->vphelp[i]) // seen
779  {
780  gui->game->vphelp[i] = false;
781  SClientPacket outpacket = SClientPacket();
782  // 41=HelpVerbiageControl, x=helpId, y=(0=remindme,1=understood,2=reset,3=disable,4=import), z=, w=
783  outpacket.type = 41;
784  outpacket.f_x = static_cast<float>(i);
785  outpacket.f_y = 2.0f;
786  outpacket.f_z = 0.0f;
787  outpacket.f_w = 0.0f;
788  gui->game->networking->SendToServer(&outpacket, sizeof(SClientPacket), true);
789  }
790  }
792  break;
793 
794  case IDC_GAMEHELPDISABLE:
795  for (int i = 0; i < vphelpC; i++)
796  {
797  if (!gui->game->vphelp[i]) // not seen
798  {
799  gui->game->vphelp[i] = true;
800  SClientPacket outpacket = SClientPacket();
801  // 41=HelpVerbiageControl, x=helpId, y=(0=remindme,1=understood,2=reset,3=disable,4=import), z=, w=
802  outpacket.type = 41;
803  outpacket.f_x = static_cast<float>(i);
804  outpacket.f_y = 3.0f;
805  outpacket.f_z = 0.0f;
806  outpacket.f_w = 0.0f;
807  gui->game->networking->SendToServer(&outpacket, sizeof(SClientPacket), true);
808  }
809  }
811  break;
812 
813  default:
814  break;
815  }
816 }
817 
819 {
820  logger->AddToCallStack("ConfigurationDialog::ActiveTab");
821  //DialogBase::ActiveTab();
822  HUD.SetFont(0, L"DejaVu Sans Mono", static_cast<long>(12.0f * gui->game->displayscale), FW_THIN);
823 
824  msgbarcolor = 0; // normal
825  msgbartext[0] = 0;
826 
827 #pragma region Interface
828  HUD.RemoveControl(IDC_RESTOREDEFAULTS);
829  HUD.RemoveControl(IDC_LANGUAGE);
830  HUD.RemoveControl(IDC_LANGUAGELABEL);
831  HUD.RemoveControl(IDC_GAMEHELPLABEL);
832  HUD.RemoveControl(IDC_GAMEHELPRESET);
833  HUD.RemoveControl(IDC_GAMEHELPDISABLE);
834  HUD.RemoveControl(IDC_SCALEMAGNIFY);
835  HUD.RemoveControl(IDC_SCALEMINIFY);
836  HUD.RemoveControl(IDC_SCALELABEL);
837  HUD.RemoveControl(IDC_KEYCARD);
838 #pragma endregion
839 
840 #pragma region Input
841  HUD.RemoveControl(IDC_INPUTHEADERCHANNEL);
842  HUD.RemoveControl(IDC_INPUTHEADERDEVICE);
843  HUD.RemoveControl(IDC_INPUTHEADERAXIS);
844  HUD.RemoveControl(IDC_INPUTHEADERVALUE);
845  HUD.RemoveControl(IDC_INPUTHEADERINV);
846  HUD.RemoveControl(IDC_INPUTHEADERSPLIT);
847  //HUD.RemoveControl(IDC_INPUTHEADERFEEDBACK);
848  HUD.RemoveControl(IDC_INPUTLABELLOOKLATERAL);
849  HUD.RemoveControl(IDC_INPUTDEVICELOOKLATERAL);
850  HUD.RemoveControl(IDC_INPUTAXISLOOKLATERAL);
851  HUD.RemoveControl(IDC_INPUTINVLOOKLATERAL);
852  //HUD.RemoveControl(IDC_INPUTFEEDBACKLOOKLATERAL);
853  HUD.RemoveControl(IDC_INPUTLABELLOOKVERTICAL);
854  HUD.RemoveControl(IDC_INPUTDEVICELOOKVERTICAL);
855  HUD.RemoveControl(IDC_INPUTAXISLOOKVERTICAL);
856  HUD.RemoveControl(IDC_INPUTINVLOOKVERTICAL);
857  //HUD.RemoveControl(IDC_INPUTFEEDBACKLOOKVERTICAL);
858  HUD.RemoveControl(IDC_INPUTLABELWALKLATERAL);
859  HUD.RemoveControl(IDC_INPUTDEVICEWALKLATERAL);
860  HUD.RemoveControl(IDC_INPUTAXISWALKLATERAL);
861  HUD.RemoveControl(IDC_INPUTINVWALKLATERAL);
862  //HUD.RemoveControl(IDC_INPUTFEEDBACKWALKLATERAL);
863  HUD.RemoveControl(IDC_INPUTLABELWALKVERTICAL);
864  HUD.RemoveControl(IDC_INPUTDEVICEWALKVERTICAL);
865  HUD.RemoveControl(IDC_INPUTAXISWALKVERTICAL);
866  HUD.RemoveControl(IDC_INPUTINVWALKVERTICAL);
867  //HUD.RemoveControl(IDC_INPUTFEEDBACKWALKVERTICAL);
868  HUD.RemoveControl(IDC_INPUTLABELSTEERING);
869  HUD.RemoveControl(IDC_INPUTDEVICESTEERING);
870  HUD.RemoveControl(IDC_INPUTAXISSTEERING);
871  HUD.RemoveControl(IDC_INPUTINVSTEERING);
872  //HUD.RemoveControl(IDC_INPUTFEEDBACKSTEERING);
873  HUD.RemoveControl(IDC_INPUTLABELGAS);
874  HUD.RemoveControl(IDC_INPUTDEVICEGAS);
875  HUD.RemoveControl(IDC_INPUTAXISGAS);
876  HUD.RemoveControl(IDC_INPUTINVGAS);
877  HUD.RemoveControl(IDC_INPUTSPLITGAS);
878  //HUD.RemoveControl(IDC_INPUTFEEDBACKGAS);
879  HUD.RemoveControl(IDC_INPUTLABELBRAKE);
880  HUD.RemoveControl(IDC_INPUTDEVICEBRAKE);
881  HUD.RemoveControl(IDC_INPUTAXISBRAKE);
882  HUD.RemoveControl(IDC_INPUTINVBRAKE);
883  HUD.RemoveControl(IDC_INPUTSPLITBRAKE);
884  //HUD.RemoveControl(IDC_INPUTFEEDBACKBRAKE);
885  HUD.RemoveControl(IDC_INPUTLABELPITCH);
886  HUD.RemoveControl(IDC_INPUTDEVICEPITCH);
887  HUD.RemoveControl(IDC_INPUTAXISPITCH);
888  HUD.RemoveControl(IDC_INPUTINVPITCH);
889  //HUD.RemoveControl(IDC_INPUTFEEDBACKPITCH);
890  HUD.RemoveControl(IDC_INPUTLABELPITCHTRIM);
891  HUD.RemoveControl(IDC_INPUTDEVICEPITCHTRIM);
892  HUD.RemoveControl(IDC_INPUTAXISPITCHTRIM);
893  HUD.RemoveControl(IDC_INPUTINVPITCHTRIM);
894  //HUD.RemoveControl(IDC_INPUTFEEDBACKPITCHTRIM);
895  HUD.RemoveControl(IDC_INPUTLABELROLL);
896  HUD.RemoveControl(IDC_INPUTDEVICEROLL);
897  HUD.RemoveControl(IDC_INPUTAXISROLL);
898  HUD.RemoveControl(IDC_INPUTINVROLL);
899  //HUD.RemoveControl(IDC_INPUTFEEDBACKROLL);
900  HUD.RemoveControl(IDC_INPUTLABELYAW);
901  HUD.RemoveControl(IDC_INPUTDEVICEYAW);
902  HUD.RemoveControl(IDC_INPUTAXISYAW);
903  HUD.RemoveControl(IDC_INPUTINVYAW);
904  //HUD.RemoveControl(IDC_INPUTFEEDBACKYAW);
905  HUD.RemoveControl(IDC_INPUTLABELTHRUSTLEFT);
906  HUD.RemoveControl(IDC_INPUTDEVICETHRUSTLEFT);
907  HUD.RemoveControl(IDC_INPUTAXISTHRUSTLEFT);
908  HUD.RemoveControl(IDC_INPUTINVTHRUSTLEFT);
909  HUD.RemoveControl(IDC_INPUTSPLITTHRUSTLEFT);
910  //HUD.RemoveControl(IDC_INPUTFEEDBACKTHRUSTLEFT);
911  HUD.RemoveControl(IDC_INPUTLABELTHRUSTRIGHT);
912  HUD.RemoveControl(IDC_INPUTDEVICETHRUSTRIGHT);
913  HUD.RemoveControl(IDC_INPUTAXISTHRUSTRIGHT);
914  HUD.RemoveControl(IDC_INPUTINVTHRUSTRIGHT);
915  HUD.RemoveControl(IDC_INPUTSPLITTHRUSTRIGHT);
916  //HUD.RemoveControl(IDC_INPUTFEEDBACKTHRUSTRIGHT);
917  HUD.RemoveControl(IDC_INPUTLABELLEFTTOEBRAKE);
918  HUD.RemoveControl(IDC_INPUTDEVICELEFTTOEBRAKE);
919  HUD.RemoveControl(IDC_INPUTAXISLEFTTOEBRAKE);
920  HUD.RemoveControl(IDC_INPUTINVLEFTTOEBRAKE);
921  HUD.RemoveControl(IDC_INPUTSPLITLEFTTOEBRAKE);
922  //HUD.RemoveControl(IDC_INPUTFEEDBACKLEFTTOEBRAKE);
923  HUD.RemoveControl(IDC_INPUTLABELRIGHTTOEBRAKE);
924  HUD.RemoveControl(IDC_INPUTDEVICERIGHTTOEBRAKE);
925  HUD.RemoveControl(IDC_INPUTAXISRIGHTTOEBRAKE);
926  HUD.RemoveControl(IDC_INPUTINVRIGHTTOEBRAKE);
927  HUD.RemoveControl(IDC_INPUTSPLITRIGHTTOEBRAKE);
928  //HUD.RemoveControl(IDC_INPUTFEEDBACKRIGHTTOEBRAKE);
929 #pragma endregion
930 
931 #pragma region Sound
932  HUD.RemoveControl(IDC_SOUNDLEGACYLABEL);
933  HUD.RemoveControl(IDC_SOUNDDEVICELEGACY);
934  HUD.RemoveControl(IDC_SOUNDPLAYINTRO);
935  HUD.RemoveControl(IDC_MASTERVOLUMELEGACY);
936  HUD.RemoveControl(IDC_SOUNDCOMPUTERLABEL);
937  HUD.RemoveControl(IDC_SOUNDDEVICECOMPUTER);
938  HUD.RemoveControl(IDC_MASTERVOLUMECOMPUTER);
939  HUD.RemoveControl(IDC_SOUNDCOMMSLABEL);
940  HUD.RemoveControl(IDC_SOUNDDEVICECOMMS);
941  HUD.RemoveControl(IDC_MASTERVOLUMECOMMS);
942  HUD.RemoveControl(IDC_SOUNDRADIOLABEL);
943  HUD.RemoveControl(IDC_SOUNDDEVICERADIO);
944  HUD.RemoveControl(IDC_MASTERVOLUMERADIO);
945 #pragma endregion
946 
947 #pragma region Account
948  HUD.RemoveControl(IDC_REMEMBERLOGIN);
949  HUD.RemoveControl(IDC_PLAYERPORTAL);
950 #pragma endregion
951 
952 #pragma region Video
953  HUD.RemoveControl(DXUTSETTINGSDLG_STATIC1);
954  HUD.RemoveControl(DXUTSETTINGSDLG_STATIC2);
955  HUD.RemoveControl(DXUTSETTINGSDLG_STATIC3);
956  HUD.RemoveControl(DXUTSETTINGSDLG_API_VERSION);
957  HUD.RemoveControl(DXUTSETTINGSDLG_ADAPTER);
958  HUD.RemoveControl(DXUTSETTINGSDLG_DEVICE_TYPE);
959  HUD.RemoveControl(DXUTSETTINGSDLG_WINDOWED);
960  HUD.RemoveControl(DXUTSETTINGSDLG_DEVICECLIP);
961  HUD.RemoveControl(DXUTSETTINGSDLG_FULLSCREEN);
963  HUD.RemoveControl(DXUTSETTINGSDLG_ADAPTER_FORMAT);
964  HUD.RemoveControl(DXUTSETTINGSDLG_RESOLUTION_LABEL);
965  HUD.RemoveControl(DXUTSETTINGSDLG_RESOLUTION);
966  // dialog[t].HUD.GetComboBox( DXUTSETTINGSDLG_RESOLUTION )->SetDropHeight( 106 );
969  HUD.RemoveControl(DXUTSETTINGSDLG_REFRESH_RATE);
973  HUD.RemoveControl(DXUTSETTINGSDLG_DEPTH_STENCIL);
975  HUD.RemoveControl(DXUTSETTINGSDLG_MULTISAMPLE_TYPE);
979  HUD.RemoveControl(DXUTSETTINGSDLG_VERTEX_PROCESSING);
981  HUD.RemoveControl(DXUTSETTINGSDLG_PRESENT_INTERVAL);
982  /* dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_D3D10_ADAPTER_OUTPUT_LABEL);
983  dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_D3D10_ADAPTER_OUTPUT);
984  dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_D3D10_RESOLUTION_LABEL);
985  dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_D3D10_RESOLUTION);
986  // dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_D3D10_RESOLUTION )->SetDropHeight( 106 );
987  dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_D3D10_REFRESH_RATE_LABEL);
988  dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_D3D10_REFRESH_RATE);
989  dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_D3D10_BACK_BUFFER_FORMAT_LABEL);
990  dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_D3D10_BACK_BUFFER_FORMAT);
991  dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_D3D10_MULTISAMPLE_COUNT_LABEL);
992  dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_D3D10_MULTISAMPLE_COUNT);
993  dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_D3D10_MULTISAMPLE_QUALITY_LABEL);
994  dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_D3D10_MULTISAMPLE_QUALITY);
995  dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_D3D10_PRESENT_INTERVAL_LABEL);
996  dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_D3D10_PRESENT_INTERVAL);
997  dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_D3D10_DEBUG_DEVICE);*/
998  // dialog[t].HUD.RemoveControl(DXUTSETTINGSDLG_OK, L"OK", 230, 440, 73, 31 );
999  // dialog[t].HUD.AddButton( DXUTSETTINGSDLG_CANCEL, L"Cancel", 315, 440, 73, 31, 0, true );
1000 #pragma endregion
1001 
1002  int xLabel = static_cast<int>(16.0f * gui->game->displayscale);
1003  const int lineHeight = static_cast<int>(24.0f * gui->game->displayscale);
1004 
1005  switch (tabusedefaultlang[activetab])
1006  {
1007  case L_TAB_INTERFACE:
1008  {
1009  HUD.AddStatic(IDC_LANGUAGELABEL, gui->strings[L_CONFIG_LANGUAGE].c_str(), static_cast<int>(16.0f * gui->game->displayscale), static_cast<int>(24.0f * gui->game->displayscale), static_cast<int>(192.0f * gui->game->displayscale), static_cast<int>(24.0f * gui->game->displayscale));
1010 
1011  HUD.AddComboBox(IDC_LANGUAGE, static_cast<int>(16.0f * gui->game->displayscale), static_cast<int>(48.0f * gui->game->displayscale), static_cast<int>(192.0f * gui->game->displayscale), static_cast<int>(24.0f * gui->game->displayscale));
1013 
1014  HUD.AddButton(IDC_RESTOREDEFAULTS, gui->strings[L_BUTTON_RESTOREDEFAULTS].c_str(), static_cast<int>(16.0f * gui->game->displayscale), static_cast<int>(96.0f * gui->game->displayscale), static_cast<int>(192.0f * gui->game->displayscale), static_cast<int>(24.0f * gui->game->displayscale), 0, false);
1015  if (!gui->eastasian)
1016  {
1017  msgbarcolor = 2; // amber
1019  }
1020  else
1021  {
1022  msgbarcolor = 0;
1023  msgbartext[0] = 0;
1024  }
1025 
1026  HUD.AddStatic(IDC_GAMEHELPLABEL, gui->strings[L_CONFIG_GAMEHELP].c_str(), static_cast<int>(16.0f * gui->game->displayscale), static_cast<int>(144.0f * gui->game->displayscale), static_cast<int>(192.0f * gui->game->displayscale), static_cast<int>(24.0f * gui->game->displayscale));
1027  HUD.AddButton(IDC_GAMEHELPRESET, gui->strings[L_CONFIG_RESET].c_str(), static_cast<int>(16.0f * gui->game->displayscale), static_cast<int>(168.0f * gui->game->displayscale), static_cast<int>(192.0f * gui->game->displayscale), static_cast<int>(24.0f * gui->game->displayscale), 0, false);
1028  HUD.AddButton(IDC_GAMEHELPDISABLE, gui->strings[L_CONFIG_DISABLE].c_str(), static_cast<int>(16.0f * gui->game->displayscale), static_cast<int>(192.0f * gui->game->displayscale), static_cast<int>(192.0f * gui->game->displayscale), static_cast<int>(24.0f * gui->game->displayscale), 0, false);
1029  HUD.AddStatic(IDC_SCALELABEL, gui->strings[L_CONFIG_FONTANDSCALE].c_str(), static_cast<int>(16.0f * gui->game->displayscale), static_cast<int>(240.0f * gui->game->displayscale), static_cast<int>(192.0f * gui->game->displayscale), static_cast<int>(24.0f * gui->game->displayscale));
1030  HUD.AddButton(IDC_SCALEMINIFY, gui->strings[L_CONFIG_MINIFY].c_str(), static_cast<int>(16.0f * gui->game->displayscale), static_cast<int>(264.0f * gui->game->displayscale), static_cast<int>(92.0f * gui->game->displayscale), static_cast<int>(24.0f * gui->game->displayscale), 0, false);
1031  HUD.AddButton(IDC_SCALEMAGNIFY, gui->strings[L_CONFIG_MAGNIFY].c_str(), static_cast<int>(112.0f * gui->game->displayscale), static_cast<int>(264.0f * gui->game->displayscale), static_cast<int>(92.0f * gui->game->displayscale), static_cast<int>(24.0f * gui->game->displayscale), 0, false);
1032 
1033  HUD.AddButton(IDC_KEYCARD, gui->strings[L_CAPTION_VIEWKEYCARD].c_str(), static_cast<int>(300.0f * gui->game->displayscale), static_cast<int>(42.0f * gui->game->displayscale), static_cast<int>(192.0f * gui->game->displayscale), static_cast<int>(32.0f * gui->game->displayscale), 0, false);
1034  }
1035  break;
1036 
1037  case L_TAB_INPUT:
1038  {
1039  const int xDevice = static_cast<int>(94.0f * gui->game->displayscale);
1040  const int widthDevice = static_cast<int>(286.0f * gui->game->displayscale);
1041  const int xInv = static_cast<int>(550.0f * gui->game->displayscale);
1042  const int xSplit = static_cast<int>(600.0f * gui->game->displayscale);
1043  const int widthCheckboxes = static_cast<int>(50.0f * gui->game->displayscale);
1044  float y = 8.0f * gui->game->displayscale;
1045  xLabel = static_cast<int>(10.0f * gui->game->displayscale);
1046  const float labelOffsetY = 4.0f * gui->game->displayscale;
1047 
1048  HUD.AddStatic(IDC_INPUTHEADERCHANNEL, gui->strings[L_CONFIG_CHANNEL].c_str(), xLabel, static_cast<int>(y), widthDevice, lineHeight);
1049  HUD.GetStatic(IDC_INPUTHEADERCHANNEL)->GetElement(0)->dwTextFormat = DT_LEFT;
1050  HUD.AddStatic(IDC_INPUTHEADERDEVICE, gui->strings[L_CONFIG_DEVICE].c_str(), xDevice, static_cast<int>(y), widthDevice, lineHeight);
1051  HUD.GetStatic(IDC_INPUTHEADERDEVICE)->GetElement(0)->dwTextFormat = DT_LEFT;
1052  HUD.AddStatic(IDC_INPUTHEADERAXIS, gui->strings[L_CONFIG_AXIS].c_str(), static_cast<int>(384.0f * gui->game->displayscale), static_cast<int>(y), widthDevice, lineHeight);
1053  HUD.GetStatic(IDC_INPUTHEADERAXIS)->GetElement(0)->dwTextFormat = DT_LEFT;
1054  HUD.AddStatic(IDC_INPUTHEADERVALUE, gui->strings[L_CONFIG_VALUE].c_str(), static_cast<int>(500.0f * gui->game->displayscale), static_cast<int>(y), widthDevice, lineHeight);
1055  HUD.GetStatic(IDC_INPUTHEADERVALUE)->GetElement(0)->dwTextFormat = DT_LEFT;
1056  HUD.AddStatic(IDC_INPUTHEADERINV, gui->strings[L_CONFIG_INVERT].c_str(), xInv, static_cast<int>(y), widthCheckboxes, lineHeight);
1057  HUD.GetStatic(IDC_INPUTHEADERINV)->GetElement(0)->dwTextFormat = DT_LEFT;
1058  HUD.AddStatic(IDC_INPUTHEADERSPLIT, gui->strings[L_CONFIG_SPLIT].c_str(), xSplit, static_cast<int>(y), widthCheckboxes, lineHeight);
1059  HUD.GetStatic(IDC_INPUTHEADERSPLIT)->GetElement(0)->dwTextFormat = DT_LEFT;
1060  y += 24.0f * gui->game->displayscale;
1061 
1062  HUD.AddStatic(IDC_INPUTLABELLOOKLATERAL, gui->strings[L_CONFIG_LOOKLATERAL].c_str(), xLabel, static_cast<int>(y + labelOffsetY), widthDevice, lineHeight);
1063  HUD.GetStatic(IDC_INPUTLABELLOOKLATERAL)->GetElement(0)->dwTextFormat = DT_LEFT;
1064  HUD.AddComboBox(IDC_INPUTDEVICELOOKLATERAL, xDevice, static_cast<int>(y), widthDevice, lineHeight);
1066  HUD.AddCheckBox(IDC_INPUTINVLOOKLATERAL, nullptr, xInv, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigLookLateral.invert);
1067  y += 32.0f * gui->game->displayscale;
1068 
1069  HUD.AddStatic(IDC_INPUTLABELLOOKVERTICAL, gui->strings[L_CONFIG_LOOKVERTICAL].c_str(), xLabel, static_cast<int>(y + labelOffsetY), widthDevice, lineHeight);
1070  HUD.GetStatic(IDC_INPUTLABELLOOKVERTICAL)->GetElement(0)->dwTextFormat = DT_LEFT;
1071  HUD.AddComboBox(IDC_INPUTDEVICELOOKVERTICAL, xDevice, static_cast<int>(y), widthDevice, lineHeight);
1073  HUD.AddCheckBox(IDC_INPUTINVLOOKVERTICAL, nullptr, xInv, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigLookVertical.invert);
1074  y += 32.0f * gui->game->displayscale;
1075 
1076  HUD.AddStatic(IDC_INPUTLABELWALKLATERAL, gui->strings[L_CONFIG_WALKLATERAL].c_str(), xLabel, static_cast<int>(y + labelOffsetY), widthDevice, lineHeight);
1077  HUD.GetStatic(IDC_INPUTLABELWALKLATERAL)->GetElement(0)->dwTextFormat = DT_LEFT;
1078  HUD.AddComboBox(IDC_INPUTDEVICEWALKLATERAL, xDevice, static_cast<int>(y), widthDevice, lineHeight);
1080  HUD.AddCheckBox(IDC_INPUTINVWALKLATERAL, nullptr, xInv, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigWalkLateral.invert);
1081  y += 32.0f * gui->game->displayscale;
1082 
1083  HUD.AddStatic(IDC_INPUTLABELWALKVERTICAL, gui->strings[L_CONFIG_WALKVERTICAL].c_str(), xLabel, static_cast<int>(y + labelOffsetY), widthDevice, lineHeight);
1084  HUD.GetStatic(IDC_INPUTLABELWALKVERTICAL)->GetElement(0)->dwTextFormat = DT_LEFT;
1085  HUD.AddComboBox(IDC_INPUTDEVICEWALKVERTICAL, xDevice, static_cast<int>(y), widthDevice, lineHeight);
1087  HUD.AddCheckBox(IDC_INPUTINVWALKVERTICAL, nullptr, xInv, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigWalkVertical.invert);
1088  y += 32.0f * gui->game->displayscale;
1089 
1090  HUD.AddStatic(IDC_INPUTLABELSTEERING, gui->strings[L_CONFIG_STEERING].c_str(), xLabel, static_cast<int>(y + labelOffsetY), widthDevice, lineHeight);
1091  HUD.GetStatic(IDC_INPUTLABELSTEERING)->GetElement(0)->dwTextFormat = DT_LEFT;
1092  HUD.AddComboBox(IDC_INPUTDEVICESTEERING, xDevice, static_cast<int>(y), widthDevice, lineHeight);
1094  HUD.AddCheckBox(IDC_INPUTINVSTEERING, nullptr, xInv, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigSteer.invert);
1095  y += 32.0f * gui->game->displayscale;
1096 
1097  HUD.AddStatic(IDC_INPUTLABELGAS, gui->strings[L_CONFIG_ACCELERATOR].c_str(), xLabel, static_cast<int>(y + labelOffsetY), widthDevice, lineHeight);
1098  HUD.GetStatic(IDC_INPUTLABELGAS)->GetElement(0)->dwTextFormat = DT_LEFT;
1099  HUD.AddComboBox(IDC_INPUTDEVICEGAS, xDevice, static_cast<int>(y), widthDevice, lineHeight);
1101  HUD.AddCheckBox(IDC_INPUTINVGAS, nullptr, xInv, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigGas.invert);
1102  HUD.GetCheckBox(IDC_INPUTINVGAS)->SetEnabled(gui->game->config.inputConfigGas.g_pJoystick);
1103  HUD.AddCheckBox(IDC_INPUTSPLITGAS, nullptr, xSplit, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigGas.split);
1104  HUD.GetCheckBox(IDC_INPUTSPLITGAS)->SetEnabled(gui->game->config.inputConfigGas.g_pJoystick);
1105  y += 32.0f * gui->game->displayscale;
1106 
1107  HUD.AddStatic(IDC_INPUTLABELBRAKE, gui->strings[L_CONFIG_BRAKE].c_str(), xLabel, static_cast<int>(y + labelOffsetY), widthDevice, lineHeight);
1108  HUD.GetStatic(IDC_INPUTLABELBRAKE)->GetElement(0)->dwTextFormat = DT_LEFT;
1109  HUD.AddComboBox(IDC_INPUTDEVICEBRAKE, xDevice, static_cast<int>(y), widthDevice, lineHeight);
1111  HUD.AddCheckBox(IDC_INPUTINVBRAKE, nullptr, xInv, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigBrake.invert);
1112  HUD.GetCheckBox(IDC_INPUTINVBRAKE)->SetEnabled(gui->game->config.inputConfigBrake.g_pJoystick);
1113  HUD.AddCheckBox(IDC_INPUTSPLITBRAKE, nullptr, xSplit, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigBrake.split);
1114  HUD.GetCheckBox(IDC_INPUTSPLITBRAKE)->SetEnabled(gui->game->config.inputConfigBrake.g_pJoystick);
1115  y += 32.0f * gui->game->displayscale;
1116 
1117  HUD.AddStatic(IDC_INPUTLABELPITCH, gui->strings[L_CONFIG_PITCH].c_str(), xLabel, static_cast<int>(y + labelOffsetY), widthDevice, lineHeight);
1118  HUD.GetStatic(IDC_INPUTLABELPITCH)->GetElement(0)->dwTextFormat = DT_LEFT;
1119  HUD.AddComboBox(IDC_INPUTDEVICEPITCH, xDevice, static_cast<int>(y), widthDevice, lineHeight);
1121  HUD.AddCheckBox(IDC_INPUTINVPITCH, nullptr, xInv, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigPitch.invert);
1122  y += 32.0f * gui->game->displayscale;
1123 
1124  HUD.AddStatic(IDC_INPUTLABELPITCHTRIM, gui->strings[L_CONFIG_PITCHTRIM].c_str(), xLabel, static_cast<int>(y + labelOffsetY), widthDevice, lineHeight);
1125  HUD.GetStatic(IDC_INPUTLABELPITCHTRIM)->GetElement(0)->dwTextFormat = DT_LEFT;
1126  HUD.AddComboBox(IDC_INPUTDEVICEPITCHTRIM, xDevice, static_cast<int>(y), widthDevice, lineHeight);
1128  HUD.AddCheckBox(IDC_INPUTINVPITCHTRIM, nullptr, xInv, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigPitchTrim.invert);
1129  y += 32.0f * gui->game->displayscale;
1130 
1131  HUD.AddStatic(IDC_INPUTLABELROLL, gui->strings[L_CONFIG_ROLL].c_str(), xLabel, static_cast<int>(y + labelOffsetY), widthDevice, lineHeight);
1132  HUD.GetStatic(IDC_INPUTLABELROLL)->GetElement(0)->dwTextFormat = DT_LEFT;
1133  HUD.AddComboBox(IDC_INPUTDEVICEROLL, xDevice, static_cast<int>(y), widthDevice, lineHeight);
1135  HUD.AddCheckBox(IDC_INPUTINVROLL, nullptr, xInv, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigRoll.invert);
1136  y += 32.0f * gui->game->displayscale;
1137 
1138  HUD.AddStatic(IDC_INPUTLABELYAW, gui->strings[L_CONFIG_YAW].c_str(), xLabel, static_cast<int>(y + labelOffsetY), widthDevice, lineHeight);
1139  HUD.GetStatic(IDC_INPUTLABELYAW)->GetElement(0)->dwTextFormat = DT_LEFT;
1140  HUD.AddComboBox(IDC_INPUTDEVICEYAW, xDevice, static_cast<int>(y), widthDevice, lineHeight);
1142  HUD.AddCheckBox(IDC_INPUTINVYAW, nullptr, xInv, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigYaw.invert);
1143  y += 32.0f * gui->game->displayscale;
1144 
1145  HUD.AddStatic(IDC_INPUTLABELTHRUSTLEFT, gui->strings[L_CONFIG_LEFTTHRUST].c_str(), xLabel, static_cast<int>(y + labelOffsetY), widthDevice, lineHeight);
1146  HUD.GetStatic(IDC_INPUTLABELTHRUSTLEFT)->GetElement(0)->dwTextFormat = DT_LEFT;
1147  HUD.AddComboBox(IDC_INPUTDEVICETHRUSTLEFT, xDevice, static_cast<int>(y), widthDevice, lineHeight);
1149  HUD.AddCheckBox(IDC_INPUTINVTHRUSTLEFT, nullptr, xInv, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigThrustLeft.invert);
1151  HUD.AddCheckBox(IDC_INPUTSPLITTHRUSTLEFT, nullptr, xSplit, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigThrustLeft.split);
1153  y += 32.0f * gui->game->displayscale;
1154 
1155  HUD.AddStatic(IDC_INPUTLABELTHRUSTRIGHT, gui->strings[L_CONFIG_RIGHTTHRUST].c_str(), xLabel, static_cast<int>(y + labelOffsetY), widthDevice, lineHeight);
1156  HUD.GetStatic(IDC_INPUTLABELTHRUSTRIGHT)->GetElement(0)->dwTextFormat = DT_LEFT;
1157  HUD.AddComboBox(IDC_INPUTDEVICETHRUSTRIGHT, xDevice, static_cast<int>(y), widthDevice, lineHeight);
1159  HUD.AddCheckBox(IDC_INPUTINVTHRUSTRIGHT, nullptr, xInv, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigThrustRight.invert);
1161  HUD.AddCheckBox(IDC_INPUTSPLITTHRUSTRIGHT, nullptr, xSplit, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigThrustRight.split);
1163  y += 32.0f * gui->game->displayscale;
1164 
1165  HUD.AddStatic(IDC_INPUTLABELLEFTTOEBRAKE, gui->strings[L_CONFIG_LEFTBRAKE].c_str(), xLabel, static_cast<int>(y + labelOffsetY), widthDevice, lineHeight);
1166  HUD.GetStatic(IDC_INPUTLABELLEFTTOEBRAKE)->GetElement(0)->dwTextFormat = DT_LEFT;
1167  HUD.AddComboBox(IDC_INPUTDEVICELEFTTOEBRAKE, xDevice, static_cast<int>(y), widthDevice, lineHeight);
1169  HUD.AddCheckBox(IDC_INPUTINVLEFTTOEBRAKE, nullptr, xInv, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigLeftToeBrake.invert);
1171  HUD.AddCheckBox(IDC_INPUTSPLITLEFTTOEBRAKE, nullptr, xSplit, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigLeftToeBrake.split);
1173  y += 32.0f * gui->game->displayscale;
1174 
1175  HUD.AddStatic(IDC_INPUTLABELRIGHTTOEBRAKE, gui->strings[L_CONFIG_RIGHTBRAKE].c_str(), xLabel, static_cast<int>(y + labelOffsetY), widthDevice, lineHeight);
1176  HUD.GetStatic(IDC_INPUTLABELRIGHTTOEBRAKE)->GetElement(0)->dwTextFormat = DT_LEFT;
1177  HUD.AddComboBox(IDC_INPUTDEVICERIGHTTOEBRAKE, xDevice, static_cast<int>(y), widthDevice, lineHeight);
1179  HUD.AddCheckBox(IDC_INPUTINVRIGHTTOEBRAKE, nullptr, xInv, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigRightToeBrake.invert);
1181  HUD.AddCheckBox(IDC_INPUTSPLITRIGHTTOEBRAKE, nullptr, xSplit, static_cast<int>(y), widthCheckboxes, static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.inputConfigRightToeBrake.split);
1183  y += 32.0f * gui->game->displayscale;
1184 
1185 
1187  HUD.GetComboBox(IDC_INPUTDEVICELOOKLATERAL)->SetSelectedByIndex(0);
1189  HUD.GetComboBox(IDC_INPUTDEVICELOOKVERTICAL)->SetSelectedByIndex(0);
1191  HUD.GetComboBox(IDC_INPUTDEVICEWALKLATERAL)->SetSelectedByIndex(0);
1193  HUD.GetComboBox(IDC_INPUTDEVICEWALKVERTICAL)->SetSelectedByIndex(0);
1195  HUD.GetComboBox(IDC_INPUTDEVICESTEERING)->SetSelectedByIndex(0);
1196  HUD.GetComboBox(IDC_INPUTDEVICEGAS)->AddItem(gui->strings[L_CONFIG_KEYBOARD].c_str(), &gui->game->config.inputConfigGas);
1197  HUD.GetComboBox(IDC_INPUTDEVICEGAS)->SetSelectedByIndex(0);
1198  HUD.GetComboBox(IDC_INPUTDEVICEBRAKE)->AddItem(gui->strings[L_CONFIG_KEYBOARD].c_str(), &gui->game->config.inputConfigBrake);
1199  HUD.GetComboBox(IDC_INPUTDEVICEBRAKE)->SetSelectedByIndex(0);
1200  HUD.GetComboBox(IDC_INPUTDEVICEPITCH)->AddItem(gui->strings[L_CONFIG_KEYBOARD].c_str(), &gui->game->config.inputConfigPitch);
1201  HUD.GetComboBox(IDC_INPUTDEVICEPITCH)->SetSelectedByIndex(0);
1203  HUD.GetComboBox(IDC_INPUTDEVICEPITCHTRIM)->SetSelectedByIndex(0);
1204  HUD.GetComboBox(IDC_INPUTDEVICEROLL)->AddItem(gui->strings[L_CONFIG_KEYBOARD].c_str(), &gui->game->config.inputConfigRoll);
1205  HUD.GetComboBox(IDC_INPUTDEVICEROLL)->SetSelectedByIndex(0);
1206  HUD.GetComboBox(IDC_INPUTDEVICEYAW)->AddItem(gui->strings[L_CONFIG_KEYBOARD].c_str(), &gui->game->config.inputConfigYaw);
1207  HUD.GetComboBox(IDC_INPUTDEVICEYAW)->SetSelectedByIndex(0);
1209  HUD.GetComboBox(IDC_INPUTDEVICETHRUSTLEFT)->SetSelectedByIndex(0);
1211  HUD.GetComboBox(IDC_INPUTDEVICETHRUSTRIGHT)->SetSelectedByIndex(0);
1213  HUD.GetComboBox(IDC_INPUTDEVICELEFTTOEBRAKE)->SetSelectedByIndex(0);
1215  HUD.GetComboBox(IDC_INPUTDEVICERIGHTTOEBRAKE)->SetSelectedByIndex(0);
1216  for (UINT i = 0; i < gui->game->viewscreen->ptrJoystick->deviceList.size(); i++)
1217  {
1218  const DIDEVICEINSTANCE device = gui->game->viewscreen->ptrJoystick->deviceList.at(i);
1219  HUD.GetComboBox(IDC_INPUTDEVICELOOKLATERAL)->AddItem(device.tszInstanceName, &gui->game->config.inputConfigLookLateral);
1220  if (gui->game->config.inputConfigLookLateral.guid == device.guidInstance)
1221  HUD.GetComboBox(IDC_INPUTDEVICELOOKLATERAL)->SetSelectedByIndex(i + 1);
1222  HUD.GetComboBox(IDC_INPUTDEVICELOOKVERTICAL)->AddItem(device.tszInstanceName, &gui->game->config.inputConfigLookVertical);
1223  if (gui->game->config.inputConfigLookVertical.guid == device.guidInstance)
1224  HUD.GetComboBox(IDC_INPUTDEVICELOOKVERTICAL)->SetSelectedByIndex(i + 1);
1225  HUD.GetComboBox(IDC_INPUTDEVICEWALKLATERAL)->AddItem(device.tszInstanceName, &gui->game->config.inputConfigWalkLateral);
1226  if (gui->game->config.inputConfigWalkLateral.guid == device.guidInstance)
1227  HUD.GetComboBox(IDC_INPUTDEVICEWALKLATERAL)->SetSelectedByIndex(i + 1);
1228  HUD.GetComboBox(IDC_INPUTDEVICEWALKVERTICAL)->AddItem(device.tszInstanceName, &gui->game->config.inputConfigWalkVertical);
1229  if (gui->game->config.inputConfigWalkVertical.guid == device.guidInstance)
1230  HUD.GetComboBox(IDC_INPUTDEVICEWALKVERTICAL)->SetSelectedByIndex(i + 1);
1231  HUD.GetComboBox(IDC_INPUTDEVICESTEERING)->AddItem(device.tszInstanceName, &gui->game->config.inputConfigSteer);
1232  if (gui->game->config.inputConfigSteer.guid == device.guidInstance)
1233  HUD.GetComboBox(IDC_INPUTDEVICESTEERING)->SetSelectedByIndex(i + 1);
1234  HUD.GetComboBox(IDC_INPUTDEVICEGAS)->AddItem(device.tszInstanceName, &gui->game->config.inputConfigGas);
1235  if (gui->game->config.inputConfigGas.guid == device.guidInstance)
1236  HUD.GetComboBox(IDC_INPUTDEVICEGAS)->SetSelectedByIndex(i + 1);
1237  HUD.GetComboBox(IDC_INPUTDEVICEBRAKE)->AddItem(device.tszInstanceName, &gui->game->config.inputConfigBrake);
1238  if (gui->game->config.inputConfigBrake.guid == device.guidInstance)
1239  HUD.GetComboBox(IDC_INPUTDEVICEBRAKE)->SetSelectedByIndex(i + 1);
1240  HUD.GetComboBox(IDC_INPUTDEVICEPITCH)->AddItem(device.tszInstanceName, &gui->game->config.inputConfigPitch);
1241  if (gui->game->config.inputConfigPitch.guid == device.guidInstance)
1242  HUD.GetComboBox(IDC_INPUTDEVICEPITCH)->SetSelectedByIndex(i + 1);
1243  HUD.GetComboBox(IDC_INPUTDEVICEPITCHTRIM)->AddItem(device.tszInstanceName, &gui->game->config.inputConfigPitchTrim);
1244  if (gui->game->config.inputConfigPitchTrim.guid == device.guidInstance)
1245  HUD.GetComboBox(IDC_INPUTDEVICEPITCHTRIM)->SetSelectedByIndex(i + 1);
1246  HUD.GetComboBox(IDC_INPUTDEVICEROLL)->AddItem(device.tszInstanceName, &gui->game->config.inputConfigRoll);
1247  if (gui->game->config.inputConfigRoll.guid == device.guidInstance)
1248  HUD.GetComboBox(IDC_INPUTDEVICEROLL)->SetSelectedByIndex(i + 1);
1249  HUD.GetComboBox(IDC_INPUTDEVICEYAW)->AddItem(device.tszInstanceName, &gui->game->config.inputConfigYaw);
1250  if (gui->game->config.inputConfigYaw.guid == device.guidInstance)
1251  HUD.GetComboBox(IDC_INPUTDEVICEYAW)->SetSelectedByIndex(i + 1);
1252  HUD.GetComboBox(IDC_INPUTDEVICETHRUSTLEFT)->AddItem(device.tszInstanceName, &gui->game->config.inputConfigThrustLeft);
1253  if (gui->game->config.inputConfigThrustLeft.guid == device.guidInstance)
1254  HUD.GetComboBox(IDC_INPUTDEVICETHRUSTLEFT)->SetSelectedByIndex(i + 1);
1255  HUD.GetComboBox(IDC_INPUTDEVICETHRUSTRIGHT)->AddItem(device.tszInstanceName, &gui->game->config.inputConfigThrustRight);
1256  if (gui->game->config.inputConfigThrustRight.guid == device.guidInstance)
1257  HUD.GetComboBox(IDC_INPUTDEVICETHRUSTRIGHT)->SetSelectedByIndex(i + 1);
1258  HUD.GetComboBox(IDC_INPUTDEVICELEFTTOEBRAKE)->AddItem(device.tszInstanceName, &gui->game->config.inputConfigLeftToeBrake);
1259  if (gui->game->config.inputConfigLeftToeBrake.guid == device.guidInstance)
1260  HUD.GetComboBox(IDC_INPUTDEVICELEFTTOEBRAKE)->SetSelectedByIndex(i + 1);
1261  HUD.GetComboBox(IDC_INPUTDEVICERIGHTTOEBRAKE)->AddItem(device.tszInstanceName, &gui->game->config.inputConfigRightToeBrake);
1262  if (gui->game->config.inputConfigRightToeBrake.guid == device.guidInstance)
1263  HUD.GetComboBox(IDC_INPUTDEVICERIGHTTOEBRAKE)->SetSelectedByIndex(i + 1);
1264  }
1265  }
1266  break;
1267 
1268  case L_TAB_VIDEO:
1269  {
1270  //const int x = static_cast<int>(10.0f * gui->game->displayscalex);
1271 
1273  //const int height = static_cast<int>(23.0f * gui->game->displayscaley);
1274 
1276  //HUD.AddStatic(DXUTSETTINGSDLG_STATIC1, L"API Version", x, static_cast<int>(2.0f * gui->game->displayscaley), static_cast<int>(180.0f * gui->game->displayscalex), height);
1277  //HUD.AddComboBox(DXUTSETTINGSDLG_API_VERSION, static_cast<int>(200.0f * gui->game->displayscalex), static_cast<int>(2.0f * gui->game->displayscaley), static_cast<int>(300.0f * gui->game->displayscalex), height);
1278 
1280  //HUD.AddStatic(DXUTSETTINGSDLG_STATIC2, L"Display Adapter", x, 27 * gui->game->displayscaley, 180 * gui->game->displayscalex, height);
1281  //HUD.AddComboBox(DXUTSETTINGSDLG_ADAPTER, 200 * gui->game->displayscalex, 27 * gui->game->displayscaley, 300 * gui->game->displayscalex, height);
1282 
1284  //HUD.AddStatic(DXUTSETTINGSDLG_STATIC3, L"Render Device", x, 52 * gui->game->displayscaley, 180 * gui->game->displayscalex, height);
1285  //HUD.AddComboBox(DXUTSETTINGSDLG_DEVICE_TYPE, 200 * gui->game->displayscalex, 52 * gui->game->displayscaley, 300 * gui->game->displayscalex, height);
1286 
1287  // DXUTSETTINGSDLG_WINDOWED, DXUTSETTINGSDLG_FULLSCREEN
1288  HUD.AddRadioButton(DXUTSETTINGSDLG_WINDOWED, DXUTSETTINGSDLG_WINDOWED_GROUP, gui->strings[L_CONFIG_WINDOWED].c_str(), (int)(240.0f * gui->game->displayscale), (int)(79.0f * gui->game->displayscale), (int)(300.0f * gui->game->displayscale), (int)(16.0f * gui->game->displayscale), !gui->game->config.g_bStartFullscreen);
1289  //HUD.AddCheckBox(DXUTSETTINGSDLG_DEVICECLIP, L"Clip to device when window spans across multiple monitors", 250 * gui->game->displayscalex, 100 * gui->game->displayscaley, 400 * gui->game->displayscalex, 16 * gui->game->displayscaley);
1290  //HUD.GetCheckBox(DXUTSETTINGSDLG_DEVICECLIP)->SetEnabled(false);
1291  HUD.AddRadioButton(DXUTSETTINGSDLG_FULLSCREEN, DXUTSETTINGSDLG_WINDOWED_GROUP, gui->strings[L_CONFIG_FULLSCREEN].c_str(), (int)(240.0f * gui->game->displayscale), (int)(121.0f * gui->game->displayscale), (int)(300.0f * gui->game->displayscale), (int)(16.0f * gui->game->displayscale), gui->game->config.g_bStartFullscreen);
1292 
1294  //HUD.AddStatic(DXUTSETTINGSDLG_ADAPTER_FORMAT_LABEL, L"Adapter Format", x, 139 * gui->game->displayscaley, 180 * gui->game->displayscalex, height);
1295  //HUD.AddComboBox(DXUTSETTINGSDLG_ADAPTER_FORMAT, 200 * gui->game->displayscalex, 139 * gui->game->displayscaley, 300 * gui->game->displayscalex, height);
1296 
1298  //HUD.AddStatic(DXUTSETTINGSDLG_RESOLUTION_LABEL, L"Resolution", x, 164 * gui->game->displayscaley, 180 * gui->game->displayscalex, height);
1299  //HUD.AddComboBox(DXUTSETTINGSDLG_RESOLUTION, 200 * gui->game->displayscalex, 164 * gui->game->displayscaley, 200 * gui->game->displayscalex, height);
1300  //HUD.GetComboBox(DXUTSETTINGSDLG_RESOLUTION)->SetDropHeight(static_cast<UINT>(106.0f * gui->game->displayscaley));
1301 
1303  //HUD.AddCheckBox(DXUTSETTINGSDLG_RESOLUTION_SHOW_ALL, L"Show All Aspect Ratios", 420 * gui->game->displayscalex, 164 * gui->game->displayscaley, 200 * gui->game->displayscalex, height, false);
1304 
1306  //HUD.AddStatic(DXUTSETTINGSDLG_REFRESH_RATE_LABEL, L"Refresh Rate", x, 189 * gui->game->displayscaley, 180 * gui->game->displayscalex, height);
1307  //HUD.AddComboBox(DXUTSETTINGSDLG_REFRESH_RATE, 200 * gui->game->displayscalex, 189 * gui->game->displayscaley, 300 * gui->game->displayscalex, height);
1308 
1310  //HUD.AddStatic(DXUTSETTINGSDLG_BACK_BUFFER_FORMAT_LABEL, L"Back Buffer Format", x, 224 * gui->game->displayscaley, 180 * gui->game->displayscalex, height);
1311  //HUD.AddComboBox(DXUTSETTINGSDLG_BACK_BUFFER_FORMAT, 200 * gui->game->displayscalex, 224 * gui->game->displayscaley, 300 * gui->game->displayscalex, height);
1312 
1314  //HUD.AddStatic(DXUTSETTINGSDLG_DEPTH_STENCIL_LABEL, L"Depth/Stencil Format", x, 249 * gui->game->displayscaley, 180 * gui->game->displayscalex, height);
1315  //HUD.AddComboBox(DXUTSETTINGSDLG_DEPTH_STENCIL, 200 * gui->game->displayscalex, 249 * gui->game->displayscaley, 300 * gui->game->displayscalex, height);
1316 
1318  //HUD.AddStatic(DXUTSETTINGSDLG_MULTISAMPLE_TYPE_LABEL, L"Multisample Type", x, 274 * gui->game->displayscaley, 180 * gui->game->displayscalex, height);
1319  //HUD.AddComboBox(DXUTSETTINGSDLG_MULTISAMPLE_TYPE, 200 * gui->game->displayscalex, 274 * gui->game->displayscaley, 300 * gui->game->displayscalex, height);
1320 
1322  //HUD.AddStatic(DXUTSETTINGSDLG_MULTISAMPLE_QUALITY_LABEL, L"Multisample Quality", x, 309 * gui->game->displayscaley, 180 * gui->game->displayscalex, height);
1323  //HUD.AddComboBox(DXUTSETTINGSDLG_MULTISAMPLE_QUALITY, 200 * gui->game->displayscalex, 309 * gui->game->displayscaley, 300 * gui->game->displayscalex, height);
1324 
1326  //HUD.AddStatic(DXUTSETTINGSDLG_VERTEX_PROCESSING_LABEL, L"Vertex Processing", x, 334 * gui->game->displayscaley, 180 * gui->game->displayscalex, height);
1327  //HUD.AddComboBox(DXUTSETTINGSDLG_VERTEX_PROCESSING, 200 * gui->game->displayscalex, 334 * gui->game->displayscaley, 300 * gui->game->displayscalex, height);
1328 
1330  //HUD.AddStatic(DXUTSETTINGSDLG_PRESENT_INTERVAL_LABEL, L"Vertical Sync", x, 359 * gui->game->displayscaley, 180 * gui->game->displayscalex, height);
1331  //HUD.AddComboBox(DXUTSETTINGSDLG_PRESENT_INTERVAL, 200 * gui->game->displayscalex, 359 * gui->game->displayscaley, 300 * gui->game->displayscalex, height);
1332  }
1333  break;
1334 
1335  case L_TAB_SOUND:
1336  {
1337  float y = 12.0f * gui->game->displayscale;
1338 
1339  HUD.AddStatic(IDC_SOUNDLEGACYLABEL, gui->strings[L_CONFIG_DEFAULT].c_str(), xLabel, static_cast<int>(y), static_cast<int>(400.0f * gui->game->displayscale), lineHeight);
1340  HUD.GetStatic(IDC_SOUNDLEGACYLABEL)->GetElement(0)->dwTextFormat = DT_LEFT;
1341  y += lineHeight;
1342  HUD.AddComboBox(IDC_SOUNDDEVICELEGACY, xLabel, static_cast<int>(y), static_cast<int>(400.0f * gui->game->displayscale), lineHeight);
1343  HUD.AddCheckBox(IDC_SOUNDPLAYINTRO, gui->strings[L_CONFIG_MUSIC].c_str(), static_cast<int>(448.0f * gui->game->displayscale), static_cast<int>(y), static_cast<int>(150.0f * gui->game->displayscale), lineHeight, gui->game->config.g_bSoundIntroMusic);
1344  y += lineHeight;
1345  HUD.AddSlider(IDC_MASTERVOLUMELEGACY, static_cast<int>(24.0f* gui->game->displayscale), static_cast<int>(y), static_cast<int>(175.0f* gui->game->displayscale), lineHeight, 0, 100, static_cast<int>(gui->game->config.soundConfigLegacy.volume * 100.0f));
1346  y += 36 * gui->game->displayscale;
1347 
1348  HUD.AddStatic(IDC_SOUNDCOMPUTERLABEL, gui->strings[L_CONFIG_AVIONICS].c_str(), xLabel, static_cast<int>(y), static_cast<int>(400.0f * gui->game->displayscale), lineHeight);
1349  HUD.GetStatic(IDC_SOUNDCOMPUTERLABEL)->GetElement(0)->dwTextFormat = DT_LEFT;
1350  y += lineHeight;
1351  HUD.AddComboBox(IDC_SOUNDDEVICECOMPUTER, xLabel, static_cast<int>(y), static_cast<int>(400.0f * gui->game->displayscale), lineHeight);
1352  y += lineHeight;
1353  HUD.AddSlider(IDC_MASTERVOLUMECOMPUTER, static_cast<int>(24.0f* gui->game->displayscale), static_cast<int>(y), static_cast<int>(175.0f* gui->game->displayscale), lineHeight, 0, 100, static_cast<int>(gui->game->config.soundConfigComputer.volume * 100.0f));
1354  y += 36 * gui->game->displayscale;
1355 
1356  HUD.AddStatic(IDC_SOUNDCOMMSLABEL, gui->strings[L_CONFIG_COMMUNICATIONS].c_str(), xLabel, static_cast<int>(y), static_cast<int>(400.0f * gui->game->displayscale), lineHeight);
1357  HUD.GetStatic(IDC_SOUNDCOMMSLABEL)->GetElement(0)->dwTextFormat = DT_LEFT;
1358  y += lineHeight;
1359  HUD.AddComboBox(IDC_SOUNDDEVICECOMMS, xLabel, static_cast<int>(y), static_cast<int>(400.0f * gui->game->displayscale), lineHeight);
1360  y += lineHeight;
1361  HUD.AddSlider(IDC_MASTERVOLUMECOMMS, static_cast<int>(24.0f* gui->game->displayscale), static_cast<int>(y), static_cast<int>(175.0f* gui->game->displayscale), lineHeight, 0, 100, static_cast<int>(gui->game->config.soundConfigComms.volume * 100.0f));
1362  y += 36 * gui->game->displayscale;
1363 
1364  HUD.AddStatic(IDC_SOUNDRADIOLABEL, gui->strings[L_CONFIG_RADIO].c_str(), xLabel, static_cast<int>(y), static_cast<int>(400.0f * gui->game->displayscale), lineHeight);
1365  HUD.GetStatic(IDC_SOUNDRADIOLABEL)->GetElement(0)->dwTextFormat = DT_LEFT;
1366  y += lineHeight;
1367  HUD.AddComboBox(IDC_SOUNDDEVICERADIO, xLabel, static_cast<int>(y), static_cast<int>(400.0f * gui->game->displayscale), lineHeight);
1368  y += lineHeight;
1369  HUD.AddSlider(IDC_MASTERVOLUMERADIO, static_cast<int>(24.0f* gui->game->displayscale), static_cast<int>(y), static_cast<int>(175.0f* gui->game->displayscale), lineHeight, 0, 100, static_cast<int>(gui->game->config.soundConfigRadio.volume * 100.0f));
1370  y += 36 * gui->game->displayscale;
1371 
1372  for (size_t i = 0; i < gui->game->sound->deviceNames.size(); i++)
1373  {
1374  WCHAR widever[99];
1375  swprintf_s(widever, 99, L"%S", gui->game->sound->deviceNames.at(i).c_str());
1376  HUD.GetComboBox(IDC_SOUNDDEVICELEGACY)->AddItem(widever, &gui->game->config.soundConfigLegacy);
1377  HUD.GetComboBox(IDC_SOUNDDEVICECOMPUTER)->AddItem(widever, &gui->game->config.soundConfigComputer);
1378  HUD.GetComboBox(IDC_SOUNDDEVICECOMMS)->AddItem(widever, &gui->game->config.soundConfigComms);
1379  HUD.GetComboBox(IDC_SOUNDDEVICERADIO)->AddItem(widever, &gui->game->config.soundConfigRadio);
1380  }
1381 
1382  HUD.GetComboBox(IDC_SOUNDDEVICELEGACY)->SetSelectedByIndex(gui->game->config.soundConfigLegacy.bassDevice);
1383  HUD.GetComboBox(IDC_SOUNDDEVICECOMPUTER)->SetSelectedByIndex(gui->game->config.soundConfigComputer.bassDevice);
1384  HUD.GetComboBox(IDC_SOUNDDEVICECOMMS)->SetSelectedByIndex(gui->game->config.soundConfigComms.bassDevice);
1385  HUD.GetComboBox(IDC_SOUNDDEVICERADIO)->SetSelectedByIndex(gui->game->config.soundConfigRadio.bassDevice);
1386  }
1387  break;
1388 
1389  case L_TAB_ACCOUNT:
1390  {
1391  int x = xLabel;
1392  float y = 12.0f * gui->game->displayscale;
1393 
1394  HUD.AddCheckBox(IDC_REMEMBERLOGIN, gui->strings[L_BUTTON_REMEMBERLOGIN].c_str(), static_cast<int>(x + 200.0f * gui->game->displayscale), static_cast<int>(y), static_cast<int>(192.0f * gui->game->displayscale), static_cast<int>(24.0f * gui->game->displayscale), gui->game->config.g_bAutoLogin);
1395 
1396  y += 32 * gui->game->displayscale;
1397  y += lineHeight;
1398 
1399  HUD.AddButton(IDC_PLAYERPORTAL, gui->strings[L_CAPTION_PLAYERPORTAL].c_str(), static_cast<int>(200.0f * gui->game->displayscale), static_cast<int>(y), static_cast<int>(192.0f * gui->game->displayscale), static_cast<int>(32.0f * gui->game->displayscale), 0, false);
1400  }
1401  break;
1402 
1403  default:
1404  break;
1405  }
1406 }
1407 
1409 {
1411  active = false;
1412 }
InputConfig inputConfigLeftToeBrake
Definition: config.h:35
bool DismissHelp(int helpId, int nControlID=GUI_UNDERSTOOD)
#define designedHeightC
Definition: GameClass.h:23
char bassDevice
Definition: SoundConfig.h:19
void ShowStatus(InputConfig *input_config, int y, D3DXVECTOR3 *tracked, bool engine) const
std::vector< DIDEVICEINSTANCE > deviceList
Definition: joystick.h:27
Networking * networking
Definition: gui.h:855
Config config
Definition: GameClass.h:102
HRESULT Poll(InputConfig *config, long *value, DIJOYSTATE *js) const
Definition: joystick.cpp:13
unsigned char language
Definition: config.h:12
void GetVersionText(WCHAR *, int size) const
Definition: gui.cpp:1801
void SendToServer(void *pData, DWORD dwSize, bool bGuaranteed, PacketOrdering order=ORDERING_NONE) const
Definition: Networking.cpp:59
void InitializeDevice(InputConfig *config, std::string control)
Definition: joystick.cpp:369
#define designedWidthC
Definition: GameClass.h:22
bool g_bStartFullscreen
Definition: config.h:23
GameClass * game
Definition: gui.h:857
ID3DXFont * g_pFont
Definition: gui.h:727
InformationDialog * informationDialog
Definition: gui.h:789
std::vector< GUID > deviceGuids
Definition: Sound.h:337
HSTREAM g_pSoundIntro
Definition: Sound.h:329
SoundConfig soundConfigLegacy
Definition: config.h:45
float displayHeight
Definition: GameClass.h:129
std::string friendlyName
Definition: InputConfig.h:24
InputConfig inputConfigGas
Definition: config.h:33
void UTF8_to_WChar(wchar_t *res, const char *string)
InputConfig inputConfigRoll
Definition: config.h:27
InputConfig inputConfigLookVertical
Definition: config.h:38
short tabs
Definition: DialogBase.h:62
bool usesHUD
Definition: DialogBase.h:56
void ToggleFullScreen(bool goFullScreen)
Definition: GameClass.cpp:269
void InitDevice(SoundConfig *deviceConfig)
Definition: Sound.cpp:274
unsigned char axis
Definition: InputConfig.h:14
float displayWidth
Definition: GameClass.h:129
short defaultwidth
Definition: DialogBase.h:51
void Save()
Definition: config.cpp:363
RakNet::RakNetStatistics * GetStatistics() const
Definition: Networking.cpp:148
joystick * ptrJoystick
Definition: Viewscreen.h:283
short activetab
Definition: DialogBase.h:62
InputConfig inputConfigThrustLeft
Definition: config.h:29
#define vphelpC
Definition: globals.h:64
CDXUTDialogResourceManager g_DialogResourceManager
Definition: gui.h:752
LPDIRECTINPUTDEVICE8 g_pJoystick
Definition: InputConfig.h:22
bool vphelp[vphelpC]
Definition: GameClass.h:103
InputConfig inputConfigThrustRight
Definition: config.h:30
void CreateAxisDropdown(int control, int y, InputConfig *config)
short text
Definition: DialogBase.h:69
void ChangeCockpit(bool force)
Definition: Sound.cpp:1977
std::vector< std::string > deviceNames
Definition: Sound.h:336
void ResetHelp() const
Definition: cockpit.cpp:2122
InputConfig inputConfigPitchTrim
Definition: config.h:39
static void OnDeviceReset()
float volume
Definition: SoundConfig.h:13
WCHAR msgbartext[HELP_SIZE]
Definition: DialogBase.h:82
Viewscreen * viewscreen
Definition: GameClass.h:111
Networking * networking
Definition: GameClass.h:107
bool PopUpHelp(short helpId, bool allowDismiss=true, bool isLearnMore=false)
short tabusedefaultlang[MAX_TAB]
Definition: DialogBase.h:50
int GetPingTime() const
Definition: Networking.cpp:106
char msgbarcolor
Definition: DialogBase.h:81
static Logger * logger
Definition: DialogBase.h:41
bool outside
Definition: Viewscreen.h:272
short defaultheight
Definition: DialogBase.h:51
void LoadPeopleSounds() const
Definition: gui.cpp:1128
void LoadLanguage()
Definition: gui.cpp:1480
InputConfig inputConfigPitch
Definition: config.h:26
SoundConfig soundConfigComms
Definition: config.h:44
bool g_bSoundIntroMusic
Definition: config.h:19
InputConfig inputConfigBrake
Definition: config.h:34
void ChangeVolume(SoundConfig *config, float modVolume)
Definition: Sound.cpp:504
bool allowscroll
Definition: DialogBase.h:45
void TriggerWelcomeApt2() const
Definition: gui.cpp:1180
static void RestoreDefaults()
Definition: gui.cpp:1811
void Draw(D3DXVECTOR3 *tracked)
Sound * sound
Definition: GameClass.h:108
void AddLanguageOptions(UIControlIds controlId, CDXUTDialog *HUD) const
Definition: gui.cpp:1416
bool active
Definition: DialogBase.h:71
void Log(const char *msg, Level level=Info, int errorCode=0)
Definition: Logger.cpp:11
CDXUTDialog HUD
Definition: DialogBase.h:98
const GUID MYGUID_NULL
Definition: Guids.h:3
short icon
Definition: DialogBase.h:53
InputConfig inputConfigRightToeBrake
Definition: config.h:36
static HMI * gui
Definition: DialogBase.h:40
bool eastasian
Definition: gui.h:715
bool allowresize
Definition: DialogBase.h:45
float dpiscale
Definition: GameClass.h:128
ID3DXSprite * g_pTextSprite
Definition: gui.h:726
float scale
Definition: config.h:24
bool g_bAutoLogin
Definition: config.h:20
SoundConfig soundConfigRadio
Definition: config.h:46
static void UpdateInput(InputConfig *config)
InputConfig inputConfigWalkVertical
Definition: config.h:41
#define HELP_SIZE
Definition: gui.h:17
cockpit * ptrCockpit
Definition: Viewscreen.h:288
float displayscale
Definition: GameClass.h:128
InputConfig inputConfigWalkLateral
Definition: config.h:40
D3DXVECTOR3 windowdefaultlocation
Definition: DialogBase.h:52
static void CALLBACK DialogCallback(UINT nEvent, int nControlID, CDXUTControl *pControl, void *pUserContext)
bool normalinterlace
Definition: DialogBase.h:54
std::wstring strings[L_ENUMERATION]
Definition: gui.h:749
InputConfig inputConfigYaw
Definition: config.h:28
void AddToCallStack(const char *msg)
Definition: Logger.cpp:86
SoundConfig soundConfigComputer
Definition: config.h:43
void RequestVerbiage(int helpId) const
Definition: Networking.cpp:168
void LoadSounds(short instage)
Definition: Sound.cpp:1073
InputConfig inputConfigSteer
Definition: config.h:32
void FrameMoveAAC()
Definition: Sound.cpp:1285
InputConfig inputConfigLookLateral
Definition: config.h:37
#define MAX_LINES
Definition: gui.h:20
void UpdateMenu(short tab)
const int nullzone
Definition: joystick.h:28