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). --- levels.h | 49 ++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 44 insertions(+), 5 deletions(-) (limited to 'levels.h') diff --git a/levels.h b/levels.h index 73c4c44..2ca2e66 100644 --- a/levels.h +++ b/levels.h @@ -3941,22 +3941,61 @@ void Levelm2Part17() void Levelm2Part18() { frameleft=Infinity; + //Always clean up! + for(int i=0;i<200;++i)if(pinballs[i].Getlifetime()>5)pinballs[i].Kill(); tbrk-=hge->Timer_GetDelta(); if(tbrk<0) { tbrk=1.25-0.5*assetime/120.0f;if(tbrk<0.5)tbrk=0.5; for(int i=0;i<200;++i) - if(pinballs[i].Getlifetime()==0||pinballs[i].Getlifetime()>=10) + if(pinballs[i].Getlifetime()==0) { - int lay=3+5*assetime/120.0f;if(lay>8)lay=re.NextInt(3,10); - vector2d pos=vector2d(re.NextDouble(100,600),re.NextDouble(100,500)); - while(GetDist(pos,playerpos)<100)pos=vector2d(re.NextDouble(100,600),re.NextDouble(100,500)); + int lay=4+4*assetime/120.0f;if(lay>8)lay=9; + lay=re.NextInt(3,lay); + vector2d pos; + while(1) + { + pos=vector2d(re.NextDouble(100,600),re.NextDouble(100,500)); + bool place=(GetDist(pos,playerpos)>=100); + for(int j=0;j<200;++j) + if(pinballs[j].Getlifetime()>0&&j!=i) + if(GetDist(pinballs[j].Position(),pos)0&&pinballs[i].Getlifetime()<10)pinballs[i].Update(); + if(pinballs[i].Getlifetime()>0) + { + vector2d pos=pinballs[i].Position(); + if(pos.x790-pinballs[i].Radius()) + pinballs[i].Delta().x=-pinballs[i].Delta().x,++pinballs[i].Getlifetime(),pinballs[i].UpdateDelta(); + if(pos.y590-pinballs[i].Radius()) + pinballs[i].Delta().y=-pinballs[i].Delta().y,++pinballs[i].Getlifetime(),pinballs[i].UpdateDelta(); + for(int j=i+1;j<200;++j) + if(pinballs[j].Getlifetime()>0&&pinballs[j].Getlifetime()<=5) + { + if(GetDist(pinballs[j].Position(),pinballs[i].Position())