2024-08-13 18:16:31 -04:00
|
|
|
// use crate::components::websocket::WebSocketContext;
|
2024-08-09 01:21:04 -04:00
|
|
|
use leptos::*;
|
2024-08-09 02:57:27 -04:00
|
|
|
use lib::*;
|
2024-08-09 01:21:04 -04:00
|
|
|
|
|
|
|
#[component]
|
|
|
|
pub fn Game() -> impl IntoView {
|
2024-08-13 18:16:31 -04:00
|
|
|
// let websocket = expect_context::<WebSocketContext>();
|
2024-08-09 02:57:27 -04:00
|
|
|
let game_meta = expect_context::<ReadSignal<Option<GameMeta>>>();
|
|
|
|
|
|
|
|
let (game_name, set_game_name) = create_signal("".to_string());
|
|
|
|
let (game_host, set_game_host) = create_signal("".to_string());
|
2024-08-10 19:50:26 -04:00
|
|
|
let (game_players, set_game_players) = create_signal(vec![]);
|
|
|
|
let (game_czar, set_game_czar) = create_signal("".to_string());
|
2024-08-12 17:14:27 -04:00
|
|
|
let (game_black, set_game_black) = create_signal(("".to_string(), 0u8));
|
2024-08-10 19:50:26 -04:00
|
|
|
let (game_white, set_game_white) = create_signal(vec![]);
|
2024-08-09 02:57:27 -04:00
|
|
|
|
|
|
|
create_effect(move |_| {
|
|
|
|
if let Some(game) = game_meta() {
|
2024-08-10 19:50:26 -04:00
|
|
|
set_game_name(game.name.clone());
|
|
|
|
set_game_host(game.host.clone());
|
|
|
|
set_game_players(game.players.clone());
|
|
|
|
set_game_czar(game.czar.clone());
|
|
|
|
set_game_black(game.black.clone());
|
|
|
|
set_game_white(game.white.clone());
|
2024-08-09 02:57:27 -04:00
|
|
|
}
|
|
|
|
});
|
|
|
|
|
2024-08-09 01:21:04 -04:00
|
|
|
view! {
|
|
|
|
<div class="p-1">
|
2024-08-13 18:16:31 -04:00
|
|
|
<div class="relative">
|
|
|
|
<h2 class="text-2xl">Game</h2>
|
|
|
|
<span>
|
|
|
|
<p>Name: {move || game_name()}</p>
|
|
|
|
<p>Host: {move || game_host()}</p>
|
|
|
|
<p>Czar: {move || game_czar()}</p>
|
|
|
|
</span>
|
|
|
|
<span class="absolute top-0 right-0">
|
|
|
|
<p>Players:</p>
|
|
|
|
<ul>
|
|
|
|
{move || {
|
|
|
|
game_players()
|
|
|
|
.iter()
|
|
|
|
.map(|player| view! { <li>{player}</li> })
|
|
|
|
.collect_view()
|
|
|
|
}}
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
</span>
|
|
|
|
</div>
|
|
|
|
<div class="relative m-auto w-40 h-60 text-white bg-black rounded-lg">
|
2024-08-12 18:36:26 -04:00
|
|
|
<p class="p-4">{move || game_black().0}</p>
|
|
|
|
<p class="absolute right-4 bottom-4">Pick: {move || game_black().1}</p>
|
|
|
|
</div>
|
2024-08-13 18:16:31 -04:00
|
|
|
<div class="inline-flex flex-wrap justify-center">
|
2024-08-12 18:36:26 -04:00
|
|
|
{move || {
|
|
|
|
game_white()
|
|
|
|
.iter()
|
|
|
|
.map(|card| {
|
|
|
|
view! {
|
|
|
|
<div class="relative m-2 w-40 h-60 text-black bg-white rounded-lg">
|
|
|
|
<p class="p-4">{card}</p>
|
|
|
|
</div>
|
|
|
|
}
|
|
|
|
})
|
|
|
|
.collect_view()
|
|
|
|
}}
|
|
|
|
|
|
|
|
</div>
|
2024-08-09 01:21:04 -04:00
|
|
|
</div>
|
|
|
|
}
|
|
|
|
}
|