use crate::error::RconError;
use crate::parser::utils::check_invalid_argument;
use crate::parser::utils::check_invalid_command;
use crate::rcon_client::RconClient;
pub fn difficulty(client: &mut RconClient, difficulty_name: &str) -> Result<(), RconError> {
let arguments = vec!["peaceful", "easy", "normal", "hard"];
check_invalid_argument(difficulty_name, arguments)?;
let command = format!("difficulty {}", difficulty_name);
let feedback = client.send(command.to_string())?;
check_invalid_command(&feedback)?;
if feedback.contains("Incorrect argument for command") {
return Err(RconError::UnknownParserError(
"Incorrect argument for command difficulty".to_string(),
));
}
if feedback.contains("The difficulty did not change") {
return Ok(());
}
if feedback.contains("The difficulty has been set") {
return Ok(());
}
if feedback.contains("Set game difficulty to") {
return Ok(());
}
Err(RconError::UnknownParserError(
format!(
"Unknown error when change difficulty to {}.",
difficulty_name
)
.to_string(),
))
}
pub fn weather(client: &mut RconClient, weather_name: &str) -> Result<(), RconError> {
let arguments = vec!["clear", "rain", "thunder"];
check_invalid_argument(weather_name, arguments)?;
let command = format!("weather {}", weather_name);
let feedback = client.send(command.to_string())?;
check_invalid_command(&feedback)?;
if feedback.contains("Set the weather to") {
return Ok(());
}
if feedback.contains("Changing to") {
return Ok(());
}
Err(RconError::UnknownParserError(
format!("Unknown error when set weather to {}.", weather_name).to_string(),
))
}