diff options
-rwxr-xr-x | CHANGELOG.TXT | 9 | ||||
-rwxr-xr-x | VERSION.TXT | 2 | ||||
-rw-r--r-- | levels.h | 53 | ||||
-rw-r--r-- | main.cpp | 4 | ||||
-rw-r--r-- | towernbullet.h | 91 |
5 files changed, 143 insertions, 16 deletions
diff --git a/CHANGELOG.TXT b/CHANGELOG.TXT index 56b6c9f..b152580 100755 --- a/CHANGELOG.TXT +++ b/CHANGELOG.TXT @@ -1,8 +1,15 @@ =================================================================== Next version: -0.8.x? +?????? +New levels... +Rename function entries for Level -1 +Add missing tips. Pre-Released versions: +0.8.0-0_PR (b74) +New level Achromatopsia. +Rename "Minesweeper"->"Spiky", add noname2pnt. + 0.7.3-0_PR (b73) This is a pre-release version of 0.7.2-2_PR. This version is released to public for level previewing. diff --git a/VERSION.TXT b/VERSION.TXT index b54fdd8..2f082c4 100755 --- a/VERSION.TXT +++ b/VERSION.TXT @@ -1 +1 @@ -0.7.3-0_PR (b73)
\ No newline at end of file +0.8.0-0_PR (b74)
\ No newline at end of file @@ -3057,31 +3057,64 @@ void Level7Part30() } } } -void Level7Part31()//Minesweeper +void Level7Part31()//Spiky { - frameleft=AMinute; + frameleft=AMinute+ThirtySeconds; All2pnt();towcnt=0; Lasercnt=0; ++part;avabrk=1;avacurbrk=0.5; } -void Level7Part32()//Minesweeper-child +void Level7Part32()//Spiky-child { avacurbrk+=hge->Timer_GetDelta(); if (avacurbrk>avabrk) { - avacurbrk=0;avabrk=frameleft/(double)AMinute*0.7+0.3; - for (int i=1;i<=nonamecnt+1;++i) + 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,70,0x8033CCFF); + 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,75,0x8033CCFF); - else noname[i].Init(re.NextDouble(0,800),4,100,150,80,0x8033CCFF); - if (i>nonamecnt)nonamecnt=i;break; + noname[i].Init(re.NextDouble(0,800),4,100,150,70,0x8033CCFF); + else noname[i].Init(re.NextDouble(0,800),4,100,150,75,0x8033CCFF); + break; } } } - for (int i=1;i<=nonamecnt;++i)if (noname[i].Exist())noname[i].Process(); + for (int i=0;i<1000;++i)if (noname[i].Exist())noname[i].Process(); +} +achromaGroup aca,acb; +void Level7Part33()//Achromatopsia1 +{ + frameleft=AMinute;for(int i=0;i<1000;++i)if(noname[i].Exist())noname[i].noname2pnt(); + aca.Init(red,0.2);acb.Init(green,0.2); + ++part;avabrk=2.0f;avacurbrk=0; +} +void Level7Part34()//Achromatopsia1-child +{ + avacurbrk+=hge->Timer_GetDelta(); + if (avacurbrk>avabrk) + { + avacurbrk=0;avabrk=2; + aca.Reverse();acb.Reverse(); + } + aca.Update();acb.Update(); +} +void Level7Part35()//Achromatopsia2 +{ + frameleft=AMinute; + aca.Init(red,1);acb.Init(green,1); + ++part;avabrk=1.5f;avacurbrk=0; +} +void Level7Part36()//Achromatopsia2-child +{ + avacurbrk+=hge->Timer_GetDelta(); + if (avacurbrk>avabrk) + { + avacurbrk=0;avabrk=2; + aca.Reverse();acb.Reverse(); + } + aca.Update();acb.Update(); } @@ -452,6 +452,10 @@ void CallLevels() if (level==7&&part==30)Level7Part30(); if (level==7&&part==31)Level7Part31(); if (level==7&&part==32)Level7Part32(); + if (level==7&&part==33)Level7Part33(); + if (level==7&&part==34)Level7Part34(); + if (level==7&&part==35)Level7Part35(); + if (level==7&&part==36)Level7Part36(); if (level==1&&part==5)level=2,part=0; if (level==2&&part==10)level=3,part=0; if (level==3&&part==7)level=4,part=0; diff --git a/towernbullet.h b/towernbullet.h index fce9fdd..a9bae85 100644 --- a/towernbullet.h +++ b/towernbullet.h @@ -1529,12 +1529,35 @@ public: done=false; PMod=pmd; r1lim=_r1lim;r2lim=_r2lim;boomlim=_boomlim; - if (re.NextInt(0,99)>boomlim) + if (re.NextInt(0,100)>boomlim) pos=re.NextInt(0,600); else pos=999; untitledlas.SetTexture(SprSheet,0,264,248,8); } + void noname2pnt() + { + if(!las) + CreateBullet255(untitledbul.bulletpos.x,untitledbul.bulletpos.y,10); + else + { + for (int i=0;i<60;++i) + { + double trad=(i/60.0f)*pi*2; + vector2d a; + if (!(i%PMod)) + { + a.x=cos(trad)*range2;a.y=sin(trad)*range2; + } + else + { + a.x=cos(trad)*range1;a.y=sin(trad)*range1; + } + a=a+untitledbul.bulletpos; + CreateBullet255(a.x,a.y,10); + } + } + } void Process() { if (!las) @@ -1569,7 +1592,7 @@ public: b.x=cos(trad)*(range1-10);b.y=sin(trad)*(range1-10); } for (int i=60;i<MaxRes;++i)untitledlas.InsPoint(a,b,color); - } + }else if (las) { untitledlas.RenCtr=vector2d(x+7.2,y+7.2); @@ -1620,10 +1643,10 @@ public: } } }noname[1000]; -int nonamecnt; //"CTarg" -struct SimpleBullet +class SimpleBullet { +public: TColors aC,aC2; vector2d bulletpos; int scollable,lastcoll; @@ -2360,3 +2383,63 @@ public: } } }; +class achromaGroup +{ +private: + class achromaBullet:private SimpleBullet + { + private: + bool active; + double spd,acc,lim; + public: + bool isActive(){return active;} + void achromaInit(vector2d pos,TColors initcol,double _lim) + { + bulletpos=pos;spd=0;acc=0.0005;lim=_lim;rot=0; + lastcoll=0;aC=initcol;aC2=COLOR_COUNT; + active=true; + } + void Reverse() + { + spd=0; + if(aC==green)aC=red; + else if(aC==red)aC=green; + } + void achromaUpdate() + { + if(aC==red)lastcoll=1;//ignore coll for red. + bulletpos.y+=spd*(1000.0f/hge->Timer_GetFPS()); + if(spd+acc*(1000.0f/hge->Timer_GetFPS())<lim)spd+=acc*(1000.0f/hge->Timer_GetFPS()); + if(bulletpos.y>610)active=false; + Update_SimpBul(); + } + }bullets[1000]; +public: + double crbrk,llim;TColors col; + void Init(TColors initcol,double _llim) + { + col=initcol;llim=_llim; + crbrk=re.NextDouble(0,frameleft/(double)(AMinute+ThirtySeconds))*(part==36?0.07:0.02)+0.03; + } + void Reverse() + { + if(col==red)col=green; + else if(col==green)col=red; + for(int i=0;i<500;++i)if(bullets[i].isActive())bullets[i].Reverse(); + } + void Update() + { + crbrk-=hge->Timer_GetDelta(); + if(crbrk<=0) + { + crbrk=re.NextDouble(0,frameleft/(double)AMinute)*(part==36?0.07:0.02)+0.03; + for(int i=0;i<500;++i) + if(!bullets[i].isActive()) + { + bullets[i].achromaInit(vector2d(re.NextDouble(10,790),10),col,llim); + break; + } + } + for(int i=0;i<500;++i)if(bullets[i].isActive())bullets[i].achromaUpdate(); + } +}; |