BsScriptStringTable.cpp 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  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. void ScriptStringTable::initMetaData()
  10. {
  11. metaData = ScriptMeta(BansheeEngineAssemblyName, "BansheeEngine", "StringTable", &ScriptStringTable::initRuntimeData);
  12. MonoManager::registerScriptType(&metaData);
  13. }
  14. void ScriptStringTable::initRuntimeData()
  15. {
  16. metaData.scriptClass->addInternalCall("Internal_GetActiveLanguage", &ScriptStringTable::internal_GetActiveLanguage);
  17. metaData.scriptClass->addInternalCall("Internal_SetActiveLanguage", &ScriptStringTable::internal_SetActiveLanguage);
  18. metaData.scriptClass->addInternalCall("Internal_SetString", &ScriptStringTable::internal_SetString);
  19. metaData.scriptClass->addInternalCall("Internal_RemoveString", &ScriptStringTable::internal_RemoveString);
  20. metaData.scriptClass->addInternalCall("Internal_GetLocalizedString", &ScriptStringTable::internal_GetLocalizedString);
  21. }
  22. void ScriptStringTable::internal_GetActiveLanguage(Language* value)
  23. {
  24. *value = StringTable::instance().getActiveLanguage();
  25. }
  26. void ScriptStringTable::internal_SetActiveLanguage(Language value)
  27. {
  28. StringTable::instance().setActiveLanguage(value);
  29. }
  30. void ScriptStringTable::internal_SetString(MonoString* identifier, Language language, MonoString* value)
  31. {
  32. StringTable::instance().setString(MonoUtil::monoToWString(identifier), language, MonoUtil::monoToWString(value));
  33. }
  34. void ScriptStringTable::internal_RemoveString(MonoString* identifier)
  35. {
  36. StringTable::instance().removeString(MonoUtil::monoToWString(identifier));
  37. }
  38. void ScriptStringTable::internal_GetLocalizedString(MonoString* identifier, MonoString** value)
  39. {
  40. HString stringHandle(MonoUtil::monoToWString(identifier));
  41. WString outString = stringHandle;
  42. *value = MonoUtil::wstringToMono(MonoManager::instance().getDomain(), outString);
  43. }
  44. }