/
Kotopeska
/
RiseUpGame
Обзор
Документация
Войти
/
Kotopeska
/
RiseUpGame
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
CI/CD
Аналитика
Безопасность
master
view/AboutView.cpp
97 строк
3 KB
Kotopeska
init
18 май 2025, 19:03
18 май 2025, 19:03
668dfef
Код
Авторство
О чём код?
#include "AboutView.h" #include <FL/fl_draw.H> namespace View { AboutView::AboutView(int x, int y, int w, int h, Model::GameModel &model) : ViewBase(x, y, w, h, model), titleBox(std::make_unique<Fl_Box>(x + w / 2 - 100, y + h / 6, 200, 50, "About")), infoBox(std::make_unique<Fl_Box>(x + w / 2 - 250, y + h / 3, 500, 100, "Rise Up Game\n" "Created by Morozov Dmitriy,\n" "RSREU 3413 group")), controlsBox(std::make_unique<Fl_Box>(x + w / 2 - 250, y + h / 2, 500, 100, "In the game, hold down the mouse button to control the shield")), backButton(std::make_unique<Fl_Button>(x + w / 2 - 100, y + h * 3 / 4, 200, 40, "Back to Menu")) { titleBox->box(FL_NO_BOX); titleBox->labelsize(40); titleBox->labelfont(FL_HELVETICA_BOLD); titleBox->labelcolor(FL_WHITE); infoBox->box(FL_NO_BOX); infoBox->labelsize(16); infoBox->labelfont(FL_HELVETICA); infoBox->labelcolor(FL_WHITE); infoBox->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE); controlsBox->box(FL_NO_BOX); controlsBox->labelsize(16); controlsBox->labelfont(FL_HELVETICA); controlsBox->labelcolor(FL_WHITE); controlsBox->align(FL_ALIGN_CENTER | FL_ALIGN_INSIDE); backButton->callback(backCallback, &model); backButton->color(fl_rgb_color(64, 156, 255)); backButton->labelcolor(FL_WHITE); backButton->labelfont(FL_HELVETICA_BOLD); add(titleBox.get()); add(infoBox.get()); add(controlsBox.get()); add(backButton.get()); } AboutView::~AboutView() { } void AboutView::update() { redraw(); } void AboutView::draw() { fl_color(FL_BLACK); fl_rectf(0, 0, w(), h()); const auto &stars = model.getBackground().getStars(); for (const auto &star : stars) { fl_color(fl_rgb_color(255, 255, 255)); int brightness = static_cast<int>(star.alpha * 255); fl_color(fl_rgb_color(brightness, brightness, brightness)); fl_pie(star.x, star.y, star.size, star.size, 0, 360); } draw_children(); } int AboutView::handle(int event) { switch (event) { case FL_KEYDOWN: if (Fl::event_key() == ' ' || Fl::event_key() == 32) { model.showMenu(); return 1; } break; } return ViewBase::handle(event); } void AboutView::backCallback(Fl_Widget *widget, void *data) { Model::GameModel *model = static_cast<Model::GameModel *>(data); model->showMenu(); } } // namespace View