From 5d6b5049c2a34a3f8abe725d4a871ba84a0dd714 Mon Sep 17 00:00:00 2001 From: salmonik Date: Mon, 24 Aug 2026 14:48:12 +0200 Subject: TLS transport and games framework on client and server --- src/bin/server/games/registry.rs | 55 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 src/bin/server/games/registry.rs (limited to 'src/bin/server/games/registry.rs') diff --git a/src/bin/server/games/registry.rs b/src/bin/server/games/registry.rs new file mode 100644 index 0000000..e77a138 --- /dev/null +++ b/src/bin/server/games/registry.rs @@ -0,0 +1,55 @@ +#![allow(dead_code)] + +use crate::games::traits::Game; +use std::collections::HashMap; +use std::sync::{Arc, Mutex}; + +pub type GameRef = Arc; + +pub struct GameRegistry { + games: Arc>>, +} + +impl GameRegistry { + pub fn new() -> Self { + Self { + games: Arc::new(Mutex::new(HashMap::new())), + } + } + + pub fn register_game(&self, game: G) { + let game_type = game.game_type().to_string(); + let mut games = self.games.lock().unwrap(); + games.insert(game_type, Arc::new(game)); + } + + pub fn get_game(&self, game_type: &str) -> Option { + let games = self.games.lock().unwrap(); + games.get(game_type).cloned() + } + + pub fn list_games(&self) -> Vec { + let games = self.games.lock().unwrap(); + games.keys().cloned().collect() + } + + pub fn game_exists(&self, game_type: &str) -> bool { + let games = self.games.lock().unwrap(); + games.contains_key(game_type) + } +} + +// Global registry instance +use crate::games::slots::SlotsGame; +use once_cell::sync::Lazy; + +static GAME_REGISTRY: Lazy = Lazy::new(|| { + let registry = GameRegistry::new(); + // Register games here + registry.register_game(SlotsGame::new()); + registry +}); + +pub fn get_game_registry() -> &'static GameRegistry { + &GAME_REGISTRY +} -- cgit v1.2.3