1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
#[cfg(feature = "specs")]
use specs::DenseVecStorage;

/// A player ID
#[derive(Copy, Clone, Debug, Default, Eq, PartialEq, Hash, From, Into, Constructor)]
#[cfg_attr(feature = "specs", derive(Component))]
pub struct Player(pub u16);

wrapper_serde_decl!(Player);

#[cfg(feature = "specs")]
mod specs_convert {
	use super::Player;
	use specs::Entity;
	use std::convert::TryInto;

	impl From<Entity> for Player {
		fn from(ent: Entity) -> Self {
			Player(ent.id().try_into().expect("Entity id out of range"))
		}
	}
}