kingslayer/entity/item/
thing.rs1use serde::{Deserialize, Serialize};
2
3use crate::entity::Entity;
4
5#[derive(Clone, Debug, PartialEq, Serialize, Deserialize)]
6pub struct Thing {
7 name: String,
8 desc: String,
9 inspect: String,
10}
11
12impl Thing {
13 pub fn new(name: &str, inspect: &str) -> Self {
14 Self {
15 name: name.to_owned(),
16 desc: format!("There is a {} here.", name),
17 inspect: inspect.to_owned(),
18 }
19 }
20
21 pub fn with_desc(mut self, desc: &str) -> Self {
22 self.desc = String::from(desc);
23 self
24 }
25}
26
27impl Entity for Thing {
28 fn name(&self) -> &str {
29 &self.name
30 }
31
32 fn desc(&self) -> &str {
33 &self.desc
34 }
35
36 fn inspect(&self) -> &str {
37 &self.inspect
38 }
39}