diff --git a/client/src/components/game.component.jsx b/client/src/components/game.component.jsx
index ae6bf0b8..fbe614d1 100644
--- a/client/src/components/game.component.jsx
+++ b/client/src/components/game.component.jsx
@@ -19,6 +19,7 @@ function GamePanel(props) {
setActiveCryp,
selectSkillTarget,
sendInstanceState,
+ sendGameReady,
activeCryp,
account,
showLog,
@@ -69,6 +70,11 @@ function GamePanel(props) {
onClick={() => toggleLog(!showLog)}>
Log
+
);
diff --git a/client/src/components/game.container.jsx b/client/src/components/game.container.jsx
index e2be7224..9241ea09 100644
--- a/client/src/components/game.container.jsx
+++ b/client/src/components/game.container.jsx
@@ -23,6 +23,10 @@ const addState = connect(
return false;
}
+ function sendGameReady() {
+ ws.sendGameReady(game.id);
+ }
+
function sendInstanceState(instanceId) {
if (!instanceId) return false;
return ws.sendInstanceState(instanceId);
@@ -42,6 +46,7 @@ const addState = connect(
activeCryp,
selectSkillTarget,
sendInstanceState,
+ sendGameReady,
};
},
diff --git a/client/src/socket.jsx b/client/src/socket.jsx
index 9cbc225c..e7716740 100644
--- a/client/src/socket.jsx
+++ b/client/src/socket.jsx
@@ -74,8 +74,8 @@ function createSocket(events) {
send({ method: 'game_state', params: { id } });
}
- function sendGameJoin(gameId, crypIds) {
- send({ method: 'game_join', params: { game_id: gameId, cryp_ids: crypIds } });
+ function sendGameReady(id) {
+ send({ method: 'game_ready', params: { id } });
}
function sendSpecForget(id, spec) {
@@ -331,7 +331,7 @@ function createSocket(events) {
sendAccountInstances,
sendAccountZone,
sendGameState,
- sendGameJoin,
+ sendGameReady,
sendGameSkill,
sendGameTarget,
sendCrypSpawn,
diff --git a/server/src/game.rs b/server/src/game.rs
index 2dfd5755..dcb146a0 100644
--- a/server/src/game.rs
+++ b/server/src/game.rs
@@ -558,7 +558,7 @@ impl Game {
{
let winner = self.players.iter().find(|t| t.cryps.iter().any(|c| !c.is_ko()));
match winner {
- Some(w) => self.log.push(format!("Winner: {:}", w.id)),
+ Some(w) => self.log.push(format!("Winner: {:}", w.name)),
None => self.log.push(format!("Game was drawn.")),
};
}
@@ -585,6 +585,7 @@ impl Game {
player.add_warning();
if player.warnings >= 3 {
player.forfeit();
+ self.log.push(format!("{:?} forfeited.", player.name));
}
}
}
@@ -818,8 +819,8 @@ pub fn game_skill(params: GameSkillParams, tx: &mut Transaction, account: &Accou
Ok(game)
}
-pub fn game_ready(params: GameSkillParams, tx: &mut Transaction, account: &Account) -> Result {
- let mut game = game_get(tx, params.game_id)?;
+pub fn game_ready(params: GameStateParams, tx: &mut Transaction, account: &Account) -> Result {
+ let mut game = game_get(tx, params.id)?;
game.player_ready(account.id)?;
diff --git a/server/src/rpc.rs b/server/src/rpc.rs
index d802c936..47a8b989 100644
--- a/server/src/rpc.rs
+++ b/server/src/rpc.rs
@@ -16,7 +16,7 @@ use failure::err_msg;
use net::Db;
use cryp::{Cryp, cryp_spawn};
-use game::{Game, game_state, game_skill};
+use game::{Game, game_state, game_skill, game_ready};
use account::{Account, account_create, account_login, account_from_token, account_cryps, account_instances};
use skill::{Skill};
// use zone::{Zone, zone_create, zone_join, zone_close};
@@ -71,6 +71,7 @@ impl Rpc {
"game_state" => Rpc::game_state(data, &mut tx, account.unwrap(), client),
"game_skill" => Rpc::game_skill(data, &mut tx, account.unwrap(), client),
+ "game_ready" => Rpc::game_ready(data, &mut tx, account.unwrap(), client),
"instance_join" => Rpc::instance_join(data, &mut tx, account.unwrap(), client),
"instance_ready" => Rpc::instance_ready(data, &mut tx, account.unwrap(), client),
@@ -140,6 +141,18 @@ impl Rpc {
return Ok(game_response);
}
+ fn game_ready(data: Vec, tx: &mut Transaction, account: Account, _client: &mut WebSocket) -> Result {
+ let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;
+
+ let game_response = RpcResponse {
+ method: "game_state".to_string(),
+ params: RpcResult::GameState(game_ready(msg.params, tx, &account)?)
+ };
+
+ return Ok(game_response);
+ }
+
+
fn cryp_spawn(data: Vec, tx: &mut Transaction, account: Account, client: &mut WebSocket) -> Result {
let msg = from_slice::(&data).or(Err(err_msg("invalid params")))?;