diff options
| author | raysan5 <raysan5@gmail.com> | 2016-08-06 11:32:35 +0200 |
|---|---|---|
| committer | raysan5 <raysan5@gmail.com> | 2016-08-06 11:32:35 +0200 |
| commit | 00c7e54d3c593dbddb036f2185e614e7e4b22a1f (patch) | |
| tree | 3ef6a46031712ff9551c2711adcc9fa3045a618b /examples/text_font_select.lua | |
| parent | 5f1b4e94745303ab9df87421cdd9ffb9448fee01 (diff) | |
| download | raylib-00c7e54d3c593dbddb036f2185e614e7e4b22a1f.tar.gz raylib-00c7e54d3c593dbddb036f2185e614e7e4b22a1f.zip | |
Add raylib lua examples
Diffstat (limited to 'examples/text_font_select.lua')
| -rw-r--r-- | examples/text_font_select.lua | 143 |
1 files changed, 143 insertions, 0 deletions
diff --git a/examples/text_font_select.lua b/examples/text_font_select.lua new file mode 100644 index 00000000..e04f6024 --- /dev/null +++ b/examples/text_font_select.lua @@ -0,0 +1,143 @@ +------------------------------------------------------------------------------------------- +-- +-- raylib [text] example - Font selector +-- +-- This example has been created using raylib 1.6 (www.raylib.com) +-- raylib is licensed under an unmodified zlib/libpng license (View raylib.h for details) +-- +-- Copyright (c) 2014-2016 Ramon Santamaria (@raysan5) +-- +------------------------------------------------------------------------------------------- + +-- Initialization +------------------------------------------------------------------------------------------- +local screenWidth = 800 +local screenHeight = 450 + +InitWindow(screenWidth, screenHeight, "raylib [text] example - font selector") + +-- NOTE: Textures MUST be loaded after Window initialization (OpenGL context is required) +local fonts = {} -- SpriteFont array + +fonts[1] = LoadSpriteFont("resources/fonts/alagard.rbmf") -- SpriteFont loading +fonts[2] = LoadSpriteFont("resources/fonts/pixelplay.rbmf") -- SpriteFont loading +fonts[3] = LoadSpriteFont("resources/fonts/mecha.rbmf") -- SpriteFont loading +fonts[4] = LoadSpriteFont("resources/fonts/setback.rbmf") -- SpriteFont loading +fonts[5] = LoadSpriteFont("resources/fonts/romulus.rbmf") -- SpriteFont loading +fonts[6] = LoadSpriteFont("resources/fonts/pixantiqua.rbmf") -- SpriteFont loading +fonts[7] = LoadSpriteFont("resources/fonts/alpha_beta.rbmf") -- SpriteFont loading +fonts[8] = LoadSpriteFont("resources/fonts/jupiter_crash.rbmf") -- SpriteFont loading + +local currentFont = 1 -- Selected font + +local colors = { MAROON, ORANGE, DARKGREEN, DARKBLUE, DARKPURPLE, LIME, GOLD, RED } + +local fontNames = { "[1] Alagard", "[2] PixelPlay", "[3] MECHA", "[4] Setback", + "[5] Romulus", "[6] PixAntiqua", "[7] Alpha Beta", "[8] Jupiter Crash" } + +local text = "THIS is THE FONT you SELECTED!" -- Main text + +local textSize = MeasureTextEx(fonts[currentFont], text, fonts[currentFont].size*3, 1) + +local mousePoint + +local btnNextOutColor = DARKBLUE -- Button color (outside line) +local btnNextInColor = SKYBLUE -- Button color (inside) + +local framesCounter = 0 -- Useful to count frames button is 'active' = clicked + +local positionY = 180 -- Text selector and button Y position + +local btnNextRec = Rectangle(673, positionY, 109, 44) -- Button rectangle (useful for collision) + +SetTargetFPS(60) -- Set our game to run at 60 frames-per-second +------------------------------------------------------------------------------------------- + +-- Main game loop +while not WindowShouldClose() do -- Detect window close button or ESC key + -- Update + --------------------------------------------------------------------------------------- + + -- Keyboard-based font selection (easy) + if (IsKeyPressed(KEY.RIGHT)) then + if (currentFont < 8) then currentFont = currentFont + 1 end + end + + if (IsKeyPressed(KEY.LEFT)) then + if (currentFont > 1) then currentFont = currentFont - 1 end + end + + if (IsKeyPressed(KEY.ZERO)) then currentFont = 0 + elseif (IsKeyPressed(KEY.ONE)) then currentFont = 1 + elseif (IsKeyPressed(KEY.TWO)) then currentFont = 2 + elseif (IsKeyPressed(KEY.THREE)) then currentFont = 3 + elseif (IsKeyPressed(KEY.FOUR)) then currentFont = 4 + elseif (IsKeyPressed(KEY.FIVE)) then currentFont = 5 + elseif (IsKeyPressed(KEY.SIX)) then currentFont = 6 + elseif (IsKeyPressed(KEY.SEVEN)) then currentFont = 7 + end + + -- Mouse-based font selection (NEXT button logic) + mousePoint = GetMousePosition() + + if (CheckCollisionPointRec(mousePoint, btnNextRec)) then + -- Mouse hover button logic + if (framesCounter == 0) then + btnNextOutColor = DARKPURPLE + btnNextInColor = PURPLE + end + + if (IsMouseButtonDown(MOUSE_LEFT_BUTTON)) then + framesCounter = 20 -- Frames button is 'active' + btnNextOutColor = MAROON + btnNextInColor = RED + end + else + -- Mouse not hover button + btnNextOutColor = DARKBLUE + btnNextInColor = SKYBLUE + end + + if (framesCounter > 0) then framesCounter = framesCounter - 1 end + + if (framesCounter == 1) then -- We change font on frame 1 + currentFont = currentFont + 1 + if (currentFont > 7) then currentFont = 0 end + end + + -- Text measurement for better positioning on screen + textSize = MeasureTextEx(fonts[currentFont], text, fonts[currentFont].size*3, 1) + --------------------------------------------------------------------------------------- + + -- Draw + --------------------------------------------------------------------------------------- + BeginDrawing() + + ClearBackground(RAYWHITE) + + DrawText("font selector - use arroys, button or numbers", 160, 80, 20, DARKGRAY) + DrawLine(120, 120, 680, 120, DARKGRAY) + + DrawRectangle(18, positionY, 644, 44, DARKGRAY) + DrawRectangle(20, positionY + 2, 640, 40, LIGHTGRAY) + DrawText(fontNames[currentFont], 30, positionY + 13, 20, BLACK) + DrawText("< >", 610, positionY + 8, 30, BLACK) + + DrawRectangleRec(btnNextRec, btnNextOutColor) + DrawRectangle(675, positionY + 2, 105, 40, btnNextInColor) + DrawText("NEXT", 700, positionY + 13, 20, btnNextOutColor) + + DrawTextEx(fonts[currentFont], text, Vector2(screenWidth/2 - textSize.x/2, + 260 + (70 - textSize.y)/2), fonts[currentFont].size*3, + 1, colors[currentFont]) + + EndDrawing() + --------------------------------------------------------------------------------------- +end + +-- De-Initialization +------------------------------------------------------------------------------------------- +for i = 1, 8 do UnloadSpriteFont(fonts[i]) end -- SpriteFont(s) unloading + +CloseWindow() -- Close window and OpenGL context +-------------------------------------------------------------------------------------------
\ No newline at end of file |
