vhr_datatypes/
item.rs

1use serde::{Deserialize, Serialize};
2
3/// an inventory item, found in chests and the player's inventory
4#[derive(Default, Clone, PartialEq, Debug, Serialize, Deserialize, PartialOrd)]
5pub struct Item {
6    pub name: String,
7    pub quantity: u32,
8    pub durability: f32,
9    pub column: u32,
10    pub row: u32,
11    pub equipped: u8,
12    pub quality: u32,
13    pub variant: u32,
14    pub creator_id: u64,
15    pub creator_name: String,
16}
17
18impl Item {
19    /// an item with all zero values, a const function for use in initializing a blank item.
20    pub const fn null_item() -> Item {
21        Item {
22            name: String::new(),
23            quantity: 0,
24            durability: 0.0,
25            column: 0,
26            row: 0,
27            equipped: 0,
28            quality: 0,
29            variant: 0,
30            creator_id: 0,
31            creator_name: String::new(),
32        }
33    }
34    /// returns a list of useful items to have for debug characters
35    pub fn default_items() -> Vec<Item> {
36        let mut v = vec![];
37
38        v.push(Item {
39            name: String::from("MaceIron"),
40            quantity: 1,
41            durability: 221.0,
42            column: 0,
43            row: 0,
44            equipped: 1,
45            quality: 2,
46            variant: 0,
47            creator_id: 0,
48            creator_name: String::new(),
49        });
50        v.push(Item {
51            name: String::from("ShieldBronzeBuckler"),
52            quantity: 1,
53            durability: 200.0,
54            column: 1,
55            row: 0,
56            equipped: 0,
57            quality: 1,
58            variant: 0,
59            creator_id: 0,
60            creator_name: String::new(),
61        });
62        v.push(Item {
63            name: String::from("Wishbone"),
64            quantity: 1,
65            durability: 100.0,
66            column: 7,
67            row: 1,
68            equipped: 1,
69            quality: 1,
70            variant: 0,
71            creator_id: 0,
72            creator_name: String::new(),
73        });
74        v.push(Item {
75            name: String::from("PickaxeIron"),
76            quantity: 1,
77            durability: 225.0,
78            column: 2,
79            row: 0,
80            equipped: 0,
81            quality: 3,
82            variant: 0,
83            creator_id: 0,
84            creator_name: String::new(),
85        });
86        v.push(Item {
87            name: String::from("Sausages"),
88            quantity: 17,
89            durability: 100.0,
90            column: 0,
91            row: 3,
92            equipped: 0,
93            quality: 1,
94            variant: 0,
95            creator_id: 0,
96            creator_name: String::new(),
97        });
98        v.push(Item {
99            name: String::from("TurnupStew"),
100            quantity: 8,
101            durability: 100.0,
102            column: 0,
103            row: 2,
104            equipped: 0,
105            quality: 1,
106            variant: 0,
107            creator_id: 0,
108            creator_name: String::new(),
109        });
110        v
111    }
112}