BsScriptStringTable.cpp 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051
  1. #include "BsScriptStringTable.h"
  2. #include "BsScriptMeta.h"
  3. #include "BsMonoField.h"
  4. #include "BsMonoClass.h"
  5. #include "BsMonoManager.h"
  6. #include "BsMonoUtil.h"
  7. namespace BansheeEngine
  8. {
  9. ScriptStringTable::ScriptStringTable(MonoObject* instance)
  10. :ScriptObject(instance)
  11. { }
  12. void ScriptStringTable::initRuntimeData()
  13. {
  14. metaData.scriptClass->addInternalCall("Internal_GetActiveLanguage", &ScriptStringTable::internal_GetActiveLanguage);
  15. metaData.scriptClass->addInternalCall("Internal_SetActiveLanguage", &ScriptStringTable::internal_SetActiveLanguage);
  16. metaData.scriptClass->addInternalCall("Internal_SetString", &ScriptStringTable::internal_SetString);
  17. metaData.scriptClass->addInternalCall("Internal_RemoveString", &ScriptStringTable::internal_RemoveString);
  18. metaData.scriptClass->addInternalCall("Internal_GetLocalizedString", &ScriptStringTable::internal_GetLocalizedString);
  19. }
  20. void ScriptStringTable::internal_GetActiveLanguage(Language* value)
  21. {
  22. *value = StringTable::instance().getActiveLanguage();
  23. }
  24. void ScriptStringTable::internal_SetActiveLanguage(Language value)
  25. {
  26. StringTable::instance().setActiveLanguage(value);
  27. }
  28. void ScriptStringTable::internal_SetString(MonoString* identifier, Language language, MonoString* value)
  29. {
  30. StringTable::instance().setString(MonoUtil::monoToWString(identifier), language, MonoUtil::monoToWString(value));
  31. }
  32. void ScriptStringTable::internal_RemoveString(MonoString* identifier)
  33. {
  34. StringTable::instance().removeString(MonoUtil::monoToWString(identifier));
  35. }
  36. void ScriptStringTable::internal_GetLocalizedString(MonoString* identifier, MonoString** value)
  37. {
  38. HString stringHandle(MonoUtil::monoToWString(identifier));
  39. WString outString = stringHandle;
  40. *value = MonoUtil::wstringToMono(MonoManager::instance().getDomain(), outString);
  41. }
  42. }