Add strike timeout setting

This commit is contained in:
2022-10-17 07:42:17 +02:00
parent 8c1a3f2c5f
commit ba1ed84b33
6 changed files with 84 additions and 12 deletions

View File

@@ -1,6 +1,6 @@
use crate::consts::*;
use crate::data::{BotType, PlayConfiguration};
use serde_with::{serde_as, DisplayFromStr};
use serde_with::{serde_as, DisplayFromStr, NoneAsEmptyString};
#[serde_as]
#[derive(serde::Serialize, serde::Deserialize, Debug, Clone, Eq, PartialEq)]
@@ -15,6 +15,8 @@ pub struct GameRules {
pub boats_can_touch: bool,
#[serde_as(as = "DisplayFromStr")]
pub player_continue_on_hit: bool,
#[serde_as(as = "NoneAsEmptyString")]
pub strike_timeout: Option<usize>,
pub bot_type: BotType,
}
@@ -36,6 +38,7 @@ impl GameRules {
.join(","),
boats_can_touch: MULTI_PLAYER_BOATS_CAN_TOUCH,
player_continue_on_hit: MULTI_PLAYER_PLAYER_CAN_CONTINUE_AFTER_HIT,
strike_timeout: Some(30),
bot_type: BotType::Smart,
}
}
@@ -121,6 +124,16 @@ impl GameRules {
}
}
if let Some(timeout) = self.strike_timeout {
if timeout < config.min_strike_timeout {
errors.push("Strike timeout is too short!");
}
if timeout > config.max_strike_timeout {
errors.push("Strike timeout is too long!");
}
}
errors
}