Skip to content

Commit cccd644

Browse files
Add cast events
1 parent c070d05 commit cccd644

File tree

15 files changed

+172
-20
lines changed

15 files changed

+172
-20
lines changed

src/entities/unit.cpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,8 @@ void createUnit(entt::registry &registry, features::item::ItemsLoader &itemsLoad
1616
features::item::entities::equipItem(registry, itemsLoader, entity, 3, features::item::components::SlotType::MainShoulder);
1717
features::item::entities::equipItem(registry, itemsLoader, entity, 3, features::item::components::SlotType::OffShoulder);
1818

19-
features::ability::entities::createAbility(registry, entity, 0.2f, 0.1f, 0.1f, 0.1f);
19+
features::ability::entities::createAbility(registry, entity, features::item::components::SlotType::Mainhand, 0.2f, 0.1f, 0.1f, 0.1f);
20+
features::ability::entities::createAbility(registry, entity, features::item::components::SlotType::Offhand, 0.2f, 0.1f, 0.1f, 0.1f);
2021

2122
// features::item::entities::unequipItem(registry, itemsLoader, mainhand);
2223
}

src/entities/unit.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@
1313
#include "config.hpp"
1414
#include "entities/attribute.hpp"
1515
#include "features/ability/entities/ability.hpp"
16+
#include "features/item/components/equipped.hpp"
1617
#include "features/item/entities/item.hpp"
1718
#include "features/item/loader/itemsLoader.hpp"
1819
#include "pch.hpp"

src/features/ability/components/ability.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
#pragma once
22

3+
#include "features/item/components/equipped.hpp"
34
#include "pch.hpp"
45

56
namespace features::ability::components
67
{
78
struct ability
89
{
910
entt::entity source;
11+
features::item::components::SlotType slot;
1012
float castTime;
1113
float activeTime;
1214
float delayTime;
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#pragma once
2+
3+
#include "features/item/components/equipped.hpp"
4+
5+
#include "pch.hpp"
6+
7+
namespace features::ability::components
8+
{
9+
struct castEvent
10+
{
11+
entt::entity unit;
12+
features::item::components::SlotType slot;
13+
enum class State
14+
{
15+
Press,
16+
Release,
17+
Hold
18+
} state;
19+
};
20+
} // namespace features::ability::components

src/features/ability/entities/ability.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,11 @@
22

33
namespace features::ability::entities
44
{
5-
entt::entity createAbility(entt::registry &registry, entt::entity unit, float castTime, float activeTime, float delayTime, float cooldown)
5+
entt::entity createAbility(entt::registry &registry, entt::entity unit, features::item::components::SlotType slotType, float castTime, float activeTime,
6+
float delayTime, float cooldown)
67
{
78
auto entity = registry.create();
8-
registry.emplace<features::ability::components::ability>(entity, unit, castTime, activeTime, delayTime, cooldown);
9+
registry.emplace<features::ability::components::ability>(entity, unit, slotType, castTime, activeTime, delayTime, cooldown);
910
registry.emplace<features::ability::components::ready>(entity);
1011

1112
common::entities::initAttributes(registry, entity);

src/features/ability/entities/ability.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,12 @@
33
#include "../components/ability.hpp"
44
#include "../components/ready.hpp"
55
#include "entities/attribute.hpp"
6+
#include "features/item/components/equipped.hpp"
67

78
#include "pch.hpp"
89

910
namespace features::ability::entities
1011
{
11-
entt::entity createAbility(entt::registry &registry, entt::entity source, float castTime, float activeTime, float delayTime, float cooldown);
12+
entt::entity createAbility(entt::registry &registry, entt::entity source, features::item::components::SlotType slotType, float castTime, float activeTime,
13+
float delayTime, float cooldown);
1214
} // namespace features::ability::entities
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
2+
#include "clearEvents.hpp"
3+
4+
namespace features::ability::systems
5+
{
6+
void clearEvents(entt::registry &registry)
7+
{
8+
registry.view<features::ability::components::castEvent>().each([&registry](auto entity, auto &castEvent) { registry.destroy(entity); });
9+
}
10+
} // namespace features::ability::systems
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
#pragma once
2+
3+
#include "features/ability/components/castEvent.hpp"
4+
#include "pch.hpp"
5+
6+
namespace features::ability::systems
7+
{
8+
void clearEvents(entt::registry &registry);
9+
}

src/features/ability/systems/processAbility.cpp

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,13 +14,19 @@ namespace features::ability::systems
1414
void processReady(entt::registry &registry)
1515
{
1616
auto view = registry.view<components::ready, components::ability>();
17-
18-
for (auto [entity, rdy, abi] : view.each())
17+
auto viewEvents = registry.view<components::castEvent>();
18+
for (auto [entityEvent, castEvent] : viewEvents.each())
1919
{
20-
if (sf::Mouse::isButtonPressed(sf::Mouse::Button::Left))
20+
for (auto [entity, rdy, abi] : view.each())
2121
{
22-
registry.remove<components::ready>(entity);
23-
registry.emplace<components::cast>(entity, 0.05f);
22+
if (abi.source == castEvent.unit && abi.slot == castEvent.slot)
23+
{
24+
if (castEvent.state == components::castEvent::State::Press || castEvent.state == components::castEvent::State::Hold)
25+
{
26+
registry.remove<components::ready>(entity);
27+
registry.emplace<components::cast>(entity, 0.05f);
28+
}
29+
}
2430
}
2531
}
2632
}

src/features/ability/systems/processAbility.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
#include "../components/ability.hpp"
44
#include "../components/active.hpp"
55
#include "../components/cast.hpp"
6+
#include "../components/castEvent.hpp"
67
#include "../components/cooldown.hpp"
78
#include "../components/delay.hpp"
89
#include "../components/ready.hpp"

0 commit comments

Comments
 (0)