Release 0.1.0

This commit is contained in:
xeon
2026-02-02 20:53:22 +03:00
commit 25660300dd
152 changed files with 882089 additions and 0 deletions

View File

@@ -0,0 +1,45 @@
const Player = @This();
const std = @import("std");
const meta = std.meta;
const Allocator = std.mem.Allocator;
pub const Base = @import("Player/Base.zig");
pub const GameVars = @import("Player/GameVars.zig");
pub const Unlock = @import("Player/Unlock.zig");
pub const CharBag = @import("Player/CharBag.zig");
pub const ItemBag = @import("Player/ItemBag.zig");
pub const Bitset = @import("Player/Bitset.zig");
base: Base,
game_vars: GameVars,
unlock: Unlock,
char_bag: CharBag,
item_bag: ItemBag,
bitset: Bitset,
pub fn deinit(player: *Player, gpa: Allocator) void {
player.game_vars.deinit(gpa);
player.unlock.deinit(gpa);
player.char_bag.deinit(gpa);
player.item_bag.deinit(gpa);
}
// Describes the dependency on an individual player component.
pub fn Component(comptime tag: meta.FieldEnum(Player)) type {
return struct {
pub const player_component_tag = tag;
data: *@FieldType(Player, @tagName(tag)),
};
}
pub fn isComponent(comptime T: type) bool {
if (!@hasDecl(T, "player_component_tag")) return false;
return T == Component(T.player_component_tag);
}
pub fn getComponentByType(player: *Player, comptime T: type) T {
return .{ .data = &@field(player, @tagName(T.player_component_tag)) };
}