use crate::bake;
use crate::ecs::{FontHandle, PipelineContext};
use crate::resource::{FontTable, ResourceEntry};
use crate::result::CnResult;
pub const HUD_FONT_SIZE_PX: u32 = 20;
#[derive(Debug, Clone, Copy)]
pub struct HudFont(pub FontHandle);
pub fn hud_font(ctx: &mut PipelineContext) -> Result<FontHandle, CnResult> {
if let Some(HudFont(handle)) = ctx.resource::<HudFont>().copied() {
return Ok(handle);
}
let payload = bake::font::compile(
bake::font::BUILTIN_FONT_BYTES,
HUD_FONT_SIZE_PX,
bake::font::BUILTIN_FONT_FILE,
)
.map_err(|_| CnResult::InvalidArgument)?;
if ctx.resource::<FontTable>().is_none() {
ctx.insert_resource(FontTable::default());
}
let table = ctx
.resource_mut::<FontTable>()
.ok_or(CnResult::InvalidState)?;
let handle = FontHandle(table.append(ResourceEntry::baked(payload)));
ctx.insert_resource(HudFont(handle));
Ok(handle)
}