various: upgrade Zig version
Signed-off-by: NotAShelf <raf@notashelf.dev> Change-Id: Ia97044bd7d44c776f217f2223e35ae3b6a6a6964
This commit is contained in:
parent
4bcacb59ac
commit
bb10fb88f0
6 changed files with 45 additions and 35 deletions
48
build.zig
48
build.zig
|
|
@ -29,11 +29,11 @@ pub fn build(b: *std.Build) void {
|
|||
.link_libc = true,
|
||||
}),
|
||||
});
|
||||
rng_lib.addCSourceFiles(.{
|
||||
rng_lib.root_module.addCSourceFiles(.{
|
||||
.files = &[_][]const u8{"libs/rng/rng.c"},
|
||||
.flags = c_flags,
|
||||
});
|
||||
rng_lib.addIncludePath(b.path("libs/rng"));
|
||||
rng_lib.root_module.addIncludePath(b.path("libs/rng"));
|
||||
|
||||
// Map library
|
||||
const map_lib = b.addLibrary(.{
|
||||
|
|
@ -44,7 +44,7 @@ pub fn build(b: *std.Build) void {
|
|||
.link_libc = true,
|
||||
}),
|
||||
});
|
||||
map_lib.addCSourceFiles(.{
|
||||
map_lib.root_module.addCSourceFiles(.{
|
||||
.files = &[_][]const u8{
|
||||
"libs/map/map.c",
|
||||
"libs/map/utils.c",
|
||||
|
|
@ -52,11 +52,11 @@ pub fn build(b: *std.Build) void {
|
|||
.flags = c_flags,
|
||||
});
|
||||
// map.h includes common.h and settings.h which live in src/
|
||||
map_lib.addIncludePath(b.path("src"));
|
||||
map_lib.root_module.addIncludePath(b.path("src"));
|
||||
// map.c includes rng/rng.h via libs/ root
|
||||
map_lib.addIncludePath(b.path("libs"));
|
||||
map_lib.root_module.addIncludePath(b.path("libs"));
|
||||
// utils.h is co-located with map.c
|
||||
map_lib.addIncludePath(b.path("libs/map"));
|
||||
map_lib.root_module.addIncludePath(b.path("libs/map"));
|
||||
|
||||
// Tileset library
|
||||
const tileset_obj = b.addObject(.{
|
||||
|
|
@ -67,7 +67,7 @@ pub fn build(b: *std.Build) void {
|
|||
.link_libc = true,
|
||||
}),
|
||||
});
|
||||
tileset_obj.addCSourceFiles(.{
|
||||
tileset_obj.root_module.addCSourceFiles(.{
|
||||
.files = &[_][]const u8{
|
||||
"libs/tileset/tileset.c",
|
||||
"libs/tileset/tileset_paint.c",
|
||||
|
|
@ -75,10 +75,10 @@ pub fn build(b: *std.Build) void {
|
|||
.flags = c_flags,
|
||||
});
|
||||
// tileset.h includes settings.h which lives in src/
|
||||
tileset_obj.addIncludePath(b.path("src"));
|
||||
tileset_obj.root_module.addIncludePath(b.path("src"));
|
||||
// tileset.c includes tileset.h which is co-located
|
||||
tileset_obj.addIncludePath(b.path("libs/tileset"));
|
||||
tileset_obj.linkSystemLibrary("raylib");
|
||||
tileset_obj.root_module.addIncludePath(b.path("libs/tileset"));
|
||||
tileset_obj.root_module.linkSystemLibrary("raylib", .{});
|
||||
|
||||
// Zig combat library. This must be compiled as an object and linked
|
||||
// directly to bypassing the archive step, or it yields a corrupt
|
||||
|
|
@ -93,8 +93,8 @@ pub fn build(b: *std.Build) void {
|
|||
}),
|
||||
});
|
||||
// common.h and settings.h live in src/; rng.h exposed bare from libs/rng
|
||||
combat_obj.addIncludePath(b.path("src"));
|
||||
combat_obj.addIncludePath(b.path("libs/rng"));
|
||||
combat_obj.root_module.addIncludePath(b.path("src"));
|
||||
combat_obj.root_module.addIncludePath(b.path("libs/rng"));
|
||||
|
||||
// C sources remaining in src/
|
||||
const c_sources = [_][]const u8{
|
||||
|
|
@ -118,24 +118,24 @@ pub fn build(b: *std.Build) void {
|
|||
}),
|
||||
});
|
||||
|
||||
exe.addCSourceFiles(.{
|
||||
exe.root_module.addCSourceFiles(.{
|
||||
.files = &c_sources,
|
||||
.flags = c_flags,
|
||||
});
|
||||
|
||||
// src/ for own headers; libs/ so "rng/rng.h" and "map/map.h" resolve
|
||||
exe.addIncludePath(b.path("src"));
|
||||
exe.addIncludePath(b.path("libs"));
|
||||
exe.root_module.addIncludePath(b.path("src"));
|
||||
exe.root_module.addIncludePath(b.path("libs"));
|
||||
|
||||
exe.linkLibrary(rng_lib);
|
||||
exe.linkLibrary(map_lib);
|
||||
exe.addObject(tileset_obj);
|
||||
exe.addObject(combat_obj);
|
||||
exe.linkSystemLibrary("raylib");
|
||||
exe.linkSystemLibrary("m");
|
||||
exe.linkSystemLibrary("pthread");
|
||||
exe.linkSystemLibrary("dl");
|
||||
exe.linkSystemLibrary("rt");
|
||||
exe.root_module.linkLibrary(rng_lib);
|
||||
exe.root_module.linkLibrary(map_lib);
|
||||
exe.root_module.addObject(tileset_obj);
|
||||
exe.root_module.addObject(combat_obj);
|
||||
exe.root_module.linkSystemLibrary("raylib", .{});
|
||||
exe.root_module.linkSystemLibrary("m", .{});
|
||||
exe.root_module.linkSystemLibrary("pthread", .{});
|
||||
exe.root_module.linkSystemLibrary("dl", .{});
|
||||
exe.root_module.linkSystemLibrary("rt", .{});
|
||||
|
||||
b.installArtifact(exe);
|
||||
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@
|
|||
|
||||
// Tracks the earliest Zig version that the package considers to be a
|
||||
// supported use case.
|
||||
.minimum_zig_version = "0.15.2",
|
||||
.minimum_zig_version = "0.16.0",
|
||||
|
||||
// This field is optional.
|
||||
// Each dependency must either provide a `url` and `hash`, or a `path`.
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ to be viable. For a semi-complete list of things that need to be done, see the
|
|||
|
||||
Rogged is built on a relatively simple stack. It uses C99 for the main game
|
||||
logic, and Zig for the combat library. Besides `raylib` and `pkg-config`, you
|
||||
only need the core Zig tooling. For now the required Zig version is 0.15.2, but
|
||||
only need the core Zig tooling. For now the required Zig version is 0.16.0, but
|
||||
this might change in the future. Additionally, you will need `clang-format` and
|
||||
`just` for common development tasks in the case you plan to contribute. For
|
||||
building, Zig is enough.
|
||||
|
|
@ -53,7 +53,7 @@ $ just dev
|
|||
### Manual Build
|
||||
|
||||
If you are allergic to good tooling and would rather use your system Zig, you
|
||||
may simply invoke `zig build` after acquiring Zig 0.15.2.
|
||||
may simply invoke `zig build` after acquiring Zig 0.16.0.
|
||||
|
||||
```sh
|
||||
# Full build
|
||||
|
|
|
|||
|
|
@ -101,18 +101,18 @@ fn compact(effects: [*c]c.StatusEffect, count: [*c]c_int) void {
|
|||
count[0] = @intCast(write);
|
||||
}
|
||||
|
||||
fn tickOne(eff: *c.StatusEffect, hp: *c_int) c_int {
|
||||
if (eff.duration <= 0) return 0;
|
||||
fn tickOne(eff: [*c]c.StatusEffect, hp: [*c]c_int) c_int {
|
||||
if (eff[0].duration <= 0) return 0;
|
||||
|
||||
var dmg: c_int = 0;
|
||||
switch (eff.type) {
|
||||
switch (eff[0].type) {
|
||||
c.EFFECT_POISON, c.EFFECT_BLEED, c.EFFECT_BURN => {
|
||||
dmg = eff.intensity;
|
||||
hp.* -= dmg;
|
||||
dmg = eff[0].intensity;
|
||||
hp[0] -= dmg;
|
||||
},
|
||||
else => {},
|
||||
}
|
||||
eff.duration -= 1;
|
||||
eff[0].duration -= 1;
|
||||
return dmg;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ stdenv.mkDerivation {
|
|||
(s + /libs)
|
||||
(s + /src)
|
||||
(s + /build.zig)
|
||||
(s + /build.zig.zon)
|
||||
];
|
||||
};
|
||||
|
||||
|
|
|
|||
13
src/render.c
13
src/render.c
|
|
@ -240,6 +240,11 @@ void render_map(const Map *map, const Tileset *tileset) {
|
|||
Color stairs_color = color_lerp((Color){85, 80, 70, 255}, (Color){180, 160, 100, 255}, light_factor);
|
||||
Color door_color = color_lerp((Color){38, 34, 30, 255}, (Color){120, 92, 58, 255}, light_factor);
|
||||
Color door_handle_color = color_lerp((Color){42, 38, 32, 255}, (Color){145, 122, 82, 255}, light_factor);
|
||||
int is_currently_lit = brightness > 0;
|
||||
if (is_door && !is_currently_lit) {
|
||||
door_color = (Color){30, 27, 24, 255};
|
||||
door_handle_color = (Color){34, 31, 27, 255};
|
||||
}
|
||||
|
||||
switch (map->tiles[y][x]) {
|
||||
case TILE_WALL:
|
||||
|
|
@ -299,11 +304,13 @@ void render_map(const Map *map, const Tileset *tileset) {
|
|||
int open_x = swing_to_left ? x * TILE_SIZE + 1 : x * TILE_SIZE + 13;
|
||||
int px = (int)(closed_x + (open_x - closed_x) * t);
|
||||
int alpha = (int)(255 * (1.0f - t * 0.45f));
|
||||
if (!is_currently_lit)
|
||||
alpha = (int)(alpha * 0.55f);
|
||||
int width = (int)(2 + (1 - t)); // 2px closed, 1px open
|
||||
Color panel_color = door_color;
|
||||
panel_color.a = alpha;
|
||||
DrawRectangle(px, y * TILE_SIZE + 1, width, TILE_SIZE - 2, panel_color);
|
||||
if (t < 0.5f && light_factor > 0.05f) {
|
||||
if (t < 0.5f && is_currently_lit) {
|
||||
int hx = px + (swing_to_left ? -1 : width + 1);
|
||||
Color handle_color = door_handle_color;
|
||||
handle_color.a = alpha;
|
||||
|
|
@ -324,11 +331,13 @@ void render_map(const Map *map, const Tileset *tileset) {
|
|||
int open_y = swing_up ? y * TILE_SIZE + 1 : y * TILE_SIZE + 13;
|
||||
int py = (int)(closed_y + (open_y - closed_y) * t);
|
||||
int alpha = (int)(255 * (1.0f - t * 0.45f));
|
||||
if (!is_currently_lit)
|
||||
alpha = (int)(alpha * 0.55f);
|
||||
int height = (int)(2 + (1 - t)); // 2px closed, 1px open
|
||||
Color panel_color = door_color;
|
||||
panel_color.a = alpha;
|
||||
DrawRectangle(x * TILE_SIZE + 1, py, TILE_SIZE - 2, height, panel_color);
|
||||
if (t < 0.5f && light_factor > 0.05f) {
|
||||
if (t < 0.5f && is_currently_lit) {
|
||||
int hy = py + (swing_up ? -1 : height + 1);
|
||||
Color handle_color = door_handle_color;
|
||||
handle_color.a = alpha;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue