summaryrefslogtreecommitdiffstats
path: root/src/bin/server/games/registry.rs
diff options
context:
space:
mode:
authorsalmonik <salmonik@tuta.io>2026-10-28 22:28:05 +0100
committersalmonik <salmonik@tuta.io>2026-10-28 22:28:05 +0100
commitea5e7d336719571e51ef14478ab603e71126e3d8 (patch)
tree4fb59337501f798e6591701e52b9e785307efd63 /src/bin/server/games/registry.rs
parentFix TUI: render_lines 6 for correct MoveUp, drain buffered events before clea... (diff)
downloadzagan-bet-ea5e7d336719571e51ef14478ab603e71126e3d8.tar.gz
zagan-bet-ea5e7d336719571e51ef14478ab603e71126e3d8.zip
v0.2.2: split client/server logic into the library
Diffstat (limited to 'src/bin/server/games/registry.rs')
-rw-r--r--src/bin/server/games/registry.rs55
1 files changed, 0 insertions, 55 deletions
diff --git a/src/bin/server/games/registry.rs b/src/bin/server/games/registry.rs
deleted file mode 100644
index e77a138..0000000
--- a/src/bin/server/games/registry.rs
+++ /dev/null
@@ -1,55 +0,0 @@
1#![allow(dead_code)]
2
3use crate::games::traits::Game;
4use std::collections::HashMap;
5use std::sync::{Arc, Mutex};
6
7pub type GameRef = Arc<dyn Game + Send + Sync>;
8
9pub struct GameRegistry {
10 games: Arc<Mutex<HashMap<String, GameRef>>>,
11}
12
13impl GameRegistry {
14 pub fn new() -> Self {
15 Self {
16 games: Arc::new(Mutex::new(HashMap::new())),
17 }
18 }
19
20 pub fn register_game<G: Game + Send + Sync + 'static>(&self, game: G) {
21 let game_type = game.game_type().to_string();
22 let mut games = self.games.lock().unwrap();
23 games.insert(game_type, Arc::new(game));
24 }
25
26 pub fn get_game(&self, game_type: &str) -> Option<GameRef> {
27 let games = self.games.lock().unwrap();
28 games.get(game_type).cloned()
29 }
30
31 pub fn list_games(&self) -> Vec<String> {
32 let games = self.games.lock().unwrap();
33 games.keys().cloned().collect()
34 }
35
36 pub fn game_exists(&self, game_type: &str) -> bool {
37 let games = self.games.lock().unwrap();
38 games.contains_key(game_type)
39 }
40}
41
42// Global registry instance
43use crate::games::slots::SlotsGame;
44use once_cell::sync::Lazy;
45
46static GAME_REGISTRY: Lazy<GameRegistry> = Lazy::new(|| {
47 let registry = GameRegistry::new();
48 // Register games here
49 registry.register_game(SlotsGame::new());
50 registry
51});
52
53pub fn get_game_registry() -> &'static GameRegistry {
54 &GAME_REGISTRY
55}