Je me demandais si la configuration suivante fonctionnerait pour un petit jeu:Création Timers en C++ en utilisant Lua
laisse supposer que je possède les fonctions suivantes enregistrées à Lua comme ceci:
lua_register(L, "createTimer", createTimer);
lua_register(L, "getCondition", getCondition);
lua_register(L, "setAction", setAction);
Où: (laissant le type derrière la vérification)
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;
}
appel de cette fonction en lua par:
createTimer("getCondition=<5", "setAction(7,4,6)", 5, 20);
Puis-je puis procédez comme suit (?):
// 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)
}
}
}
Est-ce que ce travail? LuaL_doString passerait-il "getCondition = < 5" au moteur d'état de lua, où il appellerait la fonction C++ getCondition(), puis verrait s'il est = < 5 et retournerait vrai ou faux? Et serait la même chose pour luaL_doString (L, "setAction (7, 4, 6)"); ? De plus, serait-ce un moyen approprié de créer des temporisateurs en accédant à lua une seule fois (pour les créer) et laisser C++ gérer le reste, appelant seulement les fonctions C++ à travers lua et laissant Lua traiter uniquement de la logique?
Merci d'avance.
Ok, mais est-ce que cette configuration fonctionnerait bien globalement ou serait-il préférable de laisser Lua créer des minuteurs en C++ ou serait-ce une bonne configuration? Deuxièmement, la condition * it-> fonctionne-t-elle réellement pour un vecteur (si je ne me trompe pas seulement * it-> first * it-> second fonctionnerait? Et si tel est le cas, quelle serait la meilleure structure à stocker? les données avec le? Ma réaction initiale est de créer une structure et simplement remplir un vecteur avec ces structures, mais cela ne fait que me tromper: S –
Karrok