-/*
- * main.cpp
- *
- * Created on: Aug 1, 2012
- * Author: holy
- */
-
+#include "keys.h"
#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"
#include "battle/Resources.h"
+#include "common/Capsule.h"
#include "common/GameConfig.h"
#include "common/GameState.h"
#include "common/Hero.h"
#include "common/Script.h"
#include "common/Spell.h"
#include "common/Stats.h"
-#include "geometry/Vector.h"
+#include "math/Fixed.h"
+#include "math/Vector.h"
+#include "graphics/CharSelect.h"
#include "graphics/ComplexAnimation.h"
#include "graphics/Font.h"
#include "graphics/Frame.h"
using battle::BattleState;
using battle::Monster;
using battle::PartyLayout;
+using common::Capsule;
using common::GameConfig;
using common::GameState;
+using common::Hero;
using common::Spell;
-using geometry::Vector;
+using math::Fixed;
+using math::Vector;
using graphics::Texture;
using loader::Caster;
using loader::Interpreter;
const int width = 512;
const int height = 448;
- const float walkSpeed = 128.0f;
+ const Fixed<8> walkSpeed = Fixed<8>(1, 8);
bool battle(false);
battle::Monster::CreateTypeDescription();
battle::PartyLayout::CreateTypeDescription();
+ common::Capsule::CreateTypeDescription();
common::Hero::CreateTypeDescription();
common::Ikari::CreateTypeDescription();
common::Item::CreateTypeDescription();
common::TargetingMode::CreateTypeDescription();
graphics::Animation::CreateTypeDescription();
+ graphics::CharSelect::CreateTypeDescription();
graphics::ComplexAnimation::CreateTypeDescription();
graphics::Font::CreateTypeDescription();
graphics::Frame::CreateTypeDescription();
graphics::MenuProperties::CreateTypeDescription();
graphics::SimpleAnimation::CreateTypeDescription();
graphics::Sprite::CreateTypeDescription();
+ graphics::Texture::CreateTypeDescription();
map::Area::CreateTypeDescription();
map::Entity::CreateTypeDescription();
map::Tile::CreateTypeDescription();
map::Trigger::CreateTypeDescription();
+ menu::Resources::CreateTypeDescription();
+
Arguments args;
args.Read(argc, argv);
gameState.party[3] = &gameState.heroes[3];
gameState.partySize = 4;
+ gameState.capsules[1] = *caster.GetCapsule("flash");
+ gameState.capsules[1].UpgradeClass();
+ gameState.capsules[1].UpgradeClass();
+ gameState.capsules[1].UpgradeClass();
+ gameState.capsules[1].UpgradeClass();
+ gameState.capsule = 1;
+
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"));
gameState.heroes[0].AddSpell(valorSpell);
gameState.heroes[1].AddSpell(valorSpell);
+ gameState.inventory.Add(caster.GetItem("zirconPlateItem"), 32);
+ gameState.inventory.Add(caster.GetItem("holyFruitItem"));
+ gameState.inventory.Add(caster.GetItem("darkFruitItem"));
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);
+ gameState.heroes[0].MapEntity().Position() = Vector<Fixed<8> >(64, 128);
- gameState.heroes[1].MapEntity().Position() = Vector<float>(64, 128);
+ gameState.heroes[1].MapEntity().Position() = Vector<Fixed<8> >(64, 128);
gameState.heroes[1].MapEntity().SetFlags(Entity::FLAG_NONBLOCKING);
gameState.heroes[0].MapEntity().AddFollower(&gameState.heroes[1].MapEntity());
- gameState.heroes[2].MapEntity().Position() = Vector<float>(64, 128);
+ gameState.heroes[2].MapEntity().Position() = Vector<Fixed<8> >(64, 128);
gameState.heroes[2].MapEntity().SetFlags(Entity::FLAG_NONBLOCKING);
gameState.heroes[1].MapEntity().AddFollower(&gameState.heroes[2].MapEntity());
- gameState.heroes[3].MapEntity().Position() = Vector<float>(64, 128);
+ gameState.heroes[3].MapEntity().Position() = Vector<Fixed<8> >(64, 128);
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.statusFont = gameConfig.battleResources->normalFont;
-
- graphics::Sprite statusLabels(IMG_Load("test-data/status-labels.png"), 32, 16);
- menuResources.statusLabels = &statusLabels;
-
- graphics::Frame statusFrame(IMG_Load("test-data/status-frame.png"), 32, 32, 32, 32);
- menuResources.statusFrame = &statusFrame;
-
- graphics::Sprite menuFontSprite(IMG_Load("test-data/menu-font.png"), 16, 16);
- graphics::Font menuFont(&menuFontSprite, 0, -2);
-
- menuResources.normalFont = &menuFont;
-
- graphics::Sprite menuCursor(IMG_Load("test-data/menu-cursor.png"), 32, 16);
-
- graphics::MenuProperties mainMenuProperties;
- mainMenuProperties.cols = 2;
- mainMenuProperties.rows = 4;
- mainMenuProperties.charsPerEntry = 8;
- mainMenuProperties.rowGap = 8;
- mainMenuProperties.colGap = 32;
- mainMenuProperties.cursor = &menuCursor;
- mainMenuProperties.font = &menuFont;
- mainMenuProperties.wrapX = true;
- mainMenuProperties.wrapY = true;
- menuResources.mainMenuProperties = &mainMenuProperties;
-
- menuResources.mainMenuItemText = "ITEM";
- menuResources.mainMenuSpellText = "SPELL";
- menuResources.mainMenuCapsuleText = "CAPSULE";
- menuResources.mainMenuEquipmentText = "EQUIP";
- menuResources.mainMenuStatusText = "STATUS";
- menuResources.mainMenuChangeText = "CHANGE";
- menuResources.mainMenuConfigText = "CONFIG";
- menuResources.mainMenuScenarioText = "SCENARIO";
-
- menuResources.mainMenuTimeText = "TIME";
- menuResources.mainMenuGoldText = "GOLD";
-
- graphics::Sprite heroCursor(IMG_Load("test-data/hero-cursor.png"), 64, 16);
- menuResources.heroCursor = &heroCursor;
- menuResources.heroCursorBlinkTime = 532;
-
InitScreen screen(width, height);
app::State *state(0);
battleState->AddMonster(monster);
battleState->AddMonster(monster);
battleState->AddMonster(monster);
+ battleState->SetCapsule(caster.GetCapsule("flash"));
battleState->AddHero(gameState.heroes[0]);
battleState->AddHero(gameState.heroes[1]);
battleState->AddHero(gameState.heroes[2]);
}
Application app(screen, state);
- app.Buttons().MapKey(SDLK_w, Input::PAD_UP);
- app.Buttons().MapKey(SDLK_d, Input::PAD_RIGHT);
- app.Buttons().MapKey(SDLK_s, Input::PAD_DOWN);
- app.Buttons().MapKey(SDLK_a, Input::PAD_LEFT);
- app.Buttons().MapKey(SDLK_RIGHT, Input::ACTION_A);
- app.Buttons().MapKey(SDLK_DOWN, Input::ACTION_B);
- app.Buttons().MapKey(SDLK_UP, Input::ACTION_X);
- app.Buttons().MapKey(SDLK_LEFT, Input::ACTION_Y);
- app.Buttons().MapKey(SDLK_RETURN, Input::START);
- app.Buttons().MapKey(SDLK_SPACE, Input::SELECT);
- app.Buttons().MapKey(SDLK_RSHIFT, Input::SHOULDER_RIGHT);
- app.Buttons().MapKey(SDLK_LSHIFT, Input::SHOULDER_LEFT);
- app.Buttons().MapKey(SDLK_1, Input::DEBUG_1);
- app.Buttons().MapKey(SDLK_2, Input::DEBUG_2);
- app.Buttons().MapKey(SDLK_3, Input::DEBUG_3);
- app.Buttons().MapKey(SDLK_4, Input::DEBUG_4);
+ MapKeys(app.Buttons());
app.Run();
return 0;