use log::info; use spacetimedb::{ReducerContext, Table, reducer}; use crate::tables::{player::player, *}; mod game; mod tables; #[reducer(client_connected)] pub fn login_or_add_player(ctx: &ReducerContext) { let identity = ctx.sender; // TODO remove player on disconnect if let Ok(player) = ctx.db.player().try_insert(Player { identity, id: 0, name: None, lobby_id: 0, hand_id: 0, pond_id: 0, ready: false, }) { info!("added player: {:?}", player); } else { let player = ctx.db.player().identity().find(identity).unwrap(); info!("player {:?} has reconnected", player) } } // #[reducer(init)] // pub fn init(_ctx: &ReducerContext) { // // Called when the module is initially published // } // #[reducer(client_connected)] // pub fn identity_connected(_ctx: &ReducerContext) { // // Called everytime a new client connects // } // #[reducer(client_disconnected)] // pub fn identity_disconnected(_ctx: &ReducerContext) { // // Called everytime a client disconnects // } // #[reducer] // pub fn add(ctx: &ReducerContext, name: String) { // ctx.db.player().insert(Player { name }); // } // #[reducer] // pub fn say_hello(ctx: &ReducerContext) { // for person in ctx.db.person().iter() { // log::info!("Hello, {}!", person.name); // } // log::info!("Hello, World!"); // } // #[reducer] // pub fn set_name(ctx: &ReducerContext, name: String) -> Result<(), String> { // if name.is_empty() { // return Err("names must not be empty".into()); // } // if let Some(player) = ctx.db.player().identity().find(ctx.sender) { // ctx.db.player().identity().update(Player { // name: Some(name), // ..player // }); // Ok(()) // } else { // Err("cannot set name for unknown user".into()) // } // }