use std::fmt;
use crate::{Item, LocatedItem, Location, Player};
#[derive(Clone)]
pub struct ReceivedItem {
item: LocatedItem,
index: usize,
}
impl ReceivedItem {
pub(crate) fn new(item: LocatedItem, index: usize) -> ReceivedItem {
ReceivedItem { item, index }
}
pub fn index(&self) -> usize {
self.index
}
pub fn item(&self) -> Item {
self.item.item()
}
pub fn location(&self) -> Location {
self.item.location()
}
pub fn sender(&self) -> &Player {
self.item.sender()
}
pub fn receiver(&self) -> &Player {
self.item.receiver()
}
pub fn is_progression(&self) -> bool {
self.item.is_progression()
}
pub fn is_useful(&self) -> bool {
self.item.is_useful()
}
pub fn is_trap(&self) -> bool {
self.item.is_trap()
}
}
impl fmt::Debug for ReceivedItem {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
self.item.fmt(f)
}
}
impl From<ReceivedItem> for LocatedItem {
fn from(value: ReceivedItem) -> LocatedItem {
value.item
}
}
impl AsRef<LocatedItem> for &ReceivedItem {
fn as_ref(&self) -> &LocatedItem {
&self.item
}
}