Tag System - Up The Swanie

Blitz3D Forums/Blitz3D Beginners Area/Tag System - Up The Swanie

Any luck, Im going slightly bald as it's driving me crazy. Hehehe.

I'd love very much for this to draw a letter of a bitmap font rather then text.

Const TOKEN_EOL = 0
Const TOKEN_TAG = 1
Const TOKEN_STRING = 2

Const xres=800,yres=600

Graphics xres,yres
SetBuffer BackBuffer()

;-==========================-
;-=[Create Some Font Types]=-
;-==========================-
Const ABFontW=16						;Font Width
Const ABFontH=16						;Font Height
Const ABFontL=96						;Number Of Letters In The Font



Global Bitmap_Font	=LoadAnimImage("media\Font16x16.png"	,ABFontW,ABFontH,0,ABFontL-1)


;-==============-
;-=[Setup Text]=-
;-==============-
Global Article$
Article$ = 		"[Red]Please [Green]Change [Blue]My [Purple]colors[Return]"
Article$ = Article$ + 	"[Normal]And this is default / normal [Bum] text and this should be [Blue]blue Text"

Global i=1
Global push = False
Global pushed$
Global message$
Global messagepointer = 1
Global token$
Global TextX = 0
Global TextY = 0

Global Article_Store=CreateImage(800,600)
;-============================-
;-=[Feed Me Some Texts Bitch]=-
;-============================-
SetBuffer ImageBuffer(Article_Store)
displayText(Article$)
Flip
SetBuffer BackBuffer()

Global Over=False

While Not Over=True
Cls
	
	DrawImage Article_Store,0,0
	
         value=getkey()
	If value<>0 	Then Over=True
	
Flip
Wend







;character input
Function GetCharacter$()


If push = True ;if a character has been pushed onto the buffer, send it first
	DebugLog pushed$
 	push = False
 	Return pushed$
End If

If messagepointer > Len(message$) Then Return "eol"

character$ 	= Mid$(message$,messagepointer,1)
messagepointer 	= messagepointer + 1

Return character$

End Function


Function PushCharacter(character$)
Pushed = character$
Push = True
End Function



Function Lex()

character$ = GetCharacter()

Select character$

Case "["
	
	character$ = GetCharacter()
 	Token = ""
 
		While character$ <> "]" And character$<> "eol"
  			Token 			= Token + character$
  			character$ 		= GetCharacter()
		Wend 
 	
	Return TOKEN_TAG

Case "eol"
 	
	Token$ = ""
	Return TOKEN_EOL

Default
	Token$ = ""
		
		While character$ <> "["And character$<>"eol"
  			Token 			= Token + character$
  			character$ 		= GetCharacter()
		Wend

	PushCharacter(character$)
	Return TOKEN_STRING

End Select
End Function



Function DisplayText(TextString$)

Message$ = TextString$
Repeat
	TokenValue = Lex()
 	DebugLog TokenValue +" " + Token$
 	
	Select TokenValue
 	
		Case TOKEN_EOL
  				Return
 		Case TOKEN_TAG
  				Select (Token$)
  		
		Case "Red" 		
			Color 255,000,000 ;these will be changed to signify character sets
  		
		Case "Green" 	
			; Color 000,255,000
			
  		Case "Blue" 	

			; Color 000,000,255
			
  		Case "White" 	
			; Color 255,255,255
			
  		Case "Purple" 	
			; Color 255,000,255
  		
		Case "Normal" 	
			; Color 212,212,212
		
		Case "Bum" 		
			; Color 111,111,111  		

		
		
		Case "Return"
   				TextX = 0
   				TextY = TextY + 16
  		;Default : RuntimeError "Don't recognize tag " + Token
  	
	End Select

	Default
  	
		

		
		If Character>0 And Character<ABFontL-1

			DrawImage Bitmap_Font,TextX,TextY,Character	 
		
		End If

			TextX = TextX + 8 * Len(Token)
 	



	End Select

Forever
End Function



Thanks immensly!! :)