]> git.localhorst.tv Git - l2e.git/blob - src/battle/Capsule.cpp
extracted common capsule base
[l2e.git] / src / battle / Capsule.cpp
1 #include "Capsule.h"
2
3 #include "../common/Capsule.h"
4
5 #include <cassert>
6
7 using graphics::Animation;
8 using graphics::Sprite;
9
10 namespace battle {
11
12 Capsule::Capsule(common::Capsule *master)
13 : master(master)
14 , health(master ? master->MaxHealth() : 0) {
15         if (master) {
16                 stats = master->GetStats();
17         }
18 }
19
20
21 const char *Capsule::Name() const {
22         assert(master);
23         return master->Name();
24 }
25
26 Uint8 Capsule::Level() const {
27         assert(master);
28         return master->Level();
29 }
30
31 const Sprite *Capsule::Sprite() {
32         assert(master);
33         return master->BattleSprite();
34 }
35
36 const Animation *Capsule::MeleeAnimation() const {
37         assert(master);
38         return master->MeleeAnimation();
39 }
40
41 const Animation *Capsule::AttackAnimation() const {
42         assert(master);
43         return master->AttackAnimation();
44 }
45
46 const Animation *Capsule::SpellAnimation() const {
47         assert(master);
48         return master->SpellAnimation();
49 }
50
51
52 Uint16 Capsule::MaxHealth() const {
53         assert(master);
54         return master->MaxHealth();
55 }
56
57 Uint16 Capsule::Health() const {
58         return health;
59 }
60
61 int Capsule::RelativeHealth(int max) const {
62         return Health() * max / MaxHealth();
63 }
64
65 void Capsule::SubtractHealth(int amount) {
66         if (amount > health) {
67                 health = 0;
68         } else {
69                 health -= amount;
70         }
71 }
72
73 }