|
|
|
#pragma once
|
|
|
|
#include "olcPixelGameEngine.h"
|
|
|
|
#include "Key.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="";
|
|
|
|
std::string description="";
|
|
|
|
float cooldown=0;
|
|
|
|
float COOLDOWN_TIME=0;
|
|
|
|
int manaCost=0;
|
|
|
|
Pixel barColor1,barColor2;
|
|
|
|
PrecastData precastInfo;
|
|
|
|
bool canCancelCast=false;
|
|
|
|
InputGroup*input;
|
|
|
|
std::string icon;
|
|
|
|
std::function<bool(Player*,vf2d)>action=[](Player*,vf2d){return false;};
|
|
|
|
static InputGroup DEFAULT;
|
|
|
|
Ability();
|
|
|
|
//NOTE: icon expects the actual name relative to the "Ability Icons" directory for this constructor!
|
|
|
|
Ability(std::string name,std::string shortName,std::string description,float cooldownTime,int manaCost,InputGroup*input,std::string icon,Pixel barColor1=VERY_DARK_RED,Pixel barColor2=DARK_RED,PrecastData precastInfo={},bool canCancelCast=false);
|
|
|
|
};
|