BsSettings.cpp 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. #include "BsSettings.h"
  2. #include "BsSettingsRTTI.h"
  3. namespace BansheeEngine
  4. {
  5. Settings::Settings()
  6. :mHash(0)
  7. { }
  8. void Settings::setFloat(const String& name, float value)
  9. {
  10. mFloatProperties[name] = value;
  11. mIntProperties.erase(name);
  12. mBoolProperties.erase(name);
  13. mStringProperties.erase(name);
  14. markAsDirty();
  15. }
  16. void Settings::setInt(const String& name, INT32 value)
  17. {
  18. mFloatProperties.erase(name);
  19. mIntProperties[name] = value;
  20. mBoolProperties.erase(name);
  21. mStringProperties.erase(name);
  22. markAsDirty();
  23. }
  24. void Settings::setBool(const String& name, bool value)
  25. {
  26. mFloatProperties.erase(name);
  27. mIntProperties.erase(name);
  28. mBoolProperties[name] = value;
  29. mStringProperties.erase(name);
  30. markAsDirty();
  31. }
  32. void Settings::setString(const String& name, const WString& value)
  33. {
  34. mFloatProperties.erase(name);
  35. mIntProperties.erase(name);
  36. mBoolProperties.erase(name);
  37. mStringProperties[name] = value;
  38. markAsDirty();
  39. }
  40. float Settings::getFloat(const String& name, float defaultValue)
  41. {
  42. auto iterFind = mFloatProperties.find(name);
  43. if (iterFind != mFloatProperties.end())
  44. return iterFind->second;
  45. return defaultValue;
  46. }
  47. INT32 Settings::getInt(const String& name, INT32 defaultValue)
  48. {
  49. auto iterFind = mIntProperties.find(name);
  50. if (iterFind != mIntProperties.end())
  51. return iterFind->second;
  52. return defaultValue;
  53. }
  54. bool Settings::getBool(const String& name, bool defaultValue)
  55. {
  56. auto iterFind = mBoolProperties.find(name);
  57. if (iterFind != mBoolProperties.end())
  58. return iterFind->second;
  59. return defaultValue;
  60. }
  61. WString Settings::getString(const String& name, const WString& defaultValue)
  62. {
  63. auto iterFind = mStringProperties.find(name);
  64. if (iterFind != mStringProperties.end())
  65. return iterFind->second;
  66. return defaultValue;
  67. }
  68. bool Settings::hasKey(const String& name)
  69. {
  70. if (mFloatProperties.find(name) != mFloatProperties.end())
  71. return true;
  72. if (mIntProperties.find(name) != mIntProperties.end())
  73. return true;
  74. if (mBoolProperties.find(name) != mBoolProperties.end())
  75. return true;
  76. if (mStringProperties.find(name) != mStringProperties.end())
  77. return true;
  78. return false;
  79. }
  80. void Settings::deleteKey(const String& name)
  81. {
  82. mFloatProperties.erase(name);
  83. mIntProperties.erase(name);
  84. mBoolProperties.erase(name);
  85. mStringProperties.erase(name);
  86. markAsDirty();
  87. }
  88. void Settings::deleteAllKeys()
  89. {
  90. mFloatProperties.clear();
  91. mIntProperties.clear();
  92. mBoolProperties.clear();
  93. mStringProperties.clear();
  94. markAsDirty();
  95. }
  96. RTTITypeBase* Settings::getRTTIStatic()
  97. {
  98. return SettingsRTTI::instance();
  99. }
  100. RTTITypeBase* Settings::getRTTI() const
  101. {
  102. return Settings::getRTTIStatic();
  103. }
  104. }