X-Git-Url: http://git.localhorst.tv/?a=blobdiff_plain;f=src%2Fmain.cpp;h=0e12f5b92ca0bce784a0daf5940eec610a020c1d;hb=cc3d698b8c1ad09d7a3f9e3f28bc84e0ac1735ea;hp=beef2feba24a0a74497c282b4dcf112a1d832350;hpb=3a8e247d08c44419e632f575d2c6a919ae42a236;p=l2e.git diff --git a/src/main.cpp b/src/main.cpp index beef2fe..0e12f5b 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,10 +1,3 @@ -/* - * main.cpp - * - * Created on: Aug 1, 2012 - * Author: holy - */ - #include "app/Application.h" #include "app/Arguments.h" #include "app/Input.h" @@ -19,6 +12,7 @@ #include "common/Ikari.h" #include "common/Inventory.h" #include "common/Item.h" +#include "common/Script.h" #include "common/Spell.h" #include "common/Stats.h" #include "geometry/Vector.h" @@ -29,6 +23,7 @@ #include "graphics/Menu.h" #include "graphics/SimpleAnimation.h" #include "graphics/Sprite.h" +#include "graphics/Texture.h" #include "loader/Caster.h" #include "loader/Interpreter.h" #include "loader/ParsedSource.h" @@ -40,6 +35,7 @@ #include "map/MapState.h" #include "map/Tile.h" #include "map/Trigger.h" +#include "menu/Resources.h" #include "sdl/InitImage.h" #include "sdl/InitScreen.h" #include "sdl/InitSDL.h" @@ -62,30 +58,16 @@ using battle::PartyLayout; using common::GameConfig; using common::GameState; using common::Hero; -using common::Ikari; -using common::Inventory; -using common::Item; using common::Spell; -using common::Stats; using geometry::Vector; -using graphics::ComplexAnimation; -using graphics::Font; -using graphics::Frame; -using graphics::Gauge; -using graphics::Menu; -using graphics::SimpleAnimation; -using graphics::Sprite; +using graphics::Texture; using loader::Caster; using loader::Interpreter; using loader::ParsedSource; using loader::Parser; using loader::TypeDescription; -using map::Area; using map::Entity; -using map::Map; using map::MapState; -using map::Tile; -using map::Trigger; using sdl::InitImage; using sdl::InitScreen; using sdl::InitSDL; @@ -98,10 +80,9 @@ 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 int tileSize = 32; const float walkSpeed = 128.0f; bool battle(false); @@ -112,24 +93,33 @@ int main(int argc, char **argv) { InitSDL sdl; InitImage image(IMG_INIT_PNG); - battle::Resources::CreateTypeDescription(); - ComplexAnimation::CreateTypeDescription(); - Font::CreateTypeDescription(); - Frame::CreateTypeDescription(); - Gauge::CreateTypeDescription(); - Hero::CreateTypeDescription(); - Ikari::CreateTypeDescription(); Interpreter::CreateTypeDescriptions(); - Item::CreateTypeDescription(); - graphics::MenuProperties::CreateTypeDescription(); - Monster::CreateTypeDescription(); - PartyLayout::CreateTypeDescription(); - SimpleAnimation::CreateTypeDescription(); - Spell::CreateTypeDescription(); - Sprite::CreateTypeDescription(); - Stats::CreateTypeDescription(); + + battle::Resources::CreateTypeDescription(); + battle::Monster::CreateTypeDescription(); + battle::PartyLayout::CreateTypeDescription(); + + common::Hero::CreateTypeDescription(); + common::Ikari::CreateTypeDescription(); + common::Item::CreateTypeDescription(); + common::Stats::CreateTypeDescription(); + common::Spell::CreateTypeDescription(); common::TargetingMode::CreateTypeDescription(); - Entity::CreateTypeDescription(); + + graphics::Animation::CreateTypeDescription(); + graphics::ComplexAnimation::CreateTypeDescription(); + graphics::Font::CreateTypeDescription(); + graphics::Frame::CreateTypeDescription(); + graphics::Gauge::CreateTypeDescription(); + graphics::MenuProperties::CreateTypeDescription(); + graphics::SimpleAnimation::CreateTypeDescription(); + graphics::Sprite::CreateTypeDescription(); + + map::Area::CreateTypeDescription(); + map::Entity::CreateTypeDescription(); + map::Map::CreateTypeDescription(); + map::Tile::CreateTypeDescription(); + map::Trigger::CreateTypeDescription(); Arguments args; args.Read(argc, argv); @@ -195,6 +185,7 @@ 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; @@ -225,304 +216,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")); - - Tile tiles1[64]; - - tiles1[ 0].SetOffset(Vector(2, 1)); - tiles1[ 1].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_NORTH | Tile::BLOCK_WEST); - tiles1[ 2].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH); - tiles1[ 3].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH | Tile::BLOCK_EAST); - tiles1[ 4].SetOffset(Vector(0, 1)); - tiles1[ 5].SetOffset(Vector(2, 0)); - tiles1[ 6].SetOffset(Vector(2, 0)); - tiles1[ 7].SetOffset(Vector(2, 0)); - - tiles1[ 8].SetOffset(Vector(2, 1)); - tiles1[ 9].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_WEST); - tiles1[10].SetOffset(Vector(3, 0)); - tiles1[11].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_EAST); - tiles1[12].SetOffset(Vector(0, 2)); - tiles1[13].SetOffset(Vector(1, 2)); - tiles1[14].SetOffset(Vector(1, 2)); - tiles1[15].SetOffset(Vector(1, 2)); - - tiles1[16].SetOffset(Vector(2, 1)); - tiles1[17].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_WEST); - tiles1[18].SetOffset(Vector(3, 0)); - tiles1[19].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_EAST); - tiles1[20].SetOffset(Vector(0, 3)); - tiles1[21].SetOffset(Vector(1, 3)); - tiles1[22].SetOffset(Vector(1, 3)); - tiles1[23].SetOffset(Vector(2, 3)); - - tiles1[24].SetOffset(Vector(2, 1)); - tiles1[25].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_WEST); - tiles1[26].SetOffset(Vector(3, 0)); - tiles1[27].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_EAST); - tiles1[28].SetOffset(Vector(0, 4)); - tiles1[29].SetOffset(Vector(1, 4)); - tiles1[30].SetOffset(Vector(1, 4)); - tiles1[31].SetOffset(Vector(2, 4)); - - tiles1[32].SetOffset(Vector(2, 1)); - tiles1[33].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_WEST); - tiles1[34].SetOffset(Vector(3, 0)); - tiles1[35].SetOffset(Vector(3, 0)); - tiles1[36].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH); - tiles1[37].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH); - tiles1[38].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH); - tiles1[39].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH); - - tiles1[40].SetOffset(Vector(2, 1)); - tiles1[41].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_WEST); - tiles1[42].SetOffset(Vector(3, 0)); - tiles1[43].SetOffset(Vector(3, 0)); - tiles1[44].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_SOUTH); - tiles1[45].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_SOUTH); - tiles1[46].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_SOUTH); - tiles1[47].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_SOUTH); - - tiles1[48].SetOffset(Vector(2, 1)); - tiles1[49].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_WEST); - tiles1[50].SetOffset(Vector(3, 0)); - tiles1[51].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_EAST); - tiles1[52].SetOffset(Vector(0, 0)); - tiles1[53].SetOffset(Vector(1, 0)); - tiles1[54].SetOffset(Vector(1, 0)); - tiles1[55].SetOffset(Vector(1, 0)); - - tiles1[56].SetOffset(Vector(2, 1)); - tiles1[57].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_SOUTH | Tile::BLOCK_WEST); - tiles1[58].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_SOUTH); - tiles1[59].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_SOUTH | Tile::BLOCK_EAST); - tiles1[60].SetOffset(Vector(0, 1)); - tiles1[61].SetOffset(Vector(1, 1)); - tiles1[62].SetOffset(Vector(1, 1)); - tiles1[63].SetOffset(Vector(1, 1)); - - Tile tiles2[64]; - - tiles2[ 0].SetOffset(Vector(2, 0)); - tiles2[ 1].SetOffset(Vector(2, 0)); - tiles2[ 2].SetOffset(Vector(2, 0)); - tiles2[ 3].SetOffset(Vector(2, 0)); - tiles2[ 4].SetOffset(Vector(2, 0)); - tiles2[ 5].SetOffset(Vector(2, 0)); - tiles2[ 6].SetOffset(Vector(2, 0)); - tiles2[ 7].SetOffset(Vector(2, 0)); - - tiles2[ 8].SetOffset(Vector(1, 2)); - tiles2[ 9].SetOffset(Vector(1, 2)); - tiles2[10].SetOffset(Vector(5, 3)); - tiles2[11].SetOffset(Vector(2, 0)); - tiles2[12].SetOffset(Vector(2, 0)); - tiles2[13].SetOffset(Vector(2, 0)); - tiles2[14].SetOffset(Vector(2, 0)); - tiles2[15].SetOffset(Vector(2, 0)); - - tiles2[16].SetOffset(Vector(3, 3)); - tiles2[17].SetOffset(Vector(0, 3)); - tiles2[18].SetOffset(Vector(0, 1)); - tiles2[19].SetOffset(Vector(2, 0)); - tiles2[20].SetOffset(Vector(2, 0)); - tiles2[21].SetOffset(Vector(2, 0)); - tiles2[22].SetOffset(Vector(2, 0)); - tiles2[23].SetOffset(Vector(2, 0)); - - tiles2[24].SetOffset(Vector(3, 4)).SetFlags(Tile::BLOCK_NORTH | Tile::BLOCK_EAST | Tile::BLOCK_WEST); - tiles2[25].SetOffset(Vector(0, 4)); - tiles2[26].SetOffset(Vector(0, 1)); - tiles2[27].SetOffset(Vector(2, 0)); - tiles2[28].SetOffset(Vector(2, 0)); - tiles2[29].SetOffset(Vector(2, 0)); - tiles2[30].SetOffset(Vector(2, 0)); - tiles2[31].SetOffset(Vector(2, 0)); - - tiles2[32].SetOffset(Vector(5, 0)); - tiles2[33].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH | Tile::BLOCK_EAST); - tiles2[34].SetOffset(Vector(0, 1)); - tiles2[35].SetOffset(Vector(2, 0)); - tiles2[36].SetOffset(Vector(2, 0)); - tiles2[37].SetOffset(Vector(2, 0)); - tiles2[38].SetOffset(Vector(2, 0)); - tiles2[39].SetOffset(Vector(2, 0)); - - tiles2[40].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_SOUTH); - tiles2[41].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_SOUTH | Tile::BLOCK_EAST); - tiles2[42].SetOffset(Vector(0, 1)); - tiles2[43].SetOffset(Vector(2, 0)); - tiles2[44].SetOffset(Vector(2, 0)); - tiles2[45].SetOffset(Vector(2, 0)); - tiles2[46].SetOffset(Vector(2, 0)); - tiles2[47].SetOffset(Vector(2, 0)); - - tiles2[48].SetOffset(Vector(1, 0)); - tiles2[49].SetOffset(Vector(1, 0)); - tiles2[50].SetOffset(Vector(5, 4)); - tiles2[51].SetOffset(Vector(2, 0)); - tiles2[52].SetOffset(Vector(2, 0)); - tiles2[53].SetOffset(Vector(2, 0)); - tiles2[54].SetOffset(Vector(2, 0)); - tiles2[55].SetOffset(Vector(2, 0)); - - tiles2[56].SetOffset(Vector(2, 0)); - tiles2[57].SetOffset(Vector(2, 0)); - tiles2[58].SetOffset(Vector(2, 0)); - tiles2[59].SetOffset(Vector(2, 0)); - tiles2[60].SetOffset(Vector(2, 0)); - tiles2[61].SetOffset(Vector(2, 0)); - tiles2[62].SetOffset(Vector(2, 0)); - tiles2[63].SetOffset(Vector(2, 0)); - - Area areas1[2]; - areas1[0].SetTiles(tiles1, 64); - areas1[0].SetWidth(8); - areas1[1].SetTiles(tiles2, 64); - areas1[1].SetWidth(8); - - Trigger triggers1[1]; - triggers1[0].SetTilePosition(Vector(8, 3)); - triggers1[0].SetType(Trigger::TYPE_NORTH); - - SDL_Surface *tilesetImg(IMG_Load("test-data/tileset.png")); - Sprite tileset(tilesetImg, tileSize, tileSize); - - Map map1; - map1.SetAreas(areas1, 2); - map1.SetTileset(&tileset); - map1.SetTriggers(triggers1, 1); - map1.SetWidth(2); - map1.SetBattleBackground(bg); - - Tile tiles3[64]; - - tiles3[ 0].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH | Tile::BLOCK_WEST); - tiles3[ 1].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH); - tiles3[ 2].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH); - tiles3[ 3].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH); - tiles3[ 4].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH); - tiles3[ 5].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH); - tiles3[ 6].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH); - tiles3[ 7].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_NORTH | Tile::BLOCK_EAST); - - tiles3[ 8].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_WEST); - tiles3[ 9].SetOffset(Vector(3, 0)); - tiles3[10].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_SOUTH); - tiles3[11].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_SOUTH); - tiles3[12].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_SOUTH); - tiles3[13].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_SOUTH); - tiles3[14].SetOffset(Vector(4, 0)); - tiles3[15].SetOffset(Vector(4, 0)).SetFlags(Tile::BLOCK_EAST | Tile::BLOCK_SOUTH); - - tiles3[16].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_WEST); - tiles3[17].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_EAST); - tiles3[18].SetOffset(Vector(0, 0)); - tiles3[19].SetOffset(Vector(1, 0)); - tiles3[20].SetOffset(Vector(1, 0)); - tiles3[21].SetOffset(Vector(3, 2)); - tiles3[22].SetOffset(Vector(4, 2)).SetFlags(Tile::BLOCK_EAST | Tile::BLOCK_SOUTH | Tile::BLOCK_WEST); - tiles3[23].SetOffset(Vector(5, 2)); - - tiles3[24].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_WEST); - tiles3[25].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_EAST); - tiles3[26].SetOffset(Vector(0, 1)); - tiles3[27].SetOffset(Vector(2, 0)); - tiles3[28].SetOffset(Vector(2, 0)); - tiles3[29].SetOffset(Vector(1, 2)); - tiles3[30].SetOffset(Vector(1, 2)); - tiles3[31].SetOffset(Vector(1, 2)); - - tiles3[32].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_WEST); - tiles3[33].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_EAST); - tiles3[34].SetOffset(Vector(0, 1)); - tiles3[35].SetOffset(Vector(2, 0)); - tiles3[36].SetOffset(Vector(2, 0)); - tiles3[37].SetOffset(Vector(2, 3)); - tiles3[38].SetOffset(Vector(3, 3)); - tiles3[39].SetOffset(Vector(0, 3)); - - tiles3[40].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_WEST); - tiles3[41].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_EAST); - tiles3[42].SetOffset(Vector(0, 1)); - tiles3[43].SetOffset(Vector(2, 0)); - tiles3[44].SetOffset(Vector(2, 0)); - tiles3[45].SetOffset(Vector(2, 4)); - tiles3[46].SetOffset(Vector(3, 4)); - tiles3[47].SetOffset(Vector(0, 4)); - - tiles3[48].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_WEST); - tiles3[49].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_EAST); - tiles3[50].SetOffset(Vector(0, 1)); - tiles3[51].SetOffset(Vector(2, 0)); - tiles3[52].SetOffset(Vector(2, 0)); - tiles3[53].SetOffset(Vector(4, 1)); - tiles3[54].SetOffset(Vector(5, 1)); - tiles3[55].SetOffset(Vector(3, 1)); - - tiles3[56].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_SOUTH | Tile::BLOCK_WEST); - tiles3[57].SetOffset(Vector(3, 0)).SetFlags(Tile::BLOCK_EAST | Tile::BLOCK_SOUTH); - tiles3[58].SetOffset(Vector(0, 1)); - tiles3[59].SetOffset(Vector(2, 0)); - tiles3[60].SetOffset(Vector(2, 0)); - tiles3[61].SetOffset(Vector(2, 0)); - tiles3[62].SetOffset(Vector(2, 0)); - tiles3[63].SetOffset(Vector(2, 0)); - - Area areas2[1]; - areas2[0].SetTiles(tiles3, 64); - areas2[0].SetWidth(8); - - Trigger triggers2[1]; - triggers2[0].SetTilePosition(Vector(6, 2)); - triggers2[0].SetType(Trigger::TYPE_SOUTH); - - Map map2; - map2.SetAreas(areas2, 1); - map2.SetTileset(&tileset); - map2.SetTriggers(triggers2, 1); - map2.SetWidth(1); - map2.SetBattleBackground(bg); - - triggers1[0].map = &map2; - triggers1[0].target = Vector(6, 2); - - triggers2[0].map = &map1; - triggers2[0].target = Vector(8, 3); +// 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(64, 128); @@ -538,22 +273,199 @@ int main(int argc, char **argv) { gameState.heroes[3].MapEntity().SetFlags(Entity::FLAG_NONBLOCKING); gameState.heroes[2].MapEntity().AddFollower(&gameState.heroes[3].MapEntity()); - Entity mapPopulation[2]; - map1.SetEntities(mapPopulation, 2); - - SDL_Surface *mapMonsterImg(IMG_Load("test-data/monster-map.png")); - Sprite mapMonsterSprite(mapMonsterImg, 32, 32); - SimpleAnimation mapMonsterAnimation(&mapMonsterSprite, 500, 2, 0, 0, true); - mapPopulation[0].SetAnimation(&mapMonsterAnimation); - mapPopulation[0].Position() = Vector(64, 32); - mapPopulation[0].SetOrientation(Entity::ORIENTATION_SOUTH); - mapPopulation[0].SetPartyLayout(&monstersLayout); - mapPopulation[0].SetMonsters(&monster, 1); - - Sprite blockSprite(tilesetImg, tileSize, tileSize, 3 * tileSize, 1 * tileSize); - mapPopulation[1].SetSprite(&blockSprite); - mapPopulation[1].Position() = Vector(64, 160); - mapPopulation[1].SetFlags(Entity::FLAG_PUSHABLE | Entity::FLAG_FIXED_ORIENTATION); + menu::Resources menuResources; + gameConfig.menuResources = &menuResources; + + Texture menubg; + menubg.SetSurface(IMG_Load("test-data/menubg.png")); + menubg.SetSize(Vector(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); + graphics::Sprite menuInactiveFontSprite(IMG_Load("test-data/menu-font-inactive.png"), 16, 16); + graphics::Font menuInactiveFont(&menuInactiveFontSprite, 0, -2); + + menuResources.normalFont = &menuFont; + menuResources.inactiveFont = &menuInactiveFont; + + graphics::Sprite menuCursor(IMG_Load("test-data/menu-cursor.png"), 32, 16); + menuResources.menuCursor = &menuCursor; + graphics::Sprite menuActiveCursor(IMG_Load("test-data/menu-cursor-active.png"), 32, 18); + menuResources.menuActiveCursor = &menuActiveCursor; + + 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; + + menuResources.noEquipmentText = "No equip"; + + graphics::Sprite shoulderNav(IMG_Load("test-data/shoulder-nav.png"), 160, 16); + menuResources.shoulderNav = &shoulderNav; + + menuResources.atpLabel = "ATP"; + menuResources.dfpLabel = "DFP"; + menuResources.strLabel = "STR"; + menuResources.aglLabel = "AGL"; + menuResources.intLabel = "INT"; + menuResources.gutLabel = "GUT"; + menuResources.mgrLabel = "MGR"; + + menuResources.ipLabel = "IP"; + menuResources.experienceLabel = "NOW EXP"; + menuResources.nextLevelLabel = "NEXT LEVEL"; + + graphics::MenuProperties statusMenuProperties; + statusMenuProperties.cols = 2; + statusMenuProperties.rows = 1; + statusMenuProperties.charsPerEntry = 6; + statusMenuProperties.rowGap = 0; + statusMenuProperties.colGap = 16; + statusMenuProperties.cursor = &menuCursor; + statusMenuProperties.font = &menuFont; + statusMenuProperties.wrapX = true; + menuResources.statusMenuProperties = &statusMenuProperties; + + menuResources.nextLabel = "NEXT"; + menuResources.returnLabel = "RETURN"; + + graphics::MenuProperties itemMenuProperties; + itemMenuProperties.cols = 3; + itemMenuProperties.rows = 1; + itemMenuProperties.charsPerEntry = 5; + itemMenuProperties.rowGap = 8; + itemMenuProperties.colGap = 16; + itemMenuProperties.cursor = &menuCursor; + itemMenuProperties.selectedCursor = &menuActiveCursor; + itemMenuProperties.font = &menuFont; + itemMenuProperties.wrapX = true; + itemMenuProperties.wrapY = true; + menuResources.itemMenuProperties = &itemMenuProperties; + menuResources.itemMenuUseText = "USE"; + menuResources.itemMenuSortText = "SORT"; + menuResources.itemMenuDropText = "DROP"; + + graphics::MenuProperties inventoryMenuProperties; + inventoryMenuProperties.cols = 1; + inventoryMenuProperties.rows = 6; + inventoryMenuProperties.charsPerEntry = 13; + inventoryMenuProperties.rowGap = 8; + inventoryMenuProperties.cursor = &menuCursor; + inventoryMenuProperties.selectedCursor = &menuActiveCursor; + inventoryMenuProperties.font = &menuFont; + inventoryMenuProperties.disabledFont = &menuInactiveFont; + inventoryMenuProperties.iconSpace = 16; + inventoryMenuProperties.charsPerNumber = 2; + inventoryMenuProperties.delimiter = ':'; + menuResources.inventoryMenuProperties = &inventoryMenuProperties; + + graphics::MenuProperties spellMenuProperties; + spellMenuProperties.cols = 2; + spellMenuProperties.rows = 6; + spellMenuProperties.charsPerEntry = 8; + spellMenuProperties.rowGap = 8; + spellMenuProperties.colGap = 48; + spellMenuProperties.cursor = &menuCursor; + spellMenuProperties.selectedCursor = &menuActiveCursor; + spellMenuProperties.font = &menuFont; + spellMenuProperties.disabledFont = &menuInactiveFont; + spellMenuProperties.iconSpace = 0; + spellMenuProperties.charsPerNumber = 2; + spellMenuProperties.delimiter = ':'; + menuResources.spellMenuProperties = &spellMenuProperties; + + graphics::MenuProperties equipmentActionMenuProperties; + equipmentActionMenuProperties.cols = 1; + equipmentActionMenuProperties.rows = 5; + equipmentActionMenuProperties.charsPerEntry = 10; + equipmentActionMenuProperties.rowGap = 8; + equipmentActionMenuProperties.cursor = &menuCursor; + equipmentActionMenuProperties.selectedCursor = &menuActiveCursor; + equipmentActionMenuProperties.font = &menuFont; + equipmentActionMenuProperties.iconSpace = 0; + menuResources.equipmentActionMenuProperties = &equipmentActionMenuProperties; + + graphics::MenuProperties equipmentMenuProperties; + equipmentMenuProperties.cols = 1; + equipmentMenuProperties.rows = 6; + equipmentMenuProperties.charsPerEntry = 12; + equipmentMenuProperties.rowGap = 16; + equipmentMenuProperties.cursor = &menuCursor; + equipmentMenuProperties.selectedCursor = &menuActiveCursor; + equipmentMenuProperties.font = menuResources.statusFont; + equipmentMenuProperties.iconSpace = 16; + equipmentMenuProperties.wrapY = true; + menuResources.equipmentMenuProperties = &equipmentMenuProperties; + + menuResources.equipMenuEquipLabel = "EQUIP"; + menuResources.equipMenuStrongestLabel = "STRONGEST"; + menuResources.equipMenuRemoveLabel = "REMOVE"; + menuResources.equipMenuRemoveAllLabel = "REMOVE ALL"; + menuResources.equipMenuDropLabel = "DROP"; + + graphics::MenuProperties configMenuProperties; + configMenuProperties.cols = 1; + configMenuProperties.rows = 4; + configMenuProperties.charsPerEntry = 8; + configMenuProperties.rowGap = 32; + configMenuProperties.cursor = &menuCursor; + configMenuProperties.font = &menuFont; + configMenuProperties.wrapY = true; + menuResources.configMenuProperties = &configMenuProperties; + + menuResources.configMessageSpeedLabel = "MESSAGE\n SPEED"; + menuResources.configMessageSpeedFast = "FAST"; + menuResources.configMessageSpeedNormal = "NORMAL"; + menuResources.configMessageSpeedSlow = "SLOW"; + menuResources.configBattleCursorLabel = "BATTLE\n CURSOR"; + menuResources.configStatusCursorLabel = "STATUS\n CURSOR"; + menuResources.configCursorClear = "CLEAR"; + menuResources.configCursorMemory = "MEMORY"; + menuResources.configMusicLabel = "MUSIC"; + menuResources.configMusicStereo = "STEREO"; + menuResources.configMusicMono = "MONO"; + + graphics::MenuProperties scenarioMenuProperties; + scenarioMenuProperties.cols = 1; + scenarioMenuProperties.rows = 6; + scenarioMenuProperties.charsPerEntry = 14; + scenarioMenuProperties.rowGap = 8; + scenarioMenuProperties.cursor = &menuCursor; + scenarioMenuProperties.font = &menuFont; + menuResources.scenarioMenuProperties = &scenarioMenuProperties; + menuResources.scenarioMenuHeadline = "SCENARIO ITEM"; InitScreen screen(width, height); @@ -571,16 +483,15 @@ int main(int argc, char **argv) { battleState->AddHero(gameState.heroes[3]); state = battleState; } else { - MapState *mapState(new MapState(&gameConfig, &map1)); + MapState *mapState(new MapState(&gameConfig, caster.GetMap("map1"))); mapState->ControlEntity(&gameState.heroes[0].MapEntity()); mapState->SetWalkingSpeed(walkSpeed); - mapPopulation[0].StartAnimation(*mapState); state = mapState; } - Application app(&screen, state); + 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);