' Vectoroids ' ' Copyright 2005 Ian Cowburn ' ' $Id$ ' Strict Import noddybox.vector Import noddybox.bitmapfont Import noddybox.keysyms Import "types.bmx" Import "game.bmx" Import "sounds.bmx" Import "hiscore.bmx" ' Initialise ' SeedRnd(MilliSecs()) ?Win32 If Switch("--directx") SetGraphicsDriver D3D7Max2DDriver() Else SetGraphicsDriver GLMax2DDriver() EndIf ? Graphics 800,600,32,60 HideMouse SetBlend(ALPHABLEND) SetAlpha(1.0) ' Globals ' Lookup.Init() GameGFX.Init() TParticleMachine.Init() GameConfig.Load() Sounds.Init() Global quit:Int=False Global hiscore:THiscore=THiscore.Load() ' Main code ' Menu() While Not quit Local game:TGame=New TGame While game.Play() Wend Sounds.Clear() TParticleMachine.Clear() hiscore.Check(game.score) Menu() Wend EndGraphics End ' =================================== ' Argument Routines ' =================================== ' Function Switch:Int(s:String) For Local a:String=EachIn AppArgs If a=s Return True EndIf Next Return False End Function ' =================================== ' Menu Routines ' =================================== ' Function Menu() FlushKeys() Local done:Int=False Local defkey:Int=0 Local obj:TVectorGfxObject Select Rand(1,2) Case 1 obj=GameGFX.large.Clone() Case 2 obj=GameGFX.ship.Clone() End Select obj.scale=5 obj.x=GraphicsWidth()/2 obj.y=GraphicsHeight()/2 While Not done If KeyHit(KEY_ESCAPE) done=True quit=True EndIf Cls obj.ang=(obj.ang+1) Mod 3600 If defkey=0 SetAlpha(0.5) Else SetAlpha(0.2) EndIf SetColor(255,255,255) obj.Draw() SetAlpha(1) If defkey>0 If defkey=7 GameGFX.font.Centre("PRESS A KEY TO GO BACK TO THE MENU",120) Else GameGFX.font.Centre("DEFINE KEYS",120) EndIf GameGFX.font.DrawColoured("left",250,150,255,255*(defkey=1),0) GameGFX.font.DrawColoured("right",250,170,255,255*(defkey=2),0) GameGFX.font.DrawColoured("thrust",250,190,255,255*(defkey=3),0) GameGFX.font.DrawColoured("fire",250,210,255,255*(defkey=4),0) GameGFX.font.DrawColoured("hyperspace",250,230,255,255*(defkey=5),0) GameGFX.font.DrawColoured("pause",250,250,255,255*(defkey=6),0) GameGFX.font.DrawColoured(KeySym(GameConfig.kleft).ToLower(),500,150,255,255*(defkey=1),0) GameGFX.font.DrawColoured(KeySym(GameConfig.kright).ToLower(),500,170,255,255*(defkey=2),0) GameGFX.font.DrawColoured(KeySym(GameConfig.kthrust).ToLower(),500,190,255,255*(defkey=3),0) GameGFX.font.DrawColoured(KeySym(GameConfig.kfire).ToLower(),500,210,255,255*(defkey=4),0) GameGFX.font.DrawColoured(KeySym(GameConfig.khyper).ToLower(),500,230,255,255*(defkey=5),0) GameGFX.font.DrawColoured(KeySym(GameConfig.kpause).ToLower(),500,250,255,255*(defkey=6),0) Local k:Int=0 For Local f:Int=1 To 255 If KeyHit(f) k=f Continue EndIf Next If k<>0 Select defkey Case 1 GameConfig.kleft=k Case 2 GameConfig.kright=k Case 3 GameConfig.kthrust=k Case 4 GameConfig.kfire=k Case 5 GameConfig.khyper=k Case 6 GameConfig.kpause=k End Select defkey:+1 If defkey=8 GameConfig.Save() defkey=0 EndIf EndIf Else GameGFX.font.CentreColoured("vectoroids",0,255,255,0) GameGFX.font.CentreColoured("COPYRIGHT | 2005 IAN C",20,255,0,0) GameGFX.font.Centre("press space to play",150) GameGFX.font.Centre("press r to redefine keys",190) GameGFX.font.Centre("EXTRA LIFE AT 10000 PTS THEN EVERY 50000 PTS",520) GameGFX.font.Centre("ESCAPE TO QUIT",560) GameGFX.font.CentreColoured("BASED ON ASTEROIDS | 1979 ~~ ATARI INC.",580,255,0,0) hiscore.Display(400) If KeyHit(KEY_ESCAPE) done=True quit=True EndIf If KeyHit(KEY_R) FlushKeys() defkey=1 EndIf If KeyHit(KEY_SPACE) FlushKeys() done=True EndIf EndIf Flip Wend End Function