#pragma once #include "DefaultDispenseItemBehavior.h" class Projectile; class Position; class AbstractProjectileDispenseBehavior : public DefaultDispenseItemBehavior { public: virtual std::shared_ptr execute( BlockSource* source, std::shared_ptr dispensed, eOUTCOME& outcome); protected: virtual void playSound(BlockSource* source, eOUTCOME outcome); virtual float getUncertainty(); virtual float getPower(); virtual std::shared_ptr getProjectile(Level* world, Position* position) = 0; };