veloren/common/src/comp/inventory/item.rs

67 lines
1.3 KiB
Rust
Raw Normal View History

2019-07-26 21:01:41 +00:00
use specs::{Component, FlaggedStorage};
use specs_idvs::IDVStorage;
2019-06-28 23:42:51 +00:00
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum Weapon {
Daggers,
SwordShield,
Sword,
Axe,
Hammer,
Bow,
Staff,
}
pub const ALL_WEAPONS: [Weapon; 7] = [
Weapon::Daggers,
Weapon::SwordShield,
Weapon::Sword,
Weapon::Axe,
Weapon::Hammer,
Weapon::Bow,
Weapon::Staff,
];
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum Armor {
// TODO: Don't make armor be a body part. Wearing enemy's head is funny but also creepy thing to do.
Helmet,
2019-06-28 23:42:51 +00:00
Shoulders,
Chestplate,
Belt,
Gloves,
Pants,
Boots,
Back,
Tabard,
Gem,
Necklace,
}
#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash, Serialize, Deserialize)]
pub enum Item {
Weapon {
2019-07-25 22:52:28 +00:00
kind: Weapon,
damage: i32,
strength: i32,
},
Armor {
2019-07-25 22:52:28 +00:00
kind: Armor,
defense: i32,
health_bonus: i32,
},
}
2019-07-25 22:52:28 +00:00
impl Default for Item {
fn default() -> Self {
Item::Weapon {
kind: Weapon::Hammer,
damage: 0,
strength: 0,
}
}
}
impl Component for Item {
2019-07-26 21:01:41 +00:00
type Storage = FlaggedStorage<Self, IDVStorage<Self>>;
}