aboutsummaryrefslogtreecommitdiff
path: root/server/src
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2026-03-11 21:18:12 +0100
committermetamuffin <metamuffin@disroot.org>2026-03-11 21:18:36 +0100
commit4a9314f235bd3c556cec4f70177d8f7438d59559 (patch)
treed021352543a01d1eb325e202be7ee8b9c936eda4 /server/src
parent93fbbf687de7e3b3b27e150c455cef2ac4d4c303 (diff)
downloadhurrycurry-4a9314f235bd3c556cec4f70177d8f7438d59559.tar
hurrycurry-4a9314f235bd3c556cec4f70177d8f7438d59559.tar.bz2
hurrycurry-4a9314f235bd3c556cec4f70177d8f7438d59559.tar.zst
buttons server-side code
Diffstat (limited to 'server/src')
-rw-r--r--server/src/entity/button.rs (renamed from server/src/entity/book.rs)23
-rw-r--r--server/src/entity/mod.rs6
2 files changed, 21 insertions, 8 deletions
diff --git a/server/src/entity/book.rs b/server/src/entity/button.rs
index e8456591..74726253 100644
--- a/server/src/entity/book.rs
+++ b/server/src/entity/button.rs
@@ -17,22 +17,35 @@
*/
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 Book(pub IVec2);
+pub struct Button {
+ pub pos: IVec2,
+ pub action: ButtonAction,
+}
-impl Entity for Book {
+impl Entity for Button {
fn interact(
&mut self,
c: EntityContext<'_>,
pos: Option<ItemLocation>,
_player: PlayerID,
) -> Result<bool, TrError> {
- if pos == Some(ItemLocation::Tile(self.0)) {
- if let Some(r) = c.replies {
- r.push(PacketC::Menu(Menu::Book(c.serverdata.book.clone())));
+ 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);
}
diff --git a/server/src/entity/mod.rs b/server/src/entity/mod.rs
index 8a78202b..604daf98 100644
--- a/server/src/entity/mod.rs
+++ b/server/src/entity/mod.rs
@@ -15,8 +15,8 @@
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
-mod book;
pub mod bot;
+mod button;
mod campaign;
mod conveyor;
mod ctf_minigame;
@@ -39,7 +39,7 @@ use crate::{
scoreboard::ScoreboardStore,
};
use anyhow::Result;
-use book::Book;
+use button::Button;
use campaign::{Gate, Map};
use conveyor::Conveyor;
use customers::Customers;
@@ -111,7 +111,7 @@ pub fn construct_entity(decl: &EntityDecl) -> DynEntity {
tag_item,
blocker_tile,
} => Box::new(TagMinigame::new(tag_item, blocker_tile)),
- EntityDecl::Book { pos } => Box::new(Book(pos)),
+ EntityDecl::Button { pos, action } => Box::new(Button { pos, action }),
EntityDecl::ItemPortal { from, to } => Box::new(ItemPortal { from, to }),
EntityDecl::PlayerPortal { from, to } => Box::new(PlayerPortal { from, to }),
EntityDecl::Conveyor { from, to, speed } => Box::new(Conveyor {