|
|
@@ -1,108 +1,85 @@
|
|
|
+#include "LuaStack.h"
|
|
|
#include "Device.h"
|
|
|
-#include "ScriptSystem.h"
|
|
|
+#include "LuaEnvironment.h"
|
|
|
#include "Mouse.h"
|
|
|
-#include "OS.h"
|
|
|
+#include "Log.h"
|
|
|
|
|
|
namespace crown
|
|
|
{
|
|
|
|
|
|
extern "C"
|
|
|
{
|
|
|
- bool mouse_button_pressed(uint32_t button);
|
|
|
|
|
|
- bool mouse_button_released(uint32_t button);
|
|
|
+extern Vec2* next_vec2();
|
|
|
|
|
|
- Vec2& mouse_cursor_xy();
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+int32_t mouse_button_pressed(lua_State* L)
|
|
|
+{
|
|
|
+ LuaStack stack(L);
|
|
|
|
|
|
- void mouse_set_cursor_xy(const Vec2& position);
|
|
|
+ int32_t button = stack.get_int(1);
|
|
|
|
|
|
- Vec2& mouse_cursor_relative_xy();
|
|
|
+ stack.push_bool(device()->mouse()->button_pressed((MouseButton) button));
|
|
|
|
|
|
- void mouse_set_cursor_relative_xy(const Vec2& position);
|
|
|
+ return 1;
|
|
|
}
|
|
|
|
|
|
-bool mouse_button_pressed(uint32_t button)
|
|
|
-{
|
|
|
- MouseButton b;
|
|
|
-
|
|
|
- switch(button)
|
|
|
- {
|
|
|
- case MB_LEFT:
|
|
|
- {
|
|
|
- b = MB_LEFT;
|
|
|
- }
|
|
|
- case MB_MIDDLE:
|
|
|
- {
|
|
|
- b = MB_MIDDLE;
|
|
|
- }
|
|
|
- case MB_RIGHT:
|
|
|
- {
|
|
|
- b = MB_RIGHT;
|
|
|
- }
|
|
|
- default:
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
- return device()->mouse()->button_pressed(b);
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+int32_t mouse_button_released(lua_State* L)
|
|
|
+{
|
|
|
+ LuaStack stack(L);
|
|
|
+
|
|
|
+ int32_t button = stack.get_int(1);
|
|
|
+
|
|
|
+ stack.push_bool(device()->mouse()->button_released((MouseButton) button));
|
|
|
+
|
|
|
+ return 1;
|
|
|
}
|
|
|
|
|
|
-bool mouse_button_released(uint32_t button)
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+int32_t mouse_cursor_xy(lua_State* L)
|
|
|
{
|
|
|
- MouseButton b;
|
|
|
-
|
|
|
- switch(button)
|
|
|
- {
|
|
|
- case MB_LEFT:
|
|
|
- {
|
|
|
- b = MB_LEFT;
|
|
|
- }
|
|
|
- case MB_MIDDLE:
|
|
|
- {
|
|
|
- b = MB_MIDDLE;
|
|
|
- }
|
|
|
- case MB_RIGHT:
|
|
|
- {
|
|
|
- b = MB_RIGHT;
|
|
|
- }
|
|
|
- default:
|
|
|
- {
|
|
|
- return false;
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
- return device()->mouse()->button_released(b);
|
|
|
}
|
|
|
|
|
|
-Vec2& mouse_cursor_xy()
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+int32_t mouse_set_cursor_xy(lua_State* L)
|
|
|
{
|
|
|
-
|
|
|
- Point2 tmp = device()->mouse()->cursor_xy();
|
|
|
-
|
|
|
- return device()->script_system()->next_vec2(tmp.x, tmp.y);
|
|
|
}
|
|
|
|
|
|
-void mouse_set_cursor_xy(const Vec2& position)
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+int32_t mouse_cursor_relative_xy(lua_State* L)
|
|
|
{
|
|
|
- Point2 tmp;
|
|
|
- tmp.x = (uint32_t)position.x;
|
|
|
- tmp.y = (uint32_t)position.y;
|
|
|
+ LuaStack stack(L);
|
|
|
+
|
|
|
+ Vec2* xy = next_vec2();
|
|
|
+ *xy = device()->mouse()->cursor_relative_xy();
|
|
|
+
|
|
|
+ stack.push_lightudata(xy);
|
|
|
|
|
|
- device()->mouse()->set_cursor_xy(tmp);
|
|
|
+ return 1;
|
|
|
}
|
|
|
|
|
|
-Vec2& mouse_cursor_relative_xy()
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+int32_t mouse_set_cursor_relative_xy(lua_State* L)
|
|
|
{
|
|
|
- Vec2 tmp = device()->mouse()->cursor_relative_xy();
|
|
|
+ LuaStack stack(L);
|
|
|
|
|
|
- return device()->script_system()->next_vec2(tmp.x, tmp.y);
|
|
|
+ Vec2* xy = (Vec2*) stack.get_lightudata(1);
|
|
|
+
|
|
|
+ device()->mouse()->set_cursor_relative_xy(*xy);
|
|
|
+
|
|
|
+ return 0;
|
|
|
}
|
|
|
|
|
|
-void mouse_set_cursor_relative_xy(const Vec2& position)
|
|
|
+} // extern "C"
|
|
|
+
|
|
|
+//-----------------------------------------------------------------------------
|
|
|
+void load_mouse(LuaEnvironment& env)
|
|
|
{
|
|
|
- device()->mouse()->set_cursor_relative_xy(position);
|
|
|
+ env.load_module_function("Mouse", "button_pressed", mouse_button_pressed);
|
|
|
+ env.load_module_function("Mouse", "button_released", mouse_button_released);
|
|
|
+ env.load_module_function("Mouse", "cursor_relative_xy", mouse_cursor_relative_xy);
|
|
|
+ env.load_module_function("Mouse", "set_cursor_relative_xy", mouse_set_cursor_relative_xy);
|
|
|
}
|
|
|
|
|
|
-}
|
|
|
+} // namespace crown
|