]> git.localhorst.tv Git - l2e.git/blobdiff - src/main.cpp
added capsule attack/animation handling
[l2e.git] / src / main.cpp
index b06b5c7533b1e463460461bafe613af016acf743..53301ce5f5c785fa7c97d6d49f047936fa35e91c 100644 (file)
@@ -1,14 +1,8 @@
-/*
- * main.cpp
- *
- *  Created on: Aug 1, 2012
- *      Author: holy
- */
-
 #include "app/Application.h"
 #include "app/Arguments.h"
 #include "app/Input.h"
 #include "battle/BattleState.h"
+#include "battle/Capsule.h"
 #include "battle/Hero.h"
 #include "battle/Monster.h"
 #include "battle/PartyLayout.h"
@@ -60,10 +54,12 @@ using app::Application;
 using app::Arguments;
 using app::Input;
 using battle::BattleState;
+using battle::Capsule;
 using battle::Monster;
 using battle::PartyLayout;
 using common::GameConfig;
 using common::GameState;
+using common::Hero;
 using common::Spell;
 using geometry::Vector;
 using graphics::Texture;
@@ -86,8 +82,8 @@ using std::string;
 using std::vector;
 
 int main(int argc, char **argv) {
-       const int width = 800;
-       const int height = 480;
+       const int width = 512;
+       const int height = 448;
 
        const float walkSpeed = 128.0f;
 
@@ -120,6 +116,7 @@ int main(int argc, char **argv) {
                graphics::MenuProperties::CreateTypeDescription();
                graphics::SimpleAnimation::CreateTypeDescription();
                graphics::Sprite::CreateTypeDescription();
+               graphics::Texture::CreateTypeDescription();
 
                map::Area::CreateTypeDescription();
                map::Entity::CreateTypeDescription();
@@ -127,6 +124,8 @@ int main(int argc, char **argv) {
                map::Tile::CreateTypeDescription();
                map::Trigger::CreateTypeDescription();
 
+               menu::Resources::CreateTypeDescription();
+
                Arguments args;
                args.Read(argc, argv);
 
@@ -191,11 +190,13 @@ int main(int argc, char **argv) {
                gameState.party[1] = &gameState.heroes[1];
                gameState.party[2] = &gameState.heroes[2];
                gameState.party[3] = &gameState.heroes[3];
+               gameState.partySize = 4;
 
                GameConfig gameConfig;
                gameConfig.state = &gameState;
                gameConfig.heroesLayout = caster.GetPartyLayout("heroesLayout");
                gameConfig.battleResources = caster.GetBattleResources("battleResources");
+               gameConfig.menuResources = caster.GetMenuResources("menuResources");
 
                // temporary test data
                SDL_Surface *bg(IMG_Load("test-data/battle-bg.png"));
@@ -221,41 +222,48 @@ int main(int argc, char **argv) {
                gameState.heroes[0].AddSpell(valorSpell);
                gameState.heroes[1].AddSpell(valorSpell);
 
+               gameState.inventory.Add(caster.GetItem("zirconPlateItem"));
                gameState.inventory.Add(caster.GetItem("antidoteItem"), 9);
+               gameState.inventory.Add(caster.GetItem("powerRingItem"));
                gameState.inventory.Add(caster.GetItem("magicJarItem"), 4);
+               gameState.inventory.Add(caster.GetItem("sProRingItem"));
                gameState.inventory.Add(caster.GetItem("hiPotionItem"), 4);
+               gameState.inventory.Add(caster.GetItem("powerRingItem"));
                gameState.inventory.Add(caster.GetItem("powerPotionItem"), 4);
+               gameState.inventory.Add(caster.GetItem("zircoSwordItem"));
                gameState.inventory.Add(caster.GetItem("escapeItem"), 2);
+               gameState.inventory.Add(caster.GetItem("zircoHelmetItem"));
                gameState.inventory.Add(caster.GetItem("sleepBallItem"), 1);
-
-               gameState.heroes[0].SetWeapon(caster.GetItem("zircoSwordItem"));
-               gameState.heroes[0].SetArmor(caster.GetItem("zirconArmorItem"));
-               gameState.heroes[0].SetShield(caster.GetItem("holyShieldItem"));
-               gameState.heroes[0].SetHelmet(caster.GetItem("legendHelmItem"));
-               gameState.heroes[0].SetRing(caster.GetItem("sProRingItem"));
-               gameState.heroes[0].SetJewel(caster.GetItem("evilJewelItem"));
-
-//             gameState.heroes[1].SetWeapon(cst.GetItem("zircoWhipItem"));
-               gameState.heroes[1].SetArmor(caster.GetItem("zirconPlateItem"));
-               gameState.heroes[1].SetShield(caster.GetItem("zircoGlovesItem"));
-               gameState.heroes[1].SetHelmet(caster.GetItem("holyCapItem"));
-               gameState.heroes[1].SetRing(caster.GetItem("ghostRingItem"));
-               gameState.heroes[1].SetJewel(caster.GetItem("eagleRockItem"));
-
-//             gameState.heroes[2].SetWeapon(cst.GetItem("zircoAxItem"));
-               gameState.heroes[2].SetArmor(caster.GetItem("zirconArmorItem"));
-               gameState.heroes[2].SetShield(caster.GetItem("megaShieldItem"));
-               gameState.heroes[2].SetHelmet(caster.GetItem("zircoHelmetItem"));
-               gameState.heroes[2].SetRing(caster.GetItem("powerRingItem"));
-               gameState.heroes[2].SetJewel(caster.GetItem("evilJewelItem"));
+               gameState.inventory.Add(caster.GetItem("zirconPlateItem"));
+
+               gameState.heroes[0].SetEquipment(Hero::EQUIP_WEAPON, caster.GetItem("zircoSwordItem"));
+               gameState.heroes[0].SetEquipment(Hero::EQUIP_ARMOR, caster.GetItem("zirconArmorItem"));
+               gameState.heroes[0].SetEquipment(Hero::EQUIP_SHIELD, caster.GetItem("holyShieldItem"));
+               gameState.heroes[0].SetEquipment(Hero::EQUIP_HELMET, caster.GetItem("legendHelmItem"));
+               gameState.heroes[0].SetEquipment(Hero::EQUIP_RING, caster.GetItem("sProRingItem"));
+               gameState.heroes[0].SetEquipment(Hero::EQUIP_JEWEL, caster.GetItem("evilJewelItem"));
+
+//             gameState.heroes[1].SetEquipment(Hero::EQUIP_WEAPON, caster.GetItem("zircoWhipItem"));
+               gameState.heroes[1].SetEquipment(Hero::EQUIP_ARMOR, caster.GetItem("zirconPlateItem"));
+               gameState.heroes[1].SetEquipment(Hero::EQUIP_SHIELD, caster.GetItem("zircoGlovesItem"));
+               gameState.heroes[1].SetEquipment(Hero::EQUIP_HELMET, caster.GetItem("holyCapItem"));
+               gameState.heroes[1].SetEquipment(Hero::EQUIP_RING, caster.GetItem("ghostRingItem"));
+               gameState.heroes[1].SetEquipment(Hero::EQUIP_JEWEL, caster.GetItem("eagleRockItem"));
+
+//             gameState.heroes[2].SetEquipment(Hero::EQUIP_WEAPON, caster.GetItem("zircoAxItem"));
+               gameState.heroes[2].SetEquipment(Hero::EQUIP_ARMOR, caster.GetItem("zirconArmorItem"));
+               gameState.heroes[2].SetEquipment(Hero::EQUIP_SHIELD, caster.GetItem("megaShieldItem"));
+               gameState.heroes[2].SetEquipment(Hero::EQUIP_HELMET, caster.GetItem("zircoHelmetItem"));
+               gameState.heroes[2].SetEquipment(Hero::EQUIP_RING, caster.GetItem("powerRingItem"));
+               gameState.heroes[2].SetEquipment(Hero::EQUIP_JEWEL, caster.GetItem("evilJewelItem"));
 
                // NOTE: this is actually Artea equipment
-//             gameState.heroes[3].SetWeapon(cst.GetItem("lizardBlowItem"));
-               gameState.heroes[3].SetArmor(caster.GetItem("holyRobeItem"));
-               gameState.heroes[3].SetShield(caster.GetItem("zircoGlovesItem"));
-               gameState.heroes[3].SetHelmet(caster.GetItem("holyCapItem"));
-               gameState.heroes[3].SetRing(caster.GetItem("rocketRingItem"));
-               gameState.heroes[3].SetJewel(caster.GetItem("krakenRockItem"));
+//             gameState.heroes[3].SetEquipment(Hero::EQUIP_WEAPON, caster.GetItem("lizardBlowItem"));
+               gameState.heroes[3].SetEquipment(Hero::EQUIP_ARMOR, caster.GetItem("holyRobeItem"));
+               gameState.heroes[3].SetEquipment(Hero::EQUIP_SHIELD, caster.GetItem("zircoGlovesItem"));
+               gameState.heroes[3].SetEquipment(Hero::EQUIP_HELMET, caster.GetItem("holyCapItem"));
+               gameState.heroes[3].SetEquipment(Hero::EQUIP_RING, caster.GetItem("rocketRingItem"));
+               gameState.heroes[3].SetEquipment(Hero::EQUIP_JEWEL, caster.GetItem("krakenRockItem"));
 
                gameState.heroes[0].MapEntity().Position() = Vector<float>(64, 128);
 
@@ -271,18 +279,28 @@ int main(int argc, char **argv) {
                gameState.heroes[3].MapEntity().SetFlags(Entity::FLAG_NONBLOCKING);
                gameState.heroes[2].MapEntity().AddFollower(&gameState.heroes[3].MapEntity());
 
-               menu::Resources menuResources;
-               gameConfig.menuResources = &menuResources;
-
-               Texture menubg;
-               menubg.SetSurface(IMG_Load("test-data/menubg.png"));
-               menubg.SetSize(Vector<int>(64, 64));
-               menuResources.menubg = &menubg;
-
-               menuResources.normalFont = gameConfig.battleResources->normalFont;
-
-               graphics::Sprite statusLabels(IMG_Load("test-data/status-labels.png"), 32, 16);
-               menuResources.statusLabels = &statusLabels;
+               graphics::Sprite flashSprite(IMG_Load("test-data/flash.png"), 96, 96);
+               graphics::ComplexAnimation flashAttackAnimation(&flashSprite, 132);
+               graphics::ComplexAnimation::FrameProp flashAttackFrames[4];
+               flashAttackFrames[0] = graphics::ComplexAnimation::FrameProp(0, 1, Vector<int>(0, -16));
+               flashAttackFrames[1] = graphics::ComplexAnimation::FrameProp(0, 0, Vector<int>(0, -16));
+               flashAttackFrames[2] = graphics::ComplexAnimation::FrameProp(0, 1, Vector<int>(0, -16));
+               flashAttackFrames[3] = graphics::ComplexAnimation::FrameProp(0, 0, Vector<int>(0, -16));
+               flashAttackAnimation.SetFrames(flashAttackFrames, 4);
+               Capsule capsule;
+               capsule.SetName("Flash");
+               capsule.SetHealth(5, 5);
+               capsule.SetLevel(1);
+               capsule.GetStats().SetAttack(12);
+               capsule.GetStats().SetDefense(18);
+               capsule.GetStats().SetStrength(2);
+               capsule.GetStats().SetAgility(11);
+               capsule.GetStats().SetIntelligence(16);
+               capsule.GetStats().SetGut(23);
+               capsule.GetStats().SetMagicResistance(11);
+               capsule.SetBattleSprite(&flashSprite);
+               capsule.SetAttackAnimation(&flashAttackAnimation);
+               capsule.SetMeleeAnimation(gameState.heroes[0].MeleeAnimation());
 
                InitScreen screen(width, height);
 
@@ -294,6 +312,7 @@ int main(int argc, char **argv) {
                        battleState->AddMonster(monster);
                        battleState->AddMonster(monster);
                        battleState->AddMonster(monster);
+                       battleState->SetCapsule(capsule);
                        battleState->AddHero(gameState.heroes[0]);
                        battleState->AddHero(gameState.heroes[1]);
                        battleState->AddHero(gameState.heroes[2]);