mirror of
https://git.ngram.ca/OpenJam/rc-servers
synced 2026-08-23 23:08:52 +00:00
Implement lobby parts of custom games #38
This commit is contained in:
@@ -30,24 +30,49 @@ impl <C: Send + 'static> SimpleOperation<C> for QueueJoinProvider {
|
||||
if let Some(Typed::Bool(is_leader)) = params.remove(&IS_GROUP_LEADER_PARAM_KEY) {
|
||||
if let Some(Typed::Int(lobby_ty)) = params.remove(&LOBBY_TY_PARAM_KEY) {
|
||||
let lobby_ty = oj_rc_core::data::lobby::LobbyType::from_int(lobby_ty)?;
|
||||
if let Some(Typed::Str(event_to_join)) = params.remove(&EVENT_TO_JOIN_PARAM_KEY) {
|
||||
log::debug!("Got lobby join queue request of platoon {} ({} players, is_leader:{}) slot {} lobby {:?} event {}", group_id.string, group_size, is_leader, slot_id, lobby_ty, event_to_join.string);
|
||||
params.insert(ESTIMATED_QUEUE_TIME_PARAM_KEY, Typed::Int(42));
|
||||
params.insert(PERSONAL_RANKING_PARAM_KEY, Typed::Double(42.0));
|
||||
let events = user.event_sender();
|
||||
let user_info = user.user()?;
|
||||
if let Some(current_lobby) = user_info.current_game_event_setter().get_multiplayer().await {
|
||||
self.queue_handler.join_queue(
|
||||
current_lobby.map,
|
||||
current_lobby.mode,
|
||||
current_lobby.visibility,
|
||||
current_lobby.auto_heal,
|
||||
log::debug!("Got lobby join queue request of platoon {} ({} players, is_leader:{}) slot {} lobby {:?}", group_id.string, group_size, is_leader, slot_id, lobby_ty);
|
||||
match lobby_ty {
|
||||
oj_rc_core::data::lobby::LobbyType::None => {
|
||||
log::warn!("Cannot join queue for None mode (???)");
|
||||
},
|
||||
oj_rc_core::data::lobby::LobbyType::CustomGame => {
|
||||
log::debug!("Joining platoon {} to custom game lobby", group_id.string);
|
||||
params.insert(ESTIMATED_QUEUE_TIME_PARAM_KEY, Typed::Int(42));
|
||||
params.insert(PERSONAL_RANKING_PARAM_KEY, Typed::Double(42.0));
|
||||
let events = user.event_sender();
|
||||
let user_info = user.user()?;
|
||||
self.queue_handler.join_custom_queue(
|
||||
user_info.clone(),
|
||||
events.to_owned(),
|
||||
).await;
|
||||
}
|
||||
|
||||
},
|
||||
oj_rc_core::data::lobby::LobbyType::QuickPlay => {
|
||||
// regular multiplayer
|
||||
if let Some(Typed::Str(event_to_join)) = params.remove(&EVENT_TO_JOIN_PARAM_KEY) {
|
||||
log::debug!("Joining platoon {} to multiplayer lobby with event {}", group_id.string, event_to_join.string);
|
||||
params.insert(ESTIMATED_QUEUE_TIME_PARAM_KEY, Typed::Int(42));
|
||||
params.insert(PERSONAL_RANKING_PARAM_KEY, Typed::Double(42.0));
|
||||
let events = user.event_sender();
|
||||
let user_info = user.user()?;
|
||||
if let Some(current_lobby) = user_info.current_game_event_setter().get_multiplayer().await {
|
||||
self.queue_handler.join_queue(
|
||||
current_lobby.map,
|
||||
current_lobby.mode,
|
||||
current_lobby.visibility,
|
||||
current_lobby.auto_heal,
|
||||
user_info.clone(),
|
||||
events.to_owned(),
|
||||
).await;
|
||||
}
|
||||
} else {
|
||||
log::warn!("Missing multiplayer event, not joining platoon {} to multiplayer lobby queue", group_id.string);
|
||||
}
|
||||
},
|
||||
oj_rc_core::data::lobby::LobbyType::Solo => {
|
||||
log::warn!("Cannot join queue for solo mode (it's singleplayer!)");
|
||||
},
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user