2026-04-03 11:46:18 +03:00

90 lines
2.6 KiB
Plaintext

#import,dir "../../modules/sokol-jai/sokol/app"(DEBUG = !FLAG_RELEASE_BUILD);
#import,dir "../../modules/sokol-jai/sokol/gfx"(DEBUG = !FLAG_RELEASE_BUILD);
#import,dir "../../modules/sokol-jai/sokol/gl"(DEBUG = !FLAG_RELEASE_BUILD);
#import,dir "../../modules/sokol-jai/sokol/glue"(DEBUG = !FLAG_RELEASE_BUILD);
#import,dir "../../modules/sokol-jai/sokol/shape"(DEBUG = !FLAG_RELEASE_BUILD);
#import,dir "../../modules/sokol-jai/sokol/fontstash";
#import,dir "../../modules/sokol-jai/sokol/log"(DEBUG = !FLAG_RELEASE_BUILD);
#import,dir "../../modules/sokol-jai/sokol/time"(DEBUG = !FLAG_RELEASE_BUILD);
#import,dir "../../modules/sokol-jai/sokol/fetch"(DEBUG = !FLAG_RELEASE_BUILD);
#import,dir "../../modules/sokol-jai/sokol/audio"(DEBUG = !FLAG_RELEASE_BUILD);
#load "../main.jai";
default_context: #Context;
default_allocator: Allocator;
temporary_storage: Temporary_Storage;
temporary_storage_data: [TEMPORARY_STORAGE_SIZE] u8 #align 64;
sapp_init :: () {
platconf := get_plat_conf();
default_context.temporary_storage = *temporary_storage;
temporary_storage.data = temporary_storage_data.data;
temporary_storage.size = temporary_storage_data.count;
temporary_storage.original_data = temporary_storage_data.data;
temporary_storage.original_size = temporary_storage_data.count;
default_allocator = default_context.allocator;
push_context default_context {
context.logger = logger;
wi := get_window_info();
sapp_run(*(sapp_desc.{
init_cb = init_plat,
frame_cb = frame_plat,
cleanup_cb = cleanup_plat,
event_cb = event_plat,
width = wi.width,
height = wi.height,
window_title = wi.title,
// icon = .{ sokol_default = true },
logger = .{ func = slog_func },
sample_count = 1, // I think I'll end up pixelifying the whole thing, so I don't think we need MSAA.
}));
}
}
init_plat :: () #c_call {
push_context,defer_pop default_context;
init();
}
frame_plat :: () #c_call {
push_context,defer_pop default_context;
frame();
}
event_plat :: (e: *sapp_event) #c_call {
push_context,defer_pop default_context;
handle_event(e);
}
cleanup_plat :: () #c_call {
push_context,defer_pop default_context;
cleanup();
}
Platform_Conf :: struct {
sample_count: s32;
}
get_plat_conf :: () -> Platform_Conf {
#if OS == .WASM {
return .{
sample_count = 1,
};
}
#if OS == .LINUX {
return .{
sample_count = 4,
};
}
#if OS == .MACOS {
return .{
sample_count = 4,
};
}
}