+int Capsule::HungerEmpty() const {
+ return HungerTotal() - HungerFull();
+}
+
+int Capsule::HungerTotal() const {
+ return GetClass().hunger;
+}
+
+int Capsule::HungerFull() const {
+ return GetClass().hungerFull;
+}
+
+bool Capsule::IsHungry() const {
+ return HungerEmpty();
+}
+
+void Capsule::Feed(const common::Item *item) {
+ // TODO: find out how to calculate an item's feed value
+ // TODO: an item the capsule favors (changes on every feed and after every
+ // battle) doubles the value
+ int value = 1;
+ GetClass().hungerFull += value;
+ if (GetClass().hungerFull >= GetClass().hunger) {
+ GetClass().hungerFull = GetClass().hunger;
+ UpgradeClass();
+ }
+}
+
+const common::Item *Capsule::UpgradeItem() const {
+ return GetClass().upgradeItem;
+}
+
+void Capsule::UpgradeSpecial() {
+ maxClass = GetClass().upgradeClass + 1;
+ curClass = GetClass().upgradeClass;
+}
+
+