#define GRAPHICS_MENU_H_
#include "Font.h"
-#include "fwd.h"
#include "Sprite.h"
-#include "../geometry/Vector.h"
+#include "../math/Vector.h"
#include <algorithm>
#include <vector>
void Clear() { entries.clear(); }
void ClearEntry(int at) { entries[at] = Entry(0, T(), false); }
- void Draw(SDL_Surface *dest, const geometry::Vector<int> &position) const;
+ void Draw(SDL_Surface *dest, const math::Vector<int> &position) const;
private:
int GetRow(int index) const { return index / cols; }
template<class T>
-void Menu<T>::Draw(SDL_Surface *dest, const geometry::Vector<int> &position) const {
+void Menu<T>::Draw(SDL_Surface *dest, const math::Vector<int> &position) const {
int start(topRow * cols);
int slots(rows * cols);
int items(entries.size() - start);
int end(start + (items < slots ? items : slots));
for (int i(0), count(end - start); i < count; ++i) {
if (!entries[start + i].title) continue;
- geometry::Vector<int> iconOffset(
+ math::Vector<int> iconOffset(
(i % cols) * (ColWidth() + colGap),
(i / cols) * RowHeight());
// This fixes the position of the third column of the inventory and capsule menus.
if (thirdColumnHack && i % cols == 2) {
- iconOffset += geometry::Vector<int>(font->CharWidth() * thirdColumnHack, 0);
+ iconOffset += math::Vector<int>(font->CharWidth() * thirdColumnHack, 0);
}
if (entries[start + i].icon) {
entries[start + i].icon->Draw(dest, position + iconOffset);
}
- geometry::Vector<int> textOffset(iconOffset.X() + iconSpace, iconOffset.Y());
+ math::Vector<int> textOffset(iconOffset.X() + iconSpace, iconOffset.Y());
const Font *usedFont(entries[start + i].enabled ? font : disabledFont);
usedFont->DrawString(entries[start + i].title, dest, position + textOffset, charsPerEntry);
- textOffset += geometry::Vector<int>(charsPerEntry * usedFont->CharWidth(), 0);
+ textOffset += math::Vector<int>(charsPerEntry * usedFont->CharWidth(), 0);
if (charsPerAdditionalText) {
- textOffset += geometry::Vector<int>(additionalTextGap, 0);
+ textOffset += math::Vector<int>(additionalTextGap, 0);
if (entries[start + i].additionalText) {
usedFont->DrawString(entries[start + i].additionalText, dest, position + textOffset, charsPerAdditionalText);
}
- textOffset += geometry::Vector<int>(charsPerAdditionalText * usedFont->CharWidth(), 0);
+ textOffset += math::Vector<int>(charsPerAdditionalText * usedFont->CharWidth(), 0);
}
if (charsPerNumber) {
usedFont->DrawChar(delimiter, dest, position + textOffset);
- textOffset += geometry::Vector<int>(usedFont->CharWidth(), 0);
+ textOffset += math::Vector<int>(usedFont->CharWidth(), 0);
usedFont->DrawNumber(entries[start + i].number, dest, position + textOffset, charsPerNumber);
}
}
- geometry::Vector<int> cursorOffset(
+ math::Vector<int> cursorOffset(
(selected % cols) * (ColWidth() + colGap) - cursor->Width(),
((selected - start) / cols) * RowHeight());
// This fixes the position of the third column of the inventory and capsule menus.
if (thirdColumnHack && selected % cols == 2) {
- cursorOffset += geometry::Vector<int>(font->CharWidth() * thirdColumnHack, 0);
+ cursorOffset += math::Vector<int>(font->CharWidth() * thirdColumnHack, 0);
}
switch (state) {
case STATE_INACTIVE:
break;
case STATE_DUAL:
cursor->Draw(dest, position + cursorOffset
- - geometry::Vector<int>(selectedCursor->Width(), 0));
+ - math::Vector<int>(selectedCursor->Width(), 0));
if (secondarySelection >= start && secondarySelection <= end) {
- geometry::Vector<int> secondaryOffset(
+ math::Vector<int> secondaryOffset(
(secondarySelection % cols) * (ColWidth() + colGap) - cursor->Width(),
((secondarySelection - start) / cols) * RowHeight());
selectedCursor->Draw(dest, position + secondaryOffset);
}
-#endif /* GRAPHICS_MENU_H_ */
+#endif