BsStringTableManager.cpp 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. //********************************** Banshee Engine (www.banshee3d.com) **************************************************//
  2. //**************** Copyright (c) 2016 Marko Pintera ([email protected]). All rights reserved. **********************//
  3. #include "Localization/BsStringTableManager.h"
  4. namespace bs
  5. {
  6. StringTableManager::StringTableManager()
  7. :mActiveLanguage(StringTable::DEFAULT_LANGUAGE)
  8. {
  9. }
  10. void StringTableManager::setActiveLanguage(Language language)
  11. {
  12. if (language != mActiveLanguage)
  13. {
  14. mActiveLanguage = language;
  15. for (auto& tablePair : mTables)
  16. tablePair.second->setActiveLanguage(language);
  17. }
  18. }
  19. HStringTable StringTableManager::getTable(UINT32 id)
  20. {
  21. auto iterFind = mTables.find(id);
  22. if (iterFind != mTables.end())
  23. return iterFind->second;
  24. HStringTable newTable = StringTable::create();
  25. setTable(id, newTable);
  26. return newTable;
  27. }
  28. void StringTableManager::removeTable(UINT32 id)
  29. {
  30. mTables.erase(id);
  31. }
  32. void StringTableManager::setTable(UINT32 id, const HStringTable& table)
  33. {
  34. mTables[id] = table;
  35. if (table != nullptr)
  36. table->setActiveLanguage(mActiveLanguage);
  37. }
  38. StringTableManager& gStringTableManager()
  39. {
  40. return StringTableManager::instance();
  41. }
  42. }