add gradient at bottom
This commit is contained in:
parent
096a082ac7
commit
19e37f507d
21
src/app.zig
21
src/app.zig
@ -43,6 +43,7 @@ font: Gfx.Font.Id,
|
|||||||
idle_animations: AnimationDirections,
|
idle_animations: AnimationDirections,
|
||||||
walk_animations: AnimationDirections,
|
walk_animations: AnimationDirections,
|
||||||
death_animations: AnimationDirections,
|
death_animations: AnimationDirections,
|
||||||
|
gradient_sprite: Gfx.Sprite.Id,
|
||||||
|
|
||||||
terrain_sheet: Tilesheet,
|
terrain_sheet: Tilesheet,
|
||||||
terrain_tiles: []Tile,
|
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);
|
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{
|
self.* = App{
|
||||||
.gpa = plt.gpa,
|
.gpa = plt.gpa,
|
||||||
.idle_animations = try AnimationDirections.init(plt.arena, idle_sheet, ns_per_s / idle_fps, 2),
|
.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,
|
.eternal_flame_id = undefined,
|
||||||
.upgrades = .{},
|
.upgrades = .{},
|
||||||
.shop = undefined,
|
.shop = undefined,
|
||||||
|
.gradient_sprite = gradient_sprite,
|
||||||
|
|
||||||
.terrain_sheet = terrain_sheet,
|
.terrain_sheet = terrain_sheet,
|
||||||
.terrain_tiles = terrain_tiles,
|
.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(tile.sprite, tile_pos.multiply(terrain_tile_size), terrain_tile_size, .white);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Gfx.drawSprite(self.gradient_sprite, .init(-2500, 64), .init(5000, 96), .white);
|
||||||
}
|
}
|
||||||
|
|
||||||
{
|
{
|
||||||
|
|||||||
@ -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;
|
const pixel_index = y * self.width + x;
|
||||||
if (self.pixels) |pixels| {
|
if (self.pixels) |pixels| {
|
||||||
return switch (pixels) {
|
return switch (pixels) {
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user