From d8c84876b20f8fd784171e9bb525af38a25380f1 Mon Sep 17 00:00:00 2001 From: "chirs241097@gmail.com" Date: Wed, 19 Mar 2014 13:42:25 +0000 Subject: Support command line options, change player settings, update wiki page. --- CHANGELOG.TXT | 2 ++ global.h | 9 +++++ main.cpp | 109 +++++++++++++++++++++++++++++++++++++++++++++++++++++---- menus.h | 3 ++ towernbullet.h | 2 +- 5 files changed, 118 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.TXT b/CHANGELOG.TXT index 2d2b426..75ab8cb 100755 --- a/CHANGELOG.TXT +++ b/CHANGELOG.TXT @@ -13,6 +13,8 @@ New level "Gravity vortex". New level "Double reflective". Make point bullet additive blending. Allow bullets to pause before being accelerated. +Add command line argument support. Use "--help" for usage. +Modify player speed settings. 0.8.0-1_PR (b75) New level Supernova. diff --git a/global.h b/global.h index 8515de7..9c8c1ba 100644 --- a/global.h +++ b/global.h @@ -6,6 +6,7 @@ #include #define MaxRes 80 #define Resd 20.0f +#define BLRVERSION "0.8.1-0_PR (b76)" HGE *hge=0; HEFFECT snd; hgeQuad quad; @@ -279,6 +280,14 @@ bool credstop,creddone; bool tfs; int fpslvl,clrmode; const vector2d splitData[4]={vector2d(0,0),vector2d(400,0),vector2d(0,300),vector2d(400,300)}; +//options from command line arguments +bool fNoSound, +#ifdef WIN32 +noHideConsole, +#endif +fFristStartUp,fFast; +int startLvl,startPrt,fFullScreen; +char alterLog[64]; //static const char* GLOBAL_H_FN="global.h"; void Throw(char *Filename,char *Info) diff --git a/main.cpp b/main.cpp index e6fdfe6..c6db4fe 100644 --- a/main.cpp +++ b/main.cpp @@ -40,6 +40,7 @@ #include #include #include +#include #include #ifdef WIN32 #include @@ -744,15 +745,87 @@ bool FrameFunc() hge->Gfx_EndScene(); return false; } +void printHelp(char *exec,const char* str="") +{ + printf("Usage %s [options]...\n",exec); + printf("To run the game normally, just start without arguments.\n"); + printf("Options:\n"); + printf("--help Print this help and exit.\n"); + printf("--version Print version and exit.\n"); + printf("--start=x,y Start the game directly from level x part y. The part must be valid.\n"); + printf("--nosound Forcibly use no sound.\n"); + printf("--fullscreen=1/0 Forcibly use fullscreen/windowed. This will override your configuration.\n"); + printf("--firststartup Forcibly run first start up. This will reset the score file.\n"); + printf("--fast Fast mode. All levels are two times shorter.\n"); + printf("--logfile=... Use an alternate log file name instead of the default \"BLRLOG.txt\".\n"); #ifdef WIN32 -int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int) + printf("--nohideconsole Do not hide console (Windows version only).\n"); #endif -#ifndef WIN32 -int main() + if(strcmp(str,""))printf("%s\n",str); + exit(0); +} +void parseArgs(int argc,char *argv[]) +{ + for(int i=1;iSystem_SetState(HGE_LOGFILE, alterLog); + else hge->System_SetState(HGE_LOGFILE, "BLRLOG.txt"); hge->System_Log("%s: Bullet Lab Remix Log File",MAIN_SRC_FN); #ifdef WIN32 @@ -771,6 +844,7 @@ int main() hge->System_SetState(HGE_SCREENWIDTH, 800); hge->System_SetState(HGE_SCREENHEIGHT, 600); hge->System_SetState(HGE_SCREENBPP, 32); + if(fNoSound)hge->System_SetState(HGE_USESOUND,false); #ifdef WIN32 hge->System_SetState(HGE_ICON, MAKEINTRESOURCE(1)); #endif @@ -780,6 +854,7 @@ int main() hge->System_Log("%s: Config file not found. Calling first startup.",MAIN_SRC_FN); firststartup(); } + if(fFristStartUp)firststartup(); hge->System_Log("%s: Loading config file",MAIN_SRC_FN); freopen("blr.cfg","r",stdin); char tch=getchar(); @@ -802,10 +877,13 @@ int main() hge->System_SetState(HGE_FPS,61); fpslvl=1; } + if(fFast)TenSeconds/=2,TwentySeconds/=2,ThirtySeconds/=2,AMinute/=2; tch=getchar();//FULLSCRREEN tfs=false; if (tch==1) hge->System_SetState(HGE_WINDOWED, false),tfs=true; + if(fFullScreen==2)hge->System_SetState(HGE_WINDOWED, false),tfs=true; + if(fFullScreen==1)hge->System_SetState(HGE_WINDOWED, true),tfs=false; tch=getchar();//LockFPS if (tch==1&&!LOWFPS) { @@ -815,7 +893,7 @@ int main() tch=getchar();//Key binding if (tch==1)diffkey=true; plrspd=tch=getchar(); - playerfulspd=(tch)*0.05f; + playerfulspd=(tch)*0.08f; playerspeed=playerfulspd; plrslospd=tch=getchar(); playerfulslospd=(tch)*0.0125f; @@ -894,8 +972,27 @@ int main() gui->SetCursor(spr); gui->SetFocus(1); gui->Enter(); - if (LOWFPS) - hge->System_Log("%s: Low FPS Mode Enabled.\n",MAIN_SRC_FN); + if(LOWFPS)hge->System_Log("%s: Low FPS Mode Enabled.",MAIN_SRC_FN); + if(fNoSound)hge->System_Log("%s: Sound is disabled.",MAIN_SRC_FN); + if(startLvl) + { + hge->System_Log("%s: Starting from Level%dPart%d",MAIN_SRC_FN,startLvl,startPrt); + gui->Leave(); + playerpos.x=400,playerpos.y=400,playerrot=0; + frameleft=ThirtySeconds;infofade=0xFF;Dis8ref=t8special=false; + level=startLvl,part=startPrt;frms=0,averfps=0.0;bsscale=1; + towcnt=bulcnt=0;whrcnt=12;skyactive=false;PlayerSplit=false; + score=0;Mult_Init();//Music_Init("./Resources/Music/CanonTechno.ogg"); + lpst=4625568;lped=9234584;//Music_Play(); + coll=semicoll=clrusg=0;playerLockX=playerLockY=false; + Lock.Init(2);IfShowTip=true;lsc=0; + clrrad=pi/2;clrrange=0;re.SetSeed(time(NULL)); + memset(tower,0,sizeof(tower)); + memset(bullet,0,sizeof(bullet)); + Complete=false;Current_Position=1; + IfCallLevel=true; + mode=3; + } hge->System_Start(); delete gui;delete titlespr; delete fnt;delete playerspr; diff --git a/menus.h b/menus.h index 8fca040..97d4a2d 100644 --- a/menus.h +++ b/menus.h @@ -777,6 +777,7 @@ void OptionsGUI_FrameFnk() TwentySeconds=1200; ThirtySeconds=1800; AMinute=3600; + if(fFast)TenSeconds/=2,TwentySeconds/=2,ThirtySeconds/=2,AMinute/=2; break; case 1: fpslvl=2;LOWFPS=false; @@ -785,6 +786,7 @@ void OptionsGUI_FrameFnk() TwentySeconds=20000; ThirtySeconds=30000; AMinute=60000; + if(fFast)TenSeconds/=2,TwentySeconds/=2,ThirtySeconds/=2,AMinute/=2; break; case 2: fpslvl=0;LOWFPS=false; @@ -793,6 +795,7 @@ void OptionsGUI_FrameFnk() TwentySeconds=20000; ThirtySeconds=30000; AMinute=60000; + if(fFast)TenSeconds/=2,TwentySeconds/=2,ThirtySeconds/=2,AMinute/=2; break; } switch (fpslvl) diff --git a/towernbullet.h b/towernbullet.h index ea51289..59613f2 100644 --- a/towernbullet.h +++ b/towernbullet.h @@ -977,7 +977,7 @@ void ProcessBullet255(int i) } else { - bulletspr[grey]->SetColor(0x10FFFFFF); + bulletspr[grey]->SetColor(0x20FFFFFF); bulletspr[grey]->SetBlendMode(BLEND_ALPHAADD); bulletspr[grey]->RenderEx(bullet[i].bulletpos.x+6,bullet[i].bulletpos.y+6,0,0.5,0); bulletspr[grey]->SetBlendMode(BLEND_ALPHABLEND); -- cgit v1.2.3