diff options
Diffstat (limited to 'src/core/fncwrapper.cpp')
-rw-r--r-- | src/core/fncwrapper.cpp | 21 |
1 files changed, 15 insertions, 6 deletions
diff --git a/src/core/fncwrapper.cpp b/src/core/fncwrapper.cpp index 8f08bae..c19f313 100644 --- a/src/core/fncwrapper.cpp +++ b/src/core/fncwrapper.cpp @@ -1,13 +1,22 @@ #include "vmrunner.hpp" #include "fncmodules.hpp" +#define bindFuncr(fs,fn) if(getHash(fnc)==getHash(fs))vm->vmSetRetValf(fn().r()) +#define bindFunci(fs,fn) if(getHash(fnc)==getHash(fs))vm->vmSetRetVald(fn().i()) +#define bindFuncv(fs,fn) if(getHash(fnc)==getHash(fs))fn() extern unsigned getHash(const char *s); void callFnc(const char* fnc) { - if(getHash(fnc)==getHash("randi")) - vm->vmSetRetVald(randi().i()); - if(getHash(fnc)==getHash("randr")) - vm->vmSetRetValf(randr().r()); - if(getHash(fnc)==getHash("createBullet")) - vm->vmSetRetValf(createBullet().i()); + bindFunci("randi",randi);bindFuncr("randr",randr); + bindFunci("createBullet",createBullet); + bindFuncv("setBulletPropf",setBulletPropf); + bindFuncv("setBulletPropi",setBulletPropi); + bindFuncr("sin",vmsin);bindFuncr("cos",vmcos); + bindFuncr("tan",vmtan);bindFuncr("sqrt",vmsqrt); + bindFuncr("absf",vmabsf);bindFunci("absd",vmabsd); + bindFuncr("asin",vmasin);bindFuncr("acos",vmacos); + bindFuncr("atan",vmatan);bindFuncr("atan2",vmatan2); + bindFuncr("log",vmlog);bindFuncr("ceil",vmceil); + bindFuncr("floor",vmfloor);bindFuncr("trunc",vmtrunc); + bindFuncr("round",vmround); if(callStk.empty())callStk.clear(); } |