2020-01-01 17:16:29 +00:00
|
|
|
use crate::comp;
|
|
|
|
use specs::{Component, FlaggedStorage, HashMapStorage, VecStorage};
|
|
|
|
|
|
|
|
#[derive(Clone, Copy, Debug, PartialEq, Serialize, Deserialize, Eq, Hash)]
|
|
|
|
pub enum AbilityActionKind {
|
|
|
|
Primary,
|
|
|
|
Secondary,
|
|
|
|
Dodge,
|
|
|
|
Block,
|
|
|
|
// UpdatePool?
|
|
|
|
}
|
|
|
|
impl Default for AbilityActionKind {
|
2020-02-24 14:35:07 +00:00
|
|
|
fn default() -> Self { Self::Primary }
|
2020-01-01 17:16:29 +00:00
|
|
|
}
|
|
|
|
#[derive(Clone, Copy, Debug, Default, PartialEq, Serialize, Deserialize, Eq, Hash)]
|
|
|
|
pub struct AbilityAction(pub AbilityActionKind);
|
|
|
|
|
|
|
|
impl Component for AbilityAction {
|
|
|
|
type Storage = FlaggedStorage<Self, VecStorage<Self>>;
|
|
|
|
}
|
|
|
|
|
2020-02-03 10:54:50 +00:00
|
|
|
#[derive(Copy, Clone, Debug, Serialize, Deserialize)]
|
2020-01-01 17:16:29 +00:00
|
|
|
pub struct AbilityPool {
|
2020-01-21 22:54:32 +00:00
|
|
|
pub primary: Option<comp::CharacterState>,
|
|
|
|
pub secondary: Option<comp::CharacterState>,
|
|
|
|
pub block: Option<comp::CharacterState>,
|
|
|
|
pub dodge: Option<comp::CharacterState>,
|
2020-01-01 17:16:29 +00:00
|
|
|
}
|
|
|
|
|
2020-02-03 10:54:50 +00:00
|
|
|
impl Default for AbilityPool {
|
|
|
|
fn default() -> Self {
|
|
|
|
Self {
|
|
|
|
primary: Some(comp::CharacterState::BasicAttack(None)),
|
2020-02-24 14:35:07 +00:00
|
|
|
secondary: Some(comp::CharacterState::BasicBlock(None)),
|
2020-02-03 10:54:50 +00:00
|
|
|
block: None,
|
|
|
|
dodge: Some(comp::CharacterState::Roll(None)),
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-01-01 17:16:29 +00:00
|
|
|
impl Component for AbilityPool {
|
2020-01-07 15:49:08 +00:00
|
|
|
type Storage = FlaggedStorage<Self, HashMapStorage<Self>>;
|
2020-01-01 17:16:29 +00:00
|
|
|
}
|