68 lines
2.3 KiB
C++
68 lines
2.3 KiB
C++
// TurnModalGame.h
|
|
#pragma once
|
|
#include "../../lib/game.h"
|
|
#include "../../display/low_level_render.h"
|
|
#include "../../display/low_level_gui.h"
|
|
#include "input_manager.h"
|
|
#include "player.h"
|
|
#include <string.h>
|
|
#include <stdio.h>
|
|
|
|
class TurnModalGame : public Game {
|
|
Player* next_player;
|
|
bool dismissed;
|
|
|
|
public:
|
|
TurnModalGame(uint16_t width, uint16_t height, LowLevelRenderer* renderer, LowLevelGUI* gui, InputManager* input_manager, Player* next)
|
|
: Game(width, height, renderer, gui, input_manager), next_player(next), dismissed(false) {}
|
|
|
|
void init() override { dismissed = false; }
|
|
Type get_type() const override { return Type::MONOPOLY_TURN; }
|
|
|
|
bool update(const InputEvent& event) override {
|
|
if (event.type == INPUT_BUTTON_1) {
|
|
dismissed = true;
|
|
return true;
|
|
}
|
|
return false;
|
|
}
|
|
|
|
void draw() override {
|
|
renderer->clear_buffer();
|
|
|
|
// Window background
|
|
int cw = width / 6;
|
|
int ch = height / 6;
|
|
int ix = cw, iy = ch;
|
|
int iw = width - 2 * cw, ih = height - 2 * ch;
|
|
|
|
renderer->draw_filled_rectangle(ix, iy, iw, ih, false, 0); // White background
|
|
renderer->draw_rectangle(ix, iy, iw, ih, true, 2); // Border
|
|
|
|
// Header
|
|
renderer->draw_filled_rectangle(ix + 2, iy + 2, iw - 4, 40, true, 1);
|
|
renderer->set_text_color(false);
|
|
renderer->draw_string_scaled(ix + (iw - (int)strlen("NEXT TURN") * 12) / 2, iy + 15, "NEXT TURN", 2);
|
|
renderer->set_text_color(true);
|
|
|
|
// Player Name
|
|
char buf[64];
|
|
snprintf(buf, sizeof(buf), "%s", next_player->name);
|
|
int name_len = (int)strlen(buf);
|
|
renderer->draw_string_scaled(ix + (iw - name_len * 18) / 2, iy + 60, buf, 3);
|
|
|
|
// Message
|
|
const char* msg = "IT'S YOUR TURN!";
|
|
renderer->draw_string_scaled(ix + (iw - (int)strlen(msg) * 12) / 2, iy + 100, msg, 2);
|
|
|
|
const char* submsg = "Please hold the device";
|
|
renderer->draw_string_scaled(ix + (iw - (int)strlen(submsg) * 6) / 2, iy + 130, submsg, 1);
|
|
|
|
// Prompt
|
|
const char* prompt = "Press B to start";
|
|
renderer->draw_string_scaled(ix + (iw - (int)strlen(prompt) * 6) / 2, iy + ih - 30, prompt, 1);
|
|
}
|
|
|
|
bool is_dismissed() const { return dismissed; }
|
|
};
|