refactor jong-line
This commit is contained in:
parent
0c3fe6f87a
commit
147f939179
6 changed files with 242 additions and 278 deletions
|
|
@ -3,68 +3,46 @@
|
|||
use log::{debug, trace};
|
||||
use spacetimedb::{ReducerContext, Table, reducer};
|
||||
|
||||
use crate::tables::*;
|
||||
|
||||
mod reducers;
|
||||
mod tables;
|
||||
|
||||
#[reducer]
|
||||
pub fn clear_all(ctx: &ReducerContext) {
|
||||
for row in ctx.db.player().iter() {
|
||||
ctx.db.player().delete(row);
|
||||
}
|
||||
for row in ctx.db.lobby().iter() {
|
||||
ctx.db.lobby().delete(row);
|
||||
}
|
||||
for row in ctx.db.bot().iter() {
|
||||
ctx.db.bot().delete(row);
|
||||
}
|
||||
for row in ctx.db.wall().iter() {
|
||||
ctx.db.wall().delete(row);
|
||||
}
|
||||
for row in ctx.db.tile().iter() {
|
||||
ctx.db.tile().delete(row);
|
||||
}
|
||||
}
|
||||
use crate::tables::*;
|
||||
|
||||
#[reducer(client_connected)]
|
||||
pub fn connect(ctx: &ReducerContext) -> Result<(), String> {
|
||||
let player = if let Some(player) = ctx.db.logged_out_player().identity().find(ctx.sender()) {
|
||||
let player = ctx.db.player().insert(player);
|
||||
ctx.db.logged_out_player().identity().delete(ctx.sender());
|
||||
let player = if let Some(player) = ctx.db.logged_out_user().identity().find(ctx.sender()) {
|
||||
let player = ctx.db.user().insert(player);
|
||||
ctx.db.logged_out_user().identity().delete(ctx.sender());
|
||||
player
|
||||
} else {
|
||||
debug!("inserting new player with identity {:?}", ctx.sender());
|
||||
ctx.db.player().try_insert(Player {
|
||||
debug!("inserting new user with identity {:?}", ctx.sender());
|
||||
ctx.db.user().try_insert(User {
|
||||
identity: ctx.sender(),
|
||||
id: 0,
|
||||
name: None,
|
||||
name: String::new(),
|
||||
config_id: 0,
|
||||
lobby_id: 0,
|
||||
ready: false,
|
||||
sort: true,
|
||||
})?
|
||||
};
|
||||
|
||||
debug!("player connected: {:?}", player);
|
||||
debug!("user connected: {:?}", player);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
||||
#[reducer(client_disconnected)]
|
||||
pub fn disconnect(ctx: &ReducerContext) -> Result<(), String> {
|
||||
let player = ctx
|
||||
let user = ctx
|
||||
.db
|
||||
.player()
|
||||
.user()
|
||||
.identity()
|
||||
.find(ctx.sender())
|
||||
.ok_or_else(|| format!("can't find player {} to disconnect", ctx.sender()))?;
|
||||
|
||||
let player = ctx.db.logged_out_player().insert(player);
|
||||
if !ctx.db.player().identity().delete(ctx.sender()) {
|
||||
Err("can't delete row")?
|
||||
let user = ctx.db.logged_out_user().insert(user);
|
||||
if !ctx.db.user().identity().delete(ctx.sender()) {
|
||||
Err(format!("can't delete user: {user:?}"))?
|
||||
}
|
||||
|
||||
debug!("player disconnected: {:?}", player);
|
||||
debug!("user disconnected: {:?}", user);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue