From ddd98de72f6ab29e9f8064f46947f2c3b9c07c94 Mon Sep 17 00:00:00 2001 From: ubruntu Date: Fri, 1 Oct 2021 21:17:19 +0000 Subject: [PATCH] Trade fix (with hashmap awareness) --- server/src/events/invite.rs | 12 ++++++++++++ server/src/events/trade.rs | 1 + 2 files changed, 13 insertions(+) diff --git a/server/src/events/invite.rs b/server/src/events/invite.rs index 2e08def75f..1fd56d2ba5 100644 --- a/server/src/events/invite.rs +++ b/server/src/events/invite.rs @@ -218,6 +218,18 @@ pub fn handle_invite_accept(server: &mut Server, entity: specs::Entity) { (uids.get(inviter).copied(), uids.get(entity).copied()) { let mut trades = state.ecs().write_resource::(); + // check if the person that invited me has started a new trade since the + // invitation was sent + if trades.entity_trades.get(&inviter_uid).copied().is_some() { + for client in clients.get(entity).into_iter().chain(clients.get(inviter)) { + client.send_fallible(ServerGeneral::server_msg( + ChatType::Meta, + "Trade failed, inviter initiated new trade since sending trade \ + request.", + )); + } + return; + } let id = trades.begin_trade(inviter_uid, invitee_uid); let trade = trades.trades[&id].clone(); if let Some(agent) = agents.get_mut(inviter) { diff --git a/server/src/events/trade.rs b/server/src/events/trade.rs index 351d4ecbe8..84277a9b73 100644 --- a/server/src/events/trade.rs +++ b/server/src/events/trade.rs @@ -102,6 +102,7 @@ pub fn handle_process_trade_action( AgentEvent::FinishedTrade(result.clone()), ); } + trades.entity_trades.remove_entry(party); } } else { let mut entities: [Option; 2] = [None, None];