cleanup
This commit is contained in:
parent
5d1ca4a96d
commit
69bc1714f4
2 changed files with 31 additions and 60 deletions
|
@ -17,7 +17,6 @@ pub fn Game() -> impl IntoView {
|
||||||
let (game_players, set_game_players) = create_signal(vec![]);
|
let (game_players, set_game_players) = create_signal(vec![]);
|
||||||
let (game_czar, set_game_czar) = create_signal("".to_string());
|
let (game_czar, set_game_czar) = create_signal("".to_string());
|
||||||
let (game_black, set_game_black) = create_signal(("".to_string(), 0u8));
|
let (game_black, set_game_black) = create_signal(("".to_string(), 0u8));
|
||||||
let (_game_white, set_game_white) = create_signal(vec![]);
|
|
||||||
let (selected_cards_ordered, set_selected_cards_ordered) = create_signal::<Vec<String>>(vec![]);
|
let (selected_cards_ordered, set_selected_cards_ordered) = create_signal::<Vec<String>>(vec![]);
|
||||||
let (player_hand, set_player_hand) = create_signal::<Vec<String>>(vec![]);
|
let (player_hand, set_player_hand) = create_signal::<Vec<String>>(vec![]);
|
||||||
let (player_white, set_player_white) =
|
let (player_white, set_player_white) =
|
||||||
|
@ -81,7 +80,6 @@ pub fn Game() -> impl IntoView {
|
||||||
set_game_players(game.players.clone());
|
set_game_players(game.players.clone());
|
||||||
set_game_czar(game.czar.clone());
|
set_game_czar(game.czar.clone());
|
||||||
set_game_black(game.black.clone());
|
set_game_black(game.black.clone());
|
||||||
set_game_white(game.white.clone());
|
|
||||||
|
|
||||||
// Load hand
|
// Load hand
|
||||||
for card in game.white {
|
for card in game.white {
|
||||||
|
|
|
@ -225,6 +225,7 @@ impl GameHandler {
|
||||||
.unwrap()
|
.unwrap()
|
||||||
.clone();
|
.clone();
|
||||||
|
|
||||||
|
// Check if player already exists
|
||||||
if !this_game
|
if !this_game
|
||||||
.read()
|
.read()
|
||||||
.unwrap()
|
.unwrap()
|
||||||
|
@ -236,10 +237,36 @@ impl GameHandler {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Send updates for all players
|
// Send updates for all players
|
||||||
|
self.send_game_state_update(id).await;
|
||||||
|
|
||||||
|
// Broadcast game browser update
|
||||||
|
self.state
|
||||||
|
.broadcast_tx
|
||||||
|
.send(meta_games_browser_update(&self.state))
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
|
// Broadcast server meta update
|
||||||
|
self.state
|
||||||
|
.broadcast_tx
|
||||||
|
.send(meta_server_summary_update(&self.state))
|
||||||
|
.unwrap();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Send game state update for all players of a game
|
||||||
|
async fn send_game_state_update(&self, game_id: String) {
|
||||||
|
let this_game = self
|
||||||
|
.state
|
||||||
|
.games
|
||||||
|
.read()
|
||||||
|
.unwrap()
|
||||||
|
.get(&game_id)
|
||||||
|
.unwrap()
|
||||||
|
.clone();
|
||||||
|
|
||||||
for player in this_game.read().unwrap().players.values() {
|
for player in this_game.read().unwrap().players.values() {
|
||||||
// Create update for user's game view
|
// Create update for user's game view
|
||||||
let meta = GameStateMeta {
|
let meta = GameStateMeta {
|
||||||
uuid: id.clone(),
|
uuid: game_id.clone(),
|
||||||
name: this_game.read().unwrap().name.clone(),
|
name: this_game.read().unwrap().name.clone(),
|
||||||
host: this_game.read().unwrap().host.read().unwrap().name.clone(),
|
host: this_game.read().unwrap().host.read().unwrap().name.clone(),
|
||||||
players: this_game
|
players: this_game
|
||||||
|
@ -270,18 +297,6 @@ impl GameHandler {
|
||||||
let user_tx = player.user.read().unwrap().tx.clone();
|
let user_tx = player.user.read().unwrap().tx.clone();
|
||||||
tokio::spawn(async move { user_tx.send(msg).await });
|
tokio::spawn(async move { user_tx.send(msg).await });
|
||||||
}
|
}
|
||||||
|
|
||||||
// Broadcast game browser update
|
|
||||||
self.state
|
|
||||||
.broadcast_tx
|
|
||||||
.send(meta_games_browser_update(&self.state))
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
// Broadcast server meta update
|
|
||||||
self.state
|
|
||||||
.broadcast_tx
|
|
||||||
.send(meta_server_summary_update(&self.state))
|
|
||||||
.unwrap();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// Creates a new game
|
/// Creates a new game
|
||||||
|
@ -317,51 +332,7 @@ impl GameHandler {
|
||||||
// Don't forget to create the host player!!!
|
// Don't forget to create the host player!!!
|
||||||
new_game_object.create_player(host.clone());
|
new_game_object.create_player(host.clone());
|
||||||
|
|
||||||
// Create update for user's game view
|
let game_id = new_game_object.uuid.to_string();
|
||||||
let meta = GameStateMeta {
|
|
||||||
uuid: new_game_object.uuid.to_string(),
|
|
||||||
name: new_game_object.name.clone(),
|
|
||||||
host: new_game_object.host.read().unwrap().name.clone(),
|
|
||||||
players: new_game_object
|
|
||||||
.players
|
|
||||||
.iter()
|
|
||||||
.map(|player| {
|
|
||||||
self.state
|
|
||||||
.users_by_id
|
|
||||||
.read()
|
|
||||||
.unwrap()
|
|
||||||
.get(player.0)
|
|
||||||
.unwrap()
|
|
||||||
.read()
|
|
||||||
.unwrap()
|
|
||||||
.name
|
|
||||||
.clone()
|
|
||||||
})
|
|
||||||
.collect(),
|
|
||||||
czar: new_game_object.host.read().unwrap().name.clone(),
|
|
||||||
black: (
|
|
||||||
new_game_object.current_black.text.clone(),
|
|
||||||
new_game_object.current_black.pick,
|
|
||||||
),
|
|
||||||
white: new_game_object
|
|
||||||
.players
|
|
||||||
.get(&new_game_object.host.read().unwrap().uuid)
|
|
||||||
.unwrap()
|
|
||||||
.white
|
|
||||||
.iter()
|
|
||||||
.map(|card| WhiteCardMeta {
|
|
||||||
uuid: card.uuid.to_string(),
|
|
||||||
text: card.text.clone(),
|
|
||||||
})
|
|
||||||
.collect(),
|
|
||||||
packs: new_game_object.packs.clone(),
|
|
||||||
};
|
|
||||||
|
|
||||||
// Send user's update
|
|
||||||
let tx = host.read().unwrap().tx.clone();
|
|
||||||
tx.send(serde_json::to_string(&meta).unwrap())
|
|
||||||
.await
|
|
||||||
.unwrap();
|
|
||||||
|
|
||||||
// Add game to active list
|
// Add game to active list
|
||||||
self.state.games.write().unwrap().insert(
|
self.state.games.write().unwrap().insert(
|
||||||
|
@ -369,6 +340,8 @@ impl GameHandler {
|
||||||
Arc::new(RwLock::new(new_game_object)),
|
Arc::new(RwLock::new(new_game_object)),
|
||||||
);
|
);
|
||||||
|
|
||||||
|
self.send_game_state_update(game_id).await;
|
||||||
|
|
||||||
// Broadcast game browser update
|
// Broadcast game browser update
|
||||||
self.state
|
self.state
|
||||||
.broadcast_tx
|
.broadcast_tx
|
||||||
|
|
Loading…
Add table
Reference in a new issue