diff options
| author | jussi | 2022-12-08 18:24:41 +0200 |
|---|---|---|
| committer | jussi | 2022-12-08 18:24:41 +0200 |
| commit | 973d902a16b35258629d2a0b228ad9c3f49b6198 (patch) | |
| tree | 7ee30310c5c2356cbaf31f9f2d23d21b89770f51 /examples/ReiLuaGui_test/main.lua | |
| parent | 79fbb36d2a4d73001c446f75b3b87dc84f1605b6 (diff) | |
| download | reilua-enhanced-973d902a16b35258629d2a0b228ad9c3f49b6198.tar.gz reilua-enhanced-973d902a16b35258629d2a0b228ad9c3f49b6198.tar.bz2 reilua-enhanced-973d902a16b35258629d2a0b228ad9c3f49b6198.zip | |
ReiLuaGui File explorer.
Diffstat (limited to 'examples/ReiLuaGui_test/main.lua')
| -rw-r--r-- | examples/ReiLuaGui_test/main.lua | 161 |
1 files changed, 161 insertions, 0 deletions
diff --git a/examples/ReiLuaGui_test/main.lua b/examples/ReiLuaGui_test/main.lua new file mode 100644 index 0000000..ecf3084 --- /dev/null +++ b/examples/ReiLuaGui_test/main.lua @@ -0,0 +1,161 @@ +package.path = package.path..";"..RL_GetBasePath().."../resources/lib/?.lua" + +util = require( "utillib" ) +Vec2 = require( "vector2" ) +Rect = require( "rectangle" ) +Color = require( "color" ) +Gui = require( "gui" ) + +local container = {} +-- local circleTexture = RL_LoadTexture( RL_GetBasePath().."../resources/images/circle.png" ) +local circleTexture = RL_LoadTexture( RL_GetBasePath().."../resources/images/plain-circle.png" ) +local checkTexture = RL_LoadTexture( RL_GetBasePath().."../resources/images/check-mark.png" ) +local borderTexture = RL_LoadTexture( RL_GetBasePath().."../resources/images/ui_border.png" ) +local textInput + +RL_GenTextureMipmaps( circleTexture ) +RL_GenTextureMipmaps( checkTexture ) +RL_SetTextureFilter( circleTexture, TEXTURE_FILTER_TRILINEAR ) +RL_SetTextureFilter( checkTexture, TEXTURE_FILTER_TRILINEAR ) + +function initGui() + -- local label = Gui.label:new( { text = "Dog", bounds = { 32, 32, 96, 96 }, drawBounds = true, Haling = Gui.ALING.CENTER, Valing = Gui.ALING.TOP } ) + local panel = Gui.element:new( { bounds = Rect:new( 60, 32, 128, 128 ), drawBounds = true } ) + + container = Gui.container:new( { + bounds = Rect:new( 256, 120, 128, 128 ), + -- spacing = 14, + -- drawScrollRect = true, + -- HAling = Gui.ALING.RIGHT, + -- HAling = Gui.ALING.CENTER, + -- type = Gui.CONTAINER.HORIZONTAL, + -- VAling = Gui.ALING.CENTER, + -- type = Gui.CONTAINER.GRID, + -- columns = 2, + -- rows = 2, + scrollable = true, + showScrollbar = true, + } ) + + -- local container = Gui.container:new( { bounds = Rect:new( 256, 120, 128, 128 ), drawBounds = true, type = Gui.CONTAINER.HORIZONTAL } ) + + -- local itemBounds = { 0, 0, container.bounds.width - container.spacing * 2, 36 } + local itemBounds = Rect:new( 0, 0, 64, 36 ) + + local dog = Gui.element:new( { + bounds = Rect:new( 0, 0, 128, 36 ), + onClicked = function() panel:setPosition( Vec2:new( 290, 120 ) ) end, + onMouseOver = function( self ) self.items[1].color = RED end, + notMouseOver = function( self ) self.items[1].color = BLACK end, + drawBounds = true, + } ) + + dog:add( Gui.text:new( { text = "Dog", HAling = Gui.ALING.LEFT } ) ) + + dog:add( Gui.texture:new( { + bounds = dog.bounds:clone(), + texture = borderTexture, + HAling = Gui.ALING.CENTER, + VAling = Gui.ALING.CENTER, + visible = true, + nPatchInfo = { source = { 0, 0, 24, 24 }, left = 8, top = 8, right = 8, bottom = 8, layout = NPATCH_NINE_PATCH }, + } ) ) + + dog:add( Gui.texture:new( { bounds = Rect:new( 0, 0, 24, 24 ), texture = circleTexture, HAling = Gui.ALING.RIGHT, color = Color:new( 150, 150, 255 ) } ) ) + dog:add( Gui.texture:new( { bounds = Rect:new( 0, 0, 24, 24 ), texture = checkTexture, HAling = Gui.ALING.RIGHT, visible = true } ) ) + -- dog:add( Gui.text:new( { text = "Cat", HAling = Gui.ALING.RIGHT } ) ) + -- dog:add( Gui.shape:new( { bounds = Rect:new( 0, 0, 128, 36 ), shape = Gui.SHAPE.RECTANGLE_ROUNDED, color = Color:new( GREEN ) } ) ) + + container:add( dog ) + + -- container:add( Gui.element:new( { + -- text = "Cat", + -- bounds = Rect:new( 0, 0, 78, 24 ), + -- onClicked = function() panel:setPosition( Vec2:new( 290, 120 ) ) end, + -- onMouseOver = function( self ) self.color = RED end, + -- notMouseOver = function( self ) self.color = BLACK end, + -- drawBounds = true, + -- } ) ) + + for i = 1, 5 do + local element = Gui.element:new( { + bounds = Rect:new( 0, 0, 120, 30 ), + onClicked = function() panel:setPosition( Vec2:new( 340, 380 ) ) end, + onMouseOver = function( self ) self.color = Color:new( DARKBLUE ) end, + notMouseOver = function( self ) self.color = Color:new( LIGHTGRAY ) end, + drawBounds = true, + } ) + + element:add( Gui.text:new( { text = "Giraffe" } ) ) + container:add( element ) + end + + local container2 = Gui.container:new( { + bounds = Rect:new( 0, 0, 154, 64 ), + type = Gui.CONTAINER.HORIZONTAL, + } ) + + local element = Gui.element:new( { + bounds = itemBounds:clone(), + onMouseOver = function( self ) self.color = Color:new( DARKBLUE ) end, + notMouseOver = function( self ) self.color = Color:new( LIGHTGRAY ) end, + drawBounds = true, + } ) + element:add( Gui.text:new( { text = "Dog" } ) ) + container2:add( element ) + + element = Gui.element:new( { + bounds = Rect:new( 0, 0, 78, 24 ), + -- bounds = Rect:new( 0, 0, 78, 64 ), + onMouseOver = function( self ) self.color = Color:new( DARKBLUE ) end, + notMouseOver = function( self ) self.color = Color:new( LIGHTGRAY ) end, + drawBounds = true, + } ) + element:add( Gui.text:new( { text = "Cat" } ) ) + container2:add( element ) + + container:add( container2 ) + + panel:set2Top() + + -- Text input. + + textInput = Gui.element:new( { + bounds = Rect:new( 64, 360, 300, 32 ), + drawBounds = true, + color = Color:new( LIGHTGRAY ), + onClicked = function() Gui.setInputFocus( textInput ) end, + inputFocus = function() textInput.color = Color:new( BLUE ) end, + -- inputFocus = function() container:delete() end, + -- inputFocus = function() panel:set2Back() end, + inputUnfocus = function() textInput.color = Color:new( LIGHTGRAY ) end, + } ) + + textInput:add( Gui.text:new( { text = "", maxTextLen = 16, allowLineBreak = false } ) ) +end + +function init() + local monitor = 0 + local mPos = RL_GetMonitorPosition( monitor ) + local mSize = RL_GetMonitorSize( monitor ) + winSize = RL_GetWindowSize() + + RL_SetWindowTitle( "ReiLuaGui Test" ) + RL_SetWindowState( FLAG_WINDOW_RESIZABLE ) + RL_SetWindowState( FLAG_VSYNC_HINT ) + RL_SetWindowSize( winSize ) + RL_SetWindowPosition( { mPos[1] + mSize[1] / 2 - winSize[1] / 2, mPos[2] + mSize[2] / 2 - winSize[2] / 2 } ) + + initGui() +end + +function process( delta ) + Gui.process( Vec2:new( RL_GetMousePosition() ) ) +end + +function draw() + RL_ClearBackground( RAYWHITE ) + + Gui.draw() + RL_DrawText( 0, "Work in progress GuiLib test.", { 10, 10 }, 30, 4, BLACK ) +end |
