]> git.localhorst.tv Git - l2e.git/blobdiff - src/battle/Capsule.cpp
extracted common capsule base
[l2e.git] / src / battle / Capsule.cpp
index 709ef3bf0af340cbf36adfb10f4eb5cfa7269c47..ef85ae17b22a88a45a52b6f42bd6aba6356754cd 100644 (file)
@@ -1,24 +1,66 @@
 #include "Capsule.h"
 
+#include "../common/Capsule.h"
+
+#include <cassert>
+
+using graphics::Animation;
+using graphics::Sprite;
+
 namespace battle {
 
-Capsule::Capsule()
-: name(0)
+Capsule::Capsule(common::Capsule *master)
+: master(master)
+, health(master ? master->MaxHealth() : 0) {
+       if (master) {
+               stats = master->GetStats();
+       }
+}
+
 
-, maxHealth(0)
-, health(0)
-, maxMana(0)
-, mana(0)
+const char *Capsule::Name() const {
+       assert(master);
+       return master->Name();
+}
 
-, level(0)
+Uint8 Capsule::Level() const {
+       assert(master);
+       return master->Level();
+}
 
-, battleSprite(0)
-, meleeAnimation(0)
-, attackAnimation(0)
-, spellAnimation(0) {
+const Sprite *Capsule::Sprite() {
+       assert(master);
+       return master->BattleSprite();
+}
 
+const Animation *Capsule::MeleeAnimation() const {
+       assert(master);
+       return master->MeleeAnimation();
 }
 
+const Animation *Capsule::AttackAnimation() const {
+       assert(master);
+       return master->AttackAnimation();
+}
+
+const Animation *Capsule::SpellAnimation() const {
+       assert(master);
+       return master->SpellAnimation();
+}
+
+
+Uint16 Capsule::MaxHealth() const {
+       assert(master);
+       return master->MaxHealth();
+}
+
+Uint16 Capsule::Health() const {
+       return health;
+}
+
+int Capsule::RelativeHealth(int max) const {
+       return Health() * max / MaxHealth();
+}
 
 void Capsule::SubtractHealth(int amount) {
        if (amount > health) {