Мне было интересно, подойдут ли следующие настройки для небольшой игры:
Предположим, у меня есть следующие зарегистрированные в Lua функции, например:
lua_register(L, "createTimer", createTimer);
lua_register(L, "getCondition", getCondition);
lua_register(L, "setAction", setAction);
Где: (оставляяпроверка типа)
int createTimer(lua_State* L){
string condition = lua_tostring(L, 1);
string action = lua_tostring(L, 2);
double timer = lua_tonumber(L, 3);
double expiration = lua_tonumber(L, 4);
addTimer(condition, action, timer, expiration); // adds the "timer" to a vector or something
return 1;
}
Вызов этой функции в lua по:
createTimer("getCondition=<5", "setAction(7,4,6)", 5, 20);
Могу ли я тогда сделать следующее (?):
// this function is called in the game-loop to loop through all timers in the vector
void checkTimers(){
for(std::vector<T>::iterator it = v.begin(); it != v.end(); ++it) {
if(luaL_doString(L, *it->condition)){
luaL_doString(L, *it->action)
}
}
}
Будет ли этоРабота?Будет ли luaL_doString передавать "getCondition = <5" в механизм состояний lua, где он вызовет функцию getCondition () из c ++, а затем посмотрит, если это = <5 и вернет true или false?И то же самое относится к luaL_doString (L, "setAction (7, 4, 6)");?</p>
Более того, будет ли это подходящим способом для создания таймеров, если один раз получить доступ к lua (для их создания) и позволить c ++ обрабатывать все остальное, вызывая только функции c ++ через lua и позволяя lua иметь дело только с логикой?1017 *
Заранее спасибо.