90 lines
2.6 KiB
Plaintext
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,
|
|
};
|
|
}
|
|
}
|