|
@@ -10,9 +10,52 @@ using namespace WalrusRPG::Graphics;
|
|
|
using namespace WalrusRPG::States;
|
|
using namespace WalrusRPG::States;
|
|
|
using namespace WalrusRPG::Timing;
|
|
using namespace WalrusRPG::Timing;
|
|
|
using WalrusRPG::Input::Key;
|
|
using WalrusRPG::Input::Key;
|
|
|
|
|
+using WalrusRPG::Input::KeyState;
|
|
|
|
|
|
|
|
#define STATEMACHINE WalrusRPG::StateMachine
|
|
#define STATEMACHINE WalrusRPG::StateMachine
|
|
|
|
|
|
|
|
|
|
+namespace {
|
|
|
|
|
+ void draw_button(unsigned x, unsigned y, KeyState state)
|
|
|
|
|
+ {
|
|
|
|
|
+ put_horizontal_line(x+1, x+5, y, Gray);
|
|
|
|
|
+ put_horizontal_line(x+1, x+5, y+6, Gray);
|
|
|
|
|
+ put_vertical_line(x, y+1, y+5, Gray);
|
|
|
|
|
+ put_vertical_line(x+6, y+1, y+5, Gray);
|
|
|
|
|
+ switch(state)
|
|
|
|
|
+ {
|
|
|
|
|
+ case KeyState::KS_RELEASED:
|
|
|
|
|
+ put_rectangle({x+1, y+1, 5, 5}, White);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case KeyState::KS_JUST_RELEASED:
|
|
|
|
|
+ put_rectangle({x+1, y+1, 5, 5}, Magenta);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case KeyState::KS_JUST_PRESSED:
|
|
|
|
|
+ put_rectangle({x+1, y+1, 5, 5}, Cyan);
|
|
|
|
|
+ break;
|
|
|
|
|
+ case KeyState::KS_PRESSED:
|
|
|
|
|
+ put_rectangle({x+1, y+1, 5, 5}, Black);
|
|
|
|
|
+ break;
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ void draw_buttons()
|
|
|
|
|
+ {
|
|
|
|
|
+ draw_button(0, 24, key_get_state(Key::K_L));
|
|
|
|
|
+ draw_button(56, 24, key_get_state(Key::K_R));
|
|
|
|
|
+
|
|
|
|
|
+ draw_button(8, 32, key_get_state(Key::K_UP));
|
|
|
|
|
+ draw_button(0, 40, key_get_state(Key::K_LEFT));
|
|
|
|
|
+ draw_button(16, 40, key_get_state(Key::K_RIGHT));
|
|
|
|
|
+ draw_button(8, 48, key_get_state(Key::K_DOWN));
|
|
|
|
|
+
|
|
|
|
|
+ draw_button(28, 48, key_get_state(Key::K_SELECT));
|
|
|
|
|
+ draw_button(36, 48, key_get_state(Key::K_START));
|
|
|
|
|
+
|
|
|
|
|
+ draw_button(48, 44, key_get_state(Key::K_B));
|
|
|
|
|
+ draw_button(56, 36, key_get_state(Key::K_A));
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+} /* namespace */
|
|
|
|
|
+
|
|
|
STATEMACHINE::StateMachine(State *state)
|
|
STATEMACHINE::StateMachine(State *state)
|
|
|
{
|
|
{
|
|
|
push(state);
|
|
push(state);
|
|
@@ -64,6 +107,7 @@ void STATEMACHINE::run()
|
|
|
Text::print_format(0, 240 - 8, "%ufps, %uups", TIMER_FREQ / frame_time,
|
|
Text::print_format(0, 240 - 8, "%ufps, %uups", TIMER_FREQ / frame_time,
|
|
|
TIMER_FREQ / update_time);
|
|
TIMER_FREQ / update_time);
|
|
|
}
|
|
}
|
|
|
|
|
+ draw_buttons();
|
|
|
Graphics::frame_end();
|
|
Graphics::frame_end();
|
|
|
}
|
|
}
|
|
|
|
|
|