diff options
-rwxr-xr-x | CHANGELOG.TXT | 1 | ||||
-rw-r--r-- | levels.h | 80 | ||||
-rw-r--r-- | main.cpp | 5 | ||||
-rw-r--r-- | menus.h | 2 | ||||
-rw-r--r-- | towernbullet.h | 41 |
5 files changed, 106 insertions, 23 deletions
diff --git a/CHANGELOG.TXT b/CHANGELOG.TXT index aa33000..15f7ab4 100755 --- a/CHANGELOG.TXT +++ b/CHANGELOG.TXT @@ -10,6 +10,7 @@ Pre-Released versions: 0.9.0-0_PR (b78) First two assessment levels. Two more assessment levels... +One more assessment level...... Finish assessment system framework. Add circ2pnt. @@ -3531,7 +3531,7 @@ Good luck and go for the highest score!\ } if (Current_Position==1) { - frameleft=0;bulcnt=0;BTarg.TargHide(); + frameleft=0;bulcnt=0; return; } } @@ -3555,11 +3555,11 @@ void Levelm2Part1() for(int j=0;j<20;++j) dbtows[i*20+j]=&tower[CreateTower1(j*40+10,dbroll[i],4000,4)]; } - ++part;assetime=0; + ++part; } void Levelm2Part2() { - frameleft=Infinity;assetime+=hge->Timer_GetDelta(); + frameleft=Infinity; tbrk+=hge->Timer_GetDelta(); for(int i=0;i<5;++i) { @@ -3607,7 +3607,6 @@ void Levelm2Part4() { frameleft=Infinity; tbrk-=hge->Timer_GetDelta(); - assetime+=hge->Timer_GetDelta(); if(tbrk<0) { tbrk=0.5; @@ -3623,7 +3622,8 @@ void Levelm2Part4() CreateBullet2(400,300,rspeed,re.NextDouble(-pi,pi)); } } -BCircle asscircles[200]; + +expSpinner es; void Levelm2Part5() { frameleft=Infinity; @@ -3633,30 +3633,66 @@ void Levelm2Part5() IfShowTip=false; FadeTip=false; Current_Position=2; - ShowTip("Test 4 - Crossing 1"); + ShowTip("Test 3 - Constant patterns"); All2pnt(); return; } if (towcnt!=0)return ClearAll(false); if(Current_Position==1) { - assetime=0;memset(asscircles,0,sizeof(asscircles)); ++part;avabrk=0;avacurbrk=0; } } void Levelm2Part6() { + avacurbrk+=hge->Timer_GetDelta(); + if(avacurbrk>avabrk) + { + avacurbrk=0; + avabrk=6-2*assetime/120.0f; + if(avabrk<3)avabrk=1; + es.Init(3+5*assetime/120.0f,10,re.NextInt(-pi,pi)); + } + if(es.isActive())es.Update(); +} + +BCircle asscircles[200]; +void Levelm2Part7() +{ + frameleft=Infinity; + DisableAllTower=false; + if (IfShowTip) + { + IfShowTip=false; + FadeTip=false; + Current_Position=2; + ShowTip("Test 4 - Crossing 1"); + All2pnt(); + return; + } + if (towcnt!=0)return ClearAll(false); + if(Current_Position==1) + { + memset(asscircles,0,sizeof(asscircles)); + ++part;avabrk=0;avacurbrk=0; + } +} +void Levelm2Part8() +{ frameleft=Infinity; - assetime+=hge->Timer_GetDelta(); avacurbrk+=hge->Timer_GetDelta(); if(avacurbrk>avabrk) { for(int i=0;i<200;++i) - if (asscircles[i].GetRange()>800||asscircles[i].GetRange()<1e-7) - asscircles[i].Init(1,assetime/120.0f*0.00025,36,vector2d(250,300),blue);break; + if (asscircles[i].GetRange()>800||asscircles[i].GetRange()<1e-7) + { + asscircles[i].Init(1,assetime/120.0f*0.00025,36,vector2d(250,300),blue);break; + } for(int i=0;i<200;++i) - if (asscircles[i].GetRange()>800||asscircles[i].GetRange()<1e-7) - asscircles[i].Init(1,-assetime/120.0f*0.00025,36,vector2d(550,300),blue);break; + if (asscircles[i].GetRange()>800||asscircles[i].GetRange()<1e-7) + { + asscircles[i].Init(1,-assetime/120.0f*0.00025,36,vector2d(550,300),blue);break; + } avacurbrk=0; avabrk=3-assetime/60; if(avabrk<0.5)avabrk=0.5; @@ -3670,7 +3706,7 @@ void Levelm2Part6() } } } -void Levelm2Part7() +void Levelm2Part9() { frameleft=Infinity; DisableAllTower=false; @@ -3679,14 +3715,13 @@ void Levelm2Part7() IfShowTip=false; FadeTip=false; Current_Position=2; - ShowTip("Test 4 - Crossing 2"); + ShowTip("Test 5 - Crossing 2"); All2pnt(); return; } if (towcnt!=0)return ClearAll(false); if(Current_Position==1) { - assetime=0; for(int i=0;i<200;++i) if (asscircles[i].GetRange()>1e-7&&asscircles[i].GetRange()<800) asscircles[i].circ2pnt(); @@ -3694,19 +3729,22 @@ void Levelm2Part7() ++part;avabrk=0;avacurbrk=0; } } -void Levelm2Part8() +void Levelm2Part10() { frameleft=Infinity; - assetime+=hge->Timer_GetDelta(); avacurbrk+=hge->Timer_GetDelta(); if(avacurbrk>avabrk) { for(int i=0;i<200;++i) - if (asscircles[i].GetRange()>800||asscircles[i].GetRange()<1e-7) - asscircles[i].Init(1,0.0001,36+(24*assetime/120.0f),vector2d(400,300),blue);break; + if (asscircles[i].GetRange()>800||asscircles[i].GetRange()<1e-7) + { + asscircles[i].Init(1,0.0001,36+(24*assetime/120.0f),vector2d(400,300),blue);break; + } for(int i=0;i<200;++i) - if (asscircles[i].GetRange()>800||asscircles[i].GetRange()<1e-7) - asscircles[i].Init(1,-0.0001,36+(24*assetime/120.0f),vector2d(400,300),blue);break; + if (asscircles[i].GetRange()>800||asscircles[i].GetRange()<1e-7) + { + asscircles[i].Init(1,-0.0001,36+(24*assetime/120.0f),vector2d(400,300),blue);break; + } avacurbrk=0; avabrk=2-assetime/60; if(avabrk<0.3)avabrk=0.3; @@ -366,8 +366,9 @@ void CallLevels() { //Use this to call level procedures. if ((mode==1)&&coll!=0){DeathGUI_Init();return;} - if ((mode==2)&&coll!=0){++part;coll=0;IfCallLevel=IfShowTip=true;return;} + if ((mode==2)&&coll!=0){assetime=0;++part;coll=0;IfCallLevel=IfShowTip=true;return;} if (!IfCallLevel) return; + if (mode==2)assetime+=hge->Timer_GetDelta(); //Check Complete here if (level==1&&part==0)Level1Part0(); if (level==1&&part==1)Level1Part1(); @@ -530,6 +531,8 @@ void CallLevels() if (level==-2&&part==6)Levelm2Part6(); if (level==-2&&part==7)Levelm2Part7(); if (level==-2&&part==8)Levelm2Part8(); + if (level==-2&&part==9)Levelm2Part9(); + if (level==-2&&part==10)Levelm2Part10(); if (level==1&&part==5)level=2,part=0; if (level==2&&part==10) @@ -78,7 +78,7 @@ void StartGUI_FrameFnk() case 3: playerpos.x=400,playerpos.y=400,playerrot=0; frameleft=ThirtySeconds;infofade=0xFF;Dis8ref=t8special=false; - level=-2,part=0;frms=0,averfps=0.0;bsscale=1; + level=-2,part=0;frms=0,averfps=0.0;bsscale=1;assetime=0; towcnt=bulcnt=0;whrcnt=12;skyactive=false;PlayerSplit=false; score=0;Mult_Init();//Music_Init("./Resources/Music/CanonTechno.ogg"); lpst=4625568;lped=9234584;//Music_Play(); diff --git a/towernbullet.h b/towernbullet.h index d3d408c..f138ee8 100644 --- a/towernbullet.h +++ b/towernbullet.h @@ -2737,3 +2737,44 @@ public: rad+=hge->Timer_GetDelta()*1000*delta; } }; +class expSpinner +{ +private: + Bullet *bullets[1000]; + int arms,cnt,lc; + double brk,len,dr,da; + bool active; + bool InBound(vector2d pos) + { + if (pos.x<=-25||pos.x>=825||pos.y<=-25||pos.y>=625) + return false;return true; + } +public: + void Init(int _arms,double _drange,double _drad) + { + arms=_arms;lc=cnt=len=0;dr=_drange;da=_drad;active=true; + } + bool isActive(){return active;} + void Update() + { + brk+=hge->Timer_GetDelta(); + if(brk<0.03)return;brk=0; + bool none=true; + for(int i=0;i<arms;++i) + { + double rad=da+i*2*pi/(double)arms,drad=rad+lc*pi/15;int c=(lc&1)?1:-1; + if(InBound(vector2d(400+len*cos(rad),300+len*sin(rad)))) + { + bullets[cnt++]=&bullet[CreateBullet2( + 400+len*cos(rad),300+len*sin(rad),0,c*drad,true)]; + c=-c;none=false; + } + } + len+=dr;++lc; + if(none) + { + active=false; + for(int i=0;i<cnt;++i)bullets[i]->bulletaccel=0.002,bullets[i]->limv=2; + } + } +}; |