From e8bf4d7dde7d4f450458deb0612eb3bc14994901 Mon Sep 17 00:00:00 2001 From: LLLL Colonq Date: Thu, 6 Nov 2025 23:50:33 -0500 Subject: Update --- crates/renderer/src/overlay/tcg.rs | 108 +++++++++++++++++++------------------ 1 file changed, 55 insertions(+), 53 deletions(-) (limited to 'crates/renderer/src/overlay/tcg.rs') diff --git a/crates/renderer/src/overlay/tcg.rs b/crates/renderer/src/overlay/tcg.rs index 1ec74ca..5c6c16a 100644 --- a/crates/renderer/src/overlay/tcg.rs +++ b/crates/renderer/src/overlay/tcg.rs @@ -2,7 +2,7 @@ use teleia::*; use image::EncodableLayout; use glow::HasContext; -use crate::{fig, overlay}; +use crate::overlay; pub const WIDTH: f32 = 320.0; pub const HEIGHT: f32 = 450.0; @@ -64,60 +64,62 @@ impl overlay::Overlay for Overlay { fn reset(&mut self, ctx: &context::Context, st: &mut state::State, ost: &mut overlay::State) -> Erm<()> { Ok(()) } - fn handle_binary(&mut self, ctx: &context::Context, st: &mut state::State, ost: &mut overlay::State, msg: fig::BinaryMessage) -> Erm<()> { + fn handle_binary(&mut self, ctx: &context::Context, st: &mut state::State, ost: &mut overlay::State, msg: &fig::BinaryMessage) -> Erm<()> { match &*msg.event { b"overlay tcg generate" => { - let s = std::str::from_utf8(&msg.data)?.to_owned(); - let mut sp = s.split("\t"); - let id = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); - let name = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); - let ty = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); - let depicted_subject = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); - let element = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); - let color = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); - log::info!("{} {} {}", &color[1..=2], &color[3..=4], &color[5..=6]); - let r = i64::from_str_radix(&color[1..=2], 16)?; - let g = i64::from_str_radix(&color[3..=4], 16)?; - let b = i64::from_str_radix(&color[5..=6], 16)?; - let faction = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); - let equity = sp.next().ok_or(Error::NotEnoughFields)?.parse()?; - let boost_level = sp.next().ok_or(Error::NotEnoughFields)?.parse()?; - let rarity = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); - let rarity_level = sp.next().ok_or(Error::NotEnoughFields)?.parse()?; - let body_text = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); - let base_image_name = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); - let flags = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); - unsafe { - let img = image::ImageReader::open(format!("crates/renderer/src/assets/textures/tcg/bases/{}.png", base_image_name))?.decode()?.into_rgba8(); - self.texture.bind(ctx); - ctx.gl.tex_image_2d( - glow::TEXTURE_2D, - 0, - glow::RGBA as i32, - img.width() as i32, - img.height() as i32, - 0, - glow::RGBA, - glow::UNSIGNED_BYTE, - Some(&img.as_bytes()), - ); - ctx.gl.generate_mipmap(glow::TEXTURE_2D); - } - self.card = Some(Card { - name, - ty, - depicted_subject, - element, - color: glam::Vec4::new(r as f32 / 255.0, g as f32 / 255.0, b as f32 / 255.0, 1.0), - faction, - equity, - boost_level, - rarity, - rarity_level, - body_text, - base_image_name, - flags, - }); + let res: Erm<()> = (|| { + let s = std::str::from_utf8(&msg.data)?.to_owned(); + let mut sp = s.split("\t"); + let id = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); + let name = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); + let ty = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); + let depicted_subject = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); + let element = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); + let color = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); + let r = i64::from_str_radix(&color[1..=2], 16)?; + let g = i64::from_str_radix(&color[3..=4], 16)?; + let b = i64::from_str_radix(&color[5..=6], 16)?; + let faction = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); + let equity = sp.next().ok_or(Error::NotEnoughFields)?.parse()?; + let boost_level = sp.next().ok_or(Error::NotEnoughFields)?.parse()?; + let rarity = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); + let rarity_level = sp.next().ok_or(Error::NotEnoughFields)?.parse()?; + let body_text = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); + let base_image_name = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); + let flags = sp.next().ok_or(Error::NotEnoughFields)?.to_owned(); + unsafe { + let img = image::ImageReader::open(format!("crates/renderer/src/assets/textures/tcg/bases/{}.png", base_image_name))?.decode()?.into_rgba8(); + self.texture.bind(ctx); + ctx.gl.tex_image_2d( + glow::TEXTURE_2D, + 0, + glow::RGBA as i32, + img.width() as i32, + img.height() as i32, + 0, + glow::RGBA, + glow::UNSIGNED_BYTE, + Some(&img.as_bytes()), + ); + ctx.gl.generate_mipmap(glow::TEXTURE_2D); + } + self.card = Some(Card { + name, + ty, + depicted_subject, + element, + color: glam::Vec4::new(r as f32 / 255.0, g as f32 / 255.0, b as f32 / 255.0, 1.0), + faction, + equity, + boost_level, + rarity, rarity_level, + body_text, + base_image_name, + flags, + }); + Ok(()) + })(); + if let Err(e) = res { log::warn!("malformed TCG generate: {}", e); } }, _ => {}, } -- cgit v1.2.3