BsScriptStringTable.cpp 2.0 KB

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