diff options
Diffstat (limited to 'pixel-client/src/render/font.rs')
-rw-r--r-- | pixel-client/src/render/font.rs | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/pixel-client/src/render/font.rs b/pixel-client/src/render/font.rs deleted file mode 100644 index 60d27083..00000000 --- a/pixel-client/src/render/font.rs +++ /dev/null @@ -1,68 +0,0 @@ -/* - Hurry Curry! - a game about cooking - Copyright (C) 2025 Hurry Curry! Contributors - - This program is free software: you can redistribute it and/or modify - it under the terms of the GNU Affero General Public License as published by - the Free Software Foundation, version 3 of the License only. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU Affero General Public License for more details. - - You should have received a copy of the GNU Affero General Public License - along with this program. If not, see <https://www.gnu.org/licenses/>. - -*/ -use super::{sprite::SpriteDraw, AtlasLayout, Renderer}; -use hurrycurry_protocol::glam::Vec2; -use sdl2::rect::Rect; - -pub struct FontTextures { - pub glyphs: [Rect; 128], -} - -impl FontTextures { - pub fn init(layout: &AtlasLayout) -> Self { - FontTextures { - glyphs: (0..128) - .map(|n| { - layout - .get(&format!("letter_{n}+a")) - .copied() - .unwrap_or(Rect::new(0, 0, 0, 0)) - }) - .collect::<Vec<_>>() - .try_into() - .expect("some letters are missing in the font"), - } - } -} - -impl Renderer<'_> { - pub fn draw_text( - &mut self, - position: Vec2, - text: &str, - scale: f32, - tint: Option<[u8; 4]>, - ) -> Vec2 { - let mut cursor = position; - let mut line_height = 0f32; - for c in text.chars() { - if c == '\n' { - cursor.y += line_height; - cursor.x = position.x - } - if (c as u32) < 128 { - let r = self.font_textures.glyphs[c as usize]; - let size = Vec2::new(r.width() as f32, r.height() as f32) * scale; - self.draw_ui(SpriteDraw::overlay(r, cursor, size, tint)); - cursor.x += size.x; - line_height = line_height.max(size.y) - } - } - (cursor - position.y) + Vec2::Y * line_height - } -} |