mirror of
https://github.com/PixelGuys/Cubyz.git
synced 2025-08-03 11:17:05 -04:00
72 lines
2.1 KiB
Zig
72 lines
2.1 KiB
Zig
const std = @import("std");
|
|
|
|
const main = @import("main");
|
|
const Player = main.game.Player;
|
|
const ItemStack = main.items.ItemStack;
|
|
const Vec2f = main.vec.Vec2f;
|
|
const Texture = main.graphics.Texture;
|
|
|
|
const gui = @import("../gui.zig");
|
|
const GuiComponent = gui.GuiComponent;
|
|
const GuiWindow = gui.GuiWindow;
|
|
const Button = GuiComponent.Button;
|
|
const HorizontalList = GuiComponent.HorizontalList;
|
|
const VerticalList = GuiComponent.VerticalList;
|
|
const ItemSlot = GuiComponent.ItemSlot;
|
|
|
|
const hotbar = @import("hotbar.zig");
|
|
|
|
pub var window = GuiWindow{
|
|
.relativePosition = .{
|
|
.{.attachedToWindow = .{.reference = &hotbar.window, .selfAttachmentPoint = .middle, .otherAttachmentPoint = .middle}},
|
|
.{.attachedToWindow = .{.reference = &hotbar.window, .selfAttachmentPoint = .upper, .otherAttachmentPoint = .lower}},
|
|
},
|
|
.contentSize = Vec2f{64*10, 64*3},
|
|
.scale = 0.75,
|
|
};
|
|
|
|
const padding: f32 = 8;
|
|
|
|
var craftingIcon: Texture = undefined;
|
|
|
|
pub fn init() void {
|
|
craftingIcon = Texture.initFromFile("assets/cubyz/ui/inventory/crafting_icon.png");
|
|
}
|
|
|
|
pub fn deinit() void {
|
|
craftingIcon.deinit();
|
|
}
|
|
|
|
var itemSlots: [20]*ItemSlot = undefined;
|
|
|
|
pub fn onOpen() void {
|
|
const list = VerticalList.init(.{padding, padding + 16}, 300, 0);
|
|
// Some miscellanious slots and buttons:
|
|
// TODO: armor slots, backpack slot + stack-based backpack inventory, other items maybe?
|
|
{
|
|
const row = HorizontalList.init();
|
|
row.add(Button.initIcon(.{0, 0}, .{32, 32}, craftingIcon, true, gui.openWindowCallback("inventory_crafting")));
|
|
list.add(row);
|
|
}
|
|
for(0..2) |y| {
|
|
const row = HorizontalList.init();
|
|
for(0..10) |x| {
|
|
const index: usize = 12 + y*10 + x;
|
|
const slot = ItemSlot.init(.{0, 0}, Player.inventory, @intCast(index), .default, .normal);
|
|
itemSlots[index - 12] = slot;
|
|
row.add(slot);
|
|
}
|
|
list.add(row);
|
|
}
|
|
list.finish(.center);
|
|
window.rootComponent = list.toComponent();
|
|
window.contentSize = window.rootComponent.?.pos() + window.rootComponent.?.size() + @as(Vec2f, @splat(padding));
|
|
gui.updateWindowPositions();
|
|
}
|
|
|
|
pub fn onClose() void {
|
|
if(window.rootComponent) |*comp| {
|
|
comp.deinit();
|
|
}
|
|
}
|