From 8dbb5e4ab32cc2e0d105f51fde19dedb5b2bb2bc Mon Sep 17 00:00:00 2001 From: Ian C Date: Tue, 22 Nov 2005 00:46:56 +0000 Subject: Initial import --- types.bmx | 295 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 295 insertions(+) create mode 100644 types.bmx (limited to 'types.bmx') diff --git a/types.bmx b/types.bmx new file mode 100644 index 0000000..62d08dd --- /dev/null +++ b/types.bmx @@ -0,0 +1,295 @@ +' Hardwire +' +' Copyright 2005 Ian Cowburn +' +' $Id$ +' +Strict +Import noddybox.bitmapfont +Import noddybox.gfxmenu + + +' Included binaries +' +Incbin "GFX/font.bmf" +Incbin "GFX/small.bmf" +Incbin "GFX/large.bmf" +Incbin "GFX/pointer.png" +Incbin "GFX/play_button.png" +Incbin "GFX/quit_button.png" +Incbin "GFX/scores_button.png" +Incbin "GFX/keys_button.png" +Incbin "GFX/left_button.png" +Incbin "GFX/right_button.png" +Incbin "GFX/copper.png" +Incbin "GFX/copperslice.png" +Incbin "GFX/dust.png" +Incbin "GFX/title.png" +Incbin "GFX/cursor.png" + +Incbin "TILES/tile.png" +Incbin "TILES/pit_top.png" +Incbin "TILES/pit_bottomleft.png" +Incbin "TILES/pit_bottomright.png" +Incbin "TILES/pit_bottom.png" +Incbin "TILES/pit_side.png" +Incbin "TILES/trode_left.png" +Incbin "TILES/trode_right.png" +Incbin "TILES/trode_bottom.png" +Incbin "TILES/top_bottom.png" +Incbin "TILES/left_right.png" +Incbin "TILES/cross.png" +Incbin "TILES/top_left.png" +Incbin "TILES/top_right.png" +Incbin "TILES/bottom_left.png" +Incbin "TILES/bottom_right.png" + +Type Lookup + Global si:Double[] + Global co:Double[] + + Function Init() + si=New Double[360] + co=New Double[360] + + For Local a:Int=0 To 359 + si[a]=Sin(a) + co[a]=Cos(a) + Next + End Function +End Type + + +Type GameGFX + Global font:TBitmapFont + Global small:TBitmapFont + Global large:TBitmapFont + + Global title:TImage + + Global pointer:TImage + Global copper:TImage + Global copperslice:TImage + Global dust:TImage + + Global play_button:TImage + Global quit_button:TImage + Global left_button:TImage + Global right_button:TImage + Global scores_button:TImage + Global keys_button:TImage + + Global cursor:TImage + Global tile:TImage + + Global pit_top:TImage + Global pit_bottomleft:TImage + Global pit_bottomright:TImage + Global pit_bottom:TImage + Global pit_side:TImage + + Global trode_left:TImage + Global trode_right:TImage + Global trode_bottom:TImage + + Global top_bottom:Timage + Global left_right:Timage + Global cross:Timage + Global top_left:Timage + Global top_right:Timage + Global bottom_left:Timage + Global bottom_right:Timage + + Function Init() + font=TBitmapFont.Load("incbin::GFX/font.bmf",0) + small=TBitmapFont.Load("incbin::GFX/small.bmf",0) + large=TBitmapFont.Load("incbin::GFX/large.bmf",0) + + title=LoadImage("incbin::GFX/title.png",0) + + pointer=LoadImage("incbin::GFX/pointer.png",0) + + copper=LoadImage("incbin::GFX/copper.png",0) + copperslice=LoadImage("incbin::GFX/copperslice.png",0) + + dust=LoadImage("incbin::GFX/dust.png",FILTEREDIMAGE) + MidHandleImage(dust) + + play_button=LoadImage("incbin::GFX/play_button.png",0) + quit_button=LoadImage("incbin::GFX/quit_button.png",0) + scores_button=LoadImage("incbin::GFX/scores_button.png",0) + keys_button=LoadImage("incbin::GFX/keys_button.png",0) + left_button=LoadImage("incbin::GFX/left_button.png",0) + right_button=LoadImage("incbin::GFX/right_button.png",0) + + tile=LoadImage("incbin::TILES/tile.png",0) + cursor=LoadImage("incbin::GFX/cursor.png",0) + + pit_top=LoadImage("incbin::TILES/pit_top.png",0) + pit_bottom=LoadImage("incbin::TILES/pit_bottom.png",0) + pit_bottomleft=LoadImage("incbin::TILES/pit_bottomleft.png",0) + pit_bottomright=LoadImage("incbin::TILES/pit_bottomright.png",0) + pit_side=LoadImage("incbin::TILES/pit_side.png",0) + + trode_left=LoadImage("incbin::TILES/trode_left.png",0) + trode_right=LoadImage("incbin::TILES/trode_right.png",0) + trode_bottom=LoadImage("incbin::TILES/trode_bottom.png",0) + + top_bottom=LoadImage("incbin::TILES/top_bottom.png",0) + left_right=LoadImage("incbin::TILES/left_right.png",0) + cross=LoadImage("incbin::TILES/cross.png",0) + top_left=LoadImage("incbin::TILES/top_left.png",0) + top_right=LoadImage("incbin::TILES/top_right.png",0) + bottom_left=LoadImage("incbin::TILES/bottom_left.png",0) + bottom_right=LoadImage("incbin::TILES/bottom_right.png",0) + End Function +End Type + +Type GameConfig + Global kleft:Int + Global kright:Int + Global kup:Int + Global kdown:Int + Global krot:Int + Global kpause:Int + Global start_level:Int + + Function Load() + Local s:TStream=ReadStream("hardwire.config") + + If s=Null + kleft=KEY_LEFT + kright=KEY_RIGHT + kup=KEY_UP + kdown=KEY_DOWN + krot=KEY_SPACE + kpause=KEY_P + start_level=1 + Return + EndIf + + s=LittleEndianStream(s) + + kleft=s.ReadInt() + kright=s.ReadInt() + kup=s.ReadInt() + kdown=s.ReadInt() + krot=s.ReadInt() + kpause=s.ReadInt() + start_level=s.ReadInt() + + s.Close() + End Function + + Function Save() + Local s:TStream=WriteStream("hardwire.config") + + If s=Null + Return + EndIf + + s=LittleEndianStream(s) + + s.WriteInt(kleft) + s.WriteInt(kright) + s.WriteInt(kup) + s.WriteInt(kdown) + s.WriteInt(krot) + s.WriteInt(kpause) + s.WriteInt(start_level) + + s.Close() + End Function +EndType + +Type TEasyLink + Field l:TLink + + Function Create:TEasyLink(l:TList) + Local o:TEasyLink=New TEasyLink + o.l=l.FirstLink() + Return o + End Function + + Method Value:Object() + If l + Return l.Value() + Else + Return Null + EndIf + End Method + + Method MoveNext() + If l + l=l.NextLink() + EndIf + End Method + + Method Remove() + Local ol:TLink=l + MoveNext() + ol.Remove() + End Method +End Type + + +Type TMenuBdrop Extends TGfxMenuBackdrop + Const NUM:Int=2 + Const SIZE:Double=50.0 + Const OFFSET:Double=500.0 + Field a:Int[NUM] + Field msg:String + Field msgp:Int + Field msgx:Int + Field msgy:Int + + Method New() + For Local f:Int=0 Until NUM + a[f]=360/NUM*f + Next + + msg=" " + msg:+"Welcome to Hardwire. The object of the game is to connect the electrodes around the side of the pit using " + msg:+"the wires embedded in the blocks. Once a circuit is completed those blocks are removed. Once in a while new blocks will fall from the sky. " + msg:+"If you let the pit overflow the game is over. That's all there is to it... " + msg:+"Hardwire was written using BlitzMax -- http://www.blitzbasic.com/ -- and a variety of tools available at " + msg:+"http://www.noddybox.demon.co.uk/ Please feel free to forward this game on to whoever you despise enough " + msg:+"to inflict this monstrosity upon. Enjoy." + + msgx=0 + msgp=0 + msgy=OFFSET + End Method + + Method Create:TGfxMenuBackdrop() + Return Self + End Method + + Method Update() + For Local f:Int=0 Until NUM + a[f]=(a[f]+2) Mod 360 + + If a[f]<=180 + Local c:Int=128-Abs(64*Lookup.si[a[f]]) + SetColor(c,c,c) + DrawImage(GameGFX.copper,0,OFFSET+SIZE*Lookup.co[a[f]]) + EndIf + Next + + GameGFX.large.Draw(msg[..80],msgx,msgy) + msgx:-2 + If msgx<-GameGFX.large.TextWidth(msg[0..1]) + msgx:+GameGFX.large.TextWidth(msg[0..1]) + msg=msg[1..]+msg[0..1] + EndIf + + For Local f:Int=0 Until NUM + If a[f]>180 + Local c:Int=128+Abs(64*Lookup.si[a[f]]) + SetColor(c,c,c) + DrawImage(GameGFX.copper,0,OFFSET+SIZE*Lookup.co[a[f]]) + EndIf + Next + SetColor(255,255,255) + End Method +End Type -- cgit v1.2.3