'* Funktion des BMX: GameGui
'***************************************************************************************************************
'* Mein Spiel: FallOut 1.2
'* Scenario: Endzeit nach den 3 Weltkrieg in den 50er Jahre, wurden alle Bürger in den Vauls gepackt.
'* 		   Nach 450 jahren und Viele Generationen Später, wurdest du in diese Welt des Postnukelearen Senario
'*		   geschmissen um die welt zu erkunden.
'* Copyright: By Marcel Buitink 
'***************************************************************************************************************
Global ButtonList:TList = New TList
Global Button:TButton
Global PicButtonList:TList = New TList
Global PicButton:TPicButton
Global iMouseHitLeft:Int
Global iMouseHitRight:Int

Type TButton
	Field _Mode:Int 
	Field _Caption:String
	Field _X:Int
	Field _Y:Int
	Field _B:Int
	Field _H:Int
	
	Field _BWID:String
	
	'Erstellen eines Buttons
	Function Create(CName:String, x:Int, y:Int, width:Int, height:Int, wid:String)
      	Button:TButton = New TButton
      		Button._Caption = CName
      		Button._x = X
      		Button._y = Y
      		Button._B = Width
      		Button._H = Height
			
      		Button._BWID = wid
     
      	ButtonList.Addlast Button
   	End Function 
	
	'Renderfunktion und anschliesend n ClickedFunktion schreiben
	Function Render()
		'Alle Elemente der Liste Durchgehen und dann nur Rendern.
		For Button:TButton = EachIn ButtonList
      		If Button._Mode = 0 Then
         			'Falls ein Bild1 Vorhanden ist
      		End If
      		
			SetColor 255,255,0
      		DrawRect Button._X , Button._Y , Button._B , Button._H
      		SetColor 255, 255, 255

      		'SetColor ButtonTitelR, ButtonTitelG, ButtonTitelB
      		DrawText Button._Caption, Button._X + (Button._B/2), Button._Y + (Button._H/2)
			
      		If Button._Mode = 0 Then
         			'Falls ein Bild 2 vorhanden ist
      		End If
   		Next
	EndFunction 
	
	Function UnderButton:Int(ButtonWID:String, x:Int, y:Int, w:Int, h:Int)
   		For Button:TButton = EachIn ButtonList
      		If Button._BWID = ButtonWID Then
         			If MouseX() > Button._X And MouseX() < Button._X + Button._B And MouseY() > Button._Y And MouseY() < Button._Y + Button._H Then     
            			Return 1
         			EndIf
      		EndIf
   		Next
   		Return 0
	EndFunction
	
	
	Function Clicked:Int(ButtonWID:String)
		For Button:TButton = EachIn ButtonList
			If Button._BWID = ButtonWID Then
				'Wird ausgeschnitten
				If iMouseHitLeft And MouseX() > Button._X And MouseX() < Button._X + Button._B And MouseY() > Button._Y And MouseY() < Button._Y + Button._H And UnderButton(Button._BWID, Button._X, Button._Y, Button._B, Button._H) = 1 Then
      				If Button._Mode = 1 Then
         					For Button:TButton = EachIn ButtonList
            					Button._Mode = 0
         					Next
        				EndIf

      				If Button._Mode = 0 Then
            				ButtonList.Remove Button
            				ButtonList.AddLast Button
            				Button._Mode = 1
         				EndIf
					Return 1
      			EndIf
			EndIf
		Next
		Return 0
	EndFunction
EndType

Type TPicButton
	Field _Mode:Int 
	Field _Caption:String
	Field _X:Int
	Field _Y:Int
	Field _B:Int
	Field _H:Int
	Field _Pic:TImage
	Field _BWID:String
	
	'Erstellen eines Buttons
	Function Create(mPic:TImage, CName:String, x:Int, y:Int, width:Int, height:Int, wid:String)
      	PicButton:TPicButton = New TPicButton
      		PicButton._Caption = CName
      		PicButton._x = X
      		PicButton._y = Y
      		PicButton._B = Width
      		PicButton._H = Height
			PicButton._Pic = mPic
      		PicButton._BWID = wid
     
      	PicButtonList.Addlast PicButton
   	End Function 
	
	'Renderfunktion und anschliesend n ClickedFunktion schreiben
	Function Render()
		'Alle Elemente der Liste Durchgehen und dann nur Rendern.
		For PicButton:TPicButton = EachIn PicButtonList
      		If PicButton._Mode = 0 Then
         			'Falls ein Bild1 Vorhanden ist
      		End If
      		
			'Bild Zeichen
			DrawImage PicButton._Pic,PicButton._X,PicButton._Y
			'DrawRect PicButton._X , PicButton._Y , PicButton._B , PicButton._H

      		If PicButton._Mode = 0 Then
         			'Falls ein Bild 2 vorhanden ist
      		End If
   		Next
	EndFunction 
	
	Function UnderButton:Int(ButtonWID:String, x:Int, y:Int, w:Int, h:Int)
   		For PicButton:TPicButton = EachIn PicButtonList
      		If PicButton._BWID = ButtonWID Then
         			If MouseX() > PicButton._X And MouseX() < PicButton._X + PicButton._B And MouseY() > PicButton._Y And MouseY() < PicButton._Y + PicButton._H Then     
            			Return 1
         			EndIf
      		EndIf
   		Next
   		Return 0
	EndFunction
	
	
	Function Clicked:Int(ButtonWID:String)
		For PicButton:TPicButton = EachIn PicButtonList
			If PicButton._BWID = ButtonWID Then
				'Wird ausgeschnitten
				If iMouseHitLeft And MouseX() > PicButton._X And MouseX() < PicButton._X + PicButton._B And MouseY() > PicButton._Y And MouseY() < PicButton._Y + PicButton._H And UnderButton(PicButton._BWID, PicButton._X, PicButton._Y, PicButton._B, PicButton._H) = 1 Then
      				If PicButton._Mode = 1 Then
         					For PicButton:TPicButton = EachIn PicButtonList
            					PicButton._Mode = 0
         					Next
        				EndIf

      				If PicButton._Mode = 0 Then
            				PicButtonList.Remove PicButton
            				PicButtonList.AddLast PicButton
            				PicButton._Mode = 1
         				EndIf
					Return 1
      			EndIf
			EndIf
		Next
		Return 0
	EndFunction
EndType
