mirror of
https://github.com/Not-Nik/raylib-zig.git
synced 2025-09-08 19:47:28 +00:00
add color palette example
This commit is contained in:
parent
4e08de5584
commit
2a569ea2ef
126
examples/shapes/colors_palette.zig
Normal file
126
examples/shapes/colors_palette.zig
Normal file
@ -0,0 +1,126 @@
|
||||
const std = @import("std");
|
||||
const rl = @import("raylib");
|
||||
|
||||
const maxColorCount = 21; // Number of colors available
|
||||
|
||||
pub fn getAlpha(state: bool) f32 {
|
||||
if (state) {
|
||||
return 0.6;
|
||||
}
|
||||
return 1.0;
|
||||
}
|
||||
|
||||
pub fn main() anyerror!void {
|
||||
// Initialization
|
||||
//--------------------------------------------------------------------------------------
|
||||
const screenWidth = 800;
|
||||
const screenHeight = 450;
|
||||
|
||||
rl.initWindow(screenWidth, screenHeight, "raylib-zig [shapes] example - colors palette");
|
||||
defer rl.closeWindow(); // Close window and OpenGL context
|
||||
|
||||
const colors = [maxColorCount]rl.Color{
|
||||
rl.Color.dark_gray,
|
||||
rl.Color.maroon,
|
||||
rl.Color.orange,
|
||||
rl.Color.dark_green,
|
||||
rl.Color.dark_blue,
|
||||
rl.Color.dark_purple,
|
||||
rl.Color.dark_brown,
|
||||
rl.Color.gray,
|
||||
rl.Color.red,
|
||||
rl.Color.gold,
|
||||
rl.Color.lime,
|
||||
rl.Color.blue,
|
||||
rl.Color.violet,
|
||||
rl.Color.brown,
|
||||
rl.Color.light_gray,
|
||||
rl.Color.pink,
|
||||
rl.Color.yellow,
|
||||
rl.Color.green,
|
||||
rl.Color.sky_blue,
|
||||
rl.Color.purple,
|
||||
rl.Color.beige,
|
||||
};
|
||||
|
||||
const colorNames = [maxColorCount][*:0]const u8{
|
||||
"DARKGRAY",
|
||||
"MAROON",
|
||||
"ORANGE",
|
||||
"DARKGREEN",
|
||||
"DARKBLUE",
|
||||
"DARKPURPLE",
|
||||
"DARKBROWN",
|
||||
"GRAY",
|
||||
"RED",
|
||||
"GOLD",
|
||||
"LIME",
|
||||
"BLUE",
|
||||
"VIOLET",
|
||||
"BROWN",
|
||||
"LIGHTGRAY",
|
||||
"PINK",
|
||||
"YELLOW",
|
||||
"GREEN",
|
||||
"SKYBLUE",
|
||||
"PURPLE",
|
||||
"BEIGE",
|
||||
};
|
||||
|
||||
var colorsRecs = std.mem.zeroes([maxColorCount]rl.Rectangle);
|
||||
|
||||
var i: u8 = 0;
|
||||
while (i < maxColorCount) : (i += 1) {
|
||||
colorsRecs[i].x = 20.0 + 100.0 * @as(f32, @floatFromInt(i % 7)) + 10.0 * @as(f32, @floatFromInt(i % 7));
|
||||
colorsRecs[i].y = 80.0 + 100.0 * @as(f32, @floatFromInt(i / 7)) + 10.0 * @as(f32, @floatFromInt(i / 7));
|
||||
colorsRecs[i].width = 100.0;
|
||||
colorsRecs[i].height = 100.0;
|
||||
}
|
||||
|
||||
var colorState: [maxColorCount]bool = std.mem.zeroes([maxColorCount]bool);
|
||||
|
||||
var mousePoint = rl.Vector2{ .x = 0.0, .y = 0.0 };
|
||||
|
||||
rl.setTargetFPS(60); // Set our game to run at 60 frames-per-second
|
||||
//--------------------------------------------------------------------------------------
|
||||
|
||||
// Main game loop
|
||||
while (!rl.windowShouldClose()) { // Detect window close button or ESC key
|
||||
// Update
|
||||
//----------------------------------------------------------------------------------
|
||||
mousePoint = rl.getMousePosition();
|
||||
|
||||
i = 0;
|
||||
while (i < maxColorCount) : (i += 1) {
|
||||
if (rl.checkCollisionPointRec(mousePoint, colorsRecs[i])) {
|
||||
colorState[i] = true;
|
||||
} else {
|
||||
colorState[i] = false;
|
||||
}
|
||||
}
|
||||
//----------------------------------------------------------------------------------
|
||||
|
||||
// Draw
|
||||
//----------------------------------------------------------------------------------
|
||||
rl.beginDrawing();
|
||||
defer rl.endDrawing();
|
||||
|
||||
rl.clearBackground(rl.Color.ray_white);
|
||||
|
||||
rl.drawText("raylib colors palette", 28, 42, 20, rl.Color.black);
|
||||
rl.drawText("press SPACE to see all colors", rl.getScreenWidth() - 180, rl.getScreenHeight() - 40, 10, rl.Color.gray);
|
||||
|
||||
i = 0;
|
||||
while (i < maxColorCount) : (i += 1) {
|
||||
rl.drawRectangleRec(colorsRecs[i], rl.fade(colors[i], getAlpha(colorState[i])));
|
||||
|
||||
if (rl.isKeyDown(.space) or colorState[i]) {
|
||||
rl.drawRectangle(@intFromFloat(colorsRecs[i].x), @as(i32, @intFromFloat(colorsRecs[i].y)) + @as(i32, @intFromFloat(colorsRecs[i].height)) - 26, @as(i32, @intFromFloat(colorsRecs[i].width)), 20, rl.Color.black);
|
||||
rl.drawRectangleLinesEx(colorsRecs[i], 6, rl.fade(rl.Color.black, 0.3));
|
||||
|
||||
rl.drawText(colorNames[i], @as(i32, @intFromFloat(colorsRecs[i].x)) + @as(i32, @intFromFloat(colorsRecs[i].width)) - rl.measureText(colorNames[i], 10) - 12, @as(i32, @intFromFloat(colorsRecs[i].y)) + @as(i32, @intFromFloat(colorsRecs[i].height)) - 20, 10, colors[i]);
|
||||
}
|
||||
}
|
||||
//----------------------------------------------------------------------------------
|
||||
}
|
||||
}
|
Loading…
x
Reference in New Issue
Block a user