-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathAbility.h
More file actions
executable file
·50 lines (43 loc) · 2.14 KB
/
Ability.h
File metadata and controls
executable file
·50 lines (43 loc) · 2.14 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#ifndef __ABILITY_H__
#define __ABILITY_H__
#include <string>
#include <sstream>
#include <iostream>
class Minion;
class Player;
class Ritual;
class Ability {
protected:
std::string name;
public:
Ability(const std::string nameOfAbility);
virtual void performAbility(std::string what, int minionNum, Minion *minion, Player *actPlayer, Player *inactPlayer);
virtual void performAbility(std::string what, int minionNum, Ritual *ritual, Player *actPlayer, Player *inactPlayer);
virtual void performTAbility(std::string what, int minionNum, Minion *thisMinion, Minion *minion, Player *actPlayer, Player *inactPlayer);
virtual ~Ability();
virtual std::string getName();
};
class TriggeredAbility: public Ability {
// name is inherited from the parent class
public:
TriggeredAbility(const std::string& nameOfAbility);
void performAbility(std::string what, int minionNum, Minion *minion, Player *actPlayer, Player *inactPlayer) override;
void performAbility(std::string what, int minionNum, Ritual *ritual, Player *actPlayer, Player *inactPlayer) override;
void performTAbility(std::string what, int minionNum, Minion *thisMin, Minion *minion, Player *actPlayer, Player *inactPlayer) override;
void startOfTurn(Minion *thisMinion, Minion *opponentMinion, Player *actPlayer, Player *inactPlayer);
void endOfTurn(Minion *thisMinion, Minion *opponentMinion, Player *actPlayer, Player *inactPlayer);
void minionEnter(Minion *thisMinion, Minion *opponentMinion, Player *actPlayer, Player *inactPlayer);
void minionLeave(Minion *thisMinion, Minion *opponentMinion, Player *actPlayer, Player *inactPlayer);
};
class ActivatedAbility: public Ability {
int defaultActCost;
int actCost;
// name is inherited from the parent class
public:
int getActCost();
ActivatedAbility(const std::string& nameOfAbility, int actCost);
void performAbility(std::string what, int minionNum, Minion *minion, Player *actPlayer, Player *inactPlayer) override;
void performAbility(std::string what, int minionNum, Ritual *ritual, Player *actPlayer, Player *inactPlayer) override;
void changeActCost(int val);
};
#endif