pvp leave queue implemented

This commit is contained in:
ntr
2019-11-12 16:32:19 +11:00
parent 9c4215ebba
commit 3ee32b3ef2
7 changed files with 79 additions and 12 deletions
+14
View File
@@ -60,6 +60,7 @@ pub enum Event {
Invite(Id),
Join(Id, String),
Joined(Id),
Leave(Id),
Chat(Id, Uuid, String),
ChatClear(Id, Uuid),
@@ -249,6 +250,7 @@ impl Events {
// or flag the requester as pvp ready
let requester = self.clients.get_mut(&id).unwrap();
requester.pvp = true;
requester.tx.send(RpcMessage::QueueJoined(()))?;
info!("joined game queue id={:?} account={:?}", requester.id, requester.account);
return Ok(());
},
@@ -305,6 +307,18 @@ impl Events {
return Ok(());
},
Event::Leave(id) => {
// check whether request is valid
let c = self.clients.get_mut(&id)
.ok_or(format_err!("connection not found id={:?}", id))?;
c.pvp = false;
c.tx.send(RpcMessage::QueueLeft(()))?;
info!("left game queue id={:?} account={:?}", c.id, c.account);
return Ok(());
},
Event::Chat(id, instance, msg) => {
// set the chat state of this connection
{
+6 -1
View File
@@ -63,7 +63,7 @@ pub enum RpcMessage {
QueueRequested(()),
QueueJoined(()),
QueueCancelled(()),
QueueLeft(()),
QueueFound(()),
InviteRequested(()),
@@ -105,6 +105,7 @@ pub enum RpcRequest {
InstanceInvite {},
InstanceJoin { code: String },
InstanceQueue {},
InstanceLeave {},
InstancePractice {},
InstanceAbandon { instance_id: Uuid },
InstanceReady { instance_id: Uuid },
@@ -168,6 +169,10 @@ impl Connection {
self.events.send(Event::Join(self.id, code))?;
Ok(RpcMessage::Joining(()))
},
RpcRequest::InstanceLeave {} => {
self.events.send(Event::Leave(self.id))?;
Ok(RpcMessage::Processing(()))
},
RpcRequest::InstanceChat { instance_id, index } => {
if !account.subscribed {