|
@@ -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
|
|
|
+'--------------------------------------------------------------------------------------
|