#include "../common/Inventory.h"
#include "../common/Item.h"
#include "../common/Spell.h"
-#include "../geometry/operators.h"
#include "../graphics/Frame.h"
#include "../graphics/Sprite.h"
using common::Inventory;
using common::Item;
using common::Spell;
-using geometry::Point;
using geometry::Vector;
using graphics::Menu;
int tagHeight(attackTypeMenu.Height());
int tagWidth(attackTypeMenu.Width() * 2 + attackTypeMenu.Width() / 2);
int xOffset((Width() - 2 * tagWidth) / 2);
- heroTagPositions[0] = Point<int>(xOffset, Height() - 2 * tagHeight);
- heroTagPositions[1] = Point<int>(xOffset + tagWidth, Height() - 2 * tagHeight);
- heroTagPositions[2] = Point<int>(xOffset, Height() - tagHeight);
- heroTagPositions[3] = Point<int>(xOffset + tagWidth, Height() - tagHeight);
+ heroTagPositions[0] = Vector<int>(xOffset, Height() - 2 * tagHeight);
+ heroTagPositions[1] = Vector<int>(xOffset + tagWidth, Height() - 2 * tagHeight);
+ heroTagPositions[2] = Vector<int>(xOffset, Height() - tagHeight);
+ heroTagPositions[3] = Vector<int>(xOffset + tagWidth, Height() - tagHeight);
tagHeight = res->normalFont->CharHeight() * 4 + res->smallHeroTagFrame->BorderHeight() * 2;
tagWidth = res->normalFont->CharWidth() * 6 + res->smallHeroTagFrame->BorderWidth() * 2;
xOffset = (Width() - 4 * tagWidth) / 2;
int yOffset(Height() - tagHeight);
- smallHeroTagPositions[0] = Point<int>(xOffset, yOffset);
- smallHeroTagPositions[1] = Point<int>(xOffset + 2 * tagWidth, yOffset);
- smallHeroTagPositions[2] = Point<int>(xOffset + tagWidth, yOffset);
- smallHeroTagPositions[3] = Point<int>(xOffset + 3 * tagWidth, yOffset);
+ smallHeroTagPositions[0] = Vector<int>(xOffset, yOffset);
+ smallHeroTagPositions[1] = Vector<int>(xOffset + 2 * tagWidth, yOffset);
+ smallHeroTagPositions[2] = Vector<int>(xOffset + tagWidth, yOffset);
+ smallHeroTagPositions[3] = Vector<int>(xOffset + 3 * tagWidth, yOffset);
itemMenu = res->itemMenuPrototype;
LoadInventory();
return;
}
if (Victory()) {
- // TODO: push victory state
ctrl.PopState();
return;
}
if (Defeat()) {
- // TODO: push defeat state
ctrl.PopState();
return;
}
if (ac.GetType() == AttackChoice::DEFEND) return;
TargetSelection &ts(ac.Selection());
- // TODO: this only evaluates SWORD type attacks
if (CurrentAttack().isMonster) {
const Stats &attackerStats(MonsterAt(CurrentAttack().index).GetStats());
CalculateDamage(attackerStats, ts);
AttackChoice &ac(m.GetAttackChoice());
TargetSelection &ts(ac.Selection());
ac.Reset();
- // TODO: run monster's attack script
int target(rand() % NumHeroes());
while (!HeroPositionOccupied(target)) {
target = rand() % NumHeroes();
}
Uint16 BattleState::CalculateDamage(const Stats &attacker, const Stats &defender) const {
- // TODO: find out real formula and add some randomness
return attacker.Attack() / 2 - defender.Defense() / 4;
}