Преглед изворни кода

Add mouse lua bindings - need additional work

Daniele Bartolini пре 12 година
родитељ
комит
46c29c185e
1 измењених фајлова са 51 додато и 74 уклоњено
  1. 51 74
      lua/MouseBinds.cpp

+ 51 - 74
lua/MouseBinds.cpp

@@ -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