aboutsummaryrefslogtreecommitdiff
path: root/levels.h
diff options
context:
space:
mode:
authorGravatar Chris Xiong <chirs241097@gmail.com> 2015-10-26 22:52:36 +0800
committerGravatar Chris Xiong <chirs241097@gmail.com> 2015-10-26 22:52:36 +0800
commit3bd383baf6a17e734329e1fc677c7e86283db772 (patch)
tree69a9148087577f797624ceb9c71323a2563d6bb4 /levels.h
parent543e4f570be9b279ba558ca61cc02cda251af384 (diff)
downloadbullet-lab-remix-3bd383baf6a17e734329e1fc677c7e86283db772.tar.xz
Added support for relative line numbers.
Added instructions for, brk and cont. (They are still untested...) Parser code cleanup. Removed garbage output to stderr. Reorganize the repository structure. Updated BLR2 code move it into archive. Added BLR1 files.
Diffstat (limited to 'levels.h')
-rw-r--r--levels.h4305
1 files changed, 0 insertions, 4305 deletions
diff --git a/levels.h b/levels.h
deleted file mode 100644
index 58d7505..0000000
--- a/levels.h
+++ /dev/null
@@ -1,4305 +0,0 @@
-// Chrisoft Bullet Lab Remix HGE -*- C++ -*-
-// Level Implementations
-// Copyright Chrisoft 2014
-/*
-How to write a classic level/part...
-Classic parts need only one procedure, like this.
- frameleft=...;
- if (towercnt==/!=...)return ClearAll();
- DisableAllTower=false;bulcnt=0;memset(bullet,0,sizeof(bullet));
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("");
- return;
- }
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- for (int i=1;i<=towcnt;++i)
- if (tower[i].towerspr->GetColor()==0x80FFFFFF)
- tower[i].towerspr->SetColor(0x00FFFFFF);
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].towerspr->GetColor()>>24)<=0x80)
- tower[i].towerspr->SetColor(tower[i].towerspr->GetColor()+0x01FFFFFF);
- else
- {
- IfCallLevel=false;
- return;
- }
-*/
-/*
-How to write an "advanced" part...
-"Advanced" parts usually need two or more parts, ont for initalize and one for things to do every frame.
-Write on your own thought...
-*/
-bool squashrev;
-int posx,posy,fskp,posx2,posy2;
-bool doneredir;
-int pnt1,pnt2;
-//Let's start now!
-double towers[16];int tcnt;
-double dscroll,roll,tbrk;
-bool sout,tendone;bool dmt[16];
-//static const char* LEVEL_H_FN="levels.h";
-void Level1Part0(){++part;}
-void Level1Part1()
-{
- if(DBGColor!=0xFF888820)
- {
- for(int i=0;i<3;++i)
- DBGColor=ColorTransfer(DBGColor,0xFF888820);
- return;
- }
- CreateTower1(400,300,857,2);
- frameleft=AMinute*2;clrtime=1;
- tcnt=1;sout=false;dscroll=-0.025f;memset(dmt,true,sizeof(dmt));
- for (int i=0;i<tcnt;++i)
- {
- towers[i]=600+600.0f/(double)tcnt*i+12;
- CreateTower3(200,towers[i],428,3,4);
- CreateTower3(600,towers[i],428,3,4);
- }
- ++part;roll=0;tendone=false;
- ShowTip("\
-Level 1-Down by the Bank\n\
-Everything going on properly?\n\
-");
- Current_Position=2;
-}
-void Level1Part2()
-{
- for (int i=0;i<tcnt;++i)
- {
- if (LOWFPS)towers[i]+=17*dscroll;else towers[i]+=dscroll;
- tower[2*(i+1)].towerpos.y=tower[2*(i+1)+1].towerpos.y=towers[i];
- if (towers[i]<=300&&towers[i]>=290&&dmt[i])
- {
- NewMultpo(tower[2*(i+1)+1].towerpos);
- NewMultpo(tower[2*(i+1)].towerpos);
- dmt[i]=false;
- }
- }
- if (!sout)
- {
- if (towers[tcnt-1]<-12)++roll;
- for (int i=0;i<tcnt;++i)if (towers[i]<-12)towers[i]=612,dmt[i]=true;
- if (roll==1)
- for (int i=1;i<=towcnt;++i)
- if (tower[i].towertype==3)tower[i].t3t=5;
- if (roll==2)
- for (int i=1;i<=towcnt;++i)
- if (tower[i].towertype==3)tower[i].t3t=0;
- if (roll==3&&!tendone)
- {
- for (int i=1;i<=towcnt;++i)
- if (tower[i].towertype==3)tower[i].t3t=4;
- tcnt=10;
- tendone=true;
- for (int i=0;i<tcnt;++i)
- {
- towers[i]=600+600.0f/(double)tcnt*i+12;
- CreateTower3(200,towers[i],428,3,4);
- CreateTower3(600,towers[i],428,3,4);
- }
- }
- }
-}
-void Level1Part3()
-{
- frameleft=AMinute;clrtime=1;
- if (towcnt!=50&&towcnt!=0)return ClearAll();
- DisableAllTower=false;bulcnt=0;free(bullet);bullet=NULL;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Double-directed Labyrinth!");
- return;
- }
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- for (int i=1;i<=25;++i)
- CreateTower3(772,i*24-24,1714,2,2),
- CreateTower3(28,i*24-12,1714,2,2);
- for (int i=1;i<=towcnt;++i)
- if (tower[i].RendColor==0x80FFFFFF)
- tower[i].RendColor=0x00FFFFFF;
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].RendColor>>24)<=0x80)
- tower[i].RendColor=tower[i].RendColor+0x01FFFFFF;
- else
- {
- ++part;
- return;
- }
-}
-int labyred;
-void Level1Part4()
-{
- if (frameleft<=TwentySeconds)
- {
- if (LOWFPS)labyred+=17;else ++labyred;
- if (labyred>=1500)CreateBullet6(re.NextDouble(0,800),re.NextDouble(0,600),2,0,1,12,true),labyred=0;
- }
- if (frameleft<=TenSeconds&&tower[1].towertimer>857)
- for (int i=1;i<=towcnt;++i)tower[i].towertimer=857;
-}
-BCircle Level2Circle,Level2Circle2;
-int fakes[12];
-double L2D;
-void Level2Part0()
-{
- frameleft=50;L2D=0;
- if (towcnt==50)
- {
- ClearAll();
- return;
- }
- bulcnt=0;free(bullet);bullet=NULL;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("\
-Level 2-Polygon Mystery\n\
-Place yourself correctly!\
-");
- IfCallLevel=false;
- }
- if (Current_Position==1)
- {
- frameleft=0;
- return;
- }
-}
-void Level2Part1()
-{
- frameleft=AMinute;clrtime=1;
- Level2Circle.Init(230,pi/12000,96,vector2d(400,300));
- Level2Circle2.Init(270,-pi/12000,96,vector2d(400,300));
- CreateTower3_fixeddir(400,50,300,3,-2.0f/3.0f*pi);
- CreateTower3_fixeddir(400,51,300,3,-1.0f/3.0f*pi);
- //=======
- CreateTower3_fixeddir(400,550,300,3,2.0f/3.0f*pi);
- CreateTower3_fixeddir(400,549,300,3,1.0f/3.0f*pi);
- //=======
- CreateTower3_fixeddir(616.51,175,300,3,0);
- CreateTower3_fixeddir(616.51,176,300,3,-1.0f/3.0f*pi);
- //=======
- CreateTower3_fixeddir(183.49,175,300,3,-pi);
- CreateTower3_fixeddir(183.49,176,300,3,-2.0f/3.0f*pi);
- //=======
- CreateTower3_fixeddir(616.51,425,300,3,0);
- CreateTower3_fixeddir(616.51,424,300,3,1.0f/3.0f*pi);
- //=======
- CreateTower3_fixeddir(183.49,425,300,3,-pi);
- CreateTower3_fixeddir(183.49,424,300,3,2.0f/3.0f*pi);
- for (int i=0;i<6;++i)fakes[i]=CreateBullet6(400,300,0,999999999,1,1,false),bullet[fakes[i]].inv=true;
- ++part;tbrk=0;
-}
-void Level2Part2()
-{
- Level2Circle.Update();
- Level2Circle2.Update();
- L2D+=hge->Timer_GetDelta();
- double base=Level2Circle.GetRad();
- double r=(Level2Circle.GetRange()+Level2Circle2.GetRange())/2.0f;
- for (int i=0;i<6;++i)
- bullet[fakes[i]].bulletpos=vector2d(400+r*cos(base+i*pi/3.0f),300+r*sin(base+i*pi/3.0f));
- if (L2D>=1.5)
- {
- L2D=0;tbrk+=1;
- for (int i=0;i<6;++i)
- {
- CreateBullet6(403+r*cos(base+i*pi/3.0f),303+r*sin(base+i*pi/3.0f),2,0,1,6,true);
- clockrot=0;
- if(tbrk>=5)NewMultpo(vector2d(403+r*cos(base+i*pi/3.0f),303+r*sin(base+i*pi/3.0f)));
- }
- if(tbrk>=5)tbrk=0;
- }
-}
-void Level2Part3()
-{
- frameleft=AMinute;clrtime=1;
- for (int i=0;i<6;++i)bullet[fakes[i]].exist=false;
- for (int i=0;i<6;++i)fakes[i]=CreateBullet7(400,300,0,999999999,false),bullet[fakes[i]].inv=true;
- whicnt=3;clockrot=deltarot=0;++part;tbrk=0;
-}
-void Level2Part4()
-{
- Level2Circle.Update();
- Level2Circle2.Update();
- L2D+=hge->Timer_GetDelta();
- double base=Level2Circle.GetRad();
- double r=(Level2Circle.GetRange()+Level2Circle2.GetRange())/2.0f;
- for (int i=0;i<6;++i)
- bullet[fakes[i]].bulletpos=vector2d(400+r*cos(base+i*pi/3.0f),300+r*sin(base+i*pi/3.0f));
- if (L2D>=5)
- {
- L2D=0;tbrk+=1;
- for (int i=0;i<6;++i)
- {
- CreateBullet7(403+r*cos(base+i*pi/3.0f),303+r*sin(base+i*pi/3.0f),2,0,true);
- if(tbrk>=5)NewMultpo(vector2d(403+r*cos(base+i*pi/3.0f),303+r*sin(base+i*pi/3.0f)));
- }
- if(tbrk>=5)tbrk=0;
- }
-}
-void Level2Part5()
-{
- frameleft=TenSeconds/2;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("You've got 5 seconds to choose a fine place...");
- return;
- }
- ++part;tbrk=0;
-}
-Laser Lock;
-void Level2Part6()
-{
- Level2Circle.Update();
- Level2Circle2.Update();
- L2D+=hge->Timer_GetDelta();
- double base=Level2Circle.GetRad();
- double r=(Level2Circle.GetRange()+Level2Circle2.GetRange())/2.0f;
- for (int i=0;i<6;++i)
- bullet[fakes[i]].bulletpos=vector2d(400+r*cos(base+i*pi/3.0f),300+r*sin(base+i*pi/3.0f)),bullet[fakes[i]].inv=true;
- if (L2D>=5)
- {
- L2D=0;tbrk+=1;
- for (int i=0;i<6;++i)
- {
- CreateBullet7(403+r*cos(base+i*pi/3.0f),303+r*sin(base+i*pi/3.0f),2,0,true);
- if(tbrk>=5)NewMultpo(vector2d(403+r*cos(base+i*pi/3.0f),303+r*sin(base+i*pi/3.0f)));
- }
- if(tbrk>=5)tbrk=0;
- }
- if (frameleft<TenSeconds/20)++part,frameleft=AMinute,clrtime=1;
-}
-void Level2Part7()
-{
- if (!playerLockY)playerLockY=true;
- Level2Circle.Update();
- Level2Circle2.Update();
- L2D+=hge->Timer_GetDelta();
- double base=Level2Circle.GetRad();
- double r=(Level2Circle.GetRange()+Level2Circle2.GetRange())/2.0f;
- for (int i=0;i<6;++i)
- bullet[fakes[i]].bulletpos=vector2d(400+r*cos(base+i*pi/3.0f),300+r*sin(base+i*pi/3.0f)),bullet[fakes[i]].inv=true;
- if (L2D>=5)
- {
- L2D=0;tbrk+=1;
- for (int i=0;i<6;++i)
- {
- CreateBullet7(403+r*cos(base+i*pi/3.0f),303+r*sin(base+i*pi/3.0f),2,0,true);
- if(tbrk>=5)NewMultpo(vector2d(403+r*cos(base+i*pi/3.0f),303+r*sin(base+i*pi/3.0f)));
- }
- if(tbrk>=5)tbrk=0;
- }
-}
-double L2D1;
-void Level2Part8()
-{
- frameleft=ThirtySeconds;L2D1=0;
- playerLockY=false;clrtime=2;
- for (int i=6;i<12;++i)fakes[i]=CreateBullet6(400,300,0,999999999,1,1,false),bullet[fakes[i]].inv=true;
- ++part;tbrk=0;
-}
-void Level2Part9()
-{
- Level2Circle.Update();
- Level2Circle2.Update();
- L2D+=hge->Timer_GetDelta();
- L2D1+=hge->Timer_GetDelta();
- double base=Level2Circle.GetRad();
- double base2=Level2Circle2.GetRad();
- double r=(Level2Circle.GetRange()+Level2Circle2.GetRange())/2.0f;
- for (int i=0;i<6;++i)
- bullet[fakes[i]].bulletpos=vector2d(400+r*cos(base+i*pi/3.0f),300+r*sin(base+i*pi/3.0f));
- for (int i=6;i<12;++i)
- bullet[fakes[i]].bulletpos=vector2d(400+r*cos(base2+i*pi/3.0f),300+r*sin(base2+i*pi/3.0f));
- if (L2D1>=2)
- {
- L2D1=0;tbrk+=1;
- for (int i=0;i<6;++i)
- {
- CreateBullet6(403+r*cos(base2+i*pi/3.0f),303+r*sin(base2+i*pi/3.0f),2,0,1,6,true);
- clockrot=0;
- if(tbrk>=5)NewMultpo(vector2d(403+r*cos(base2+i*pi/3.0f),303+r*sin(base2+i*pi/3.0f)));
- }
- }
- if (L2D>=5)
- {
- L2D=0;tbrk+=1;
- for (int i=0;i<6;++i)
- {
- CreateBullet7(403+r*cos(base+i*pi/3.0f),303+r*sin(base+i*pi/3.0f),2,0,true);
- if(tbrk>=5)NewMultpo(vector2d(403+r*cos(base+i*pi/3.0f),303+r*sin(base+i*pi/3.0f)));
- }
- }
- if(tbrk>=5)tbrk=0;
-}
-void Level3Part0()
-{
- frameleft=50;
- if (towcnt==50)
- {
- ClearAll();
- return;
- }
- bulcnt=0;free(bullet);bullet=NULL;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("\
-Level 3-Missing Colour\n\
-A negative omen...\
-");
- IfCallLevel=false;
- }
- if (Current_Position==1)
- {
- frameleft=0;
- return;
- }
-}
-void Level3Part1()
-{
- frameleft=ThirtySeconds;clrtime=0;
- if (towcnt!=1&&towcnt!=0)return ClearAll();
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Meet my new weapon...Is it cool?");
- return;
- }
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- CreateTower8(400,300,857,3,57,30,false);
- for (int i=1;i<=towcnt;++i)
- if (tower[i].RendColor==0x80FFFFFF)
- tower[i].RendColor=0x00FFFFFF;
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].RendColor>>24)<=0x80)
- tower[i].RendColor=tower[i].RendColor+0x01FFFFFF;
- else
- {
- IfCallLevel=false;
- return;
- }
-}
-void Level3Part2()
-{
- frameleft=ThirtySeconds;clrtime=0;
- if (towcnt!=4&&towcnt!=0)return ClearAll(false);
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("What about quad reflective towers...?");
- All2pnt();
- return;
- }
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- CreateTower8(30,10,1250,3,57,15,false);
- CreateTower8(746,10,1250,3,57,15,false);
- CreateTower8(30,556,1250,3,57,15,false);
- CreateTower8(746,556,1250,3,57,15,false);
- for (int i=1;i<=towcnt;++i)
- if (tower[i].RendColor==0x80FFFFFF)
- tower[i].RendColor=0x00FFFFFF;
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].RendColor>>24)<=0x80)
- tower[i].RendColor=tower[i].RendColor+0x01FFFFFF;
- else
- {
- IfCallLevel=false;
- return;
- }
-}
-TROF fr[6][6];
-int cur;
-double elasped;
-void Level3Part3()
-{
- frameleft=AMinute;clrtime=1;
- if (towcnt!=1&&towcnt!=0)return ClearAll(false);
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- All2pnt();
- ShowTip("Precise mode is not so precise as expected...");
- return;
- }
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- CreateTower8(400,300,999999999,0,999999999,0,false);
- for (int i=1;i<=towcnt;++i)
- if (tower[i].RendColor==0x80FFFFFF)
- tower[i].RendColor=0x00FFFFFF;
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].RendColor>>24)<=0x80)
- tower[i].RendColor=tower[i].RendColor+0x01FFFFFF;
- else
- {
- for (int k=0;k<6;++k)
- for (int i=0;i<6;++i)
- {
- fr[k][i].cnt=10;
- fr[k][i].drad=(i+1)*pi/3.0f;
- fr[k][i].srad=i*pi/3.0f;
- fr[k][i].delay=750;
- fr[k][i].stage=-1;
- if (k==0)fr[k][i].init();
- }
- ++part;
- elasped=0;cur=0;
- return;
- }
-}
-void Level3Part4()
-{
- if (frameleft<TwentySeconds&&tower[1].towertimer==999999999)
- {
- tower[1].towertimer=tower[1].curtimer=1500;
- tower[1].towertimer2=100;
- tower[1].bulletspeed=3;tower[1].shotcount=tower[1].curshotcount=10;
- }
- for (int k=0;k<6;++k)
- for (int i=0;i<6;++i)
- fr[k][i].update();
- elasped+=hge->Timer_GetDelta();
- if (elasped>3)
- {
- elasped=0;++cur;
- if (cur>=6)cur=0;
- double sr=re.NextInt(0,9)*pi/30.0f;
- for (int i=0;i<6;++i)
- {
- fr[cur][i].drad=(i+1)*pi/3.0f+sr;
- fr[cur][i].srad=i*pi/3.0f+sr;
- fr[cur][i].init();
- }
- }
-}
-double l3p5brk;
-void Level3Part5()
-{
- frameleft=ThirtySeconds;clrtime=2;
- if (towcnt!=0)return ClearAll(false);
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- All2pnt();BTarg.TargHide();
- ShowTip("Well, here is a...");
- return;
- }
- ++part;l3p5brk=0;
-}
-void Level3Part6()
-{
- l3p5brk+=hge->Timer_GetDelta();
- if (l3p5brk>0.2)
- {
- l3p5brk=0;
- for (int i=1;i<=8;++i)bullet[CreateBullet8(i*100-50,20,2,false)].setdir(-pi/2);
- }
-}
-void Level4Part0()
-{
- frameleft=50;All2pnt();towcnt=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("\
-Level 4-Reunion\n\
-What was the weather like yesterday?...\n\
-");
- IfCallLevel=false;
- }
- if (Current_Position==1)
- {
- frameleft=0;bulcnt=0;BTarg.TargHide();
- return;
- }
-}
-void Level4Part1()
-{
- frameleft=ThirtySeconds;clrtime=0;
- if (towcnt!=1&&towcnt!=0)return ClearAll();
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Where is this idea from?");
- return;
- }
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- CreateTower9(400,300,1000,4,750,36,750);
- for (int i=1;i<=towcnt;++i)
- if (tower[i].RendColor==0x80FFFFFF)
- tower[i].RendColor=0x00FFFFFF;
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].RendColor>>24)<=0x80)
- tower[i].RendColor=tower[i].RendColor+0x01FFFFFF;
- else
- {
- IfCallLevel=false;
- return;
- }
-}
-int redirs[400];int cred;
-void Level4Part2()
-{
- frameleft=TenSeconds/2;clrtime=0;
- if (towcnt==1)
- {
- ClearAll();
- return;
- }
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("...");
- }
- if (Current_Position==1)
- {
- ++part;memset(redirs,0,sizeof(redirs));cred=-1;
- ATarg.TargShow();
- posx=10,posy=10,doneredir=false;
- }
-}
-void Level4Part3()
-{
- if (!LOWFPS)++fskp;else fskp+=17;
- if (fskp>30)
- {
- fskp=0;
- if (posx<766)
- {
- posx+=12;
- redirs[++cred]=CreateBullet9(posx,posy,0,999999,1,999999);
- }
- else
- {
- if (posy<566)
- {
- posy+=12;
- redirs[++cred]=CreateBullet9(posx,posy,0,999999,1,999999);
- }
- else
- if (!doneredir)
- for (int i=0;i<=cred;++i)
- bullet[redirs[i]].redir(ATarg.targpos),bullet[redirs[i]].bulletspeed=4,doneredir=true;
- }
- }
-}
-void Level4Part4()
-{
- frameleft=TenSeconds/2;clrtime=0;
- DisableAllTower=false;
- if (Current_Position==1)
- {
- ++part;memset(redirs,0,sizeof(redirs));cred=-1;
- posx2=766,posy2=566,doneredir=false;
- }
-}
-void Level4Part5()
-{
- if (!LOWFPS)++fskp;else fskp+=17;
- if (fskp>30)
- {
- fskp=0;
- if (posx2>10)
- {
- posx2-=12;
- redirs[++cred]=CreateBullet9(posx2,posy2,0,999999,1,999999);
- }
- else
- {
- if (posy2>10)
- {
- posy2-=12;
- redirs[++cred]=CreateBullet9(posx2,posy2,0,999999,1,999999);
- }
- else
- if (!doneredir)
- for (int i=0;i<=cred;++i)
- bullet[redirs[i]].redir(ATarg.targpos),bullet[redirs[i]].bulletspeed=4,doneredir=true;
- }
- }
-}
-void Level4Part6()
-{
- frameleft=TenSeconds/10*4;clrtime=0;
- DisableAllTower=false;
- if (Current_Position==1)
- {
- ++part;memset(redirs,0,sizeof(redirs));cred=-1;
- ATarg.TargShow();
- posx=10,posy=10,doneredir=false;
- }
-}
-void Level4Part7()
-{
- if (!LOWFPS)++fskp;else fskp+=17;
- if (fskp>30)
- {
- fskp=0;
- if (posx<766)
- {
- posx+=12;
- redirs[++cred]=CreateBullet9(posx,posy,0,999999,1,999999);
- }
- else
- {
- if (posy<566)
- {
- posy+=12;
- redirs[++cred]=CreateBullet9(posx,posy,0,999999,1,999999);
- }
- else
- if (!doneredir)
- for (int i=0;i<=cred;++i)
- bullet[redirs[i]].redir(ATarg.targpos),bullet[redirs[i]].bulletspeed=4,doneredir=true;
- }
- }
-}
-void Level4Part8()
-{
- frameleft=TenSeconds/10*4;clrtime=0;
- DisableAllTower=false;
- if (Current_Position==1)
- {
- ++part;memset(redirs,0,sizeof(redirs));cred=-1;
- posx2=766,posy2=566,doneredir=false;
- }
-}
-void Level4Part9()
-{
- if (!LOWFPS)++fskp;else fskp+=17;
- if (fskp>30)
- {
- fskp=0;
- if (posx2>10)
- {
- posx2-=12;
- redirs[++cred]=CreateBullet9(posx2,posy2,0,999999,1,999999);
- }
- else
- {
- if (posy2>10)
- {
- posy2-=12;
- redirs[++cred]=CreateBullet9(posx2,posy2,0,999999,1,999999);
- }
- else
- if (!doneredir)
- for (int i=0;i<=cred;++i)
- bullet[redirs[i]].redir(ATarg.targpos),bullet[redirs[i]].bulletspeed=4,doneredir=true;
- }
- }
-}
-void Level4Part10()
-{
- frameleft=TenSeconds/10*3;clrtime=0;
- DisableAllTower=false;
- if (Current_Position==1)
- {
- ++part;memset(redirs,0,sizeof(redirs));cred=-1;
- ATarg.TargShow();
- posx=10,posy=10,doneredir=false;
- }
-}
-void Level4Part11()
-{
- if (!LOWFPS)++fskp;else fskp+=17;
- if (fskp>15)
- {
- fskp=0;
- if (posx<766)
- {
- posx+=12;
- redirs[++cred]=CreateBullet9(posx,posy,0,999999,1,999999);
- }
- else
- {
- if (posy<566)
- {
- posy+=12;
- redirs[++cred]=CreateBullet9(posx,posy,0,999999,1,999999);
- }
- else
- if (!doneredir)
- for (int i=0;i<=cred;++i)
- bullet[redirs[i]].redir(ATarg.targpos),bullet[redirs[i]].bulletspeed=4,doneredir=true;
- }
- }
-}
-void Level4Part12()
-{
- frameleft=TenSeconds/10*3;clrtime=0;
- DisableAllTower=false;
- if (Current_Position==1)
- {
- ++part;memset(redirs,0,sizeof(redirs));cred=-1;
- posx2=766,posy2=566,doneredir=false;
- }
-}
-void Level4Part13()
-{
- if (!LOWFPS)++fskp;else fskp+=17;
- if (fskp>15)
- {
- fskp=0;
- if (posx2>10)
- {
- posx2-=12;
- redirs[++cred]=CreateBullet9(posx2,posy2,0,999999,1,999999);
- }
- else
- {
- if (posy2>10)
- {
- posy2-=12;
- redirs[++cred]=CreateBullet9(posx2,posy2,0,999999,1,999999);
- }
- else
- if (!doneredir)
- for (int i=0;i<=cred;++i)
- bullet[redirs[i]].redir(ATarg.targpos),bullet[redirs[i]].bulletspeed=4,doneredir=true;
- }
- }
-}
-void Level4Part14()
-{
- frameleft=TenSeconds/10*2;clrtime=0;
- DisableAllTower=false;
- if (Current_Position==1)
- {
- ++part;memset(redirs,0,sizeof(redirs));cred=-1;
- ATarg.TargShow();
- posx=10,posy=10,doneredir=false;
- }
-}
-void Level4Part15()
-{
- if (!LOWFPS)++fskp;else fskp+=17;
- if (fskp>15)
- {
- fskp=0;
- if (posx<766)
- {
- posx+=12;
- redirs[++cred]=CreateBullet9(posx,posy,0,999999,1,999999);
- }
- else
- {
- if (posy<566)
- {
- posy+=12;
- redirs[++cred]=CreateBullet9(posx,posy,0,999999,1,999999);
- }
- else
- if (!doneredir)
- for (int i=0;i<=cred;++i)
- bullet[redirs[i]].redir(ATarg.targpos),bullet[redirs[i]].bulletspeed=4,doneredir=true;
- }
- }
-}
-void Level4Part16()
-{
- frameleft=TenSeconds/10*2;clrtime=0;
- DisableAllTower=false;
- if (Current_Position==1)
- {
- ++part;memset(redirs,0,sizeof(redirs));cred=-1;
- posx2=766,posy2=566,doneredir=false;
- }
-}
-void Level4Part17()
-{
- if (!LOWFPS)++fskp;else fskp+=17;
- if (fskp>15)
- {
- fskp=0;
- if (posx2>10)
- {
- posx2-=12;
- redirs[++cred]=CreateBullet9(posx2,posy2,0,999999,1,999999);
- }
- else
- {
- if (posy2>10)
- {
- posy2-=12;
- redirs[++cred]=CreateBullet9(posx2,posy2,0,999999,1,999999);
- }
- else
- if (!doneredir)
- for (int i=0;i<=cred;++i)
- bullet[redirs[i]].redir(ATarg.targpos),bullet[redirs[i]].bulletspeed=4,doneredir=true;
- }
- }
-}
-void Level4Part18()
-{
- frameleft=TenSeconds;clrtime=0;
- DisableAllTower=false;
- if (Current_Position==1)
- {
- ++part;memset(redirs,0,sizeof(redirs));cred=-1;
- posx=10,posy=10,posx2=766,posy2=566,doneredir=false;
- }
-}
-void Level4Part19()
-{
- if (!LOWFPS)++fskp;else fskp+=17;
- if (fskp>33)
- {
- fskp=0;
- if (posx2>10)
- {
- posx2-=24;
- redirs[++cred]=CreateBullet9(posx2,posy2,0,999999,1,999999);
- }
- else
- {
- if (posy2>10)
- {
- posy2-=24;
- redirs[++cred]=CreateBullet9(posx2,posy2,0,999999,1,999999);
- }
- else
- if (!doneredir)
- for (int i=0;i<=cred;++i)
- bullet[redirs[i]].redir(ATarg.targpos),bullet[redirs[i]].bulletspeed=2,doneredir=true;
- }
- if (posx<766)
- {
- posx+=24;
- redirs[++cred]=CreateBullet9(posx,posy,0,999999,1,999999);
- }
- else
- {
- if (posy<566)
- {
- posy+=24;
- redirs[++cred]=CreateBullet9(posx,posy,0,999999,1,999999);
- }
- }
-
- }
-}
-double rot1,dta1,rot2,dta2,spd2,elsp1;
-void Level4Part20()
-{
- frameleft=AMinute;All2pnt();towcnt=0;
- DisableAllTower=false;clrtime=0;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Double Spinner...?");
- }
- if (Current_Position==1)
- {
- BTarg.TargHide();ATarg.TargHide();CreateTower3(400,300,999999999,0,0);
- rot1=dta1=rot2=dta2=elsp1=0;spd2=1;++part;IfCallLevel=true;
- return;
- }
-}
-void Level4Part21()
-{
- elsp1+=hge->Timer_GetDelta();
- if (elsp1<=0.3)return;
- elsp1=0;
- int times=1;if (LOWFPS)times=17;
- for (int i=1;i<=times;++i)
- {
- dta1+=2*pi/180;dta2-=2*pi/180;spd2=1+4.0f*((AMinute-frameleft)/(double)AMinute);
- rot1+=dta1;rot2+=dta2;
- }
- for (int i=0;i<6;++i)CreateBullet2(400,300,4,rot1+i*pi/3);
- for (int i=0;i<6;++i)CreateBullet2(400,300,spd2,rot2+i*pi/3);
-}
-void Level4Part22()
-{
- frameleft=AMinute;clrtime=1;
- if (towcnt==1)
- {
- ClearAll();
- return;
- }
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Have problem breathing?\n...so try this!");
- }
- if (Current_Position==1)
- {
- ++part;
- pnt1=CreateTower3(10,10,50,20,1);
- pnt2=CreateTower3(790,10,50,20,1);
- CreateTower9(400,10,2000,2,2000,6,1000);
- }
-}
-void Level4Part23()
-{
- if (!LOWFPS)
- tower[pnt1].towerpos.x+=0.006,tower[pnt2].towerpos.x-=0.006;
- else
- tower[pnt1].towerpos.x+=0.006*17,tower[pnt2].towerpos.x-=0.006*17;
-}
-void Level4Part24()
-{
- frameleft=AMinute;clrtime=0;
- if (towcnt!=5&&towcnt!=0)return ClearAll(false);
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;All2pnt();
- Current_Position=2;
- ShowTip("Let's meet a more classical circle-drawing part...\n\
-...as the end of this level...\nCan you draw perfectly?");
- return;
- }
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- CreateTower4(400,300,2000,2.5);
- CreateTower1(9,9,2000,3);
- CreateTower1(767,11,2000,3);
- CreateTower1(9,567,2000,3);
- CreateTower1(767,567,2000,3);
- for (int i=1;i<=towcnt;++i)
- if (tower[i].RendColor==0x80FFFFFF)
- tower[i].RendColor=0x00FFFFFF;
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].RendColor>>24)<=0x80)
- tower[i].RendColor=tower[i].RendColor+0x01FFFFFF;
- else
- {
- ++part;
- return;
- }
-}
-void Level4Part25()
-{
- if(re.NextInt(0,599)==10)NewMultpo();
- for (int i=2;i<=5;++i)
- tower[i].towertimer=((frameleft)/(double)AMinute)*1800+200;
-}
-void Level5Part0()
-{
- frameleft=50;All2pnt();towcnt=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- LE_Active=true;letex=TLeaf;lescale=0.75;
- letr=TextureRect(0,0,108,108);lecolor=0xCCCC3333;
- Leaf.Init();
- Current_Position=2;
- ShowTip("\
-Level 5-Crazy Autumn\n\
-Autumn is considered as a miserable season for \n\
-thousands of years...\n\
-This autumn, however, is coming too fast...\
-");
- IfCallLevel=false;
- }
- if (Current_Position==1)
- {
- frameleft=0;
- return;
- }
-}
-void Level5Part1()
-{
- frameleft=ThirtySeconds;clrtime=0;
- if (towcnt!=2&&towcnt!=0)return ClearAll(false);
- DisableAllTower=false;
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- CreateTower9(400,300,2000,3,1000,36,750);
- CreateTower4(400,50,2000,2.5,0);
- for (int i=1;i<=towcnt;++i)
- if (tower[i].RendColor==0x80FFFFFF)
- tower[i].RendColor=0x00FFFFFF;
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].RendColor>>24)<=0x80)
- tower[i].RendColor=tower[i].RendColor+0x01FFFFFF;
- else
- {
- IfCallLevel=false;
- return;
- }
-}
-void Level5Part2()
-{
- frameleft=ThirtySeconds;clrtime=0;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;All2pnt();
- Current_Position=2;
- ShowTip("What if your cheaser is faster than you...");
- return;
- }
- tower[2].bulletspeed=4;IfCallLevel=false;
-}
-int pos,lsrbrk;
-bool rev;
-/**********************\
- * Vortex of Leaves *
-\**********************/
-void Level5Part3()
-{
- frameleft=AMinute;clrtime=2;
- if (towcnt!=0)return (void)ClearAll();
- Lasercnt=12;
- for (int i=1;i<=12;++i)
- {
- laser[i].Init(32);
- laser[i].SetTexture(SprSheet,0,264,248,8);
- laser[i].RenCtr.x=406,laser[i].RenCtr.y=306;
- }
- ++part;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;All2pnt();
- Current_Position=2;
- ShowTip("Vortex of leaves...");
- return;
- }
-}
-void Level5Part4()
-{
- bool shot=false;
- if (LOWFPS)lsrbrk+=16;
- if (++lsrbrk>=100)lsrbrk=0,shot=true,++pos;
- if (pos==32)
- {
- pos=0;rev=!rev;
- for (int i=1;i<=bulcnt;++i)
- if (bullet[i].bullettype==2&&bullet[i].bulletspeed<1e-5)
- bullet[i].bulletaccel=0.001,
- bullet[i].limv=1+1.5*(frameleft/(double)AMinute);
- }
- for (int i=1;i<=12;++i)
- {
- double initrad=pi/6.0f*(i-1);
- double dist;
- for (int j=0;j<32;++j)
- {
- dist=j*Resd;
- double trad;
- if (rev)trad=initrad-j*pi/36.0f;else trad=initrad+j*pi/36.0f;
- vector2d t,tt,s;
- t.x=cos(trad)*dist;
- t.y=sin(trad)*dist;
- dist=(j+1)*Resd;
- if (rev)trad=initrad-(j+1)*pi/36.0f;else trad=initrad+(j+1)*pi/36.0f;
- tt.x=cos(trad)*dist;tt.y=sin(trad)*dist;
- tt.x-=t.x;tt.y-=t.y;trad=tt.x;tt.x=tt.y;tt.y=-trad;
- trad=sqrt(sqr(tt.x)+sqr(tt.y));
- tt.x/=trad;tt.y/=trad;
- //pos: 0~8, mult:0~8
- //pos: 24~32, mult: 8~0
- if (pos>=24)
- tt.x*=(32-pos)/1.5f,tt.y*=(32-pos)/1.5f;
- else
- if (pos<=8)
- tt.x*=pos/1.5f,tt.y*=pos/1.5f;
- else
- tt.x*=5.33f,tt.y*=5.33f;
- //We only consider collisions when pos is between 9 and 23.
- if (pos>9&&pos<23)laser[i].EnableColl=true;else laser[i].EnableColl=false;
- s.x=t.x+tt.x;s.y=t.y+tt.y;
- if (j==31)
- for (int k=31;k<MaxRes;++k)
- laser[i].Setdata(k,t,s,0xEEFF8800);
- else
- laser[i].Setdata(j,t,s,0xEEFF8800);
- trad=initrad+j*pi/36.0f;
- if (shot&&j==pos)bullet[CreateBullet2(400+t.x,300+t.y,0.0f,re.NextDouble(0,pi),1)].alterColor=orange;
- if (shot&&j==pos&&re.NextInt(0,249)==99)NewMultpo(vector2d(400+t.x,300+t.y));
- }
- if (pos>8&&pos<23)
- laser[i].EnableColl=true;
- else
- laser[i].EnableColl=false;
- }
-}
-int tbuls[1000];double lv5brk;
-void Level5Part5()
-{
- frameleft=AMinute;All2pnt();towcnt=0;Lasercnt=0;
- memset(tbuls,0,sizeof(tbuls));lv5brk=0;++part;
- clrtime=1;
-}
-void Level5Part6()
-{
- lv5brk+=hge->Timer_GetDelta();
- if (lv5brk<=0.3)return;
- lv5brk=0;
- for (int i=1;i<=9;++i)
- for (int j=0;j<1000;++j)
- if (!tbuls[j])
- {
- tbuls[j]=CreateBullet2(i*80,570,3,0.5*pi);
- break;
- }
- for (int j=0;j<1000;++j)
- if (tbuls[j]&&bullet[tbuls[j]].bulletpos.y<150)
- {
- if (re.NextInt(1,1000)>=800)
- {
- if (re.NextInt(1,1000)>=500)
- CreateBullet6(bullet[tbuls[j]].bulletpos.x,bullet[tbuls[j]].bulletpos.y,3,200,1,18);
- else
- if (re.NextInt(1,1000)>=850)
- CreateBullet9(bullet[tbuls[j]].bulletpos.x,bullet[tbuls[j]].bulletpos.y,3,500,18,300);
- }
- BulletEffect_Death(bullet[tbuls[j]],ColorToDWORD(blue));
- bullet[tbuls[j]].exist=false;
- tbuls[j]=0;
- }
-}
-void Level5Part7()
-{
- frameleft=ThirtySeconds;Dis8ref=true;tbrk=0;clrtime=1;
- if (towcnt!=33&&towcnt!=0)return ClearAll(false);
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;All2pnt();
- ShowTip("Threatening effect of high speed bullets");
- return;
- }
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- for (int i=1;i<=33;++i)CreateTower8(i*24-12,12,500,10,20,30);
- for (int i=1;i<=towcnt;++i)
- if (tower[i].RendColor==0x80FFFFFF)
- tower[i].RendColor=0x00FFFFFF;
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].RendColor>>24)<=0x80)
- tower[i].RendColor=tower[i].RendColor+0x01FFFFFF;
- else
- {
- ++part;tcnt=0;
- return;
- }
-}
-void Level5Part8()
-{
- tbrk+=hge->Timer_GetDelta();
- if (tbrk<=3)return;
- tbrk=0;int tg;++tcnt;
- if (re.NextInt(1,1000)>=500)tg=CreateBullet9(200,12,8,300,12,200);else tg=CreateBullet9(600,12,8,300,12,200);
- bullet[tg].redir(playerpos);
- if (tcnt>4)NewMultpo(),tcnt=0;
-}
-void Level5Part9()
-{
- frameleft=ThirtySeconds;Dis8ref=true;tbrk=0;clrtime=1;
- if (towcnt!=66&&towcnt!=0)return ClearAll(false);
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;All2pnt();
- ShowTip("Do not panic!");
- return;
- }
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- for (int i=1;i<=33;++i)CreateTower8(i*24-12,12,750,1,1,1),CreateTower8(i*24-12,588,750,1,1,1);
- for (int i=1;i<=towcnt;++i)
- if (tower[i].RendColor==0x80FFFFFF)
- tower[i].RendColor=0x00FFFFFF;
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].RendColor>>24)<=0x80)
- tower[i].RendColor=tower[i].RendColor+0x01FFFFFF;
- else
- {
- ++part;tcnt=0;
- return;
- }
-}
-void Level5Part10()
-{
- tbrk+=hge->Timer_GetDelta();
- if (tbrk<=3)return;
- tbrk=0;++tcnt;
- if(tcnt>4)NewMultpo(),tcnt=0;
- for (int i=0;i<6;++i)
- {
- int p=CreateBullet2(playerpos.x+cos(i*pi/3.0f)*6,12+sin(i*pi/3.0f)*6,2,-pi/2);
- bullet[p].alterColor=orange;
- }
-}
-void Level5Part11()
-{
- frameleft=TenSeconds/10*2;clrtime=0;Dis8ref=false;
- if (towcnt==66)
- {
- ClearAll();
- return;
- }
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("They are getting out of control...\n\
-Have you noticed that strange things are happening?...");
- }
- if (Current_Position==1)
- {
- ++part;memset(redirs,0,sizeof(redirs));cred=-1;All2pnt();
- ATarg.TargShow();
- posx=10,posy=10,doneredir=false;
- }
-}
-void Level5Part12()
-{
- if (!LOWFPS)++fskp;else fskp+=17;
- if (fskp>15)
- {
- fskp=0;
- if (posx<766)
- {
- posx+=12;
- redirs[++cred]=CreateBullet9(posx,posy,0,999999,1,999999);
- redirs[++cred]=CreateBullet9((posx-400)*0.95+400,(posy-300)*0.95+300,0,999999,1,999999);
- }
- else
- {
- if (posy<566)
- {
- posy+=12;
- redirs[++cred]=CreateBullet9(posx,posy,0,999999,1,999999);
- redirs[++cred]=CreateBullet9((posx-400)*0.95+400,(posy-300)*0.95+300,0,999999,1,999999);
- }
- else
- if (!doneredir)
- for (int i=0;i<=cred;++i)
- bullet[redirs[i]].redir(ATarg.targpos),bullet[redirs[i]].bulletspeed=4,doneredir=true;
- }
- }
-}
-void Level5Part13()
-{
- frameleft=TenSeconds/10*2;clrtime=0;
- DisableAllTower=false;
- if (Current_Position==1)
- {
- ++part;memset(redirs,0,sizeof(redirs));cred=-1;
- posx2=766,posy2=566,doneredir=false;
- }
-}
-void Level5Part14()
-{
- if (!LOWFPS)++fskp;else fskp+=17;
- if (fskp>15)
- {
- fskp=0;
- if (posx2>10)
- {
- posx2-=12;
- redirs[++cred]=CreateBullet9(posx2,posy2,0,999999,1,999999);
- redirs[++cred]=CreateBullet9((posx2-400)*0.95+400,(posy2-300)*0.95+300,0,999999,1,999999);
- }
- else
- {
- if (posy2>10)
- {
- posy2-=12;
- redirs[++cred]=CreateBullet9(posx2,posy2,0,999999,1,999999);
- redirs[++cred]=CreateBullet9((posx2-400)*0.95+400,(posy2-300)*0.95+300,0,999999,1,999999);
- }
- else
- if (!doneredir)
- for (int i=0;i<=cred;++i)
- bullet[redirs[i]].redir(ATarg.targpos),bullet[redirs[i]].bulletspeed=4,doneredir=true;
- }
- }
-}
-void Level5Part15()
-{
- frameleft=TenSeconds/10*2;clrtime=0;
- ++part;memset(redirs,0,sizeof(redirs));cred=-1;
- posx=10,posy=10,doneredir=false;
-}
-void Level5Part16()
-{
- if (!LOWFPS)++fskp;else fskp+=17;
- if (fskp>15)
- {
- fskp=0;
- if (posx<766)
- {
- posx+=12;
- redirs[++cred]=CreateBullet9(posx,posy,0,999999,1,999999);
- redirs[++cred]=CreateBullet9((posx-400)*0.95+400,(posy-300)*0.95+300,0,999999,1,999999);
- redirs[++cred]=CreateBullet9((posx-400)*0.9+400,(posy-300)*0.9+300,0,999999,1,999999);
- }
- else
- {
- if (posy<566)
- {
- posy+=12;
- redirs[++cred]=CreateBullet9(posx,posy,0,999999,1,999999);
- redirs[++cred]=CreateBullet9((posx-400)*0.95+400,(posy-300)*0.95+300,0,999999,1,999999);
- redirs[++cred]=CreateBullet9((posx-400)*0.9+400,(posy-300)*0.9+300,0,999999,1,999999);
- }
- else
- if (!doneredir)
- for (int i=0;i<=cred;++i)
- bullet[redirs[i]].redir(ATarg.targpos),bullet[redirs[i]].bulletspeed=4,doneredir=true;
- }
- }
-}
-void Level5Part17()
-{
- frameleft=TenSeconds/2;clrtime=0;
- DisableAllTower=false;
- if (Current_Position==1)
- {
- ++part;memset(redirs,0,sizeof(redirs));cred=-1;
- posx2=766,posy2=566,doneredir=false;
- }
-}
-void Level5Part18()
-{
- if (!LOWFPS)++fskp;else fskp+=17;
- if (fskp>15)
- {
- fskp=0;
- if (posx2>10)
- {
- posx2-=12;
- redirs[++cred]=CreateBullet9(posx2,posy2,0,999999,1,999999);
- redirs[++cred]=CreateBullet9((posx2-400)*0.95+400,(posy2-300)*0.95+300,0,999999,1,999999);
- redirs[++cred]=CreateBullet9((posx2-400)*0.9+400,(posy2-300)*0.9+300,0,999999,1,999999);
- }
- else
- {
- if (posy2>10)
- {
- posy2-=12;
- redirs[++cred]=CreateBullet9(posx2,posy2,0,999999,1,999999);
- redirs[++cred]=CreateBullet9((posx2-400)*0.95+400,(posy2-300)*0.95+300,0,999999,1,999999);
- redirs[++cred]=CreateBullet9((posx2-400)*0.9+400,(posy2-300)*0.9+300,0,999999,1,999999);
- }
- else
- if (!doneredir)
- for (int i=0;i<=cred;++i)
- bullet[redirs[i]].redir(ATarg.targpos),bullet[redirs[i]].bulletspeed=4,doneredir=true;
- }
- }
-}
-double ntrot,ntbrk;
-int ntcnt;
-void Level5Part19()
-{
- frameleft=AMinute;clrtime=1;ntrot=ntbrk=0;ntcnt=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("You are the fish in my barrel.");
- }
- if (Current_Position==1)
- {
- ++part;All2pnt();
- ATarg.TargHide();tbrk=0;
- }
-}
-void Level5Part20()
-{
- ntbrk+=hge->Timer_GetDelta();tbrk+=hge->Timer_GetDelta();
- if(LOWFPS)ntrot+=16*pi/960.0f;else ntrot+=pi/960.0f;
- if(ntbrk<0.01)return;
- ntbrk=0;++ntcnt;if (ntcnt>15)ntcnt=0;
- int rtatr;
- if(frameleft>ThirtySeconds*1.5)rtatr=2;
- if(frameleft<=ThirtySeconds*1.5&&frameleft>TenSeconds*4.2)rtatr=0;
- if(frameleft<=TenSeconds*4.2&&frameleft>TenSeconds*2.2)rtatr=3;
- if(frameleft<=TenSeconds*2.2&&frameleft>TwentySeconds)rtatr=0;
- if(frameleft<=TwentySeconds)rtatr=4;
- for(int i=0;i<rtatr;++i)
- {
- int a;
- if(ntcnt==0)
- a=CreateBullet9(400+250*sin(ntrot+i*2*pi/rtatr),300+250*cos(ntrot+i*2*pi/rtatr),2,500,1,500,true);
- else
- a=CreateBullet9(400+250*sin(ntrot+i*2*pi/rtatr),300+250*cos(ntrot+i*2*pi/rtatr),2,999999999,1,999999999,true);
- bullet[a].redattrib=1;bullet[a].redir(vector2d(400,300));
- bullet[a].bulletdir.x=-bullet[a].bulletdir.x;
- bullet[a].bulletdir.y=-bullet[a].bulletdir.y;
- if(tbrk>5)NewMultpo(vector2d(400+250*sin(ntrot+i*2*pi/rtatr),300+250*cos(ntrot+i*2*pi/rtatr)));
- }
- if(tbrk>5)tbrk=0;
-}
-void Level5Part21()
-{
- frameleft=ThirtySeconds;
- All2pnt();clrtime=1;
- Lasercnt=0;
- CTarg.Init(18,75,5.0f);
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("This is the UNBREAKABLE jail.");
- }
- if (Current_Position==1)
- {
- CreateTower1(30,10,500,2);
- CreateTower1(746,10,500,2);
- CreateTower1(30,556,500,2);
- CreateTower1(746,556,500,2);
- ++part;
- }
-}
-void Level5Part22()
-{
- int times=1;if (LOWFPS)times=16;
- for (int i=1;i<=times;++i)
- CTarg.SetRange(CTarg.GetRange()-0.002f);
- CTarg.Update();
-}
-void Level6Part0()
-{
- frameleft=TenSeconds;All2pnt();towcnt=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- LE_Active=true;letex=TSflake;lescale=0.2;
- letr=TextureRect(0,0,350,350);lecolor=0xCC3366CC;
- Leaf.Init();
- Current_Position=2;
- ShowTip("\
-Level 6-Peaceful(?) Winter\n\
-Look, there's a question mark in the title...\
-");
- }
- if (Current_Position==1)
- {
- if (!LOWFPS)
- DBGColor=ColorTransfer(DBGColor,0xFF60A0FF);
- else
- for (int i=1;i<=17;++i)DBGColor=ColorTransfer(DBGColor,0xFF60A0FF);
- if(DBGColor==0xFF60A0FF)++part;
- return;
- }
-}
-void Level6Part1()
-{
- //Some component of this level is in towernbullet...
- frameleft=ThirtySeconds;clrtime=1;
- DisableAllTower=false;
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- whicnt=10;
- CreateTower7(400,300,750,3,500);
- for (int i=1;i<=towcnt;++i)
- if (tower[i].RendColor==0x80FFFFFF)
- tower[i].RendColor=0x00FFFFFF;
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].RendColor>>24)<=0x80)
- tower[i].RendColor=tower[i].RendColor+0x01FFFFFF;
- else
- {
- IfCallLevel=false;
- return;
- }
-}
-int spcnt;double sixrad,sixbrk;
-void Level6Part2()
-{
- if (towcnt)return ClearAll(false);
- All2pnt();frameleft=TenSeconds;
- ++part;spcnt=2;sixrad=sixbrk=0;
- whicnt=1;DisableAllTower=false;
- tbrk=0;clrtime=3;
-}
-void Level6Part3()
-{
- sixbrk+=hge->Timer_GetDelta();
- if (sixrad>2*pi){if(tbrk<1)NewMultpo(vector2d(400,300)),tbrk=100;return;}
- if (sixbrk<0.04)return;
- sixbrk=0;
- sixrad+=pi/25.0f;
- for (int i=0;i<spcnt;++i)
- {
- int pnt=CreateBullet7(400,300,2,1500);
- bullet[pnt].setdir(pi/2+sixrad+((double)i/(double)spcnt)*2.0f*pi);
- }
-}
-void Level6Part4()
-{
- frameleft=TenSeconds;whrcnt=9;
- ++part;spcnt=3;sixrad=sixbrk=0;
- whicnt=1;DisableAllTower=false;
- tbrk=0;
-}
-void Level6Part5()
-{
- sixbrk+=hge->Timer_GetDelta();
- if (sixrad>2*pi){if(tbrk<1)NewMultpo(vector2d(400,300)),tbrk=100;return;}
- if (sixbrk<0.04)return;
- sixbrk=0;
- sixrad+=pi/25.0f;
- for (int i=0;i<spcnt;++i)
- {
- int pnt=CreateBullet7(400,300,2.2,1500);
- bullet[pnt].setdir(pi/2+sixrad+((double)i/(double)spcnt)*2.0f*pi);
- }
-}
-void Level6Part6()
-{
- frameleft=TenSeconds;tbrk=0;
- ++part;spcnt=4;sixrad=sixbrk=0;
- whicnt=1;DisableAllTower=false;
-}
-void Level6Part7()
-{
- sixbrk+=hge->Timer_GetDelta();
- if (sixrad>2*pi){if(tbrk<1)NewMultpo(vector2d(400,300)),tbrk=100;return;}
- if (sixbrk<0.04)return;
- sixbrk=0;
- sixrad+=pi/25.0f;
- for (int i=0;i<spcnt;++i)
- {
- int pnt=CreateBullet7(400,300,2.4,1500);
- bullet[pnt].setdir(pi/2+sixrad+((double)i/(double)spcnt)*2.0f*pi);
- }
-}
-void Level6Part8()
-{
- frameleft=TenSeconds;whrcnt=6;
- ++part;spcnt=5;sixrad=sixbrk=0;
- whicnt=1;DisableAllTower=false;
- tbrk=0;
-}
-void Level6Part9()
-{
- sixbrk+=hge->Timer_GetDelta();
- if (sixrad>2*pi){if(tbrk<1)NewMultpo(vector2d(400,300)),tbrk=100;return;}
- if (sixbrk<0.04)return;
- sixbrk=0;
- sixrad+=pi/25.0f;
- for (int i=0;i<spcnt;++i)
- {
- int pnt=CreateBullet7(400,300,2.6,1500);
- bullet[pnt].setdir(pi/2+sixrad+((double)i/(double)spcnt)*2.0f*pi);
- }
-}
-void Level6Part10()
-{
- frameleft=TenSeconds;whrcnt=6;
- ++part;spcnt=6;sixrad=sixbrk=0;
- whicnt=1;DisableAllTower=false;
- tbrk=0;
-}
-void Level6Part11()
-{
- sixbrk+=hge->Timer_GetDelta();
- if (sixrad>2*pi){if(tbrk<1)NewMultpo(vector2d(400,300)),tbrk=100;return;}
- if (sixbrk<0.04)return;
- sixbrk=0;
- sixrad+=pi/25.0f;
- for (int i=0;i<spcnt;++i)
- {
- int pnt=CreateBullet7(400,300,2.6,1500);
- bullet[pnt].setdir(pi/2+sixrad+((double)i/(double)spcnt)*2.0f*pi);
- }
-}
-void Level6Part12()
-{
- frameleft=AMinute;clrtime=1;
- if (towcnt!=8&&towcnt)
- {
- ClearAll(false);
- return;
- }
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Get out before you are squashed...");
- }
- if (Current_Position==1)
- {
- ++part;squashrev=false;All2pnt();
- tbrk=0;
- CreateTower3(10,10,400,2,1);
- CreateTower3(766,10,400,2,1);
- CreateTower3(10,566,400,2,1);
- CreateTower3(766,566,400,2,1);
- CreateTower1(9,9,1000,1.5);
- CreateTower1(767,11,1000,1.5);
- CreateTower1(9,567,1000,1.5);
- CreateTower1(767,567,1000,1.5);
- }
-}
-void Level6Part13()
-{
- tbrk+=hge->Timer_GetDelta();
- if(tbrk>=12)
- {
- for(int i=1;i<=4;++i)NewMultpo(tower[i].towerpos);
- tbrk=0;
- }
- if (!squashrev)
- {
- if (!LOWFPS)
- {
- tower[1].towerpos.x+=0.01;
- tower[1].towerpos.y+=0.007354;
- tower[2].towerpos.x-=0.01;
- tower[2].towerpos.y+=0.007354;
- tower[3].towerpos.x+=0.01;
- tower[3].towerpos.y-=0.007354;
- tower[4].towerpos.x-=0.01;
- tower[4].towerpos.y-=0.007354;
- }
- else
- {
- tower[1].towerpos.x+=0.16;
- tower[1].towerpos.y+=0.117664;
- tower[2].towerpos.x-=0.16;
- tower[2].towerpos.y+=0.117664;
- tower[3].towerpos.x+=0.16;
- tower[3].towerpos.y-=0.117664;
- tower[4].towerpos.x-=0.16;
- tower[4].towerpos.y-=0.117664;
- }
- }
- else
- {
- if (!LOWFPS)
- {
- tower[1].towerpos.x-=0.01;
- tower[1].towerpos.y-=0.007354;
- tower[2].towerpos.x+=0.01;
- tower[2].towerpos.y-=0.007354;
- tower[3].towerpos.x-=0.01;
- tower[3].towerpos.y+=0.007354;
- tower[4].towerpos.x+=0.01;
- tower[4].towerpos.y+=0.007354;
- }
- else
- {
- tower[1].towerpos.x-=0.16;
- tower[1].towerpos.y-=0.117664;
- tower[2].towerpos.x+=0.16;
- tower[2].towerpos.y-=0.117664;
- tower[3].towerpos.x-=0.16;
- tower[3].towerpos.y+=0.117664;
- tower[4].towerpos.x+=0.16;
- tower[4].towerpos.y+=0.117664;
- }
- }
- if (tower[1].towerpos.x>766||tower[1].towerpos.x<10)squashrev=!squashrev;
-}
-double avabrk,avacurbrk;
-bool dir;
-void Level6Part14()//Avalanche
-{
- frameleft=AMinute;clrtime=1;
- if (towcnt)
- {
- ClearAll(false);
- return;
- }
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Avalanche...");
- }
- if (Current_Position==1)
- {
- ++part;All2pnt();avabrk=1.0f;avacurbrk=tbrk=0;dir=false;
- }
-}
-void Level6Part15()
-{
- avacurbrk+=hge->Timer_GetDelta();
- tbrk+=hge->Timer_GetDelta();
- avabrk=((double)frameleft/(double)AMinute)*0.04f+0.01f;
- if (avacurbrk>avabrk)
- {
- avacurbrk=0;
- int pnt=CreateBullet2(re.NextDouble(10,790),200,-6.25,3*pi/2.0f);
- bullet[pnt].limv=re.NextInt(2,8);bullet[pnt].bulletaccel=0.005;
- }
- if (tbrk>6)NewMultpo(vector2d(re.NextDouble(20,780),re.NextDouble(20,150))),tbrk=0;
-}
-void Level6Part16()
-{
- frameleft=AMinute;clrtime=2;
- if (towcnt)
- {
- ClearAll(false);
- return;
- }
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("?..");
- }
- if (Current_Position==1)
- {
- ++part;All2pnt();avabrk=1.0f;
- avacurbrk=0;dir=false;ATarg.TargShow();
- ATarg.targpos=vector2d(400,300);
- whicnt=3;avacurbrk=0;
- }
-}
-void Level6Part17()
-{
- avacurbrk+=hge->Timer_GetDelta();
- avabrk=((double)frameleft/(double)AMinute)*0.8f+0.2f;
- if (avacurbrk>avabrk)
- {
- avacurbrk=0;
- int pnt;
- if (re.NextInt(1,100)<=80)
- pnt=CreateBullet7(ATarg.targpos.x,ATarg.targpos.y,3,500);
- else
- pnt=CreateBullet6(ATarg.targpos.x,ATarg.targpos.y,4,1000);
- bullet[pnt].dist=1;bullet[pnt].bulletdir=vector2d(0,0);
- if(re.NextInt(0,19)==14)NewMultpo();
- }
-}
-//begin hexagon
-Bullet bheader[100],*beewx[1500];
-static int sxcnt,seq,beecnt;
-bool brdir;
-double offset;
-void Level6Part18()
-{
- DisableAllTower=false;clrtime=3;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Hexagon loops");
- }
- if (Current_Position==1)
- {
- sxcnt=-1;beecnt=-1;brdir=false;frameleft=TenSeconds;offset=86;
- memset(bheader,0,sizeof(bheader));
- memset(beewx,0,sizeof(beewx));
- avacurbrk=1;avabrk=1;sixbrk=0.1;seq=3;
- for (int i=1;i<=5;++i)
- {
- CreateBullet2(bheader[++sxcnt],offset+2*(i-1)*offset,10,2,-pi/6);
- CreateBullet2(bheader[++sxcnt],offset+2*(i-1)*offset,10,2,-5*pi/6);
- }
- ++part;ATarg.TargHide();All2pnt();
- }
-}
-void Level6Part19()
-{
- avacurbrk+=hge->Timer_GetDelta();
- sixbrk+=hge->Timer_GetDelta();
- if (frameleft<TenSeconds/10*1&&!brdir)
- {
- brdir=true;
- for (int i=0;i<=beecnt;++i)
- {
- beewx[i]->bulletaccel=0.001;beewx[i]->limv=1;
- beewx[i]->setdir(re.NextDouble(0,pi));
- }
- }
- for (int i=0;i<=sxcnt;++i)ProcessBullet2(bheader[i]);
- if (avacurbrk>avabrk)
- {
- avacurbrk=0;++seq;seq%=4;
- for (int i=0;i<=sxcnt;++i)
- {
- if (i&1)
- {
- switch (seq)
- {
- case 0:bheader[i].setdir(-5*pi/6);break;
- case 1:bheader[i].setdir(-pi/2);break;
- case 2:bheader[i].setdir(-pi/6);break;
- case 3:bheader[i].setdir(-pi/2);break;
- }
- }
- else
- {
- switch (seq)
- {
- case 0:bheader[i].setdir(-pi/6);break;
- case 1:bheader[i].setdir(-pi/2);break;
- case 2:bheader[i].setdir(-5*pi/6);break;
- case 3:bheader[i].setdir(-pi/2);break;
- }
- }
- }
- }
- if (sixbrk>0.2&&!brdir)
- {
- sixbrk=0;
- if (bheader[0].bulletpos.y>610)return;
- for (int i=0;i<=sxcnt;++i)
- {
- beewx[++beecnt]=&bullet[CreateBullet2(bheader[i].bulletpos.x,bheader[i].bulletpos.y,0,pi,true)];
- }
- }
-}
-void Level6Part20()
-{
- sxcnt=-1;beecnt=-1;brdir=false;frameleft=TwentySeconds;offset=43;
- memset(bheader,0,sizeof(bheader));
- memset(beewx,0,sizeof(beewx));
- avacurbrk=0.5;avabrk=0.5;sixbrk=0.1;seq=3;
- for (int i=1;i<=10;++i)
- {
- CreateBullet2(bheader[++sxcnt],offset+2*(i-1)*offset,10,2,-pi/6);
- CreateBullet2(bheader[++sxcnt],offset+2*(i-1)*offset,10,2,-5*pi/6);
- }
- ++part;
-}
-void Level6Part21()
-{
- avacurbrk+=hge->Timer_GetDelta();
- sixbrk+=hge->Timer_GetDelta();
- if (frameleft<TenSeconds/10*11&&!brdir)
- {
- brdir=true;
- for (int i=0;i<=beecnt;++i)
- {
- beewx[i]->bulletaccel=0.001;beewx[i]->limv=1;
- beewx[i]->setdir(re.NextDouble(0,pi));
- }
- }
- for (int i=0;i<=sxcnt;++i)ProcessBullet2(bheader[i]);
- if (avacurbrk>avabrk)
- {
- avacurbrk=0;++seq;seq%=4;
- for (int i=0;i<=sxcnt;++i)
- {
- if (i&1)
- {
- switch (seq)
- {
- case 0:bheader[i].setdir(-5*pi/6);break;
- case 1:bheader[i].setdir(-pi/2);break;
- case 2:bheader[i].setdir(-pi/6);break;
- case 3:bheader[i].setdir(-pi/2);break;
- }
- }
- else
- {
- switch (seq)
- {
- case 0:bheader[i].setdir(-pi/6);break;
- case 1:bheader[i].setdir(-pi/2);break;
- case 2:bheader[i].setdir(-5*pi/6);break;
- case 3:bheader[i].setdir(-pi/2);break;
- }
- }
- }
- }
- if (sixbrk>0.2&&!brdir)
- {
- sixbrk=0;
- if (bheader[0].bulletpos.y>610)return;
- for (int i=0;i<=sxcnt;++i)
- {
- beewx[++beecnt]=&bullet[CreateBullet2(bheader[i].bulletpos.x,bheader[i].bulletpos.y,0,pi,true)];
- }
- }
-}
-void Level6Part22()
-{
- sxcnt=-1;beecnt=-1;brdir=false;frameleft=TenSeconds/10*7;offset=43;
- memset(bheader,0,sizeof(bheader));
- memset(beewx,0,sizeof(beewx));
- avacurbrk=0.25;avabrk=0.25;sixbrk=0.1;seq=3;
- for (int i=1;i<=10;++i)
- {
- CreateBullet2(bheader[++sxcnt],offset+2*(i-1)*offset,10,4,-pi/6);
- CreateBullet2(bheader[++sxcnt],offset+2*(i-1)*offset,10,4,-5*pi/6);
- }
- ++part;
-}
-void Level6Part23()
-{
- avacurbrk+=hge->Timer_GetDelta();
- sixbrk+=hge->Timer_GetDelta();
- if (frameleft<TenSeconds/10*1&&!brdir)
- {
- brdir=true;
- for (int i=0;i<=beecnt;++i)
- {
- beewx[i]->bulletaccel=0.001;beewx[i]->limv=1;
- beewx[i]->setdir(re.NextDouble(0,pi));
- }
- }
- for (int i=0;i<=sxcnt;++i)ProcessBullet2(bheader[i]);
- if (avacurbrk>avabrk)
- {
- avacurbrk=0;++seq;seq%=4;
- for (int i=0;i<=sxcnt;++i)
- {
- if (i&1)
- {
- switch (seq)
- {
- case 0:bheader[i].setdir(-5*pi/6);break;
- case 1:bheader[i].setdir(-pi/2);break;
- case 2:bheader[i].setdir(-pi/6);break;
- case 3:bheader[i].setdir(-pi/2);break;
- }
- }
- else
- {
- switch (seq)
- {
- case 0:bheader[i].setdir(-pi/6);break;
- case 1:bheader[i].setdir(-pi/2);break;
- case 2:bheader[i].setdir(-5*pi/6);break;
- case 3:bheader[i].setdir(-pi/2);break;
- }
- }
- }
- }
- if (sixbrk>0.1&&!brdir)
- {
- sixbrk=0;
- if (bheader[0].bulletpos.y>610)return;
- for (int i=0;i<=sxcnt;++i)
- {
- beewx[++beecnt]=&bullet[CreateBullet2(bheader[i].bulletpos.x,bheader[i].bulletpos.y,0,pi,true)];
- }
- }
-}
-void Level6Part24()
-{
- sxcnt=-1;beecnt=-1;brdir=false;frameleft=TenSeconds/10*7;offset=43;
- memset(bheader,0,sizeof(bheader));
- memset(beewx,0,sizeof(beewx));
- avacurbrk=0.25;avabrk=0.25;sixbrk=0.1;seq=3;
- for (int i=1;i<=10;++i)
- {
- CreateBullet2(bheader[++sxcnt],offset+2*(i-1)*offset,590,4,pi/6);
- CreateBullet2(bheader[++sxcnt],offset+2*(i-1)*offset,590,4,5*pi/6);
- }
- ++part;
-}
-void Level6Part25()
-{
- avacurbrk+=hge->Timer_GetDelta();
- sixbrk+=hge->Timer_GetDelta();
- if (frameleft<TenSeconds/10*1&&!brdir)
- {
- brdir=true;
- for (int i=0;i<=beecnt;++i)
- {
- beewx[i]->bulletaccel=0.001;beewx[i]->limv=1;
- beewx[i]->setdir(re.NextDouble(0,pi));
- }
- }
- for (int i=0;i<=sxcnt;++i)ProcessBullet2(bheader[i]);
- if (avacurbrk>avabrk)
- {
- avacurbrk=0;++seq;seq%=4;
- for (int i=0;i<=sxcnt;++i)
- {
- if (i&1)
- {
- switch (seq)
- {
- case 0:bheader[i].setdir(5*pi/6);break;
- case 1:bheader[i].setdir(pi/2);break;
- case 2:bheader[i].setdir(pi/6);break;
- case 3:bheader[i].setdir(pi/2);break;
- }
- }
- else
- {
- switch (seq)
- {
- case 0:bheader[i].setdir(pi/6);break;
- case 1:bheader[i].setdir(pi/2);break;
- case 2:bheader[i].setdir(5*pi/6);break;
- case 3:bheader[i].setdir(pi/2);break;
- }
- }
- }
- }
- if (sixbrk>0.1&&!brdir)
- {
- sixbrk=0;
- if (bheader[0].bulletpos.y<-10)return;
- for (int i=0;i<=sxcnt;++i)
- {
- beewx[++beecnt]=&bullet[CreateBullet2(bheader[i].bulletpos.x,bheader[i].bulletpos.y,0,pi,true)];
- }
- }
-}
-void Level6Part26()
-{
- sxcnt=-1;beecnt=-1;brdir=false;frameleft=TenSeconds/10*7;offset=43;
- memset(bheader,0,sizeof(bheader));
- memset(beewx,0,sizeof(beewx));
- avacurbrk=0.25;avabrk=0.25;sixbrk=0.1;seq=3;
- for (int i=1;i<=10;++i)
- {
- CreateBullet2(bheader[++sxcnt],790,offset+2*(i-1)*offset,4,5*pi/3);
- CreateBullet2(bheader[++sxcnt],790,offset+2*(i-1)*offset,4,pi/3);
- }
- ++part;
-}
-void Level6Part27()
-{
- avacurbrk+=hge->Timer_GetDelta();
- sixbrk+=hge->Timer_GetDelta();
- if (frameleft<TenSeconds/10*1&&!brdir)
- {
- brdir=true;
- for (int i=0;i<=beecnt;++i)
- {
- beewx[i]->bulletaccel=0.001;beewx[i]->limv=1;
- beewx[i]->setdir(re.NextDouble(0,pi));
- }
- }
- for (int i=0;i<=sxcnt;++i)ProcessBullet2(bheader[i]);
- if (avacurbrk>avabrk)
- {
- avacurbrk=0;++seq;seq%=4;
- for (int i=0;i<=sxcnt;++i)
- {
- if (i&1)
- {
- switch (seq)
- {
- case 0:bheader[i].setdir(pi/3);break;
- case 1:bheader[i].setdir(0);break;
- case 2:bheader[i].setdir(5*pi/3);break;
- case 3:bheader[i].setdir(0);break;
- }
- }
- else
- {
- switch (seq)
- {
- case 0:bheader[i].setdir(5*pi/3);break;
- case 1:bheader[i].setdir(0);break;
- case 2:bheader[i].setdir(pi/3);break;
- case 3:bheader[i].setdir(0);break;
- }
- }
- }
- }
- if (sixbrk>0.1&&!brdir)
- {
- sixbrk=0;
- if (bheader[0].bulletpos.x<-10)return;
- for (int i=0;i<=sxcnt;++i)
- {
- beewx[++beecnt]=&bullet[CreateBullet2(bheader[i].bulletpos.x,bheader[i].bulletpos.y,0,pi,true)];
- }
- }
-}
-void Level6Part28()
-{
- sxcnt=-1;beecnt=-1;brdir=false;frameleft=TenSeconds+TenSeconds/10*9;offset=43;
- memset(bheader,0,sizeof(bheader));
- memset(beewx,0,sizeof(beewx));
- avacurbrk=0.25;avabrk=0.25;sixbrk=0.1;seq=3;
- for (int i=1;i<=10;++i)
- {
- CreateBullet2(bheader[++sxcnt],10,offset+2*(i-1)*offset,4,pi+5*pi/3);
- CreateBullet2(bheader[++sxcnt],10,offset+2*(i-1)*offset,4,pi+pi/3);
- }
- ++part;
-}
-void Level6Part29()
-{
- avacurbrk+=hge->Timer_GetDelta();
- sixbrk+=hge->Timer_GetDelta();
- if (frameleft<TenSeconds/10*6&&!brdir)
- {
- brdir=true;
- for (int i=0;i<=beecnt;++i)
- {
- beewx[i]->bulletaccel=0.001;beewx[i]->limv=1;
- beewx[i]->setdir(re.NextDouble(0,pi));
- }
- }
- for (int i=0;i<=sxcnt;++i)ProcessBullet2(bheader[i]);
- if (avacurbrk>avabrk)
- {
- avacurbrk=0;++seq;seq%=4;
- for (int i=0;i<=sxcnt;++i)
- {
- if (i&1)
- {
- switch (seq)
- {
- case 0:bheader[i].setdir(pi+pi/3);break;
- case 1:bheader[i].setdir(pi);break;
- case 2:bheader[i].setdir(pi+5*pi/3);break;
- case 3:bheader[i].setdir(pi);break;
- }
- }
- else
- {
- switch (seq)
- {
- case 0:bheader[i].setdir(pi+5*pi/3);break;
- case 1:bheader[i].setdir(pi);break;
- case 2:bheader[i].setdir(pi+pi/3);break;
- case 3:bheader[i].setdir(pi);break;
- }
- }
- }
- }
- if (sixbrk>0.1&&!brdir)
- {
- sixbrk=0;
- if (bheader[0].bulletpos.x>810)return;
- for (int i=0;i<=sxcnt;++i)
- {
- beewx[++beecnt]=&bullet[CreateBullet2(bheader[i].bulletpos.x,bheader[i].bulletpos.y,0,pi,true)];
- }
- }
-}
-void Level6Part30()//Hyperfluid!
-{
- frameleft=AMinute;clrtime=2;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Hyperfluid!");
- }
- if (Current_Position==1)
- {
- ++part;All2pnt();avabrk=0.2f;avacurbrk=0;sixbrk=-1;tbrk=0;
- }
-}
-void Level6Part999999999()//well this is not an easter egg!
-{
- avabrk=(frameleft/(double)AMinute)*0.15f+0.05f;
- avacurbrk+=hge->Timer_GetDelta();
- sixbrk+=hge->Timer_GetDelta();
- tbrk+=hge->Timer_GetDelta();
- if(tbrk>10)tbrk=0,NewMultpo(vector2d(re.NextDouble(40,100),re.NextDouble(30,75)));
- if (avacurbrk>avabrk)
- {
- avacurbrk=0;
- for (int i=1;i<=re.NextInt(1,10);++i)
- if (re.NextInt(1,1000)>500)
- {
- int pnt=CreateBullet2(10,re.NextDouble(10,590),0,-3*pi/4);
- bullet[pnt].bulletaccel=0.0025;bullet[pnt].limv=6;
- }
- else
- {
- int pnt=CreateBullet2(re.NextDouble(10,790),10,0,-3*pi/4);
- bullet[pnt].bulletaccel=0.0025;bullet[pnt].limv=6;
- }
- }
- if (sixbrk>0.5)
- {
- sixbrk=0;
- for (int i=1;i<=re.NextInt(1,10);++i)
- {
- int pnt=CreateBullet2(re.NextDouble(10,790),590,1,pi/2);
- bullet[pnt].alterColor=white;
- }
- }
-}
-int bgbrk;
-double bgdbbrk;
-void Level7Part0()
-{
- frameleft=50;All2pnt();towcnt=0;bgbrk=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- LE_Active=false;
- Current_Position=2;
- ShowTip("\
-Level 7-Rainbow of Spring\n\
-Will there be a clearer day?\
-");
- frameleft=TenSeconds;++part;
- }
-}
-bool skystp;
-void Level7Part1()
-{
- ++bgbrk;if (LOWFPS)bgbrk+=16;
- if (bgbrk<30)return;
- bgbrk=0;
- if (!LOWFPS)
- DBGColor=ColorTransfer(DBGColor,0xFF0B0916);
- else
- for (int i=1;i<=17;++i)DBGColor=ColorTransfer(DBGColor,0xFF0B0916);
- if (DBGColor==0xFF0B0916)
- {
- frameleft=AMinute,++part;tbrk=0;clrtime=2;
- bgdbbrk=re.NextInt(5,20),bgbrk=0;
- avabrk=0.2f;avacurbrk=0;skystp=false;
- }
-}
-void Level7Part2()
-{
- if (bgbrk==1||bgbrk==4)
- {
- int times=5;if (LOWFPS)times*=16;
- for (int i=1;i<=times;++i)DBGColor=ColorTransfer(DBGColor,0xFF23459A);
- if (DBGColor==0xFF23459A)
- {
- if(bgbrk==1)bgbrk=2;
- if(bgbrk==4)bgbrk=5;
- }
- }
- if (bgbrk==2||bgbrk==5)
- {
- int times=1;if (LOWFPS)times*=16;
- for (int i=1;i<=times;++i)DBGColor=ColorTransfer(DBGColor,0xFF0B0916);
- if (DBGColor==0xFF0B0916)
- {
- if(bgbrk==2)bgbrk=3,bgdbbrk=0.06;
- if(bgbrk==5)bgbrk=0,bgdbbrk=re.NextInt(5,20);
- }
- }
- if (bgbrk==3||bgbrk==0)
- {
- bgdbbrk-=hge->Timer_GetDelta();
- if (bgdbbrk<=0)
- {
- if (bgbrk==0)bgbrk=1;
- if (bgbrk==3)bgbrk=4;
- }
- }
- avabrk=(frameleft/(double)AMinute)*0.15f+0.15f;
- avacurbrk+=hge->Timer_GetDelta();
- sixbrk+=hge->Timer_GetDelta();
- tbrk+=hge->Timer_GetDelta();
- if (tbrk>10)tbrk=0,NewMultpo(vector2d(re.NextDouble(200,600),re.NextDouble(500,575)));
- if (avacurbrk>avabrk)
- {
- avacurbrk=0;
- for (int i=1;i<=re.NextInt(1,10);++i)
- {
- if (re.NextInt(1,1000)>=500)
- {
- int pnt=CreateBullet2(10,re.NextDouble(10,590),0,-3*pi/4);
- bullet[pnt].bulletaccel=0.0025;bullet[pnt].limv=6;
- }
- else
- {
- int pnt=CreateBullet2(re.NextDouble(10,790),10,0,-3*pi/4);
- bullet[pnt].bulletaccel=0.0025;bullet[pnt].limv=6;
- }
- if (re.NextInt(1,1000)>=500)
- {
- int pnt=CreateBullet2(780,re.NextDouble(10,590),0,-pi/4);
- bullet[pnt].bulletaccel=0.0025;bullet[pnt].limv=6;
- }
- else
- {
- int pnt=CreateBullet2(re.NextDouble(10,790),10,0,-pi/4);
- bullet[pnt].bulletaccel=0.0025;bullet[pnt].limv=6;
- }
- }
- }
-}
-void Level7Part3()
-{
- frameleft=TenSeconds;
- if (!skystp)
- {
- ++bgbrk;if (LOWFPS)bgbrk+=16;
- if (bgbrk<30)return;
- bgbrk=0;
- if (!LOWFPS)
- DBGColor=ColorTransfer(DBGColor,0xFFFFFFFF);
- else
- for (int i=1;i<=17;++i)DBGColor=ColorTransfer(DBGColor,0xFFFFFFFF);
- if (DBGColor==0xFFFFFFFF)skystp=skyactive=true,sky.SkySetFadeIn(),sky.SetSpeed(0.01);
- sky.SetTime(9);
- }
- else
- {
- ++bgbrk;if (LOWFPS)bgbrk+=16;
- if (bgbrk<30)return;
- bgbrk=0;
- if (!LOWFPS)
- DBGColor=ColorTransfer(DBGColor,0x00FFFFFF);
- else
- for (int i=1;i<=17;++i)DBGColor=ColorTransfer(DBGColor,0x00FFFFFF);
- if (DBGColor==0x00FFFFFF)
- ++part;
- }
-}
-void Level7Part4()
-{
- frameleft=(AMinute+ThirtySeconds);clrtime=3;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Rainbow tower...");
- return;
- }
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- towcnt=0;
- deltadelta=pi/720;
- CreateTower6(400,300,600,2,1000,3,72);
- ++part;All2pnt();
-}
-void Level7Part5()
-{
- ++frameskips;
- if (tower[1].towertype==6)
- {
- if (frameskips>TenSeconds/5)
- {
- frameskips=0;
- towcnt=0;
- CreateTower9(400,300,600,2,1500,72,1200);
- }
- }
- if (tower[1].towertype==9)
- {
- if (frameskips>TenSeconds/5)
- {
- frameskips=0;
- towcnt=0;
- CreateTower4(400,300,500,1,500);
- }
- }
- if (tower[1].towertype==4)
- {
- if (frameskips>TenSeconds/5)
- {
- frameskips=0;
- towcnt=0;
- CreateTower1(400,300,50,4);
- }
- }
- if (tower[1].towertype==1)
- {
- if (frameskips>TenSeconds/5)
- {
- frameskips=0;
- towcnt=0;
- CreateTower2(400,300,50,4);
- }
- }
- if (tower[1].towertype==2)
- {
- if (frameskips>TenSeconds/2)
- {
- frameskips=0;
- towcnt=0;
- CreateTower8(400,300,500,5,20,50);
- }
- }
- if (tower[1].towertype==8)
- {
- BTarg.TargHide();
- if (frameskips>TenSeconds/5)
- {
- frameskips=0;
- towcnt=0;
- CreateTower5(400,300,50,5);
- }
- }
- if (tower[1].towertype==5)
- {
- if (frameskips>TenSeconds/5)
- {
- frameskips=0;
- towcnt=0;
- CreateTower6(400,300,600,2,1000,3,72);
- }
- }
-}
-void Level7Part6()
-{
- frameleft=AMinute;clrtime=2;towcnt=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Hit Z...");
- }
- if (Current_Position==1)
- {
- ++part;All2pnt();avabrk=1.0f;avacurbrk=0;
- }
-}
-void Level7Part7()
-{
- avabrk=frameleft/(double)AMinute*0.5f+0.5f;
- avacurbrk+=hge->Timer_GetDelta();
- if (avacurbrk>avabrk)
- {
- if(re.NextInt(0,4)==0)NewMultpo();
- avacurbrk=0;
- bool lasta,lastb;
- lasta=re.NextInt(1,1000)<500;lastb=re.NextInt(1,1000)<500;
- for (int i=0;i<31;++i)
- {
- int rf=re.NextInt(0,999);
- if ((lasta&&rf<600)||(!lasta&&rf<250))
- {
- int pnt=CreateBullet2(-15,i*20,2,pi);
- bullet[pnt].alterColor=(TColors)(i%8);
- bullet[pnt].limv=2+2*(AMinute-frameleft)/(double)AMinute;bullet[pnt].bulletaccel=0.002;
- lasta=true;
- }else lasta=false;
- rf=re.NextInt(0,999);
- if ((lastb&&rf<600)||(!lastb&&rf<250))
- {
- int pnt=CreateBullet2(815,i*20-10,2,0);
- bullet[pnt].alterColor=(TColors)(i%8);
- bullet[pnt].limv=2+2*(AMinute-frameleft)/(double)AMinute;bullet[pnt].bulletaccel=0.002;
- lastb=true;
- }else lastb=false;
- }
- }
-}
-double sntang;
-void Level7Part8()
-{
- frameleft=AMinute;clrtime=2;towcnt=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Rainbow!");
- }
- if (Current_Position==1)
- {
- ++part;All2pnt();avabrk=0.03f;avacurbrk=1.0f;sntang=-pi/2;
- }
-}
-void rainbowCreator(double rl,double rr,double rad,TColors col,double speed,bool invi=false)
-{
- double r=re.NextDouble(rr,rl);
- int pnt=CreateBullet2(900+cos(rad)*r,700+sin(rad)*r,speed,re.NextDouble(0,pi),true,invi);
- bullet[pnt].alterColor=col;
-}
-void Level7Part9()
-{
- if (sntang>-pi)
- {
- avacurbrk+=hge->Timer_GetDelta();
- if (avacurbrk>avabrk)
- {
- sntang-=pi/180;avacurbrk=0;
- for(int i=0;i<6;++i)rainbowCreator(660,600,sntang,red,0,1);
- for(int i=0;i<6;++i)rainbowCreator(610,550,sntang,orange,0,1);
- for(int i=0;i<6;++i)rainbowCreator(560,500,sntang,yellow,0,1);
- for(int i=0;i<6;++i)rainbowCreator(510,450,sntang,green,0,1);
- for(int i=0;i<6;++i)rainbowCreator(460,410,sntang,blue,0,1);
- for(int i=0;i<6;++i)rainbowCreator(420,360,sntang,dblue,0,1);
- for(int i=0;i<6;++i)rainbowCreator(365,310,sntang,purple,0,1);
- }
- }
- else
- {
- avabrk=0.25+(frameleft/(double)AMinute)*0.5f;
- avacurbrk+=hge->Timer_GetDelta();
- if (avacurbrk>avabrk)
- {
- avacurbrk=0;
- if(re.NextInt(0,19)==7)NewMultpo();
- double spd=((AMinute-frameleft)/(double)AMinute)+1;
- for(int i=0;i<((AMinute-frameleft)/(double)AMinute)*20;++i)
- sntang=re.NextDouble(-pi,-pi/2),
- rainbowCreator(660,600,sntang,red,spd);
- for(int i=0;i<((AMinute-frameleft)/(double)AMinute)*20;++i)
- sntang=re.NextDouble(-pi,-pi/2),
- rainbowCreator(610,550,sntang,orange,spd);
- for(int i=0;i<((AMinute-frameleft)/(double)AMinute)*20;++i)
- sntang=re.NextDouble(-pi,-pi/2),
- rainbowCreator(560,500,sntang,yellow,spd);
- for(int i=0;i<((AMinute-frameleft)/(double)AMinute)*20;++i)
- sntang=re.NextDouble(-pi,-pi/2),
- rainbowCreator(510,450,sntang,green,spd);
- for(int i=0;i<((AMinute-frameleft)/(double)AMinute)*20;++i)
- sntang=re.NextDouble(-pi,-pi/2),
- rainbowCreator(460,410,sntang,blue,spd);
- for(int i=0;i<((AMinute-frameleft)/(double)AMinute)*20;++i)
- sntang=re.NextDouble(-pi,-pi/2),
- rainbowCreator(420,360,sntang,dblue,spd);
- for(int i=0;i<((AMinute-frameleft)/(double)AMinute)*20;++i)
- sntang=re.NextDouble(-pi,-pi/2),
- rainbowCreator(365,310,sntang,purple,spd);
- sntang=-pi-0.1;
- }
- }
-}
-SimpleThing aa,bb;
-void Level7Part10()
-{
- frameleft=AMinute*2;clrtime=1;towcnt=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Interference(fake)");
- }
- if (Current_Position==1)
- {
- ++part;All2pnt();skyactive=false;DBGColor=0xFF000000;
- binter.Init("./Resources/b_inter.png",PicBack::Centered,0x80);
- binter.SetFadeIn();aa.Init(vector2d(260,292));bb.Init(vector2d(523,292));
- }
-}
-void Level7Part11()
-{
-//260,292;523,292
- aa.Update(true);bb.Update(false);
-}
-diffCreator dfc[200];
-void Level7Part12()
-{
- frameleft=AMinute*2;clrtime=3;towcnt=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;bulcnt=0;
- aa.toPoint();bb.toPoint();
- Current_Position=2;
- ShowTip("Diffraction(fake)");
- }
- if (Current_Position==1)
- {
- ++part;memset(dfc,0,sizeof(dfc));
- binter.SetFadeOut();bdiff.Init("./resources/b_diff.png",PicBack::Tiled,0x80);
- bdiff.SetFadeIn();bdiff.SetScale(0.5);
- avabrk=2.0f;avacurbrk=0;
- }
-}
-void Level7Part13()
-{
- avabrk=1.0f+frameleft/(double)AMinute;
- avacurbrk+=hge->Timer_GetDelta();
- if(avacurbrk>avabrk&&frameleft>=TenSeconds/5)
- {
- for(int i=0;i<200;++i)
- if (!dfc[i].isActive())
- {
- if(re.NextInt(1,100)>=75)
- {
- if(re.NextInt(1,100)>=50)
- {
- vector2d pos=vector2d(playerpos.x,re.NextDouble(0,600));
- while (GetDist(pos,playerpos)<100)
- pos=vector2d(playerpos.x,re.NextDouble(0,600));
- dfc[i].init(pos);
- }
- else
- {
- vector2d pos=vector2d(re.NextDouble(0,800),playerpos.y);
- while (GetDist(pos,playerpos)<100)
- pos=vector2d(re.NextDouble(0,800),playerpos.y);
- dfc[i].init(pos);
- }
- }
- else
- {
- vector2d pos=vector2d(re.NextDouble(0,800),re.NextDouble(0,600));
- while (GetDist(pos,playerpos)<100)
- pos=vector2d(re.NextDouble(0,800),re.NextDouble(0,600));
- dfc[i].init(pos);
- if(re.NextInt(0,7)==3)NewMultpo(pos);
- }
- break;
- }
- avacurbrk=0;
- }
- for(int i=0;i<200;++i)
- if(dfc[i].isActive())dfc[i].update();
-}
-BulletSine bnl[100];
-double ykbrk;
-void Level7Part14()//Photon school
-{
- memset(bnl,0,sizeof(bnl));
- frameleft=AMinute;clrtime=2;
- ykbrk=0.5f;skyactive=true;bdiff.SetFadeOut();
- if((DBGColor=ColorTransfer(DBGColor,0x00000000))==0x0)++part;
-}
-void Level7Part15()
-{
- ykbrk-=hge->Timer_GetDelta();
- if (ykbrk<0&&frameleft>TenSeconds/10*3)
- {
- ykbrk=(double)frameleft/AMinute*0.75f+0.75f;
- for (int i=0;i<100;++i)
- if (!bnl[i].active)
- {
- vector2d a,b;
- if (re.NextInt(1,100)>=50)
- {
- if (re.NextInt(1,100)>=50)a=vector2d(re.NextDouble(10,790),610);else a=vector2d(re.NextDouble(10,790),-10);
- }
- else
- {
- if (re.NextInt(1,100)>=50)a=vector2d(-10,re.NextDouble(10,590));else a=vector2d(810,re.NextDouble(10,590));
- }
- if (re.NextInt(1,100)>=50)
- {
- if (re.NextInt(1,100)>=50)b=vector2d(re.NextDouble(10,790),610);else b=vector2d(re.NextDouble(10,790),-10);
- }
- else
- {
- if (re.NextInt(1,100)>=50)b=vector2d(-10,re.NextDouble(10,590));else b=vector2d(810,re.NextDouble(10,590));
- }
- bnl[i].Init(a,b);
- break;
- }
- }
- for (int i=0;i<100;++i)
- if (bnl[i].active)bnl[i].Update();
-}
-double DTCircle;
-BCircle Circles[20];
-int CCnt,state;
-void Level7Part16()//Great circles
-{
- towcnt=0;clrtime=0;
- frameleft=Infinity;All2pnt();
- Circles[0].Init(444,20*pi/50000.0f,6,vector2d(400,300));
- Circles[1].Init(444,-20*pi/50000.0f,6,vector2d(400,300));
- CCnt=1;state=0;
- DTCircle=0.0f;
- ++part;playerpos.x=400,playerpos.y=300;
-}
-void Level7Part17()//Great circles-child1
-{
- frameleft=Infinity;
- DTCircle+=hge->Timer_GetDelta();
- if (DTCircle>1&&CCnt<3)
- {
- Circles[2].Init(444,10*pi/50000.0f,12,vector2d(400,300));
- Circles[3].Init(444,-10*pi/50000.0f,12,vector2d(400,300));
- CCnt=3;
- }
- if (DTCircle>2&&CCnt<5)
- {
- Circles[4].Init(444,8*pi/50000.0f,18,vector2d(400,300));
- Circles[5].Init(444,-8*pi/50000.0f,18,vector2d(400,300));
- CCnt=5;
- }
- if (DTCircle>3&&CCnt<7)
- {
- Circles[6].Init(444,8*pi/50000.0f,27,vector2d(400,300));
- Circles[7].Init(444,-8*pi/50000.0f,27,vector2d(400,300));
- CCnt=7;
- }
- if (DTCircle>4&&CCnt<9)
- {
- Circles[8].Init(444,6*pi/50000.0f,45,vector2d(400,300));
- Circles[9].Init(444,-6*pi/50000.0f,45,vector2d(400,300));
- CCnt=9;
- }
- if (DTCircle>5&&CCnt<11)
- {
- Circles[10].Init(444,6*pi/50000.0f,60,vector2d(400,300));
- Circles[11].Init(444,-6*pi/50000.0f,60,vector2d(400,300));
- CCnt=11;
- }
- if (DTCircle>5&&CCnt<13)
- {
- Circles[12].Init(444,3*pi/50000.0f,96,vector2d(400,300));
- Circles[13].Init(444,-3*pi/50000.0f,96,vector2d(400,300));
- CCnt=13;
- }
- if (Circles[0].GetRange()>=50)
- {
- int times=1;if (LOWFPS)times=17;
- for (int i=1;i<=times;++i)
- Circles[0].SetRange(Circles[0].GetRange()-0.1),
- Circles[1].SetRange(Circles[1].GetRange()-0.1);
- }
- if (Circles[2].GetRange()>=100&&CCnt>=3)
- {
- int times=1;if (LOWFPS)times=17;
- for (int i=1;i<=times;++i)
- Circles[2].SetRange(Circles[2].GetRange()-0.1),
- Circles[3].SetRange(Circles[3].GetRange()-0.1);
- }
- if (Circles[4].GetRange()>=150&&CCnt>=5)
- {
- int times=1;if (LOWFPS)times=17;
- for (int i=1;i<=times;++i)
- Circles[4].SetRange(Circles[4].GetRange()-0.1),
- Circles[5].SetRange(Circles[5].GetRange()-0.1);
- }
- if (Circles[6].GetRange()>=210&&CCnt>=7)
- {
- int times=1;if (LOWFPS)times=17;
- for (int i=1;i<=times;++i)
- Circles[6].SetRange(Circles[6].GetRange()-0.1),
- Circles[7].SetRange(Circles[7].GetRange()-0.1);
- }
- if (Circles[8].GetRange()>=270&&CCnt>=9)
- {
- int times=1;if (LOWFPS)times=17;
- for (int i=1;i<=times;++i)
- Circles[8].SetRange(Circles[8].GetRange()-0.1),
- Circles[9].SetRange(Circles[9].GetRange()-0.1);
- }
- if (Circles[10].GetRange()>=320&&CCnt>=11)
- {
- int times=1;if (LOWFPS)times=17;
- for (int i=1;i<=times;++i)
- Circles[10].SetRange(Circles[10].GetRange()-0.1),
- Circles[11].SetRange(Circles[11].GetRange()-0.1);
- }
- if (Circles[12].GetRange()>=420&&CCnt>=13)
- {
- int times=1;if (LOWFPS)times=17;
- for (int i=1;i<=times;++i)
- Circles[12].SetRange(Circles[12].GetRange()-0.1),
- Circles[13].SetRange(Circles[13].GetRange()-0.1);
- }
- else
- {
- if (CCnt>=13)++part;
- for (int i=1;i<=CCnt;++i)
- Circles[i].SetDT(i*pi);
- }
- for (int i=0;i<=CCnt;++i)Circles[i].Update();
- state=0;
- towerspr[red]->RenderStretch(770,0,800,30);
- towerspr[green]->RenderStretch(380,280,420,320);
-}
-void Level7Part18()//Great circles-child2
-{
- if(state)
- {
- towerspr[green]->RenderStretch(770,0,800,30);
- towerspr[red]->RenderStretch(380,280,420,320);
- }
- else
- {
- towerspr[red]->RenderStretch(770,0,800,30);
- towerspr[green]->RenderStretch(380,280,420,320);
- }
- hgeRect col;
- if (state)
- {
- col=hgeRect(380,280,420,320);
- if (col.TestPoint(playerpos.x,playerpos.y))++part;
- }
- else
- {
- col=hgeRect(770,0,800,30);
- if (col.TestPoint(playerpos.x,playerpos.y))state=1;
- }
- frameleft=Infinity;
- for (int i=0;i<=CCnt;++i)
- {
- if (i==0||i==1)Circles[i].SetRange(50+10*sin(Circles[i].GetDT()));
- if (i==2||i==3)Circles[i].SetRange(100+10*sin(Circles[i].GetDT()));
- if (i==4||i==5)Circles[i].SetRange(150+10*sin(Circles[i].GetDT()));
- if (i==6||i==7)Circles[i].SetRange(210+20*sin(Circles[i].GetDT()));
- if (i==8||i==9)Circles[i].SetRange(270+20*sin(Circles[i].GetDT()));
- if (i==10||i==11)Circles[i].SetRange(320+20*sin(Circles[i].GetDT()));
- if (i==12||i==13)Circles[i].SetRange(420+30*sin(Circles[i].GetDT()));
- Circles[i].Update();
- }
-}
-BTail btails[50];
-void Level7Part19()
-{
- frameleft=AMinute*2;clrtime=3;towcnt=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Warning: Trypophobia caution ahead!");
- }
- if (Current_Position==1)
- {
- ++part;All2pnt();avabrk=1.0f;avacurbrk=1.0f;memset(btails,0,sizeof(btails));
- }
-}
-void Level7Part20()
-{
- avacurbrk+=hge->Timer_GetDelta();
- if(avacurbrk>avabrk)
- {
- avacurbrk=0;avabrk=(frameleft/(double)(AMinute*2))*0.7+0.3;
- for(int i=0;i<50;++i)
- if(!btails[i].isActive())
- {btails[i].Create();break;}
- if(re.NextInt(0,24)==15)NewMultpo();
- }
- for(int i=0;i<50;++i)
- if(btails[i].isActive())btails[i].Update();
-}
-int sttnt;
-void Level7Part21()
-{
- frameleft=AMinute+ThirtySeconds;All2pnt();clrtime=1;
- if (towcnt!=1&&towcnt!=0)return ClearAll(false);
- DisableAllTower=false;
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- t8special=true;
- sttnt=CreateTower8(400,300,2000,2,75,20);
- for (int i=1;i<=towcnt;++i)
- if (tower[i].RendColor==0x80FFFFFF)
- tower[i].RendColor=0x00FFFFFF;
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].RendColor>>24)<=0x80)
- tower[i].RendColor=tower[i].RendColor+0x01FFFFFF;
- else
- {
- ++part;
- return;
- }
-}
-void Level7Part22()
-{
- tower[sttnt].towertimer=(frameleft/(double)(AMinute+ThirtySeconds))*1250+750;
-}
-WOP wop[100];
-void Level7Part23()//Wave of Photon
-{
- memset(bnl,0,sizeof(bnl));t8special=false;
- frameleft=AMinute;All2pnt();towcnt=0;
- ykbrk=0.5f;++part;clrtime=1;
-}
-void Level7Part24()
-{
- ykbrk-=hge->Timer_GetDelta();
- if (ykbrk<0&&frameleft>TenSeconds/10*3)
- {
- ykbrk=(double)frameleft/AMinute/2.0f+0.2f;
- for (int i=0;i<100;++i)
- if (!wop[i].active)
- {
- vector2d a,b;
- if (re.NextInt(1,100)>=50)
- {
- if (re.NextInt(1,100)>=50)a=vector2d(re.NextDouble(10,790),610);else a=vector2d(re.NextDouble(10,790),-10);
- }
- else
- {
- if (re.NextInt(1,100)>=50)a=vector2d(-10,re.NextDouble(10,590));else a=vector2d(810,re.NextDouble(10,590));
- }
- if (re.NextInt(1,100)>=50)
- {
- if (re.NextInt(1,100)>=50)b=vector2d(re.NextDouble(10,790),610);else b=vector2d(re.NextDouble(10,790),-10);
- }
- else
- {
- if (re.NextInt(1,100)>=50)b=vector2d(-10,re.NextDouble(10,590));else b=vector2d(810,re.NextDouble(10,590));
- }
- if (re.NextInt(1,100)>=80)
- {
- vector2d d=playerpos-a;
- b=playerpos;
- while(b.x>-5&&b.x<805&&b.y>-5&&b.y<605)b=b+d;
- }
- wop[i].Init(a,b,1+(AMinute-frameleft)/(double)AMinute,0.02);
- break;
- }
- }
- for (int i=0;i<100;++i)
- if (wop[i].active)wop[i].Update();
-}
-RTV rtv[100];
-void Level7Part25()
-{
- frameleft=AMinute+ThirtySeconds;
- All2pnt();towcnt=Lasercnt=0;
- ++part;memset(rtv,0,sizeof(rtv));
- avabrk=1;avacurbrk=0.7;clrtime=1;
-}
-void Level7Part26()
-{
- avacurbrk+=hge->Timer_GetDelta();
- if(avacurbrk>avabrk&&frameleft>TenSeconds/3)
- {
- avacurbrk=0;avabrk=frameleft/(double)(AMinute+ThirtySeconds)*1.25+0.75;
- for(int i=0;i<100;++i)if(!rtv[i].isActive())
- {
- int spinner=6;
- if(frameleft<AMinute)spinner=8;
- if(frameleft<ThirtySeconds)spinner=12;
- if(re.NextInt(1,100)>=40)rtv[i].Init(1,(re.NextInt(0,1)?1:-1)*pi/123,spinner,(TColors)(re.NextInt(0,7)),re.NextInt(0,11));
- else if(re.NextInt(0,1))
- rtv[i].Init(2,(re.NextInt(0,1)?1:-1)*pi/60,spinner,(TColors)(re.NextInt(0,7)),re.NextInt(0,11));
- else
- rtv[i].Init(3,pi/48,spinner,(TColors)(re.NextInt(0,7)),re.NextInt(0,11));
- break;
- }
- }
- for(int i=0;i<100;++i)if(rtv[i].isActive())rtv[i].Update();
-}
-//Level-1 stats from here
-void Levelm1Part0()
-{
- frameleft=50;All2pnt();towcnt=0;bgbrk=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- LE_Active=false;
- Current_Position=2;
- ShowTip("\
-Level -1-Over the Horizon\n\
-Level -1! Getting ready?\
-");
- frameleft=TenSeconds;++part;
- }
-}
-void Levelm1Part1()//3 circles
-{
- frameleft=AMinute;clrtime=2;towcnt=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("RGB...");
- }
- if (Current_Position==1)
- {
- ++part;All2pnt();avabrk=1.0f;avacurbrk=0;tbrk=0;
- }
-}
-void CircCreator(vector2d p,int cnt,TColors col)
-{
- for (int i=0;i<cnt;++i)
- {
- int pnt=CreateBullet2(p.x,p.y,6,frameleft*pi/AMinute+i*(2*pi/cnt));
- // ^
- // Nowhere can be safe!
- bullet[pnt].alterColor=col;
- bullet[pnt].bulletaccel=-0.003;bullet[pnt].limv=((AMinute-frameleft)/(double)AMinute)+1.0f;
- }
-}
-void Levelm1Part2()
-{
- avacurbrk+=hge->Timer_GetDelta();
- tbrk+=hge->Timer_GetDelta();
- avabrk=(frameleft/(double)AMinute)*0.5f+0.5f;
- if(tbrk>8)tbrk=0,NewMultpo(vector2d(400,300));
- if(avacurbrk>avabrk)
- {
- avacurbrk=0;
- CircCreator(vector2d(400,250),60,red);
- CircCreator(vector2d(350,336.6),60,green);
- CircCreator(vector2d(450,336.6),60,blue);
- }
-}
-BCircle scircles[200];
-double rspd[200];
-void Levelm1Part3()//circles
-{
- frameleft=AMinute;clrtime=1;towcnt=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("??????");
- }
- if (Current_Position==1)
- {
- ++part;All2pnt();avabrk=1.0f;avacurbrk=1.0f;memset(scircles,0,sizeof(scircles));
- }
-}
-void Levelm1Part4()
-{
- avacurbrk+=hge->Timer_GetDelta();
- avabrk=0.1+(frameleft/(double)AMinute)*0.4f;
- if(avacurbrk>avabrk)
- {
- avacurbrk=0;
- for(int i=0;i<200;++i)
- {
- if (scircles[i].GetRange()>510||scircles[i].GetRange()<1e-7)
- {
- scircles[i].Init(1,(re.NextInt(0,1)?1:-1)*(frameleft<TwentySeconds?0.0003:0.0002),36,vector2d(400,300),(TColors)re.NextInt(0,7),(TColors)re.NextInt(0,7));
- rspd[i]=0.575+(frameleft/(double)AMinute)*0.1;break;
- }
- }
- }
- for(int i=0;i<200;++i)
- {
- if (scircles[i].GetRange()>1e-7&&scircles[i].GetRange()<510)
- {
- scircles[i].SetRange(scircles[i].GetRange()+(LOWFPS?17:1)*rspd[i]);
- if (rspd[i]>0.002)rspd[i]-=0.0005*(LOWFPS?17:1);
- if (rspd[i]<=0.002)rspd[i]=0.002;
- scircles[i].Update();
- }
- }
-}
-void Levelm1Part5()//Spiky
-{
- frameleft=AMinute+ThirtySeconds;
- for(int i=0;i<200;++i)
- if (scircles[i].GetRange()>1e-7&&scircles[i].GetRange()<510)
- scircles[i].circ2pnt();
- towcnt=0;clrtime=1;
- Lasercnt=0;
- ++part;avabrk=1;avacurbrk=0.5;
-}
-void Levelm1Part6()//Spiky-child
-{
- avacurbrk+=hge->Timer_GetDelta();
- if (avacurbrk>avabrk)
- {
- avacurbrk=0;avabrk=frameleft/(double)(AMinute+ThirtySeconds)*0.4+0.1;
- for (int i=0;i<1000;++i)
- {
- if (!noname[i].Exist())
- {
- if (frameleft<TenSeconds)
- noname[i].Init(re.NextDouble(0,800),4,100,150,60,0x8033CCFF);
- else if (frameleft<TwentySeconds)
- noname[i].Init(re.NextDouble(0,800),4,100,150,65,0x8033CCFF);
- else noname[i].Init(re.NextDouble(0,800),4,100,150,75,0x8033CCFF);
- break;
- }
- }
- if(re.NextInt(0,19)==8)NewMultpo();
- }
- for (int i=0;i<1000;++i)if (noname[i].Exist())noname[i].Process();
-}
-achromaGroup aca,acb;
-void Levelm1Part7()//Achromatopsia1
-{
- frameleft=AMinute;for(int i=0;i<1000;++i)if(noname[i].Exist())noname[i].noname2pnt();
- aca.Init(red,0.075);acb.Init(green,0.075);clrtime=1;
- ++part;avabrk=2.0f;avacurbrk=0;achromab=false;
-}
-void Levelm1Part8()//Achromatopsia1-child
-{
- avacurbrk+=hge->Timer_GetDelta();
- if (avacurbrk>avabrk)
- {
- avacurbrk=0;avabrk=2;
- aca.Reverse();acb.Reverse();
- if(re.NextInt(0,7)==3)NewMultpo(vector2d(re.NextInt(10,790),re.NextInt(500,590)));
- }
- aca.Update(1);acb.Update();
-}
-void Levelm1Part9()//Achromatopsia2
-{
- frameleft=AMinute;clrtime=1;
- aca.Init(red,1);acb.Init(green,1);
- ++part;avabrk=1.5f;avacurbrk=0;achromab=true;
-}
-void Levelm1Part10()//Achromatopsia2-child
-{
- avacurbrk+=hge->Timer_GetDelta();
- if (avacurbrk>avabrk)
- {
- avacurbrk=0;avabrk=2;
- aca.Reverse();acb.Reverse();
- }
- aca.Update();acb.Update();
-}
-void Levelm1Part11()
-{
- frameleft=AMinute+ThirtySeconds;clrtime=2;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("I've heard that all of you\n\
-support hyper-threading?");
- return;
- }
- ++frameskips;
- if(!PlayerSplit)playerpos=vector2d(200,150),PlayerSplit=true;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- CreateTower8(400,300,857,3,57,20,false);
- for (int i=1;i<=towcnt;++i)
- if (tower[i].RendColor==0x80FFFFFF)
- {
- aca.achroma2pnt();acb.achroma2pnt();
- tower[i].RendColor=0x00FFFFFF;
- }
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].RendColor>>24)<=0x80)
- tower[i].RendColor=tower[i].RendColor+0x01FFFFFF;
- else
- {
- IfCallLevel=false;
- return;
- }
-}
-void Levelm1Part12()
-{
- frameleft=ThirtySeconds;if(tower[towcnt].towertype!=6)towcnt=0;
- DisableAllTower=false;
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- CreateTower6(400,300,2500,2,2000,3,12);
- for (int i=1;i<=towcnt;++i)
- if (tower[i].RendColor==0x80FFFFFF)
- tower[i].RendColor=0x00FFFFFF;
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].RendColor>>24)<=0x80)
- tower[i].RendColor=tower[i].RendColor+0x01FFFFFF;
- else
- {
- IfCallLevel=false;BTarg.TargHide();
- return;
- }
-}
-int m19lead[10],m19gen[700];
-double m19rad;
-int m19step,m19cnt;
-bool m19pldir;
-void Levelm1Part13()//Gravity Vortex
-{
- frameleft=AMinute*2;towcnt=0;PlayerSplit=false;
- clrtime=2;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Who's collecting such great power here?");
- return;
- }
- if (!LOWFPS)
- DBGColor=ColorTransfer(DBGColor,0xFF000000);
- else
- for (int i=1;i<=17;++i)DBGColor=ColorTransfer(DBGColor,0xFF000000);
- if (DBGColor==0xFF000000)
- {
- All2pnt();memset(m19lead,0,sizeof(m19lead));
- memset(m19gen,0,sizeof(m19gen));
- ++part;m19rad=m19step=m19cnt=0;
- avabrk=0.05;avacurbrk=0;
- for(int i=0;i<8;++i)
- {
- m19lead[i]=CreateBullet2(400,300,0,0);
- bullet[m19lead[i]].bulletpos=vector2d(400+250*cos(m19rad+i*pi/4),300+250*sin(m19rad+i*pi/4));
- bullet[m19lead[i]].alterColor=(TColors)i;
- bullet[m19lead[i]].inv=true;
- }
- m19pldir=false;BTarg.targpos=playerpos;
- }
-}
-void Levelm1Part20update()
-{
- if(!m19pldir)BTarg.TargGoto(vector2d(400,300)),playerpos=BTarg.targpos;
- if(!m19pldir&&GetDist(playerpos,vector2d(400,300))<0.01)m19pldir=true;
- for(int i=0;i<m19cnt;++i)
- {
- if(bullet[m19gen[i]].redattrib)
- {
- if(bullet[m19gen[i]].redattrib>1)
- {
- double r=re.NextDouble(0,75-50*(frameleft/(double)(AMinute*2))),theta=re.NextDouble(-pi,pi);
- bullet[m19gen[i]].bulletpos=vector2d(400+r*cos(theta),300+r*sin(theta));
- bullet[m19gen[i]].bulletspeed=0;
- }
- else
- {
- if(GetDist(bullet[m19gen[i]].bulletpos,vector2d(400,300))<4)
- {
- bullet[m19gen[i]].redattrib=2;
- bullet[m19gen[i]].setdir(re.NextDouble(-pi,pi));
- bullet[m19gen[i]].bulletaccel=0.0015;
- bullet[m19gen[i]].limv=re.NextDouble(1,8-2*(frameleft/(double)(AMinute*2)));
- }
- }
- }
- }
-}
-void Levelm1Part14()
-{
- avacurbrk+=hge->Timer_GetDelta();
- m19rad+=pi/(5400.0f+1800.0f*(frameleft/(double)(AMinute*2)))*(1000.0f/hge->Timer_GetFPS());
- for(int i=0;i<8;++i)bullet[m19lead[i]].bulletpos=vector2d(400+250*cos(m19rad+i*pi/4),300+250*sin(m19rad+i*pi/4));
- switch(m19step)
- {
- case 0:
- if(avacurbrk>avabrk)
- {
- for(int i=0;i<8;++i)
- {
- m19gen[m19cnt]=CreateBullet2(bullet[m19lead[i]].bulletpos.x,bullet[m19lead[i]].bulletpos.y,0,0);
- bullet[m19gen[m19cnt]].redir(vector2d(400,300));
- bullet[m19gen[m19cnt]].alterColor=(TColors)i;
- bullet[m19gen[m19cnt]].bulletaccel=0.002;
- bullet[m19gen[m19cnt]].limv=3;
- bullet[m19gen[m19cnt]].whirem=1000;
- bullet[m19gen[m19cnt]].addblend=true;
- bullet[m19gen[m19cnt++]].redattrib=re.NextInt(0,3)?0:1;
- }
- if(m19cnt/8>80-50*(frameleft/(double)(AMinute*2)))m19step=1,avabrk=3,tbrk=0;
- avacurbrk=0;
- }
- Levelm1Part20update();
- break;
- case 1:
- if(avacurbrk>avabrk)
- {
- m19step=0;avabrk=0.05;memset(m19gen,0,sizeof(m19gen));m19cnt=0;
- }
- tbrk+=hge->Timer_GetDelta();
- if(tbrk>0.05)
- {
- tbrk=0;
- for(int i=0;i<8;++i)
- {
- int pnt=CreateBullet2(bullet[m19lead[i]].bulletpos.x,bullet[m19lead[i]].bulletpos.y,0,0);
- bullet[pnt].redir(vector2d(400,300));
- bullet[pnt].alterColor=(TColors)i;
- bullet[pnt].bulletdir.x=-bullet[pnt].bulletdir.x;
- bullet[pnt].bulletdir.y=-bullet[pnt].bulletdir.y;
- bullet[pnt].bulletaccel=0.002;bullet[pnt].limv=2;
- bullet[pnt].whirem=2500;bullet[pnt].addblend=true;
- }
- }
- Levelm1Part20update();
- break;
- }
-}
-vector2d snextarg;
-int snexcnt,snexstep;
-Target snexTarg;
-void Levelm1Part15()//"Supernova"
-{
- frameleft=AMinute*2;clrtime=1;
- ++bgbrk;if (LOWFPS)bgbrk+=16;
- if (bgbrk<30)return;
- bgbrk=0;towcnt=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Super...\n\
-...nova!!");
- return;
- }
- if (Current_Position==1)
- {
- snexTarg.Init(0.001,vector2d(400,300));
- All2pnt();
- ++part;avabrk=12.0f;avacurbrk=0;tbrk=0;
- snexstep=0;snexcnt=10;snexTarg.TargShow();
- }
-}
-void snCircCreator(vector2d p,int cnt,TColors col,bool mode)
-{
- if(mode)
- for (int i=0;i<cnt;++i)
- {
- int pnt=CreateBullet2(p.x,p.y,6,acos((playerpos-vector2d(400,300))^vector2d(1,0))+(i-0.5f)*(2*pi/cnt));
- bullet[pnt].redir(playerpos);bullet[pnt].bulletdir.Rotate((i+0.5f)*(2*pi/cnt));
- bullet[pnt].alterColor=col;bullet[pnt].addblend=true;
- }
- else
- for (int i=0;i<cnt;++i)
- {
- int pnt=CreateBullet2(p.x,p.y,2,acos((playerpos-vector2d(400,300))^vector2d(1,0))+i*(2*pi/cnt));
- bullet[pnt].redir(playerpos);bullet[pnt].bulletdir.Rotate(i*(2*pi/cnt));
- bullet[pnt].alterColor=col;bullet[pnt].addblend=true;
- }
-}
-void Levelm1Part16()
-{
- snexTarg.TargRender();
- avacurbrk+=hge->Timer_GetDelta();
- tbrk+=hge->Timer_GetDelta();
- if((AMinute*2-frameleft)<TenSeconds)
- {
- if(tbrk>0.016&&(AMinute*2-frameleft)>TenSeconds/5)
- {
- tbrk=0;
- snCircCreator(vector2d(400,300),144,(TColors)re.NextInt(0,7),true);
- }
- }
- else
- {
- if(tbrk>0.5)
- {
- tbrk=0;
- snCircCreator(vector2d(400,300),27,(TColors)re.NextInt(0,7),false);
- }
- }
- switch (snexstep)
- {
- case 0:
- if(avacurbrk>avabrk)snexstep=1,snextarg=playerpos;
- break;
- case 1:
- snexTarg.TargGoto(snextarg);
- if(GetDist(snexTarg.targpos,snextarg)<0.01)
- {
- snexstep=2;
- avabrk=(frameleft/(double)(AMinute*2))*0.01666+0.01667;
- avacurbrk=0;
- snexcnt=40-(frameleft/(double)(AMinute*2))*20;
- }
- break;
- case 2:
- if(avacurbrk>avabrk)
- {
- if(--snexcnt>0)
- {
- avacurbrk=0;
- for(int i=0;i<10;++i)
- bullet[CreateBullet2(snexTarg.targpos.x,snexTarg.targpos.y,2,re.NextDouble(-pi,pi),true)].addblend=true;
- }
- else snexstep=0,avabrk=(frameleft/(double)(AMinute*2))*1+1.5f,avacurbrk=0;
- }
- break;
- }
-}
-yellowGroup fyg[100];
-//Spinner fygs;
-void Levelm1Part17()
-{
- frameleft=AMinute+ThirtySeconds;clrtime=2;
- All2pnt();towcnt=0;memset(fyg,0,sizeof(fyg));
- ++part;avabrk=1;avacurbrk=0.5;//fygs.Init(3,20);
-}
-void Levelm1Part18()
-{
- avacurbrk+=hge->Timer_GetDelta();
- if(avacurbrk>avabrk)
- {
- avacurbrk=0;
- for(int i=0;i<100;++i)
- if(!fyg[i].isActive())
- {
- if(frameleft>AMinute)
- fyg[i].Init(12,2.5-1.5*(frameleft/(double)(AMinute+ThirtySeconds)));
- else
- fyg[i].Init(36,2.5-1.5*(frameleft/(double)(AMinute+ThirtySeconds)));
- break;
- }
- CircCreator(vector2d(400,300),36,blue);
- }
- for(int i=0;i<100;++i)if(fyg[i].isActive())fyg[i].Update();
- //fygs.Update(pi/7200*(0.5+frameleft/(double)(AMinute+ThirtySeconds)));
-}
-int m17lead[4];
-void Levelm1Part19()
-{
- frameleft=AMinute+ThirtySeconds;towcnt=0;clrtime=1;
- All2pnt();memset(m17lead,0,sizeof(m17lead));
- ++part;avabrk=0;
- m17lead[0]=CreateBullet2(10,10,4,0);bullet[m17lead[0]].redir(vector2d(780,10));bullet[m17lead[0]].alterColor=red;
- m17lead[1]=CreateBullet2(780,10,4,0);bullet[m17lead[1]].redir(vector2d(780,580));bullet[m17lead[1]].alterColor=green;
- m17lead[2]=CreateBullet2(780,580,4,0);bullet[m17lead[2]].redir(vector2d(10,580));bullet[m17lead[2]].alterColor=dblue;
- m17lead[3]=CreateBullet2(10,580,4,0);bullet[m17lead[3]].redir(vector2d(10,10));bullet[m17lead[3]].alterColor=white;
- for(int i=0;i<4;++i)bullet[m17lead[i]].inv=true;snexTarg.Init(0.001,vector2d(400,300));
- snexstep=0;snexTarg.TargShow();avabrk=5.0f;avacurbrk=0;tbrk=0;
-}
-void Levelm1Part20()
-{
- snexTarg.TargRender();avacurbrk+=hge->Timer_GetDelta();
- tbrk+=hge->Timer_GetDelta();avabrk+=hge->Timer_GetDelta();
- if(avabrk>10)NewMultpo(),avabrk=0;
- switch (snexstep)
- {
- case 0:
- if(avacurbrk>avabrk)snexstep=1,snextarg=playerpos;
- break;
- case 1:
- snexTarg.TargGoto(snextarg);
- if(GetDist(snexTarg.targpos,snextarg)<0.01)
- {
- snexstep=0;
- avabrk=(frameleft/(double)(AMinute*2))*3+2;
- avacurbrk=0;
- }
- break;
- }
- if(bullet[m17lead[0]].bulletpos.x>780.01f)bullet[m17lead[0]].bulletpos=vector2d(780,10),bullet[m17lead[0]].redir(vector2d(780,580));
- if(bullet[m17lead[0]].bulletpos.y>580.01f)bullet[m17lead[0]].bulletpos=vector2d(780,580),bullet[m17lead[0]].redir(vector2d(10,580));
- if(bullet[m17lead[0]].bulletpos.x<9.99f)bullet[m17lead[0]].bulletpos=vector2d(10,580),bullet[m17lead[0]].redir(vector2d(10,10));
- if(bullet[m17lead[0]].bulletpos.y<9.99f)bullet[m17lead[0]].bulletpos=vector2d(10,10),bullet[m17lead[0]].redir(vector2d(780,10));
-
- if(bullet[m17lead[1]].bulletpos.x>780.01)bullet[m17lead[1]].bulletpos=vector2d(780,10),bullet[m17lead[1]].redir(vector2d(780,580));
- if(bullet[m17lead[1]].bulletpos.y>580.01f)bullet[m17lead[1]].bulletpos=vector2d(780,580),bullet[m17lead[1]].redir(vector2d(10,580));
- if(bullet[m17lead[1]].bulletpos.x<9.99f)bullet[m17lead[1]].bulletpos=vector2d(10,580),bullet[m17lead[1]].redir(vector2d(10,10));
- if(bullet[m17lead[1]].bulletpos.y<9.99f)bullet[m17lead[1]].bulletpos=vector2d(10,10),bullet[m17lead[1]].redir(vector2d(780,10));
-
- if(bullet[m17lead[2]].bulletpos.x>780.01f)bullet[m17lead[2]].bulletpos=vector2d(780,10),bullet[m17lead[2]].redir(vector2d(780,580));
- if(bullet[m17lead[2]].bulletpos.y>580.01f)bullet[m17lead[2]].bulletpos=vector2d(780,580),bullet[m17lead[2]].redir(vector2d(10,580));
- if(bullet[m17lead[2]].bulletpos.x<9.99f)bullet[m17lead[2]].bulletpos=vector2d(10,580),bullet[m17lead[2]].redir(vector2d(10,10));
- if(bullet[m17lead[2]].bulletpos.y<9.99f)bullet[m17lead[2]].bulletpos=vector2d(10,10),bullet[m17lead[2]].redir(vector2d(780,10));
-
- if(bullet[m17lead[3]].bulletpos.x>780.01f)bullet[m17lead[3]].bulletpos=vector2d(780,10),bullet[m17lead[3]].redir(vector2d(780,580));
- if(bullet[m17lead[3]].bulletpos.y>580.01f)bullet[m17lead[3]].bulletpos=vector2d(780,580),bullet[m17lead[3]].redir(vector2d(10,580));
- if(bullet[m17lead[3]].bulletpos.x<9.99f)bullet[m17lead[3]].bulletpos=vector2d(10,580),bullet[m17lead[3]].redir(vector2d(10,10));
- if(bullet[m17lead[3]].bulletpos.y<9.99f)bullet[m17lead[3]].bulletpos=vector2d(10,10),bullet[m17lead[3]].redir(vector2d(780,10));
- if(tbrk>0.02+(frameleft/(double)(AMinute+ThirtySeconds))*0.08)
- {
- for(int i=0;i<4;++i)
- {
- int pnt=CreateBullet2(bullet[m17lead[i]].bulletpos.x,bullet[m17lead[i]].bulletpos.y,0,0,true);
- bullet[pnt].redir(snexTarg.targpos);
- bullet[pnt].bulletaccel=0.002;bullet[pnt].limv=3;
- bullet[pnt].whirem=1500-(frameleft/(double)(AMinute+ThirtySeconds))*500;
- bullet[pnt].alterColor=i==0?red:i==1?green:i==2?dblue:white;
- }
- tbrk=0;
- }
-}
-void Levelm1Part21()
-{
- //some part of this level is in towernbullet...
- frameleft=AMinute*1.5;clrtime=1;
- if (towcnt!=4&&towcnt!=0)return ClearAll(false);
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Zzz...");
- All2pnt();
- return;
- }
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- CreateTower8(30,10,1500,3,20,30,false);
- CreateTower8(746,10,1500,3,20,30,false);
- CreateTower8(30,556,1500,3,20,30,false);
- CreateTower8(746,556,1500,3,20,30,false);
- for (int i=1;i<=towcnt;++i)
- if (tower[i].RendColor==0x80FFFFFF)
- tower[i].RendColor=0x00FFFFFF;
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].RendColor>>24)<=0x80)
- tower[i].RendColor=tower[i].RendColor+0x01FFFFFF;
- else
- {
- IfCallLevel=false;
- return;
- }
-}
-void Levelm2Part0()
-{
- frameleft=10;All2pnt();towcnt=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("\
-Level -2-Assessments\n\
-Welcome to assessment mode!\n\
-You won't step to the next level until\n\
-you have a collision.\n\
-Good luck and go for the highest score!\
-");
- }
- if (Current_Position==1)
- {
- if((DBGColor=ColorTransfer(DBGColor,0xFF1B2065))!=0xFF1B2065)
- DBGColor=ColorTransfer(DBGColor,0xFF1B2065),frameleft=10;
- else{++part;IfShowTip=true;bulcnt=0;return;}
- }
-}
-Tower* dbtows[200];
-double dbroll[10];
-void Levelm2Part1()
-{
- frameleft=Infinity;tbrk=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Test 1 - Directed bullet");
- return;
- }
- for(int i=0;i<5;++i)
- {
- dbroll[i]=-i*120-20;
- for(int j=0;j<20;++j)
- dbtows[i*20+j]=&tower[CreateTower1(j*40+10,dbroll[i],4000,4)];
- }
- ++part;
-}
-void Levelm2Part2()
-{
- frameleft=Infinity;
- tbrk+=hge->Timer_GetDelta();
- for(int i=0;i<5;++i)
- {
- dbroll[i]+=0.05*(1000.0f/hge->Timer_GetFPS());
- if(dbroll[i]>600)dbroll[i]=-20;
- for(int j=0;j<20;++j)
- {
- dbtows[i*20+j]->towerpos=vector2d(j*40+10,dbroll[i]);
- if(tbrk>0.033&&dbtows[i*20+j]->towertimer>2000)dbtows[i*20+j]->towertimer-=2;
- }
- }
- if(tbrk>0.033)tbrk=0;
-}
-void Levelm2Part3()
-{
- frameleft=Infinity;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Test 2 - Random bullets");
- All2pnt();
- return;
- }
- if (towcnt!=1&&towcnt!=0)return ClearAll(false);
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- CreateTower2(400,300,999999999,0);
- for (int i=1;i<=towcnt;++i)
- if (tower[i].RendColor==0x80FFFFFF)
- tower[i].RendColor=0x00FFFFFF;
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].RendColor>>24)<=0x80)
- tower[i].RendColor=tower[i].RendColor+0x01FFFFFF;
- else
- {
- ++part;assetime=tbrk=0;
- return;
- }
-}
-int rcnt;
-void Levelm2Part4()
-{
- frameleft=Infinity;
- tbrk-=hge->Timer_GetDelta();
- if(tbrk<0)
- {
- tbrk=0.5;
- if(assetime>=5)tbrk=re.NextDouble(0.25,0.5);
- if(assetime>=10)tbrk=re.NextDouble(0.1,0.2);
- if(assetime>=20)tbrk=re.NextDouble(0.05,0.08);
- if(assetime>=30)tbrk=re.NextDouble(0.02,0.035);
- if(assetime>=60)tbrk=0.02;if(assetime>=90)tbrk=0.01;
- if(assetime<90)rcnt=1;if(assetime>=90)rcnt=2;
- if(assetime>=120)rcnt=4;if(assetime>=150)rcnt=8;
- if(assetime>=180)rcnt=16;
- double rspeed=re.NextDouble(0.5+3*assetime/180.0f,1+9*assetime/180.0f);
- for(int i=0;i<rcnt;++i)
- CreateBullet2(400,300,rspeed,re.NextDouble(-pi,pi));
- }
-}
-
-expSpinner es;
-void Levelm2Part5()
-{
- frameleft=Infinity;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Test 3 - Constant patterns");
- All2pnt();
- return;
- }
- if (towcnt!=0)return ClearAll(false);
- if(Current_Position==1)
- {
- ++part;avabrk=0;avacurbrk=0;
- }
-}
-void Levelm2Part6()
-{
- frameleft=Infinity;
- 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;
- avacurbrk+=hge->Timer_GetDelta();
- if(avacurbrk>avabrk)
- {
- shots=1;
- 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;
- }
- 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;
- }
- avacurbrk=0;
- avabrk=3-assetime/60;
- if(avabrk<0.5)avabrk=0.5;
- }
- for(int i=0;i<200;++i)
- {
- if (asscircles[i].GetRange()>1e-7&&asscircles[i].GetRange()<800)
- {
- asscircles[i].SetRange(asscircles[i].GetRange()+(LOWFPS?17:1)*0.05);
- asscircles[i].Update();
- }
- }
-}
-void Levelm2Part9()
-{
- frameleft=Infinity;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Test 5 - Crossing 2");
- for(int i=0;i<200;++i)
- if (asscircles[i].GetRange()>1e-7&&asscircles[i].GetRange()<800)
- asscircles[i].circ2pnt();
- return;
- }
- if(Current_Position==1)
- {
- memset(asscircles,0,sizeof(asscircles));
- ++part;avabrk=0;avacurbrk=0;
- }
-}
-void Levelm2Part10()
-{
- frameleft=Infinity;
- avacurbrk+=hge->Timer_GetDelta();
- if(avacurbrk>avabrk)
- {
- shots=1;
- 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;
- }
- 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;
- }
- avacurbrk=0;
- avabrk=2-assetime/60;
- if(avabrk<0.3)avabrk=0.3;
- }
- for(int i=0;i<200;++i)
- {
- if (asscircles[i].GetRange()>1e-7&&asscircles[i].GetRange()<800)
- {
- asscircles[i].SetRange(asscircles[i].GetRange()+(LOWFPS?17:1)*0.05);
- asscircles[i].Update();
- }
- }
-}
-double assrad;
-SELineLaser trap[100];
-void Levelm2Part11()
-{
- frameleft=Infinity;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Test 6 - Trappy");
- for(int i=0;i<200;++i)
- if (asscircles[i].GetRange()>1e-7&&asscircles[i].GetRange()<800)
- asscircles[i].circ2pnt();
- return;
- }
- if(Current_Position==1)
- {
- memset(asscircles,0,sizeof(asscircles));
- ++part;avabrk=0;avacurbrk=0;tbrk=0;memset(trap,0,sizeof(trap));
- }
-}
-void Levelm2Part12()
-{
- frameleft=Infinity;
- avacurbrk+=hge->Timer_GetDelta();
- for(int i=0;i<100;++i)
- if(trap[i].isActive())trap[i].Update();
- if(avacurbrk>avabrk)
- {
- bool sh=re.NextInt(0,1);
- for(int c=0;c<(assetime>30?(assetime-30)/30:1);++c,sh^=1)
- for(int i=0;i<100;++i)
- if(!trap[i].isActive())
- {
- if(sh)trap[i].Init(re.NextInt(10,590),1);
- else trap[i].Init(re.NextInt(10,790),0);
- break;
- }
- avacurbrk=0;
- if(assetime<60)avabrk=3-2*assetime/60.0f;
- else avabrk=2.5-(assetime-60)/120.0f;
- }
-}
-double asssrd1;
-void Levelm2Part13()
-{
- frameleft=Infinity;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Test 7 - Sine wave");
- All2pnt();
- return;
- }
- if (towcnt!=0)return ClearAll(false);
- if(Current_Position==1)
- {
- ++part;tbrk=asssrd1=avacurbrk=0;
- }
-}
-void Levelm2Part14()
-{
- frameleft=Infinity;
- tbrk+=hge->Timer_GetDelta();
- if(tbrk>0.075)
- {
- tbrk=0;
- asssrd1+=pi/45;
- //right
- for(int i=0;i<5;++i)
- CreateBullet2(810,120*(i+1)+120*sin(asssrd1),2,0,true);
- //right2
- if(assetime>15)
- {
- for(int i=0;i<5;++i)
- CreateBullet2(810,120*(i+1)+120*sin(asssrd1+pi/12),2,0,true);
- }
- //left
- if(assetime>30)
- {
- for(int i=0;i<5;++i)
- CreateBullet2(-10,120*(i+1)+120*sin(asssrd1),2,pi,true);
- }
- //left2
- if(assetime>45)
- {
- for(int i=0;i<5;++i)
- CreateBullet2(-10,120*(i+1)+120*sin(asssrd1+pi/12),2,pi,true);
- }
- if(assetime>60)
- {
- avacurbrk-=hge->Timer_GetDelta();
- if(avacurbrk<0)
- {
- CreateBullet1(0,0,3,0);CreateBullet1(800,0,3,0);
- CreateBullet1(0,600,3,0);CreateBullet1(800,600,3,0);
- avacurbrk=0.5-0.3*(assetime-60.0f)/60.0f;
- if(avacurbrk<0.1)avacurbrk=0.1;
- }
- }
- }
-}
-int resvpos,rpbcnt;
-double delx;
-void Levelm2Part15()
-{
- frameleft=Infinity;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Test 8 - Density test");
- All2pnt();
- return;
- }
- if (towcnt!=0)return ClearAll(false);
- if(Current_Position==1)
- {
- ++part;tbrk=asssrd1=avacurbrk=0;resvpos=re.NextInt(0,49);rpbcnt=0;
- }
-}
-void Levelm2Part16()
-{
- frameleft=Infinity;
- tbrk-=hge->Timer_GetDelta();
- if(tbrk<0)
- {
- tbrk=0.1-0.05*(assetime/120.0f);if(tbrk<0.05)tbrk=0.05;
- if(re.NextInt(0,100)==37&&!rpbcnt)
- {
- rpbcnt=6;int oldrp=resvpos;
- for(resvpos=re.NextInt(0,49);abs(resvpos-oldrp)>20||abs(resvpos-oldrp)<5;resvpos=re.NextInt(0,49));
- delx=re.NextDouble(300,650);
- }
- for(int i=0;i<50;++i)
- {
- if(abs(i-resvpos)>2)
- {
- int pnt=CreateBullet2(810,12*i,1+3*assetime/180.0f,0,true);
- if(rpbcnt>0)bullet[pnt].limpos=vector2d(delx,12*i);
- }
- }
- if(rpbcnt)--rpbcnt;
- if(resvpos==0)resvpos+=re.NextInt(0,1);
- else if(resvpos==49)resvpos+=re.NextInt(-1,0);
- else resvpos+=re.NextInt(-1,1);
- }
-}
-CPinBall pinballs[200];
-void Levelm2Part17()
-{
- frameleft=Infinity;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Test 9 - Pinball");
- All2pnt();
- return;
- }
- if (towcnt!=0)return ClearAll(false);
- if(Current_Position==1)
- {
- ++part;tbrk=0;memset(pinballs,0,sizeof(pinballs));
- }
-}
-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)
- {
- 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)<pinballs[j].Radius()+lay*10.0)
- {place=false;break;}
- if(place)break;
- }
- pinballs[i].Init(pos,lay);
- break;
- }
- }
- for(int i=0;i<200;++i)
- if(pinballs[i].Getlifetime()>0)
- {
- vector2d pos=pinballs[i].Position();
- if(pos.x<pinballs[i].Radius()-5||pos.x>790-pinballs[i].Radius())
- pinballs[i].Delta().x=-pinballs[i].Delta().x,++pinballs[i].Getlifetime(),pinballs[i].UpdateDelta();
- if(pos.y<pinballs[i].Radius()-5||pos.y>590-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())<pinballs[j].Radius()+pinballs[i].Radius())
- {
- double sqrdis=sqr(GetDist(pinballs[j].Position(),pinballs[i].Position()));
- vector2d colline(pinballs[j].Position().x-pinballs[i].Position().x,
- pinballs[j].Position().y-pinballs[i].Position().y);
- double vp=pinballs[i].Delta()|colline;
- double wp=pinballs[j].Delta()|colline;
- vector2d ddelta((wp-vp)*colline.x/sqrdis,(wp-vp)*colline.y/sqrdis);
- pinballs[i].Delta().x+=ddelta.x;pinballs[i].Delta().y+=ddelta.y;
- pinballs[j].Delta().x-=ddelta.x;pinballs[j].Delta().y-=ddelta.y;
- //prevent them to stick together...
- vector2d stkprv=0.05*(pinballs[j].Radius()/sqrt(sqrdis)-1)*colline;
- pinballs[j].Position()=pinballs[j].Position()-stkprv;
- pinballs[i].UpdateDelta();pinballs[j].UpdateDelta();
- }
- pinballs[i].Update();
- }
-}
-void Levelm2Part19()
-{
- frameleft=Infinity;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Test 10 - Road blocks");
- All2pnt();
- return;
- }
- if (towcnt!=0)return ClearAll(false);
- if(Current_Position==1)
- {
- ++part;tbrk=0;memset(pinballs,0,sizeof(pinballs));
- }
-}
-void Levelm2Part20()
-{
- frameleft=Infinity;
- tbrk-=hge->Timer_GetDelta();
- if(tbrk<0)
- {
- tbrk=2-1*(assetime/120.0f);if(tbrk<0.75)tbrk=0.75;
- delx=re.NextDouble(350,700);
- resvpos=re.NextInt(0,49);
- for(int i=0;i<50;++i)
- {
- int pnt=CreateBullet2(810,12*i,1+2*assetime/180.0f,0,true);
- if(abs(i-resvpos)<=3)bullet[pnt].limpos=vector2d(delx,12*i);
- }
- }
-}
-void Levelm2Part21()
-{
- frameleft=Infinity;Dis8ref=true;tbrk=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Test 11 - Extreme speeds");
- All2pnt();towcnt=0;
- return;
- }
- ++frameskips;
- if (frameskips<10&&!LOWFPS)return;
- frameskips=0;
- for (int i=1;i<=33;++i)CreateTower8(i*24-12,12,500,6,20,30);
- for (int i=1;i<=towcnt;++i)
- if (tower[i].RendColor==0x80FFFFFF)
- tower[i].RendColor=0x00FFFFFF;
- for (int i=1;i<=towcnt;++i)
- if ((tower[i].RendColor>>24)<=0x80)
- tower[i].RendColor=tower[i].RendColor+0x01FFFFFF;
- else{++part;return;}
-}
-void Levelm2Part22()
-{
- frameleft=Infinity;
- double nspd=6+4*assetime/120.0f;if(nspd>10)nspd=10;
- for(int i=1;i<=33;++i)tower[i].bulletspeed=nspd;
- tbrk-=hge->Timer_GetDelta();
- if (tbrk>0)return;
- tbrk=3-2*(assetime/120.0f);
- if(tbrk<0.5)tbrk=0.5;
- for (int i=0;i<6;++i)
- {
- int p=CreateBullet2(playerpos.x+cos(i*pi/3.0f)*6,12+sin(i*pi/3.0f)*6,2,-pi/2);
- bullet[p].alterColor=orange;
- }
-}
-SimpLL SLL[200];
-void Levelm2Part23()
-{
- frameleft=Infinity;Dis8ref=true;tbrk=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Test 12 - Messed up");
- All2pnt();towcnt=0;
- return;
- }
- if (towcnt!=0)return ClearAll(false);
- ++part;tbrk=avacurbrk=avabrk=0;memset(SLL,0,sizeof(SLL));
-}
-void Levelm2Part24()
-{
- frameleft=Infinity;
- tbrk-=hge->Timer_GetDelta();
- if(tbrk<0)
- {
- tbrk=3-2.5*(assetime/120.0f);
- if(tbrk<0.5)tbrk=0.5;
- /*int cnt=12+12*assetime/120.0f;
- if(cnt>24)cnt=24;
- for(int i=0;i<cnt;++i)
- {
- vector2d dir=vector2d(400-playerpos.x,300-playerpos.y);
- dir.ToUnitCircle();dir=50*dir;dir.Rotate(i*2*pi/cnt);
- int pnt=CreateBullet2(400+dir.x,300+dir.y,0,0,true);
- bullet[pnt].limv=-2;bullet[pnt].bulletaccel=-0.001;bullet[pnt].whirem=500;
- bullet[pnt].redir(vector2d(400,300));
- }*/
- }
- avacurbrk+=hge->Timer_GetDelta();
- if(avacurbrk>avabrk)
- {
- avacurbrk=0;avabrk=4-3*assetime/120.0f;if(avabrk<0.5)avabrk=0.5;
- vector2d a,b;int cnt=re.NextInt(5,10);
- for (int i=0;i<cnt;++i)
- {
- if (re.NextInt(1,100)>=50)
- {
- if (re.NextInt(1,100)>=50)a=vector2d(re.NextDouble(10,790),610);else a=vector2d(re.NextDouble(10,790),-10);
- }
- else
- {
- if (re.NextInt(1,100)>=50)a=vector2d(-10,re.NextDouble(10,590));else a=vector2d(810,re.NextDouble(10,590));
- }
- if (re.NextInt(1,100)>=50)
- {
- if (re.NextInt(1,100)>=50)b=vector2d(re.NextDouble(10,790),610);else b=vector2d(re.NextDouble(10,790),-10);
- }
- else
- {
- if (re.NextInt(1,100)>=50)b=vector2d(-10,re.NextDouble(10,590));else b=vector2d(810,re.NextDouble(10,590));
- }
- for(int i=0;i<200;++i)
- if(!SLL[i].active)
- {
- SLL[i].InitLine(a,b,0.1,SETA(ColorToDWORD(blue),0x80));
- SLL[i].active=true;SLL[i].stp=0;SLL[i].brk=0;SLL[i].EnableColl=false;
- break;
- }
- }
- }
- for(int i=0;i<200;++i)
- if(SLL[i].active)
- {
- SLL[i].Process();
- SLL[i].brk+=hge->Timer_GetDelta();
- if(SLL[i].stp==2)
- if(SLL[i].brk>0.02)
- {
- SLL[i].SetWidth(SLL[i].GetWidth()-0.2);
- if(SLL[i].GetWidth()<1)SLL[i].EnableColl=false;
- if(SLL[i].GetWidth()<0.05)SLL[i].active=false;
- SLL[i].brk=0;
- }
- if(SLL[i].stp==0)
- if(SLL[i].brk>0.02)
- {
- SLL[i].SetWidth(SLL[i].GetWidth()+0.2);
- if(SLL[i].GetWidth()>1)SLL[i].EnableColl=true;
- if(SLL[i].GetWidth()>4)SLL[i].stp=1;
- SLL[i].brk=0;
- }
- if(SLL[i].stp==1)
- if(SLL[i].brk>5){SLL[i].brk=0;SLL[i].stp=2;}
- }
-}
-void Levelm2Part25()
-{
- frameleft=Infinity;Dis8ref=true;tbrk=0;
- DisableAllTower=false;
- if (IfShowTip)
- {
- IfShowTip=false;
- FadeTip=false;
- Current_Position=2;
- ShowTip("Bonus test - Lunatic Lunar!");
- All2pnt();towcnt=0;
- for(int i=0;i<200;++i)if(SLL[i].active)SLL[i].llsrtopnt(10);
- return;
- }
- ++part;tbrk=0;memset(SLL,0,sizeof(SLL));avabrk=1;
-}
-void Levelm2Part26()
-{
- frameleft=Infinity;
- tbrk-=hge->Timer_GetDelta();
- if(tbrk<0)
- {
- tbrk=0.05;
- int cnt=1;
- if(!re.NextInt(0,19))avabrk=avabrk?0:1;
- for(int i=0;i<cnt;++i)
- {
- if(avabrk)
- {
- int cc=assetime/120.0f*18+18;
- vector2d centre(re.NextDouble(380,420),re.NextDouble(280,320));
- double rnd=atan2(playerpos.y-centre.y,playerpos.x-centre.x),spd=assetime/120.0f*4+6;
- if(re.NextInt(0,3))
- rnd+=re.NextDouble(-assetime/120.0f*pi/24,assetime/120.0f*pi/24);
- for(int i=0;i<cc;++i)
- CreateBullet2(centre.x,centre.y,spd,i*2*pi/cc+rnd,false);
- }
- else
- {
- vector2d pos=vector2d(400+re.NextDouble(-20,20),300+re.NextDouble(-20,20));
- double spd=assetime/120.0f*4+6;
- int cc=assetime/120.0f*18+18;
- double rnd=atan2(playerpos.y-pos.y,playerpos.x-pos.x);
- if(re.NextInt(0,3))
- rnd+=re.NextDouble(-assetime/120.0f*pi/24,assetime/120.0f*pi/24);
- for(int i=0;i<cc;++i)
- {
- double dir=i*2*pi/cc+rnd,ran=re.NextDouble(-pi,pi);
- for(int i=0;i<6;++i)
- CreateBullet2(pos.x+6*sin(ran+i*(pi/3)),pos.y+6*cos(ran+i*(pi/3)),spd,dir,false);
- CreateBullet2(pos.x,pos.y,spd,dir,false);
- }
- }
- }
- }
-}