implement SetSceneGrid

This commit is contained in:
Rusty Striker 2025-07-17 19:03:46 +03:00
parent 668bef6a88
commit 529896a352
Signed by: RustyStriker
GPG key ID: 87E4D691632DFF15
3 changed files with 19 additions and 3 deletions

View file

@ -51,7 +51,8 @@ pub enum Request {
CreateScene {
title: String,
},
SceneSetGrid {
SetSceneGrid {
scene: usize,
grid_cell_size: f32,
grid_offset: [f32; 2],
},

View file

@ -25,6 +25,7 @@ pub trait GameImpl<'a, C: Character<A> + Serialize + Deserialize<'a>, A: entry::
/// the list of available scenes
fn scenes(&self) -> Vec<usize>;
fn get_scene(&self, id: usize) -> Option<&Scene>;
fn get_scene_mut(&mut self, id: usize) -> Option<&mut Scene>;
fn create_scene(&mut self, title: String);
fn scene_visible(&mut self, scene: usize, visible: bool);
fn create_token(&mut self, scene_id: usize, character: String, img_source: String, x: f32, y: f32) -> usize;
@ -208,6 +209,10 @@ impl<'a, C: Character<A> + Serialize + Deserialize<'a>, A: entry::GameEntry + Se
scene.visible_to_users = visible;
}
}
fn get_scene_mut(&mut self, id: usize) -> Option<&mut Scene> {
self.scenes.get_mut(&id)
}
}
#[derive(Serialize, Deserialize, Default, Debug, Clone)]

View file

@ -169,10 +169,20 @@ impl GameServer {
_ = broadcast.send((Some(id), scenes));
}
}
api::Request::SceneSetGrid {
api::Request::SetSceneGrid {
grid_cell_size,
grid_offset,
} => todo!(),
scene,
} => {
if *self.users.get(&id).unwrap_or(&false) {
if let Some(scene) = self.game.get_scene_mut(scene) {
if let Some(map) = scene.map.as_mut() {
map.grid_cell_size = grid_cell_size;
map.grid_offset = grid_offset;
}
}
}
}
api::Request::SceneSetVisible { scene, visible } => {
if *self.users.get(&id).unwrap_or(&false) {
self.game.scene_visible(scene, visible);