#ifndef BATTLE_PARTYLAYOUT_H_
#define BATTLE_PARTYLAYOUT_H_
-#include "../geometry/Point.h"
+#include "../geometry/Vector.h"
+#include <cassert>
#include <vector>
#include <SDL.h>
PartyLayout() { }
public:
- int NumPositions() const { return positions.size(); }
+ std::vector<geometry::Vector<Uint8> >::size_type NumPositions() const { return positions.size(); }
template<class U>
- void CalculatePositions(U width, U height, std::vector<geometry::Point<U> > &dest) const {
+ void CalculatePositions(U width, U height, std::vector<geometry::Vector<U> > &dest) const {
dest.clear();
dest.reserve(positions.size());
- for (std::vector<geometry::Point<Uint8> >::const_iterator i(positions.begin()), end(positions.end()); i != end; ++i) {
- dest.push_back(geometry::Point<U>(
- i->X() * 256 / width,
- i->Y() * 256 / height
+ for (std::vector<geometry::Vector<Uint8> >::const_iterator i(positions.begin()), end(positions.end()); i != end; ++i) {
+ dest.push_back(geometry::Vector<U>(
+ i->X() * width / 255,
+ i->Y() * height / 223
));
}
}
+ template<class U>
+ geometry::Vector<U> CalculatePosition(std::vector<geometry::Vector<Uint8> >::size_type index, U width, U height) const {
+ assert(index >= 0 && index < positions.size());
+ return geometry::Vector<U>(
+ positions[index].X() * width / 255,
+ positions[index].Y() * height / 223
+ );
+ }
public:
- void AddPosition(const geometry::Point<Uint8> &p) {
+ void AddPosition(const geometry::Vector<Uint8> &p) {
positions.push_back(p);
}
private:
- std::vector<geometry::Point<Uint8> > positions;
+ std::vector<geometry::Vector<Uint8> > positions;
};