]> git.localhorst.tv Git - l2e.git/commitdiff
added hero equipment
authorDaniel Karbach <daniel.karbach@localhorst.tv>
Fri, 10 Aug 2012 13:51:55 +0000 (15:51 +0200)
committerDaniel Karbach <daniel.karbach@localhorst.tv>
Fri, 10 Aug 2012 13:51:55 +0000 (15:51 +0200)
src/battle/Hero.cpp
src/battle/Hero.h
src/main.cpp

index 3fbd320dc6e308d0e40651e4db1f66f239030f8b..4bcc6d30175b9372170288cf0d3c3e6551d1b2da 100644 (file)
@@ -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)
index 03f909519400ffac8685e92b9b97301fd29425ae..499239d961beefa21410a3464d4e147eb2c86565 100644 (file)
 #include <vector>
 #include <SDL.h>
 
-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<const common::Spell *> spells;
        // TODO: equipment list
index 1289bde1fbc7ad38218c8c90b34f32486fd51f81..30074366d9c8dbb2fbda12479cd4390859b870b3 100644 (file)
@@ -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<const common::Item *>(&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</* Item */ void *>(&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);