BsSettings.cpp 2.9 KB

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