use super::super::leak;
use std::cell::Cell;
use std::ffi::c_int;
use std::mem::MaybeUninit;
use std::ptr::null_mut;
thread_local! {
static GLOBALS: Cell<*mut sys::CGlobalVars> = const { Cell::new(null_mut()) };
}
pub unsafe extern "C" fn global_vars(_: *mut sys::IPlayerInfoManager) -> *mut sys::CGlobalVars {
GLOBALS.get()
}
pub fn serve_global_vars(max_clients: c_int) -> *mut sys::CGlobalVars {
let globals = leak(MaybeUninit::<sys::CGlobalVars>::zeroed()).cast::<sys::CGlobalVars>();
unsafe { (&raw mut (*globals)._base.maxClients).write(max_clients) };
GLOBALS.set(globals);
globals
}