c++ syntax lua wrap luabind

¿Qué código envuelvo alrededor del código Lua en C++ con LuaBind?



syntax wrap (1)

Finalmente conseguí LuaBind configurado para trabajar con mi proyecto C ++. Recientemente descubrí que el editor de mapas de Tiled tiene una opción para exportar los archivos como .lua, así que quería probarlo. ¿Qué código incluiría en el código pegado a continuación para que funcione con mi proyecto C ++ RPG?

return { version = "1.1", luaversion = "5.1", orientation = "orthogonal", width = 24, height = 20, tilewidth = 16, tileheight = 16, properties = {}, tilesets = { { name = "PALLET TOWN", firstgid = 1, tilewidth = 16, tileheight = 16, spacing = 0, margin = 0, image = "PALLET TOWN.bmp", imagewidth = 384, imageheight = 320, properties = {}, tiles = {} } }, layers = { { type = "tilelayer", name = "Tile Layer 1", x = 0, y = 0, width = 24, height = 20, visible = true, opacity = 1, properties = {}, encoding = "lua", data = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 249, 250, 251, 252, 253, 254, 255, 256, 257, 258, 259, 260, 261, 262, 263, 264, 265, 266, 267, 268, 269, 270, 271, 272, 273, 274, 275, 276, 277, 278, 279, 280, 281, 282, 283, 284, 285, 286, 287, 288, 289, 290, 291, 292, 293, 294, 295, 296, 297, 298, 299, 300, 301, 302, 303, 304, 305, 306, 307, 308, 309, 310, 311, 312, 313, 314, 315, 316, 317, 318, 319, 320, 321, 322, 323, 324, 325, 326, 327, 328, 329, 330, 331, 332, 333, 334, 335, 336, 337, 338, 339, 340, 341, 342, 343, 344, 345, 346, 347, 348, 349, 350, 351, 352, 353, 354, 355, 356, 357, 358, 359, 360, 361, 362, 363, 364, 365, 366, 367, 368, 369, 370, 371, 372, 373, 374, 375, 376, 377, 378, 379, 380, 381, 382, 383, 384, 385, 386, 387, 388, 389, 390, 391, 392, 393, 394, 395, 396, 397, 398, 399, 400, 401, 402, 403, 404, 405, 406, 407, 408, 409, 410, 411, 412, 413, 414, 415, 416, 417, 418, 419, 420, 421, 422, 423, 424, 425, 426, 427, 428, 429, 430, 431, 432, 433, 434, 435, 436, 437, 438, 439, 440, 441, 442, 443, 444, 445, 446, 447, 448, 449, 450, 451, 452, 453, 454, 455, 456, 457, 458, 459, 460, 461, 462, 463, 464, 465, 466, 467, 468, 469, 470, 471, 472, 473, 474, 475, 476, 477, 478, 479, 480 } } } }


Advertencia: Mi respuesta podría ser nooby ya que soy de los que prefieren más trabajo y menos complicaciones.

primero, elimine la return y {} que pertenecen a la declaración. ahora ponlo en un lugar donde tu programa pueda encontrarlo.

Ahora ve a la parte de luabind (luabind no es realmente necesario para este tipo de trabajo, pero lo usaré, ya que es una buena práctica para ti).

veamos que su programa principal que usa estos valores se llama stage y hay un método de load llamado load . Comience con el encabezado:

extern "C" { #include <lua.h> #include <lualib.h> #include <lauxlib.h> } #include "./luabind/luabind.hpp" #include <iostream> class Stage { public: Stage(); Stage(string stage_name); // the methods that stage use to run static void _load(<a table of input or whatever the way you want to transfer the information>, intptr_t stage);/* static for luabind intptr_t is designed to hold pointer in int form.*/ void load(<a table of input or whatever the way you want to transfer the information>); ~Stage(); private: //lot of values that you want. }

Y en el archivo cpp, querrá cargarlo al inicio del juego:

void _load(<a table of input or whatever the way you want to transfer the information> table, intptr_t stage) { Stage* stage = (Stage*)stg; // intptr_t back to pointer stage->load(table); } void Stage:load(<a table of input or whatever the way you want to transfer the information> table) { <load infos into your variable> } Stage(string stage_name) { intptr_t stage = (intptr_t)*this; // Create a new lua state lua_State *myLuaState = luaL_newstate(); // Connect LuaBind to this lua state luabind::open(myLuaState); luaL_openlibs(myLuaState); luabind::module(myLuaState)[ luabind::def("load", &_load) ]; luabind::globals(myLuaState)["stage"] = stage;// give the pointer to lua stringstream fileadd << <candidate address here>; lual_dofile(myLuaState, fileadd); lua_close(myLuaState);/we don''t need lua anymore/ <start your game> }

Ejemplo de lua:

<your origin file without return> <put it into a table or something> -- load is a callable file after it''s launched with your stage cpp -- stage is the pointer that passed to lua load(<table of information>, stage)

Depende de usted cómo pasar las variables, pero creo que este método debería funcionar bien, solo muchas cosas.

Más información sobre puntero y luabind