#include "battle/Monster.h"
#include "battle/PartyLayout.h"
#include "battle/Resources.h"
+#include "common/GameConfig.h"
#include "common/GameState.h"
#include "common/Hero.h"
#include "common/Ikari.h"
using battle::BattleState;
using battle::Monster;
using battle::PartyLayout;
+using common::GameConfig;
using common::GameState;
using common::Hero;
using common::Ikari;
const int tileSize = 32;
const float walkSpeed = 128.0f;
- const bool battle(false);
+ bool battle(false);
// std::srand(std::time(0));
Parser(*i, source).Parse();
}
- switch (args.DetectRunLevel()) {
+ switch (args.GetRunLevel()) {
case Arguments::WRITE:
{
int length(std::strlen(args.OutfilePath()));
std::cout << source << std::endl;
return 0;
}
+ case Arguments::SOURCE_WIKI: {
+ TypeDescription::WriteSourceWiki(std::cout);
+ return 0;
+ }
+ case Arguments::BATTLE:
+ battle = true;
+ break;
case Arguments::PLAY:
+ case Arguments::MAP:
break;
}
gameState.party[2] = &gameState.heroes[2];
gameState.party[3] = &gameState.heroes[3];
+ GameConfig gameConfig;
+ gameConfig.state = &gameState;
+ gameConfig.heroesLayout = caster.GetPartyLayout("heroesLayout");
+ gameConfig.battleResources = caster.GetBattleResources("battleResources");
+
// temporary test data
SDL_Surface *bg(IMG_Load("test-data/battle-bg.png"));
PartyLayout monstersLayout(*caster.GetPartyLayout("monstersLayout"));
- PartyLayout heroesLayout(*caster.GetPartyLayout("heroesLayout"));
Monster monster(*caster.GetMonster("lizard"));
- battle::Resources *battleRes(caster.GetBattleResources("battleResources"));
-
gameState.heroes[0].AddSpell(caster.GetSpell("resetSpell"));
Spell *strongSpell(caster.GetSpell("strongSpell"));
gameState.heroes[0].AddSpell(strongSpell);
gameState.heroes[0].AddSpell(valorSpell);
gameState.heroes[1].AddSpell(valorSpell);
- Inventory inventory;
- inventory.Add(caster.GetItem("antidoteItem"), 9);
- inventory.Add(caster.GetItem("magicJarItem"), 4);
- inventory.Add(caster.GetItem("hiPotionItem"), 4);
- inventory.Add(caster.GetItem("powerPotionItem"), 4);
- inventory.Add(caster.GetItem("escapeItem"), 2);
- inventory.Add(caster.GetItem("sleepBallItem"), 1);
- battleRes->inventory = &inventory;
+ gameState.inventory.Add(caster.GetItem("antidoteItem"), 9);
+ gameState.inventory.Add(caster.GetItem("magicJarItem"), 4);
+ gameState.inventory.Add(caster.GetItem("hiPotionItem"), 4);
+ gameState.inventory.Add(caster.GetItem("powerPotionItem"), 4);
+ gameState.inventory.Add(caster.GetItem("escapeItem"), 2);
+ gameState.inventory.Add(caster.GetItem("sleepBallItem"), 1);
gameState.heroes[0].SetWeapon(caster.GetItem("zircoSwordItem"));
gameState.heroes[0].SetArmor(caster.GetItem("zirconArmorItem"));
Trigger triggers1[1];
triggers1[0].SetTilePosition(Vector<int>(8, 3));
+ triggers1[0].SetType(Trigger::TYPE_NORTH);
SDL_Surface *tilesetImg(IMG_Load("test-data/tileset.png"));
Sprite tileset(tilesetImg, tileSize, tileSize);
map1.SetTileset(&tileset);
map1.SetTriggers(triggers1, 1);
map1.SetWidth(2);
+ map1.SetBattleBackground(bg);
Tile tiles3[64];
Trigger triggers2[1];
triggers2[0].SetTilePosition(Vector<int>(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<int>(6, 2);
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);
- Entity mapMonster;
- mapMonster.SetAnimation(&mapMonsterAnimation);
- mapMonster.Position() = Vector<float>(64, 32);
- mapMonster.SetOrientation(Entity::ORIENTATION_SOUTH);
- map1.SetEntities(&mapMonster, 1);
+ mapPopulation[0].SetAnimation(&mapMonsterAnimation);
+ mapPopulation[0].Position() = Vector<float>(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<float>(64, 160);
+ mapPopulation[1].SetFlags(Entity::FLAG_PUSHABLE | Entity::FLAG_FIXED_ORIENTATION);
InitScreen screen(width, height);
app::State *state(0);
if (battle) {
- BattleState *battleState(new BattleState(bg, monstersLayout, heroesLayout, battleRes));
+ BattleState *battleState(new BattleState(&gameConfig, bg, &monstersLayout));
battleState->AddMonster(monster);
battleState->AddMonster(monster);
battleState->AddMonster(monster);
battleState->AddHero(gameState.heroes[3]);
state = battleState;
} else {
- MapState *mapState(new MapState(&map1));
+ MapState *mapState(new MapState(&gameConfig, &map1));
mapState->ControlEntity(&gameState.heroes[0].MapEntity());
mapState->SetWalkingSpeed(walkSpeed);
- mapMonster.StartAnimation(*mapState);
+ mapPopulation[0].StartAnimation(*mapState);
state = mapState;
}