graphics_settings_proxy.cpp 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #include "graphics_settings_proxy.h"
  2. #include "../../render/graphics_settings.h"
  3. namespace App::Models {
  4. GraphicsSettingsProxy::GraphicsSettingsProxy(QObject *parent)
  5. : QObject(parent) {}
  6. int GraphicsSettingsProxy::qualityLevel() const {
  7. return static_cast<int>(Render::GraphicsSettings::instance().quality());
  8. }
  9. void GraphicsSettingsProxy::setQualityLevel(int level) {
  10. if (level < 0 || level > 3) {
  11. return;
  12. }
  13. auto newQuality = static_cast<Render::GraphicsQuality>(level);
  14. if (newQuality != Render::GraphicsSettings::instance().quality()) {
  15. Render::GraphicsSettings::instance().setQuality(newQuality);
  16. emit qualityLevelChanged();
  17. }
  18. }
  19. QString GraphicsSettingsProxy::qualityName() const {
  20. switch (Render::GraphicsSettings::instance().quality()) {
  21. case Render::GraphicsQuality::Low:
  22. return tr("Low");
  23. case Render::GraphicsQuality::Medium:
  24. return tr("Medium");
  25. case Render::GraphicsQuality::High:
  26. return tr("High");
  27. case Render::GraphicsQuality::Ultra:
  28. return tr("Ultra");
  29. }
  30. return tr("Medium");
  31. }
  32. QStringList GraphicsSettingsProxy::qualityOptions() const {
  33. return {tr("Low"), tr("Medium"), tr("High"), tr("Ultra")};
  34. }
  35. void GraphicsSettingsProxy::setQualityByName(const QString &name) {
  36. if (name == tr("Low")) {
  37. setQualityLevel(0);
  38. } else if (name == tr("Medium")) {
  39. setQualityLevel(1);
  40. } else if (name == tr("High")) {
  41. setQualityLevel(2);
  42. } else if (name == tr("Ultra")) {
  43. setQualityLevel(3);
  44. }
  45. }
  46. QString GraphicsSettingsProxy::getQualityDescription() const {
  47. switch (Render::GraphicsSettings::instance().quality()) {
  48. case Render::GraphicsQuality::Low:
  49. return tr(
  50. "Maximum performance. Aggressive LOD, reduced detail at distance.");
  51. case Render::GraphicsQuality::Medium:
  52. return tr(
  53. "Balanced performance and quality. Recommended for most systems.");
  54. case Render::GraphicsQuality::High:
  55. return tr("Higher quality. More detail visible at distance. Requires "
  56. "better hardware.");
  57. case Render::GraphicsQuality::Ultra:
  58. return tr(
  59. "Maximum quality. Full detail always. Best hardware recommended.");
  60. }
  61. return QString();
  62. }
  63. } // namespace App::Models