lua_int_setting.cpp 2.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. /*
  2. * Copyright (c) 2012-2014 Daniele Bartolini and individual contributors.
  3. * License: https://github.com/taylor001/crown/blob/master/LICENSE
  4. */
  5. #include "int_setting.h"
  6. #include "lua_stack.h"
  7. #include "lua_environment.h"
  8. namespace crown
  9. {
  10. static int int_setting_query_value(lua_State* L)
  11. {
  12. LuaStack stack(L);
  13. const char* setting_name = stack.get_string(1);
  14. IntSetting* setting = IntSetting::find_setting(setting_name);
  15. if (setting != NULL)
  16. {
  17. stack.push_int32(setting->value());
  18. }
  19. else
  20. {
  21. stack.push_int32(0);
  22. }
  23. return 1;
  24. }
  25. static int int_setting_query_synopsis(lua_State* L)
  26. {
  27. LuaStack stack(L);
  28. const char* setting_name = stack.get_string(1);
  29. IntSetting* setting = IntSetting::find_setting(setting_name);
  30. if (setting != NULL)
  31. {
  32. stack.push_string(setting->synopsis());
  33. }
  34. else
  35. {
  36. stack.push_string("");
  37. }
  38. return 1;
  39. }
  40. static int int_setting_query_min(lua_State* L)
  41. {
  42. LuaStack stack(L);
  43. const char* setting_name = stack.get_string(1);
  44. IntSetting* setting = IntSetting::find_setting(setting_name);
  45. if (setting != NULL)
  46. {
  47. stack.push_int32(setting->min());
  48. }
  49. else
  50. {
  51. stack.push_int32(0);
  52. }
  53. return 1;
  54. }
  55. static int int_setting_query_max(lua_State* L)
  56. {
  57. LuaStack stack(L);
  58. const char* setting_name = stack.get_string(1);
  59. IntSetting* setting = IntSetting::find_setting(setting_name);
  60. if (setting != NULL)
  61. {
  62. stack.push_int32(setting->max());
  63. }
  64. else
  65. {
  66. stack.push_int32(0);
  67. }
  68. return 1;
  69. }
  70. static int int_setting_update(lua_State* L)
  71. {
  72. LuaStack stack(L);
  73. const char* setting_name = stack.get_string(1);
  74. const int32_t setting_value = stack.get_int(2);
  75. IntSetting* setting = IntSetting::find_setting(setting_name);
  76. if (setting != NULL)
  77. {
  78. (*setting) = setting_value;
  79. }
  80. return 0;
  81. }
  82. void load_int_setting(LuaEnvironment& env)
  83. {
  84. env.load_module_function("IntSetting", "value", int_setting_query_value);
  85. env.load_module_function("IntSetting", "synopsis", int_setting_query_synopsis);
  86. env.load_module_function("IntSetting", "min", int_setting_query_min);
  87. env.load_module_function("IntSetting", "max", int_setting_query_max);
  88. env.load_module_function("IntSetting", "update", int_setting_update);
  89. }
  90. } // namespace crown