#pragma once #include "olcPixelGameEngine.h" struct Player; struct PrecastData{ float castTime; float range; float size; //Whether or not this ability requires precasting (automatically set to true when precast time is greater than zero) bool precastTargetingRequired=false; PrecastData(); //Cast an ability without a targeting indicator, just starts the cast. PrecastData(float castTime); PrecastData(float castTime,float range,float size); }; //Abilities are tied to class data which is defined in Class.cpp. struct Ability{ std::string name=""; std::string shortName=""; float cooldown=0; float COOLDOWN_TIME=0; int manaCost=0; Pixel barColor1,barColor2; PrecastData precastInfo; bool canCancelCast=false; std::functionaction=[](Player*,vf2d){return false;}; Ability(); Ability(std::string name,std::string shortName,float cooldownTime,int manaCost,Pixel barColor1=VERY_DARK_RED,Pixel barColor2=DARK_RED,PrecastData precastInfo={},bool canCancelCast=false); };