From fa3de7178227b9cc7f11c92208b5904cee3ae4c4 Mon Sep 17 00:00:00 2001 From: Daniel Karbach Date: Fri, 10 Aug 2012 15:51:55 +0200 Subject: [PATCH] added hero equipment --- src/battle/Hero.cpp | 7 ++++ src/battle/Hero.h | 42 +++++++++++++++++--- src/main.cpp | 93 ++++++++++++++++++++++++++++++++++++++++++++- 3 files changed, 135 insertions(+), 7 deletions(-) diff --git a/src/battle/Hero.cpp b/src/battle/Hero.cpp index 3fbd320..4bcc6d3 100644 --- a/src/battle/Hero.cpp +++ b/src/battle/Hero.cpp @@ -13,6 +13,13 @@ Hero::Hero() : name("") , sprite(0) +, weapon(0) +, armor(0) +, shield(0) +, helmet(0) +, ring(0) +, jewel(0) + , maxHealth(0) , health(0) , maxMana(0) diff --git a/src/battle/Hero.h b/src/battle/Hero.h index 03f9095..499239d 100644 --- a/src/battle/Hero.h +++ b/src/battle/Hero.h @@ -11,7 +11,10 @@ #include #include -namespace common { class Spell; } +namespace common { + class Item; + class Spell; +} namespace graphics { class Sprite; } namespace battle { @@ -31,15 +34,16 @@ public: Uint16 MaxHealth() const { return maxHealth; } Uint16 Health() const { return health; } - int RelativeHealth(int max) const { return health * max / maxHealth; } + int RelativeHealth(int max) const { return Health() * max / MaxHealth(); } Uint16 MaxMana() const { return maxMana; } Uint16 Mana() const { return mana; } - int RelativeMana(int max) const { return maxMana == 0 ? 0 : mana * max / maxMana; } - bool CanUseMagic() const { return maxMana > 0; } + int RelativeMana(int max) const { return MaxMana() == 0 ? 0 : Mana() * max / MaxMana(); } + bool CanUseMagic() const { return MaxMana() > 0; } + Uint8 MaxIP() const { return 255; } Uint8 IP() const { return ip; } - int RelativeIP(int max) const { return ip * max / 255; } + int RelativeIP(int max) const { return IP() * max / MaxIP(); } Uint16 Attack() const { return attack; } Uint16 Defense() const { return defense; } @@ -48,6 +52,20 @@ public: Uint16 Gut() const { return gut; } Uint16 MagicResistance() const { return magicResistance; } + const common::Item *Weapon() const { return weapon; } + const common::Item *Armor() const { return armor; } + const common::Item *Shield() const { return shield; } + const common::Item *Helmet() const { return helmet; } + const common::Item *Ring() const { return ring; } + const common::Item *Jewel() const { return jewel; } + + bool HasWeapon() const { return weapon; } + bool HasArmor() const { return armor; } + bool HasShield() const { return shield; } + bool HasHelmet() const { return helmet; } + bool HasRing() const { return ring; } + bool HasJewel() const { return jewel; } + // temporary setters until loader is implemented public: void SetName(const char *n) { name = n; } @@ -60,12 +78,26 @@ public: void SetMana(Uint16 m) { mana = m; } void SetIP(Uint8 i) { ip = i; } + void SetWeapon(const common::Item *i) { weapon = i; } + void SetArmor(const common::Item *i) { armor = i; } + void SetShield(const common::Item *i) { shield = i; } + void SetHelmet(const common::Item *i) { helmet = i; } + void SetRing(const common::Item *i) { ring = i; } + void SetJewel(const common::Item *i) { jewel = i; } + void AddSpell(const common::Spell *s) { spells.push_back(s); } private: const char *name; graphics::Sprite *sprite; + const common::Item *weapon; + const common::Item *armor; + const common::Item *shield; + const common::Item *helmet; + const common::Item *ring; + const common::Item *jewel; + // TODO: vector does not seem to be a good choice std::vector spells; // TODO: equipment list diff --git a/src/main.cpp b/src/main.cpp index 1289bde..3007436 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -265,7 +265,7 @@ int main(int argc, char **argv) { Sprite shieldIcon(itemIcons, 16, 16, 0, 128); Sprite helmetIcon(itemIcons, 16, 16, 0, 144); Sprite ringIcon(itemIcons, 16, 16, 0, 160); - Sprite stoneIcon(itemIcons, 16, 16, 0, 176); + Sprite jewelIcon(itemIcons, 16, 16, 0, 176); Inventory inventory; Item antidote; @@ -315,6 +315,95 @@ int main(int argc, char **argv) { battleRes.itemMenuHeadline = "Please choose an item."; battleRes.itemMenuPrototype = Menu(&normalFont, &disabledFont, &handCursorSprite, 15, 6, 8, 16, 1, 32, 2, ':'); + Item zircoSword; + zircoSword.SetName("Zirco sword"); + zircoSword.SetMenuIcon(&swordIcon); + maxim.SetWeapon(&zircoSword); + Item zirconArmor; + zirconArmor.SetName("Zircon armor"); + zirconArmor.SetMenuIcon(&armorIcon); + maxim.SetArmor(&zirconArmor); + Item holyShield; + holyShield.SetName("Holy shield"); + holyShield.SetMenuIcon(&shieldIcon); + maxim.SetShield(&holyShield); + Item legendHelm; + legendHelm.SetName("Legend helm"); + legendHelm.SetMenuIcon(&helmetIcon); + maxim.SetHelmet(&legendHelm); + Item sProRing; + sProRing.SetName("S-pro ring"); + sProRing.SetMenuIcon(&ringIcon); + maxim.SetRing(&sProRing); + Item evilJewel; + evilJewel.SetName("Evil jewel"); + evilJewel.SetMenuIcon(&jewelIcon); + maxim.SetJewel(&evilJewel); + + Item zircoWhip; + zircoWhip.SetName("Zirco whip"); + zircoWhip.SetMenuIcon(&rodIcon); + selan.SetWeapon(&zircoWhip); + Item zirconPlate; + zirconPlate.SetName("Zircon plate"); + zirconPlate.SetMenuIcon(&armorIcon); + selan.SetArmor(&zirconPlate); + Item zircoGloves; + zircoGloves.SetName("Zirco gloves"); + zircoGloves.SetMenuIcon(&shieldIcon); + selan.SetShield(&zircoGloves); + Item holyCap; + holyCap.SetName("Holy cap"); + holyCap.SetMenuIcon(&helmetIcon); + selan.SetHelmet(&holyCap); + Item ghostRing; + ghostRing.SetName("Ghost ring"); + ghostRing.SetMenuIcon(&ringIcon); + selan.SetRing(&ghostRing); + Item eagleRock; + eagleRock.SetName("Eagle rock"); + eagleRock.SetMenuIcon(&jewelIcon); + selan.SetJewel(&eagleRock); + + Item zircoAx; + zircoAx.SetName("Zirco ax"); + zircoAx.SetMenuIcon(&axIcon); + guy.SetWeapon(&zircoAx); + guy.SetArmor(&zirconArmor); + Item megaShield; + megaShield.SetName("Mega shield"); + megaShield.SetMenuIcon(&shieldIcon); + guy.SetShield(&megaShield); + Item zircoHelmet; + zircoHelmet.SetName("Zirco helmet"); + zircoHelmet.SetMenuIcon(&helmetIcon); + guy.SetHelmet(&zircoHelmet); + Item powerRing; + powerRing.SetName("Power ring"); + powerRing.SetMenuIcon(&ringIcon); + guy.SetRing(&powerRing); + guy.SetJewel(&evilJewel); + + // NOTE: this is actually Artea equipment + Item lizardBlow; + lizardBlow.SetName("Lizard blow"); + lizardBlow.SetMenuIcon(&swordIcon); + dekar.SetWeapon(&lizardBlow); + Item holyRobe; + holyRobe.SetName("Holy robe"); + holyRobe.SetMenuIcon(&armorIcon); + dekar.SetArmor(&holyRobe); + dekar.SetShield(&zircoGloves); + dekar.SetHelmet(&holyCap); + Item rocketRing; + rocketRing.SetName("Rocket ring"); + rocketRing.SetMenuIcon(&ringIcon); + dekar.SetRing(&rocketRing); + Item krakenRock; + krakenRock.SetName("Kraken rock"); + krakenRock.SetMenuIcon(&jewelIcon); + dekar.SetJewel(&krakenRock); + battleRes.ikariMenuHeadline = "Please choose equipment."; battleRes.ikariMenuPrototype = Menu(&normalFont, &disabledFont, &handCursorSprite, 26, 6, 8, 16, 1, 32); battleRes.ikariMenuPrototype.Add("Zirco whip Thundershriek", 0, false, &swordIcon); @@ -322,7 +411,7 @@ int main(int argc, char **argv) { battleRes.ikariMenuPrototype.Add("Zirco gloves Forcefield", 0, true, &shieldIcon); battleRes.ikariMenuPrototype.Add("Holy cap Vulnerable", 0, false, &helmetIcon); battleRes.ikariMenuPrototype.Add("Ghost ring Destroy", 0, true, &ringIcon); - battleRes.ikariMenuPrototype.Add("Eagle rock Dive", 0, true, &stoneIcon); + battleRes.ikariMenuPrototype.Add("Eagle rock Dive", 0, true, &jewelIcon); BattleState *battleState(new BattleState(bg, monstersLayout, heroesLayout, &battleRes)); battleState->AddMonster(monster); -- 2.39.2