Przeglądaj źródła

Added another gui example.

Brucey 5 lat temu
rodzic
commit
c35829a4f3
1 zmienionych plików z 233 dodań i 0 usunięć
  1. 233 0
      examples/gui/controls_test_suite.bmx

+ 233 - 0
examples/gui/controls_test_suite.bmx

@@ -0,0 +1,233 @@
+SuperStrict
+
+Framework Ray.GUI
+Import Text.Format
+Import BRL.FileSystem
+
+
+Local formatter:TFormatter = TFormatter.Create("%2.2f")
+
+' Initialization
+'---------------------------------------------------------------------------------------
+Local screenWidth:Int = 690
+Local screenHeight:Int = 560
+
+InitWindow(screenWidth, screenHeight, "raygui - controls test suite")
+SetExitKey(0)
+
+' GUI controls initialization
+'----------------------------------------------------------------------------------
+Local dropdownBox000Active:Int = 0
+Local dropDown000EditMode:Int = False
+
+Local dropdownBox001Active:Int = 0
+Local dropDown001EditMode:Int = False    
+
+Local spinner001Value:Int = 0
+Local spinnerEditMode:Int = False
+
+Local valueBox002Value:Int = 0
+Local valueBoxEditMode:Int = False
+
+Local textBoxText:String = "Text box"
+Local textBoxEditMode:Int = False
+
+Local listViewScrollIndex:Int = 0
+Local listViewActive:Int = -1
+
+Local listViewExScrollIndex:Int = 0
+Local listViewExActive:Int = 2
+Local listViewExFocus:Int = -1
+Local listViewExList:String[] = ["This", "is", "a", "list view", "with", "disable", "elements", "amazing!"]
+
+Local multiTextBoxText:String = "Multi text box"    
+Local multiTextBoxEditMode:Int = False
+Local colorPickerValue:RColor = RED
+
+Local SliderValue:Int = 50
+Local sliderBarValue:Int = 60
+Local progressValue:Float = 0.4
+
+Local forceSquaredChecked:Int = False
+
+Local alphaValue:Float = 0.5
+
+Local comboBoxActive:Int = 1
+
+Local toggleGroupActive:Int = 0
+
+Local viewScroll:RVector2
+'----------------------------------------------------------------------------------
+
+' Custom GUI font loading
+'Font font = LoadFontEx("fonts/rainyhearts16.ttf", 12, 0, 0)
+'GuiSetFont(font)
+
+Local exitWindow:Int = False
+Local showMessageBox:Int = False
+
+Local textInput:String
+Local showTextInputBox:Int = False
+
+Local textInputFileName:String
+
+SetTargetFPS(60)
+'--------------------------------------------------------------------------------------
+
+' Main game loop
+While Not exitWindow    ' Detect window close button or ESC key
+	' Update
+	'----------------------------------------------------------------------------------
+	exitWindow = WindowShouldClose()
+	
+	If IsKeyPressed(KEY_ESCAPE) Then
+		showMessageBox = Not showMessageBox
+	End If
+	
+	If IsKeyDown(KEY_LEFT_CONTROL) And IsKeyPressed(KEY_S) Then
+		showTextInputBox = True
+	End If
+	
+	If IsFileDropped() Then
+		Local droppedFiles:String[] = GetDroppedFiles()
+		
+		If droppedFiles.length And ExtractExt(droppedFiles[0]) = "rgs" Then
+			GuiLoadStyle(droppedFiles[0])
+		End If
+	End If
+	'----------------------------------------------------------------------------------
+
+	' Draw
+	'----------------------------------------------------------------------------------
+	BeginDrawing()
+
+		ClearBackground(GetColor(GuiGetStyle(GUI_DEFAULT, BACKGROUND_COLOR)))
+
+		' raygui: controls drawing
+		'----------------------------------------------------------------------------------
+		If dropDown000EditMode Or dropDown001EditMode Then
+			GuiLock()
+		End If
+		'GuiDisable()
+		
+		' First GUI column
+		'GuiSetStyle(CHECKBOX, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_LEFT)
+		forceSquaredChecked = GuiCheckBox(New RRectangle(25, 108, 15, 15), "FORCE CHECK!", forceSquaredChecked)
+		
+		GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_CENTER)
+		'GuiSetStyle(VALUEBOX, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_LEFT)
+		If GuiSpinner(New RRectangle(25, 135, 125, 30), Null, spinner001Value, 0, 100, spinnerEditMode) Then
+			spinnerEditMode = Not spinnerEditMode
+		End If
+		If GuiValueBox(New RRectangle(25, 175, 125, 30), Null, valueBox002Value, 0, 100, valueBoxEditMode) Then
+			valueBoxEditMode = Not valueBoxEditMode
+		End If
+		GuiSetStyle(TEXTBOX, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_LEFT)
+		If GuiTextBox(New RRectangle(25, 215, 125, 30), textBoxText, 64, textBoxEditMode) Then
+			textBoxEditMode = Not textBoxEditMode
+		End If
+		
+		GuiSetStyle(BUTTON, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_CENTER)
+		
+		If GuiButton(New RRectangle(25, 255, 125, 30), GuiIconText(RICON_FILE_SAVE, "Save File")) Then
+			showTextInputBox = True
+		End If
+		
+		GuiGroupBox(New RRectangle(25, 310, 125, 150), "STATES")
+		GuiLock()
+		GuiSetState(GUI_STATE_NORMAL)
+		If GuiButton(New RRectangle(30, 320, 115, 30), "NORMAL") Then
+			' ...
+		End If
+		
+		GuiSetState(GUI_STATE_FOCUSED)
+		If GuiButton(New RRectangle(30, 355, 115, 30), "FOCUSED") Then
+			' ...
+		End If
+		
+		GuiSetState(GUI_STATE_PRESSED)
+		If GuiButton(New RRectangle(30, 390, 115, 30), "#15#PRESSED") Then
+			' ...
+		End If
+		
+		GuiSetState(GUI_STATE_DISABLED)
+		If GuiButton(New RRectangle(30, 425, 115, 30), "DISABLED") Then
+			' ...
+		End If
+		GuiSetState(GUI_STATE_NORMAL)
+		GuiUnlock()
+		
+		comboBoxActive = GuiComboBox(New RRectangle(25, 470, 125, 30), "ONE;TWO;THREE;FOUR;", comboBoxActive)
+
+		' NOTE: GuiDropdownBox must draw after any other control that can be covered on unfolding
+		GuiSetStyle(DROPDOWNBOX, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_LEFT)
+		If GuiDropdownBox(New RRectangle(25, 65, 125, 30), "#01#ONE;#02#TWO;#03#THREE;#04#FOUR;", dropdownBox001Active, dropDown001EditMode) Then
+			dropDown001EditMode = Not dropDown001EditMode
+		End If
+
+		GuiSetStyle(DROPDOWNBOX, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_CENTER)
+		If GuiDropdownBox(New RRectangle(25, 25, 125, 30), "ONE;TWO;THREE;", dropdownBox000Active, dropDown000EditMode) Then
+			dropDown000EditMode = Not dropDown000EditMode
+		End If
+
+		' Second GUI column
+		listViewActive = GuiListView(New RRectangle(165, 25, 140, 140), "Charmander;Bulbasaur;#18#Squirtel;Pikachu;Eevee;Pidgey;", listViewScrollIndex, listViewActive)
+		listViewExActive = GuiListViewEx(New RRectangle(165, 180, 140, 200), listViewExList, listViewExFocus, listViewExScrollIndex, listViewExActive)
+
+		toggleGroupActive = GuiToggleGroup(New RRectangle(165, 400, 140, 25), "#1#ONE~n#3#TWO~n#8#THREE~n#23#", toggleGroupActive)
+
+		' Third GUI column
+		If GuiTextBoxMulti(New RRectangle(320, 25, 225, 140), multiTextBoxText, 141, multiTextBoxEditMode) Then
+			multiTextBoxEditMode = Not multiTextBoxEditMode
+		End If
+		colorPickerValue = GuiColorPicker(New RRectangle(320, 185, 196, 192), colorPickerValue)
+
+		SliderValue = GuiSlider(New RRectangle(355, 400, 165, 20), "TEST", formatter.Clear().Arg(Float(SliderValue)).Format(), SliderValue, -50, 100)
+		sliderBarValue = GuiSliderBar(New RRectangle(320, 430, 200, 20), Null, Int(sliderBarValue), sliderBarValue, 0, 100)
+		progressValue = GuiProgressBar(New RRectangle(320, 460, 200, 20), Null, Null, progressValue, 0, 1)
+
+		' NOTE: View rectangle could be used to perform some scissor test
+		Local view:RRectangle = GuiScrollPanel(New RRectangle(560, 25, 100, 160), New RRectangle(560, 25, 200, 400), viewScroll)
+		
+		GuiStatusBar(New RRectangle(0, GetScreenHeight() - 20, GetScreenWidth(), 20), "This is a status bar")
+		
+		alphaValue = GuiColorBarAlpha(New RRectangle(320, 490, 200, 30), alphaValue)
+
+		If showMessageBox Then
+			DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(RAYWHITE, 0.8))
+			Local result:Int = GuiMessageBox(New RRectangle(GetScreenWidth()/2 - 125, GetScreenHeight()/2 - 50, 250, 100), GuiIconText(RICON_EXIT, "Close Window"), "Do you really want to exit?", "Yes;No") 
+		
+			If (result = 0) Or (result = 2) Then
+				showMessageBox = False
+			Else If result = 1 Then
+				exitWindow = True
+			End If
+		End If
+		
+		If showTextInputBox Then
+			DrawRectangle(0, 0, GetScreenWidth(), GetScreenHeight(), Fade(RAYWHITE, 0.8))
+			Local result:Int = GuiTextInputBox(New RRectangle(GetScreenWidth()/2 - 120, GetScreenHeight()/2 - 60, 240, 140), GuiIconText(RICON_FILE_SAVE, "Save file as..."), "Introduce a save file name", "Ok;Cancel", textInput)
+			
+			If result = 1 Then
+				' TODO: Validate textInput value and save
+				
+				textInputFileName = textInput
+			End If
+			
+			If (result = 0) Or (result = 1) Or (result = 2) Then
+				showTextInputBox = False
+				textInput = Null
+			End If
+		End If
+'End Rem
+		GuiUnlock()
+		'----------------------------------------------------------------------------------
+
+	EndDrawing()
+	'----------------------------------------------------------------------------------
+Wend
+
+' De-Initialization
+'--------------------------------------------------------------------------------------
+CloseWindow()        ' Close window and OpenGL context
+'--------------------------------------------------------------------------------------