From 97caa971ba3d7f11ff608f7a333f098c0d2a0a8c Mon Sep 17 00:00:00 2001 From: Chris Xiong Date: Tue, 6 Oct 2015 11:27:15 +0800 Subject: Forgot to add '-a'... --- src/blr3.dtp | Bin 459958 -> 459968 bytes src/core/bullet.cpp | 40 ---------------------------------------- src/core/bullet.hpp | 7 ++++--- src/core/fncmodules.cpp | 12 ++++++------ src/core/player.cpp | 4 ++-- src/core/player.hpp | 4 ++-- src/core/scriptshared.hpp | 18 +++++++++--------- src/core/vmrunner.cpp | 3 ++- src/core/vmrunner.hpp | 15 +++++++-------- 9 files changed, 32 insertions(+), 71 deletions(-) diff --git a/src/blr3.dtp b/src/blr3.dtp index 08d6551..bda99d9 100644 Binary files a/src/blr3.dtp and b/src/blr3.dtp differ diff --git a/src/core/bullet.cpp b/src/core/bullet.cpp index c8cb50f..e016300 100644 --- a/src/core/bullet.cpp +++ b/src/core/bullet.cpp @@ -42,48 +42,8 @@ void bulletManager::deinit() for(int i=0;i<(int)COLOR_COUNT;++i) {delete bulent2d[i];delete bulent3d[i];} } -/*template -int bulletManager::allocBullet() -{ - if(!alloced) - { - alloced=1; - bullets[0]=new T; - return 0; - } - else - { - int i; - for(i=0;iexist)break; - if(i==alloced) - bullets[alloced++]=new T; - return i; - } - return -1; -} -template -int bulletManager::createBullet() -{ - //stub... - int ptr=allocBullet(); - bullets[ptr]->init(); - return ptr; -}*/ void bulletManager::updateBullet() { - /*static int b=0; - ++b; - if(b>15) - { - int a=createBullet(); - bulletBase* x=getHandle(a); - x->pos=smvec2d(400,300); - x->vel=smvec2d(rand()%100-50,rand()%100-50); - x->vel.normalize(); - x->rendercolor=0xC0FFFFFF; - b=0; - }*/ for(int i=0;iexist) bullets[i]->update(); diff --git a/src/core/bullet.hpp b/src/core/bullet.hpp index e3dc8fe..f3dd9f2 100644 --- a/src/core/bullet.hpp +++ b/src/core/bullet.hpp @@ -7,16 +7,17 @@ class bulletBase { public: smvec2d pos,vel,acc; - float velim; + double velim; //velim: velocity scalar limit. - float collrange,scollrange,renderscale; + double collrange,scollrange; + float renderscale; //collision range and semi-collision range. Replacing "collable" and "scollable". bool extborder,invincible; //extborder: true=not removed if out of screen. //invincible: true=not removed if collided with player or in range of CLR. bool exist,addblend; int attrd[8]; - float attrf[8]; + double attrf[8]; TColors basecolor; DWORD rendercolor; virtual void init(...); diff --git a/src/core/fncmodules.cpp b/src/core/fncmodules.cpp index 08747c8..767556e 100644 --- a/src/core/fncmodules.cpp +++ b/src/core/fncmodules.cpp @@ -6,7 +6,7 @@ Idata randr() { Idata ret;ret.type=1; extern blrScriptVM *vm; - ret.r()=(float)vm->re->nextDouble((float&)callStk.pop().r(),(float&)callStk.pop().r()); + ret.r()=(float)vm->re->nextDouble(callStk.pop().r(),callStk.pop().r()); return ret; } Idata randi() @@ -18,18 +18,18 @@ Idata randi() } Idata createBullet() { - float x,y,bs,rad; - rad=callStk.pop().r(); - bs=callStk.pop().r(); - y=callStk.pop().r(); + double x,y,bs,rad; x=callStk.pop().r(); + y=callStk.pop().r(); + bs=callStk.pop().r(); + rad=callStk.pop().r(); extern bulletManager *bmInstance; int i=bmInstance->createBullet(); bmInstance->getHandle(i)->pos.x=x; bmInstance->getHandle(i)->pos.y=y; bmInstance->getHandle(i)->vel=bs*smvec2d(cos(rad),sin(rad)); bmInstance->getHandle(i)->acc=smvec2d(0,0); - bmInstance->getHandle(i)->basecolor=blue; + bmInstance->getHandle(i)->basecolor=cyan; bmInstance->getHandle(i)->rendercolor=0xC0FFFFFF; bmInstance->getHandle(i)->collrange=4; bmInstance->getHandle(i)->scollrange=16; diff --git a/src/core/player.cpp b/src/core/player.cpp index 3407a0c..794bb5a 100644 --- a/src/core/player.cpp +++ b/src/core/player.cpp @@ -2,7 +2,7 @@ #include "player.hpp" #include "../master/resources.hpp" SMELT* playerBase::sm=NULL; -playerBase::playerBase(float _x,float _y) +playerBase::playerBase(double _x,double _y) { sm=smGetInterface(SMELT_APILEVEL); playerent=new smEntity2D(ssanm.getTextureInfo("player")->tex,ssanm.getTextureInfo("player")->rect); @@ -20,7 +20,7 @@ playerBase::~playerBase() void playerBase::update() { //player control... - static float realspeed=0; + static double realspeed=0; if(sm->smGetKeyState(plyrctl[4])) realspeed=0.85;else realspeed=3.5; if(sm->smGetKeyState(plyrctl[0])) diff --git a/src/core/player.hpp b/src/core/player.hpp index 408c174..51f4c79 100644 --- a/src/core/player.hpp +++ b/src/core/player.hpp @@ -9,10 +9,10 @@ private: static SMELT* sm; public: smvec2d pos; - float rot,vel,velp; + double rot,vel,velp; int plyrctl[6]; - playerBase(float _x=400,float _y=400); + playerBase(double _x=400,double _y=400); ~playerBase(); void update(); void render(); diff --git a/src/core/scriptshared.hpp b/src/core/scriptshared.hpp index 01d423a..65c02bc 100644 --- a/src/core/scriptshared.hpp +++ b/src/core/scriptshared.hpp @@ -3,28 +3,28 @@ #include #define eps 1e-6 typedef union _Udata{//data union - int i;float r;unsigned long d; + int i;double r;unsigned long d; _Udata(){d=0;} }Udata; typedef struct _Idata{//data union, with type tag and operators _Udata D; - int type;//0=int, 1=float + int type;//0=int, 1=double _Idata(){D.d=0;type=0;} _Idata(int _type,int _data) - {type=_type;if(type==0)D.i=_data;else D.r=(float)_data;} - float &r(){return D.r;} + {type=_type;if(type==0)D.i=_data;else D.r=(double)_data;} + double &r(){return D.r;} int &i(){return D.i;} unsigned long &d(){return D.d;} _Idata operator =(_Idata r) { - if(type==1&&r.type==0)this->r()=(float)r.i(); + if(type==1&&r.type==0)this->r()=(double)r.i(); else if(type==0&&r.type==1)this->i()=(int)r.r(); else this->d()=r.d(); return *this; } _Idata operator +=(_Idata r) { - if(type==1&&r.type==0)this->r()+=(float)r.i(); + if(type==1&&r.type==0)this->r()+=(double)r.i(); if(type==0&&r.type==1)this->i()+=(int)r.r(); if(type==0&&r.type==0)this->i()+=r.i(); if(type==1&&r.type==1)this->r()+=r.r(); @@ -32,7 +32,7 @@ typedef struct _Idata{//data union, with type tag and operators } _Idata operator -=(_Idata r) { - if(type==1&&r.type==0)this->r()-=(float)r.i(); + if(type==1&&r.type==0)this->r()-=(double)r.i(); if(type==0&&r.type==1)this->i()-=(int)r.r(); if(type==0&&r.type==0)this->i()-=r.i(); if(type==1&&r.type==1)this->r()-=r.r(); @@ -40,7 +40,7 @@ typedef struct _Idata{//data union, with type tag and operators } _Idata operator *=(_Idata r) { - if(type==1&&r.type==0)this->r()*=(float)r.i(); + if(type==1&&r.type==0)this->r()*=(double)r.i(); if(type==0&&r.type==1)this->i()*=(int)r.r(); if(type==0&&r.type==0)this->i()*=r.i(); if(type==1&&r.type==1)this->r()*=r.r(); @@ -48,7 +48,7 @@ typedef struct _Idata{//data union, with type tag and operators } _Idata operator /=(_Idata r) { - if(type==1&&r.type==0)this->r()/=(float)r.i(); + if(type==1&&r.type==0)this->r()/=(double)r.i(); if(type==0&&r.type==1)this->i()/=(int)r.r(); if(type==0&&r.type==0)this->i()/=r.i(); if(type==1&&r.type==1)this->r()/=r.r(); diff --git a/src/core/vmrunner.cpp b/src/core/vmrunner.cpp index fb4c5e6..9df68a0 100644 --- a/src/core/vmrunner.cpp +++ b/src/core/vmrunner.cpp @@ -53,7 +53,8 @@ void blrScriptVM::readPara(SPara *para) int l=0; switch(para->type) { - case 0: case 1: case 4: case 5: l=4;break; + case 1: l=8;break; + case 0: case 4: case 5: l=4;break; case 2: case 3: case 6: case 7: l=1;break; default: break; } diff --git a/src/core/vmrunner.hpp b/src/core/vmrunner.hpp index ee03385..d0e9af5 100644 --- a/src/core/vmrunner.hpp +++ b/src/core/vmrunner.hpp @@ -7,20 +7,19 @@ const Idata ione=Idata(0,1),izero=Idata(0,0); const Idata rone=Idata(1,1),rzero=Idata(1,0); template -class callStack//a queue, in fact. +class callStack { private: - int l,r; + int t; memb data[16]; public: callStack(){clear();} - void clear(){l=0;r=-1;} - int size(){return r-l+1;} + void clear(){t=-1;} + int size(){return t+1;} bool empty(){return size()==0;} - void push(memb a){memcpy(data+(++r),&a,sizeof(a));if(r>15)throw;} - memb pop(){if(l<=r+1)return data[l++];else throw;} - memb front(){return data[l];} - memb back(){return data[r];} + void push(memb a){memcpy(data+(++t),&a,sizeof(a));if(t>15)throw;} + memb pop(){if(~t)return data[t--];else throw;} + memb top(){if(~t)return data[t];else throw;} }; typedef struct _fncEntry{int hash,pos;}fncEntry; class blrScriptVM -- cgit v1.2.3