From 19e37f507d005cca2c64479f93a4a90dac89f946 Mon Sep 17 00:00:00 2001 From: Rokas Puzonas Date: Sun, 19 Jul 2026 03:55:21 +0300 Subject: [PATCH] add gradient at bottom --- src/app.zig | 21 +++++++++++++++++++++ src/graphics.zig | 2 +- 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/src/app.zig b/src/app.zig index a426731..52e5fd7 100644 --- a/src/app.zig +++ b/src/app.zig @@ -43,6 +43,7 @@ font: Gfx.Font.Id, idle_animations: AnimationDirections, walk_animations: AnimationDirections, death_animations: AnimationDirections, +gradient_sprite: Gfx.Sprite.Id, terrain_sheet: Tilesheet, terrain_tiles: []Tile, @@ -473,6 +474,23 @@ pub fn init(self: *App, plt: Platform.Init) !?u8 { const now = std.Io.Timestamp.now(plt.io, .awake); + var gradient_sprite = Gfx.getNilSprite(); + { + var gradient_data = try Gfx.ImageData.init(plt.gpa, 1, 32, .rgba8); + defer gradient_data.deinit(plt.gpa); + for (0..gradient_data.height) |y| { + const percent = @as(f32, @floatFromInt(y)) / @as(f32, @floatFromInt(gradient_data.height)); + const pixel = gradient_data.getPixel(0, @intCast(y)); + pixel[0] = 0; + pixel[1] = 0; + pixel[2] = 0; + pixel[3] = @intFromFloat(percent*255); + } + + gradient_sprite = Gfx.initSprite(.{}); + Gfx.setSprite(gradient_sprite, .{ .image = gradient_data }); + } + self.* = App{ .gpa = plt.gpa, .idle_animations = try AnimationDirections.init(plt.arena, idle_sheet, ns_per_s / idle_fps, 2), @@ -486,6 +504,7 @@ pub fn init(self: *App, plt: Platform.Init) !?u8 { .eternal_flame_id = undefined, .upgrades = .{}, .shop = undefined, + .gradient_sprite = gradient_sprite, .terrain_sheet = terrain_sheet, .terrain_tiles = terrain_tiles, @@ -1848,6 +1867,8 @@ pub fn frame(self: *App, plt: Platform.Frame) !void { Gfx.drawSprite(tile.sprite, tile_pos.multiply(terrain_tile_size), terrain_tile_size, .white); } } + + Gfx.drawSprite(self.gradient_sprite, .init(-2500, 64), .init(5000, 96), .white); } { diff --git a/src/graphics.zig b/src/graphics.zig index 8230612..618b628 100644 --- a/src/graphics.zig +++ b/src/graphics.zig @@ -1711,7 +1711,7 @@ pub const ImageData = struct { } } - fn getPixel(self: ImageData, x: u32, y: u32) []u8 { + pub fn getPixel(self: ImageData, x: u32, y: u32) []u8 { const pixel_index = y * self.width + x; if (self.pixels) |pixels| { return switch (pixels) {