' Hardwire ' ' Copyright 2005 Ian Cowburn ' ' $Id$ ' Strict Import "types.bmx" Import noddybox.bitmapfont Import noddybox.gfxmenu ' Included binaries ' Incbin "HELP/help.txt" Incbin "HELP/pit.png" Incbin "HELP/piece.png" Incbin "HELP/wire1.png" Incbin "HELP/wire2.png" Incbin "HELP/wire3.png" Incbin "HELP/loop1.png" Incbin "HELP/bomb.png" Incbin "HELP/twister.png" Type THelp Const TOP:Int=50 Const BOTTOM:Int=550 Field list:TList Field pos:Int Field item:TLink Field del:Int Method New() Local str:TStream=ReadStream("incbin::HELP/help.txt") Assert str,"Unable to open help file" list=CreateList() While Not str.Eof() Local line:String=str.ReadLine() If line.length And line[0]=Asc("#") list.AddLast(THelpImage.Create(line[1..])) Else list.AddLast(THelpText.Create(line)) EndIf Wend item=list.LastLink() pos=TOP-Current().Height() End Method Method Draw() Local y:Int=pos Local i:TLink=item While yTOP item=item.PrevLink() If Not item item=list.LastLink() EndIf pos:-Current().Height() Wend ElseIf KeyHit(KEY_ESCAPE) FlushKeys() done=True Else del=0 EndIf Flip Wend SetColor(255,255,255) End Method End Type Type THelpItem Abstract Method Height:Int() Abstract Method Draw(y:Int) Abstract End Type Type THelpText Extends THelpItem Field txt:String Field r:Int Field g:Int Field b:Int Field sc:Int Function Create:THelpItem(txt:String) Local o:THelpText=New THelpText Select txt[0] Case Asc("@") o.sc=2 o.r=255 o.g=255 o.b=0 o.txt=txt[1..] Case Asc("!") o.sc=1 o.r=255 o.g=255 o.b=0 o.txt=txt[1..] Default o.sc=1 o.r=255 o.g=255 o.b=255 o.txt=txt End Select Return THelpItem(o) End Function Method Height:Int() Return GameGFX.large.MaxHeight()*sc End Method Method Draw(y:Int) SetScale(sc,sc) GameGFX.large.Centre(txt,y,r,g,b) SetScale(1,1) End Method End Type Type THelpImage Extends THelpItem Field img:TImage Field x:Int Function Create:THelpItem(url:String) Local o:THelpImage=New THelpImage o.img=LoadImage(url) Assert o,"Failed to load help image " + url o.x=(GraphicsWidth()-ImageWidth(o.img))/2 Return THelpItem(o) End Function Method Height:Int() Return ImageHeight(img) End Method Method Draw(y:Int) SetColor(255,255,255) DrawImage(img,x,y) End Method End Type