const std = @import("std");

pub usingnamespace @cImport({
    @cInclude("raylib.h");
    // @cDefine("RAYGUI_IMPLEMENTATION", {});
    // @cInclude("raygui.h");
});

const r = @This();

pub fn DrawTextCenteredEx(font: r.Font, text: [*c]const u8, position: r.Vector2, fontSize: f32, spacing: f32, tint: r.Color) void {
    const offset = r.MeasureTextEx(font, text, fontSize, spacing);
    r.DrawTextEx(
        font,
        text,
        r.Vector2{ .x = position.x - offset.x / 2, .y = position.y - offset.y / 2 },
        fontSize,
        spacing,
        tint,
    );
}

pub fn getTmxColor(color: u32) r.Color {
    return r.GetColor(std.math.rotl(u32, color, 8));
}

// const Allocator = std.mem.Allocator;
// const RaylibAllocator = struct {
//     ptr: *anyopaque,
//     pub fn init() Allocator {
//         return Allocator{
//             .ptr = undefined,
//             .vtable = &Allocator.VTable{
//                 .alloc = alloc,
//                 .free = undefined,
//                 .resize = undefined,
//             },
//         };
//     }
//     fn alloc(_: *anyopaque, len: usize, _: u8, _: usize) ?*anyopaque {
//         return r.MemAlloc(len);
//     }
//     fn free(_: *anyopaque, buf: []u8, _: u8, _: usize) void {
//         return r.MemFree(buf);
//     }
//     fn resize(_: *anyopaque, buf: []u8, _: u8, new_size: usize, _: usize) void {
//         return r.MemRealloc(buf, new_size);
//     }
// };
