summaryrefslogtreecommitdiff
path: root/levels.h
diff options
context:
space:
mode:
authorGravatar chirs241097@gmail.com <chirs241097@gmail.com@c17bf020-1265-9734-9302-a83f62007ddb> 2014-03-11 09:44:43 +0000
committerGravatar chirs241097@gmail.com <chirs241097@gmail.com@c17bf020-1265-9734-9302-a83f62007ddb> 2014-03-11 09:44:43 +0000
commitf4832349efdf06d8a1a410c636045f505efb52f1 (patch)
treef2958f0e6194a46aa890cfe03a09c737a8afdc20 /levels.h
parent285f4f3379a68db34eec86cdc5c8d6f3c5597f5e (diff)
downloadbullet-lab-remix-f4832349efdf06d8a1a410c636045f505efb52f1.tar.xz
Complete and fix Supernova, add several interfaces.
Diffstat (limited to 'levels.h')
-rw-r--r--levels.h54
1 files changed, 43 insertions, 11 deletions
diff --git a/levels.h b/levels.h
index cb98b8e..ad4ec17 100644
--- a/levels.h
+++ b/levels.h
@@ -3191,28 +3191,59 @@ void Levelm1Part12()
vector2d snextarg;
int snexcnt,snexstep;
Target snexTarg;
-void Levelm1Part13()//Additive blending
+void Levelm1Part13()//"Supernova"
{
- frameleft=AMinute*2;
+ frameleft=AMinute*2;PlayerSplit=false;
++bgbrk;if (LOWFPS)bgbrk+=16;
if (bgbrk<30)return;
- bgbrk=0;
+ bgbrk=0;towcnt=0;
if (!LOWFPS)
DBGColor=ColorTransfer(DBGColor,0xFF000000);
else
for (int i=1;i<=17;++i)DBGColor=ColorTransfer(DBGColor,0xFF000000);
if (DBGColor==0xFF000000)
{
- frameleft=AMinute,++part;
- bgdbbrk=re.NextInt(5,20),bgbrk=0;
- avabrk=2.0f;avacurbrk=0;snexTarg.Init(0.001,vector2d(400,300));
+ snexTarg.Init(0.001,vector2d(400,300));
+ ++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((vector2d(400,300)-playerpos)^vector2d(1,0))+(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((vector2d(400,300)-playerpos)^vector2d(1,0))+i*(2*pi/cnt));
+ bullet[pnt].alterColor=col;bullet[pnt].addblend=true;
+ }
+}
void Levelm1Part14()
{
snexTarg.TargRender();
avacurbrk+=hge->Timer_GetDelta();
+ tbrk+=hge->Timer_GetDelta();
+ if((AMinute*2-frameleft)<TenSeconds)
+ {
+ if(tbrk>0.016)
+ {
+ tbrk=0;
+ snCircCreator(vector2d(400,300),60,(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:
@@ -3223,9 +3254,9 @@ void Levelm1Part14()
if(GetDist(snexTarg.targpos,snextarg)<0.01)
{
snexstep=2;
- avabrk=0;
- avacurbrk=0.05;
- snexcnt=100-(frameleft/(double)(AMinute*2))*50;
+ avabrk=(frameleft/(double)(AMinute*2))*0.01666+0.01667;
+ avacurbrk=0;
+ snexcnt=40-(frameleft/(double)(AMinute*2))*20;
}
break;
case 2:
@@ -3233,10 +3264,11 @@ void Levelm1Part14()
{
if(--snexcnt>0)
{
- avabrk=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=2,avacurbrk=0;
+ else snexstep=0,avabrk=(frameleft/(double)(AMinute*2))*1+1.5f,avacurbrk=0;
}
break;
}