use std::fmt::Display;
use crate::logtype::LogType;
use crate::QQWing;
#[derive(Debug, Clone)]
pub struct LogItem {
round: u8,
pub log_type: LogType,
value: usize,
position: usize,
}
impl Display for LogItem {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"Round: {} - {:?} (Row: {} - Column: {} - Value: {})",
self.round,
self.log_type,
self.get_row(),
self.get_column(),
self.value
)
}
}
impl LogItem {
pub fn new(r: u8, t: LogType, v: usize, p: usize) -> Self {
LogItem::init(r, t, v, p)
}
pub fn init(r: u8, t: LogType, v: usize, p: usize) -> Self {
Self {
round: r,
log_type: t,
value: v,
position: p,
}
}
pub fn get_round(&self) -> u8 {
self.round
}
pub fn get_row(&self) -> u8 {
if self.position == 255 {
return 255;
}
QQWing::cell_to_row(self.position) as u8 + 1
}
pub fn get_column(&self) -> u8 {
if self.position == 255 {
return 255;
}
QQWing::cell_to_column(self.position) as u8 + 1
}
pub fn get_value(&self) -> usize {
self.value
}
}