1
0
mirror of https://git.ngram.ca/OpenJam/rc-servers synced 2026-08-23 23:08:52 +00:00

Allow fake players to have their team chosen automatically at game start

This commit is contained in:
NG (Graham)
2025-10-30 21:59:47 -04:00
parent 127de674b4
commit 3fb2fbad06
8 changed files with 87 additions and 44 deletions

View File

@@ -68,20 +68,6 @@ impl QueueHandler {
chrono::Utc::now().timestamp_micros().hash(&mut hasher);
let guid = oj_rc_core::persist::user::uuid_sanitize(hasher.finish() as i64);
let guid_str = oj_rc_core::persist::user::i64_as_uuid_str(guid);
let team_picker = match key.mode {
oj_rc_core::data::game_mode::GameMode::Pit => |i| i as i32, // each player is on a different team
_ => |i| (i % 2) as i32, // alternate teams
};
for (i, player) in players.iter_mut().enumerate() {
player.player.team = team_picker(i);
}
let player_descs = players.iter().map(|x| oj_rc_core::persist::user::PlayerLobbyDescriptor {
user_id: x.user_id,
team: x.player.team,
group: None, // TODO support platoons
public_id: x.player.name.clone(),
display_name: x.player.display_name.clone(),
}).collect();
let game_desc = oj_rc_core::persist::user::GameDescriptor {
guid: guid_str.clone(),
map: key.map.clone(),
@@ -92,7 +78,23 @@ impl QueueHandler {
is_custom: false,
is_complete: false,
};
match user.start_game(game_desc, player_descs, self.factory.as_ref(), &self.cpu_counter, &self.weapon_guesser).await {
let team_picker = user.team_chooser(&game_desc).await;
/*let team_picker = match key.mode {
oj_rc_core::data::game_mode::GameMode::Pit => |i| i as i32, // each player is on a different team
_ => |i| (i % 2) as i32, // alternate teams
};*/
for (i, player) in players.iter_mut().enumerate() {
player.player.team = team_picker.team(i);
}
let player_descs = players.iter().map(|x| oj_rc_core::persist::user::PlayerLobbyDescriptor {
user_id: x.user_id,
team: x.player.team,
group: None, // TODO support platoons
public_id: x.player.name.clone(),
display_name: x.player.display_name.clone(),
}).collect();
match user.start_game(game_desc, player_descs, self.factory.as_ref(), &self.cpu_counter, &self.weapon_guesser, &team_picker).await {
Ok(fakes) => {
let player_datas = players.iter().map(|x| x.player.clone())
.chain(fakes.players.into_iter().map(|(desc, _emu)| desc))