aboutsummaryrefslogtreecommitdiff
path: root/planetwars-localdev/src/match_runner/mod.rs
diff options
context:
space:
mode:
authorIlion Beyst <ilion.beyst@gmail.com>2021-12-26 21:06:52 +0100
committerIlion Beyst <ilion.beyst@gmail.com>2021-12-26 21:07:19 +0100
commitc04d4a449bd147c632c0b6ceae04f0514803b66f (patch)
tree6c75eea8bbd8cf1be06330ddf4d592b019c6b339 /planetwars-localdev/src/match_runner/mod.rs
parentb1e9490f55e4f360c249a107dcc5809a663dec42 (diff)
downloadplanetwars.dev-c04d4a449bd147c632c0b6ceae04f0514803b66f.tar.xz
planetwars.dev-c04d4a449bd147c632c0b6ceae04f0514803b66f.zip
rename to planetwars-cli
Diffstat (limited to 'planetwars-localdev/src/match_runner/mod.rs')
-rw-r--r--planetwars-localdev/src/match_runner/mod.rs91
1 files changed, 0 insertions, 91 deletions
diff --git a/planetwars-localdev/src/match_runner/mod.rs b/planetwars-localdev/src/match_runner/mod.rs
deleted file mode 100644
index 50b7a3b..0000000
--- a/planetwars-localdev/src/match_runner/mod.rs
+++ /dev/null
@@ -1,91 +0,0 @@
-mod bot_runner;
-mod match_context;
-mod pw_match;
-
-use std::{
- io::Write,
- path::PathBuf,
- sync::{Arc, Mutex},
-};
-
-use match_context::MatchCtx;
-use planetwars_rules::PwConfig;
-use serde::{Deserialize, Serialize};
-
-use crate::BotConfig;
-
-use self::match_context::{EventBus, PlayerHandle};
-
-pub struct MatchConfig {
- pub map_name: String,
- pub map_path: PathBuf,
- pub log_path: PathBuf,
- pub players: Vec<MatchBot>,
-}
-
-#[derive(Serialize, Deserialize)]
-pub struct MatchMeta {
- pub map_name: String,
- pub timestamp: chrono::DateTime<chrono::Local>,
- pub players: Vec<PlayerInfo>,
-}
-
-#[derive(Serialize, Deserialize)]
-pub struct PlayerInfo {
- pub name: String,
-}
-
-pub struct MatchBot {
- pub name: String,
- pub bot_config: BotConfig,
-}
-
-pub async fn run_match(config: MatchConfig) {
- let pw_config = PwConfig {
- map_file: config.map_path,
- max_turns: 100,
- };
-
- let event_bus = Arc::new(Mutex::new(EventBus::new()));
-
- // start bots
- let players = config
- .players
- .iter()
- .enumerate()
- .map(|(player_id, bot)| {
- let player_id = (player_id + 1) as u32;
- let bot = bot_runner::Bot {
- working_dir: bot.bot_config.path.clone(),
- argv: bot.bot_config.argv.clone(),
- };
- let handle = bot_runner::run_local_bot(player_id, event_bus.clone(), bot);
- (player_id, Box::new(handle) as Box<dyn PlayerHandle>)
- })
- .collect();
- let mut log_file = std::fs::File::create(config.log_path).expect("could not create log file");
-
- // assemble the math meta struct
- let match_meta = MatchMeta {
- map_name: config.map_name.clone(),
- timestamp: chrono::Local::now(),
- players: config
- .players
- .iter()
- .map(|bot| PlayerInfo {
- name: bot.name.clone(),
- })
- .collect(),
- };
- write!(
- log_file,
- "{}\n",
- serde_json::to_string(&match_meta).unwrap()
- )
- .unwrap();
-
- let match_ctx = MatchCtx::new(event_bus, players, log_file);
-
- let match_state = pw_match::PwMatch::create(match_ctx, pw_config);
- match_state.run().await;
-}