/* 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 . */ use super::{Entity, EntityContext}; use anyhow::Result; use hurrycurry_data::entities::ButtonAction; use hurrycurry_locale::TrError; use hurrycurry_protocol::{ItemLocation, Menu, PacketC, PlayerID, glam::IVec2}; #[derive(Debug, Clone)] pub struct Button { pub pos: IVec2, pub action: ButtonAction, } impl Entity for Button { fn interact( &mut self, c: EntityContext<'_>, pos: Option, _player: PlayerID, ) -> Result { if pos == Some(ItemLocation::Tile(self.pos)) { match self.action { ButtonAction::Book => { c.replies .unwrap() .push(PacketC::Menu(Menu::Book(c.serverdata.book.clone()))); } ButtonAction::VoteYes => {} ButtonAction::VoteNo => {} ButtonAction::MapSelector => { c.replies.unwrap().push(PacketC::Menu(Menu::MapSelector)); } } return Ok(true); } Ok(false) } }