send deposit packets to correct clients
This commit is contained in:
parent
1867fee78b
commit
0dca90ff5a
@ -222,7 +222,7 @@ where
|
||||
{
|
||||
let client = clients.get_mut(&id).ok_or(ShipError::ClientNotFound(id))?;
|
||||
let area_client = client_location.get_local_client(id).map_err(|err| -> ClientLocationError { err.into() })?;
|
||||
let clients_in_area = client_location.get_all_clients_by_client(id).map_err(|err| -> ClientLocationError { err.into() })?;
|
||||
let other_clients_in_area = client_location.get_client_neighbors(id).map_err(|err| -> ClientLocationError { err.into() })?;
|
||||
let bank_action_pkts = match bank_interaction.action {
|
||||
BANK_ACTION_DEPOSIT => {
|
||||
if bank_interaction.item_id == 0xFFFFFFFF {
|
||||
@ -258,7 +258,7 @@ where
|
||||
}
|
||||
};
|
||||
|
||||
Ok(Box::new(clients_in_area.into_iter()
|
||||
Ok(Box::new(other_clients_in_area.into_iter()
|
||||
.map(move |c| {
|
||||
bank_action_pkts.clone().into_iter()
|
||||
.map(move |pkt| {
|
||||
|
@ -212,6 +212,7 @@ async fn test_deposit_individual_item() {
|
||||
let mut entity_gateway = InMemoryGateway::new();
|
||||
|
||||
let (_user1, char1) = new_user_character(&mut entity_gateway, "a1", "a").await;
|
||||
let (_user2, _char2) = new_user_character(&mut entity_gateway, "a2", "a").await;
|
||||
|
||||
entity_gateway.create_item(
|
||||
item::NewItemEntity {
|
||||
@ -250,8 +251,11 @@ async fn test_deposit_individual_item() {
|
||||
|
||||
let mut ship = ShipServerState::new(entity_gateway.clone());
|
||||
log_in_char(&mut ship, ClientId(1), "a1", "a").await;
|
||||
log_in_char(&mut ship, ClientId(2), "a2", "a").await;
|
||||
join_lobby(&mut ship, ClientId(1)).await;
|
||||
join_lobby(&mut ship, ClientId(2)).await;
|
||||
create_room(&mut ship, ClientId(1), "room", "").await;
|
||||
join_room(&mut ship, ClientId(2), 0).await;
|
||||
|
||||
ship.handle(ClientId(1), &RecvShipPacket::DirectMessage(DirectMessage::new(0, GameMessage::BankRequest(BankRequest {
|
||||
client: 0,
|
||||
@ -270,7 +274,7 @@ async fn test_deposit_individual_item() {
|
||||
})))).await.unwrap().collect::<Vec<_>>();
|
||||
|
||||
assert!(packets.len() == 1);
|
||||
assert!(matches!(&packets[0], (_, SendShipPacket::Message(Message {msg: GameMessage::PlayerNoLongerHasItem(player_no_longer_has_item)}))
|
||||
assert!(matches!(&packets[0], (ClientId(2), SendShipPacket::Message(Message {msg: GameMessage::PlayerNoLongerHasItem(player_no_longer_has_item)}))
|
||||
if player_no_longer_has_item.item_id == 0x10001
|
||||
&& player_no_longer_has_item.amount == 0
|
||||
));
|
||||
@ -294,6 +298,7 @@ async fn test_deposit_stacked_item() {
|
||||
let mut entity_gateway = InMemoryGateway::new();
|
||||
|
||||
let (_user1, char1) = new_user_character(&mut entity_gateway, "a1", "a").await;
|
||||
let (_user2, _char2) = new_user_character(&mut entity_gateway, "a2", "a").await;
|
||||
|
||||
for _ in 0..3 {
|
||||
entity_gateway.create_item(
|
||||
@ -313,8 +318,11 @@ async fn test_deposit_stacked_item() {
|
||||
|
||||
let mut ship = ShipServerState::new(entity_gateway.clone());
|
||||
log_in_char(&mut ship, ClientId(1), "a1", "a").await;
|
||||
log_in_char(&mut ship, ClientId(2), "a2", "a").await;
|
||||
join_lobby(&mut ship, ClientId(1)).await;
|
||||
join_lobby(&mut ship, ClientId(2)).await;
|
||||
create_room(&mut ship, ClientId(1), "room", "").await;
|
||||
join_room(&mut ship, ClientId(2), 0).await;
|
||||
|
||||
ship.handle(ClientId(1), &RecvShipPacket::DirectMessage(DirectMessage::new(0, GameMessage::BankRequest(BankRequest {
|
||||
client: 0,
|
||||
@ -333,7 +341,7 @@ async fn test_deposit_stacked_item() {
|
||||
})))).await.unwrap().collect::<Vec<_>>();
|
||||
|
||||
assert!(packets.len() == 1);
|
||||
assert!(matches!(&packets[0], (_, SendShipPacket::Message(Message {msg: GameMessage::PlayerNoLongerHasItem(player_no_longer_has_item)}))
|
||||
assert!(matches!(&packets[0], (ClientId(2), SendShipPacket::Message(Message {msg: GameMessage::PlayerNoLongerHasItem(player_no_longer_has_item)}))
|
||||
if player_no_longer_has_item.item_id == 0x10000
|
||||
&& player_no_longer_has_item.amount == 3
|
||||
));
|
||||
@ -357,6 +365,7 @@ async fn test_deposit_partial_stacked_item() {
|
||||
let mut entity_gateway = InMemoryGateway::new();
|
||||
|
||||
let (_user1, char1) = new_user_character(&mut entity_gateway, "a1", "a").await;
|
||||
let (_user2, _char2) = new_user_character(&mut entity_gateway, "a2", "a").await;
|
||||
|
||||
for _ in 0..3 {
|
||||
entity_gateway.create_item(
|
||||
@ -376,8 +385,11 @@ async fn test_deposit_partial_stacked_item() {
|
||||
|
||||
let mut ship = ShipServerState::new(entity_gateway.clone());
|
||||
log_in_char(&mut ship, ClientId(1), "a1", "a").await;
|
||||
log_in_char(&mut ship, ClientId(2), "a2", "a").await;
|
||||
join_lobby(&mut ship, ClientId(1)).await;
|
||||
join_lobby(&mut ship, ClientId(2)).await;
|
||||
create_room(&mut ship, ClientId(1), "room", "").await;
|
||||
join_room(&mut ship, ClientId(2), 0).await;
|
||||
|
||||
ship.handle(ClientId(1), &RecvShipPacket::DirectMessage(DirectMessage::new(0, GameMessage::BankRequest(BankRequest {
|
||||
client: 0,
|
||||
@ -396,7 +408,7 @@ async fn test_deposit_partial_stacked_item() {
|
||||
})))).await.unwrap().collect::<Vec<_>>();
|
||||
|
||||
assert!(packets.len() == 1);
|
||||
assert!(matches!(&packets[0], (_, SendShipPacket::Message(Message {msg: GameMessage::PlayerNoLongerHasItem(player_no_longer_has_item)}))
|
||||
assert!(matches!(&packets[0], (ClientId(2), SendShipPacket::Message(Message {msg: GameMessage::PlayerNoLongerHasItem(player_no_longer_has_item)}))
|
||||
if player_no_longer_has_item.item_id == 0x10000
|
||||
&& player_no_longer_has_item.amount == 2
|
||||
));
|
||||
@ -433,6 +445,7 @@ async fn test_deposit_stacked_item_with_stack_already_in_bank() {
|
||||
let mut entity_gateway = InMemoryGateway::new();
|
||||
|
||||
let (_user1, char1) = new_user_character(&mut entity_gateway, "a1", "a").await;
|
||||
let (_user2, _char2) = new_user_character(&mut entity_gateway, "a2", "a").await;
|
||||
|
||||
for _ in 0..2 {
|
||||
entity_gateway.create_item(
|
||||
@ -465,8 +478,11 @@ async fn test_deposit_stacked_item_with_stack_already_in_bank() {
|
||||
|
||||
let mut ship = ShipServerState::new(entity_gateway.clone());
|
||||
log_in_char(&mut ship, ClientId(1), "a1", "a").await;
|
||||
log_in_char(&mut ship, ClientId(2), "a2", "a").await;
|
||||
join_lobby(&mut ship, ClientId(1)).await;
|
||||
join_lobby(&mut ship, ClientId(2)).await;
|
||||
create_room(&mut ship, ClientId(1), "room", "").await;
|
||||
join_room(&mut ship, ClientId(2), 0).await;
|
||||
|
||||
ship.handle(ClientId(1), &RecvShipPacket::DirectMessage(DirectMessage::new(0, GameMessage::BankRequest(BankRequest {
|
||||
client: 0,
|
||||
@ -485,7 +501,7 @@ async fn test_deposit_stacked_item_with_stack_already_in_bank() {
|
||||
})))).await.unwrap().collect::<Vec<_>>();
|
||||
|
||||
assert!(packets.len() == 1);
|
||||
assert!(matches!(&packets[0], (_, SendShipPacket::Message(Message {msg: GameMessage::PlayerNoLongerHasItem(player_no_longer_has_item)}))
|
||||
assert!(matches!(&packets[0], (ClientId(2), SendShipPacket::Message(Message {msg: GameMessage::PlayerNoLongerHasItem(player_no_longer_has_item)}))
|
||||
if player_no_longer_has_item.item_id == 0x10000
|
||||
&& player_no_longer_has_item.amount == 2
|
||||
));
|
||||
@ -906,7 +922,6 @@ async fn test_deposit_meseta() {
|
||||
|
||||
let characters = entity_gateway.get_characters_by_user(&user1).await;
|
||||
let char = characters[0].as_ref().unwrap();
|
||||
println!("meseta {}", char.meseta);
|
||||
assert!(char.meseta == 277);
|
||||
assert!(char.bank_meseta == 23);
|
||||
}
|
||||
@ -943,7 +958,6 @@ async fn test_deposit_too_much_meseta() {
|
||||
|
||||
let characters = entity_gateway.get_characters_by_user(&user1).await;
|
||||
let char = characters[0].as_ref().unwrap();
|
||||
println!("meseta {}", char.meseta);
|
||||
assert!(char.meseta == 300);
|
||||
assert!(char.bank_meseta == 999980);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user