-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy patheffect.cpp
More file actions
124 lines (122 loc) · 2.93 KB
/
Copy patheffect.cpp
File metadata and controls
124 lines (122 loc) · 2.93 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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include <map>
#include "effect.hpp"
#include "hero.hpp"
#include "NPC.hpp"
std::map<EE::Name, std::string> EfToStrMap = {
{EE::Name::Heal, "Heal"},
{EE::Name::DealDMG, "DealDMG"},
{EE::Name::Recharge, "Recharge"},
{EE::Name::Repair, "Repair"},
{EE::Name::HPRegen, "HPRegen"},
{EE::Name::MPRegen, "MPRegen"},
{EE::Name::SatisfyHunger, "SatisfyHunger"},
{EE::Name::Shield, "Shield"},
{EE::Name::Stun, "Stun"},
{EE::Name::Weakness, "Weakness"}};
/************************** constructor **************************************/
Effect::Effect(EE::Name name, int main_amount): name(name),
main_amount(main_amount)
{
}
/*****************************************************************************/
Effect::~Effect()
{
std::cout<< "destroy" << std::endl;
}
std::string Effect::getName()
{
return EfToStrMap[name];
}
int Effect::getMainAmount()
{
return main_amount;
}
int Effect::passive_effect()
{
return 0;
}
int Effect::active_effect(Hero* hero)
{
switch (name)
{
case EE::Name::Heal : heal(hero); break;
case EE::Name::DealDMG : dealDMG(hero); break;
case EE::Name::Recharge : recharge(hero); break;
case EE::Name::Repair : repair(hero); break;
case EE::Name::HPRegen : HPRegen(hero); break;
case EE::Name::MPRegen : MPRegen(hero); break;
case EE::Name::SatisfyHunger : satisfyHunger(hero); break;
case EE::Name::Shield : shield(hero); break;
case EE::Name::Stun : stun(hero); break;
case EE::Name::Weakness : weakness(hero); break;
}
return 0;
}
int Effect::heal(Hero* hero)
{
if((hero->getHp().first + main_amount) < hero->getHp().second)
{
hero->setHp(std::make_pair(hero->getHp().first + main_amount,
hero->getHp().second));
}
else
{
hero->setHp(std::make_pair(hero->getHp().second, hero->getHp().second));
}
return 0;
}
int Effect::dealDMG(Hero* target)
{
if((target->getHp().first > main_amount))
{
target->setHp(std::make_pair(target->getHp().first - main_amount,
target->getHp().second));
}
else
{
target->setIsDead(true);
std::cout << "target is dead" << std::endl;
return 1;
}
return 0;
}
int Effect::shield(Hero* hero)
{
(void) hero;
return 0;
}
int Effect::recharge(Hero* hero)
{
(void) hero;
return 0;
}
int Effect::satisfyHunger(Hero* hero)
{
(void) hero;
return 0;
}
int Effect::repair(Hero* hero)
{
(void) hero;
return 0;
}
int Effect::HPRegen(Hero* hero)
{
(void) hero;
return 0;
}
int Effect::MPRegen(Hero* hero)
{
(void) hero;
return 0;
}
int Effect::stun(Hero* hero)
{
(void) hero;
return 0;
}
int Effect::weakness(Hero* hero)
{
(void) hero;
return 0;
}