This file contains the component definitions.
This file contains the IRenderer class declaration.
This file contains the interface for systems.
This file contains the Registry class declaration.
Abstract class for system.
Class for managing entities and their components.
ECS system that manages weapon charging and visual effects in multiplayer.
bool m_isCharging
Whether weapon is currently charging.
ecs::Entity m_superShotAudioEntity
Entity for charged shot audio.
WeaponSystem & operator=(const WeaponSystem &)=delete
WeaponSystem(const WeaponSystem &)=delete
WeaponSystem(WeaponSystem &&)=delete
void ensureSuperShotAudio(ecs::Registry ®istry)
void reset()
Reset weapon state.
~WeaponSystem() override=default
static void showLoadingAnimation(ecs::Registry ®istry, ecs::Entity playerEntity, const ecs::Transform *playerTransform)
Show loading animation in front of the player.
WeaponSystem & operator=(WeaponSystem &&)=delete
void update(ecs::Registry ®istry, float dt) override
Update weapon system.
static void hideLoadingAnimation(ecs::Registry ®istry, ecs::Entity playerEntity)
Hide loading animation.
float m_fireCooldown
Remaining cooldown time before next shot (seconds)
WeaponSystem(const std::shared_ptr< eng::IRenderer > &)
bool tryFireBasic(ecs::Registry ®istry, float x, float y)
Try to fire basic projectile.
bool tryFireSupercharged(ecs::Registry ®istry, float x, float y)
Try to fire supercharged projectile.
constexpr Entity INVALID_ENTITY