aboutsummaryrefslogtreecommitdiff
path: root/src/core/fncmodules.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/fncmodules.cpp')
-rw-r--r--src/core/fncmodules.cpp147
1 files changed, 146 insertions, 1 deletions
diff --git a/src/core/fncmodules.cpp b/src/core/fncmodules.cpp
index 767556e..2a169b1 100644
--- a/src/core/fncmodules.cpp
+++ b/src/core/fncmodules.cpp
@@ -1,3 +1,5 @@
+#include <cmath>
+#include <cstdlib>
#include "smmath.hpp"
#include "bullet.hpp"
#include "scriptshared.hpp"
@@ -6,7 +8,7 @@ Idata randr()
{
Idata ret;ret.type=1;
extern blrScriptVM *vm;
- ret.r()=(float)vm->re->nextDouble(callStk.pop().r(),callStk.pop().r());
+ ret.r()=vm->re->nextDouble(callStk.pop().r(),callStk.pop().r());
return ret;
}
Idata randi()
@@ -36,3 +38,146 @@ Idata createBullet()
Idata ret;ret.type=0;ret.i()=i;
return ret;
}
+void setBulletPropf()
+{
+ int hnd,pid;double data;
+ hnd=callStk.pop().i();
+ pid=callStk.pop().i();
+ data=callStk.pop().r();
+ extern bulletManager *bmInstance;
+ if(!bmInstance->getHandle(hnd))return;
+ if(!bmInstance->getHandle(hnd)->exist)return;
+ switch(pid)
+ {
+ case 1://coord x
+ bmInstance->getHandle(hnd)->pos.x=data;
+ break;
+ case 2://coord y
+ bmInstance->getHandle(hnd)->pos.y=data;
+ break;
+ case 8://velocity x
+ bmInstance->getHandle(hnd)->vel.x=data;
+ break;
+ case 9://velocity y
+ bmInstance->getHandle(hnd)->vel.y=data;
+ break;
+ }
+}
+void setBulletPropi()
+{
+ int hnd,pid,data;
+ hnd=callStk.pop().i();
+ pid=callStk.pop().i();
+ data=callStk.pop().i();
+ extern bulletManager *bmInstance;
+ if(!bmInstance->getHandle(hnd))return;
+ if(!bmInstance->getHandle(hnd)->exist)return;
+ switch(pid)
+ {
+ case 3://base color
+ bmInstance->getHandle(hnd)->basecolor=(TColors)data;
+ break;
+ case 4://color red
+ bmInstance->getHandle(hnd)->rendercolor=SETR(bmInstance->getHandle(hnd)->rendercolor,data);
+ break;
+ case 5://color green
+ bmInstance->getHandle(hnd)->rendercolor=SETG(bmInstance->getHandle(hnd)->rendercolor,data);
+ break;
+ case 6://color blue
+ bmInstance->getHandle(hnd)->rendercolor=SETB(bmInstance->getHandle(hnd)->rendercolor,data);
+ break;
+ case 7://color alpha
+ bmInstance->getHandle(hnd)->rendercolor=SETA(bmInstance->getHandle(hnd)->rendercolor,data);
+ break;
+ }
+}
+Idata vmsin()
+{
+ Idata ret;ret.type=1;
+ ret.r()=sin(callStk.pop().r());
+ return ret;
+}
+Idata vmcos()
+{
+ Idata ret;ret.type=1;
+ ret.r()=cos(callStk.pop().r());
+ return ret;
+}
+Idata vmtan()
+{
+ Idata ret;ret.type=1;
+ ret.r()=tan(callStk.pop().r());
+ return ret;
+}
+Idata vmsqrt()
+{
+ Idata ret;ret.type=1;
+ ret.r()=sqrt(callStk.pop().r());
+ return ret;
+}
+Idata vmabsf()
+{
+ Idata ret;ret.type=1;
+ ret.r()=fabs(callStk.pop().r());
+ return ret;
+}
+Idata vmabsd()
+{
+ Idata ret;ret.type=0;
+ ret.r()=abs(callStk.pop().i());
+ return ret;
+}
+Idata vmasin()
+{
+ Idata ret;ret.type=1;
+ ret.r()=asin(callStk.pop().r());
+ return ret;
+}
+Idata vmacos()
+{
+ Idata ret;ret.type=1;
+ ret.r()=acos(callStk.pop().r());
+ return ret;
+}
+Idata vmatan()
+{
+ Idata ret;ret.type=1;
+ ret.r()=atan(callStk.pop().r());
+ return ret;
+}
+Idata vmatan2()
+{
+ Idata ret;ret.type=1;
+ ret.r()=atan2(callStk.pop().r(),callStk.pop().r());
+ return ret;
+}
+Idata vmlog()
+{
+ Idata ret;ret.type=1;
+ ret.r()=log(callStk.pop().r());
+ return ret;
+}
+Idata vmceil()
+{
+ Idata ret;ret.type=1;
+ ret.r()=ceil(callStk.pop().r());
+ return ret;
+}
+Idata vmfloor()
+{
+ Idata ret;ret.type=1;
+ ret.r()=floor(callStk.pop().r());
+ return ret;
+}
+Idata vmtrunc()
+{
+ Idata ret;ret.type=1;
+ ret.r()=trunc(callStk.pop().r());
+ return ret;
+}
+Idata vmround()
+{
+ Idata ret;ret.type=1;
+ ret.r()=round(callStk.pop().r());
+ return ret;
+}