#include "../graphics/Frame.h"
using app::Input;
+using common::GameState;
using geometry::Vector;
using graphics::Font;
using graphics::Frame;
if (input.JustPressed(Input::PAD_UP)) {
configMenu.PreviousRow();
}
+
+ GameState &state(*parent->Game().state);
+ int *property(0);
+ int mod(0);
+ switch (configMenu.Selected()) {
+ case 0:
+ property = &state.messageSpeed;
+ mod = 3;
+ break;
+ case 1:
+ property = &state.battleCursor;
+ mod = 2;
+ break;
+ case 2:
+ property = &state.statusCursor;
+ mod = 2;
+ break;
+ case 3:
+ property = &state.music;
+ mod = 2;
+ break;
+ }
+ if (input.JustPressed(Input::ACTION_A) || input.JustPressed(Input::PAD_RIGHT)) {
+ *property = (*property + 1) % mod;
+ }
+ if (input.JustPressed(Input::PAD_LEFT)) {
+ *property = (*property + mod - 1) % mod;
+ }
}
void ConfigMenu::UpdateWorld(float deltaT) {
}
void ConfigMenu::RenderMenu(SDL_Surface *screen, const geometry::Vector<int> &offset) const {
- const Font &font(*parent->Res().normalFont);
- const Frame &frame(*parent->Res().statusFrame);
+ const Resources &res(parent->Res());
+ const Font &font(*res.normalFont);
+ const Font &inactiveFont(*res.inactiveFont);
+ const Frame &frame(*res.statusFrame);
+ const GameState &state(*parent->Game().state);
const Vector<int> menuOffset(
3 * font.CharWidth(), 2 * font.CharHeight());
frame.Draw(screen, offset, 30 * font.CharWidth(), 14 * font.CharHeight());
configMenu.Draw(screen, offset + menuOffset);
+
+ Vector<int> lineOffset(
+ menuOffset.X() + configMenu.Width() + 2 * font.CharWidth(),
+ menuOffset.Y());
+ Vector<int> colOffset(lineOffset);
+
+ if (state.messageSpeed == GameState::MESSAGE_SPEED_FAST) {
+ font.DrawString(res.configMessageSpeedFast, screen, offset + colOffset);
+ colOffset.X() += font.StringWidth(res.configMessageSpeedFast) + font.CharWidth();
+ } else {
+ inactiveFont.DrawString(res.configMessageSpeedFast, screen, offset + colOffset);
+ colOffset.X() += inactiveFont.StringWidth(res.configMessageSpeedFast) + inactiveFont.CharWidth();
+ }
+ if (state.messageSpeed == GameState::MESSAGE_SPEED_NORMAL) {
+ font.DrawString(res.configMessageSpeedNormal, screen, offset + colOffset);
+ colOffset.X() += font.StringWidth(res.configMessageSpeedNormal) + font.CharWidth();
+ } else {
+ inactiveFont.DrawString(res.configMessageSpeedNormal, screen, offset + colOffset);
+ colOffset.X() += inactiveFont.StringWidth(res.configMessageSpeedNormal) + inactiveFont.CharWidth();
+ }
+ if (state.messageSpeed == GameState::MESSAGE_SPEED_SLOW) {
+ font.DrawString(res.configMessageSpeedSlow, screen, offset + colOffset);
+ } else {
+ inactiveFont.DrawString(res.configMessageSpeedSlow, screen, offset + colOffset);
+ }
+
+ lineOffset.Y() += configMenu.RowHeight();
+ colOffset = lineOffset;
+
+ if (state.battleCursor == GameState::CURSOR_CLEAR) {
+ font.DrawString(res.configCursorClear, screen, offset + colOffset);
+ colOffset.X() += font.StringWidth(res.configCursorClear) + 2 * font.CharWidth();
+ } else {
+ inactiveFont.DrawString(res.configCursorClear, screen, offset + colOffset);
+ colOffset.X() += inactiveFont.StringWidth(res.configCursorClear) + 2 * inactiveFont.CharWidth();
+ }
+ if (state.battleCursor == GameState::CURSOR_MEMORY) {
+ font.DrawString(res.configCursorMemory, screen, offset + colOffset);
+ } else {
+ inactiveFont.DrawString(res.configCursorMemory, screen, offset + colOffset);
+ }
+
+ lineOffset.Y() += configMenu.RowHeight();
+ colOffset = lineOffset;
+
+ if (state.statusCursor == GameState::CURSOR_CLEAR) {
+ font.DrawString(res.configCursorClear, screen, offset + colOffset);
+ colOffset.X() += font.StringWidth(res.configCursorClear) + 2 * font.CharWidth();
+ } else {
+ inactiveFont.DrawString(res.configCursorClear, screen, offset + colOffset);
+ colOffset.X() += inactiveFont.StringWidth(res.configCursorClear) + 2 * inactiveFont.CharWidth();
+ }
+ if (state.statusCursor == GameState::CURSOR_MEMORY) {
+ font.DrawString(res.configCursorMemory, screen, offset + colOffset);
+ } else {
+ inactiveFont.DrawString(res.configCursorMemory, screen, offset + colOffset);
+ }
+
+ lineOffset.Y() += configMenu.RowHeight();
+ colOffset = lineOffset;
+
+ if (state.music == GameState::MUSIC_STEREO) {
+ font.DrawString(res.configMusicStereo, screen, offset + colOffset);
+ colOffset.X() += font.StringWidth(res.configMusicStereo) + font.CharWidth();
+ } else {
+ inactiveFont.DrawString(res.configMusicStereo, screen, offset + colOffset);
+ colOffset.X() += inactiveFont.StringWidth(res.configMusicStereo) + inactiveFont.CharWidth();
+ }
+ if (state.music == GameState::MUSIC_MONO) {
+ font.DrawString(res.configMusicMono, screen, offset + colOffset);
+ } else {
+ inactiveFont.DrawString(res.configMusicMono, screen, offset + colOffset);
+ }
}
}