From 7495d8ca26cdb25056667ae8a8d860005ee2a68f Mon Sep 17 00:00:00 2001 From: "chirs241097@gmail.com" Date: Thu, 19 Jun 2014 11:51:22 +0000 Subject: Add player position display into debug display. Rewrite pinball, adding collision between the balls... The collision code is based on Kollision (a game included in KDE SC). --- towernbullet.h | 46 ++++++++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 16 deletions(-) (limited to 'towernbullet.h') diff --git a/towernbullet.h b/towernbullet.h index 6effdc4..e0998e8 100644 --- a/towernbullet.h +++ b/towernbullet.h @@ -2730,38 +2730,52 @@ class CPinBall private: int center; int circles[10][30]; - int layer;double rot,lifetime,drt; + int layer,lifetime;double rot,drt; + vector2d delta; public: + vector2d& Delta(){return delta;} + vector2d& Position(){return bullet[center].bulletpos;} + double Radius(){return layer*10.0-5;} void Init(vector2d pos,int _lay) { - center=0;memset(circles,0,sizeof(circles)); - center=CreateBullet2(pos.x,pos.y,3,re.NextInt(-pi,pi),true); - layer=_lay;rot=0;lifetime=0.01;drt=re.NextDouble(-0.5*pi,0.5*pi); + center=0;memset(circles,0,sizeof(circles));double speed=re.NextDouble(2,5); + center=CreateBullet2(pos.x,pos.y,speed,re.NextInt(-pi,pi),true); + delta=speed*bullet[center].bulletdir; + layer=_lay;rot=0;lifetime=1;drt=re.NextDouble(-0.5*pi,0.5*pi); for(int i=0;iTimer_GetDelta(); vector2d pos=bullet[center].bulletpos; - if(pos.x<10*layer-5||pos.x>790-10*layer)bullet[center].bulletdir.x=-bullet[center].bulletdir.x; - if(pos.y<10*layer-5||pos.y>590-10*layer)bullet[center].bulletdir.y=-bullet[center].bulletdir.y; rot+=hge->Timer_GetDelta()*drt; for(int i=0;i