int PlotScript::dispatch(lua_State* ls) { const char *luaStr = lua_tostring(ls, 1); dispatchAll(luaStr); //log("Lua调用cpp函数时传来的两个参数: %i %s",luaNum,luaStr); /* 返给Lua的值 */ lua_pushstring(ls, "OK"); /* 返给Lua值个数 */ return 1; }
void Explode::dispatch(double x, double y) { std::cout << "ecplode on (" << x << ")(" << y << ")" << std::endl; std::function<void(Effects::type, Effects::level)> mad = [this, x, y] (Effects::type t, Effects::level lvl) { if (t == Effects::Fire) dispatchAll(new Event::Type::FireExplosion(x, y, lvl)); if (t == Effects::Ice) dispatchAll(new Event::Type::IceExplosion(x, y, lvl)); if (t == Effects::Life) dispatchAll(new Event::Type::LifeExplosion(x, y, lvl)); if (t == Effects::Electricity) dispatchAll(new Event::Type::ElectricityExplosion(x, y, lvl)); if (t == Effects::Glyph) dispatchAll(new Event::Type::GlyphExplosion(x, y, lvl)); }; std::array<bool, 3> it = {true, false, false}; Effects::level lvl = Effects::low; if (elements[0] == elements[1]) { lvl = Effects::med; it[1] = true; } if (elements[0] == elements[2]) { lvl = (lvl == Effects::med) ? (Effects::high) : (Effects::med); it[2] = true; } mad(elements[0], lvl); if (!it[1]) { lvl = Effects::low; if (!it[2] && elements[1] == elements[2]) { lvl = Effects::med; it[2] = true; } mad(elements[1], lvl); } if (!it[2]) mad(elements[2], Effects::low); dispatchAll(new Event::Type::Explosion(x, y)); }