1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137
|
/* ScummVM - Graphic Adventure Engine
*
* ScummVM is the legal property of its developers, whose names
* are too numerous to list here. Please refer to the COPYRIGHT
* file distributed with this source distribution.
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
*/
/*
* This code is based on the CRAB engine
*
* Copyright (c) Arvind Raja Yadav
*
* Licensed under MIT
*
*/
#ifndef CRAB_MAINMENU_H
#define CRAB_MAINMENU_H
#include "crab/ui/AlphaImage.h"
#include "crab/ui/CreditScreen.h"
#include "crab/ui/FileMenu.h"
#include "crab/ui/ImageData.h"
#include "crab/ui/KeyBindMenu.h"
#include "crab/ui/ModMenu.h"
#include "crab/ui/OptionMenu.h"
#include "crab/ui/SlideShow.h"
#include "crab/ui/StateButton.h"
#include "crab/input/cursor.h"
#include "crab/gamestate_container.h"
#include "crab/gamestates.h"
#include "crab/ui/menu.h"
#include "crab/ui/slider.h"
#include "crab/ui/textarea.h"
namespace Crab {
// #define UNREST_DEMO
//------------------------------------------------------------------------
// Purpose: Main Menu class
//------------------------------------------------------------------------
class MainMenu : public GameState {
enum MenuState {
STATE_NORMAL,
STATE_OPTIONS,
STATE_CREDITS,
STATE_LOAD,
STATE_DIFF,
STATE_SAVENAME,
STATE_MOD,
STATE_HELP
} _state;
// This image covers the whole screen and is drawn centered on screen
pyrodactyl::ui::ImageData _bg;
// The lights on the background image
Common::Array<pyrodactyl::ui::AlphaImage> _lights;
// The game logo
pyrodactyl::ui::ImageData _logo;
// Data for the difficulty menu
struct {
pyrodactyl::ui::ImageData _bg;
pyrodactyl::ui::HoverInfo _heading;
pyrodactyl::ui::ButtonMenu _menu;
} _diff;
// Main menu
pyrodactyl::ui::Menu<pyrodactyl::ui::StateButton> _meMain;
// The back button is common and is used for all menus here (except credits and main menu)
pyrodactyl::ui::Button _back;
// Mod menu
pyrodactyl::ui::ModMenu _mod;
// Game credits
pyrodactyl::ui::CreditScreen _credits;
// The save game name prompt for iron man
pyrodactyl::ui::TextArea _save;
// The background image and position of the prompt, along with the warning message displayed
// and buttons for accept and cancel
pyrodactyl::ui::ImageData _bgSave;
pyrodactyl::ui::HoverInfo _warning;
pyrodactyl::ui::Button _accept, _cancel;
// Music for the main menu
struct MainMenuMusic {
pyrodactyl::music::MusicKey _normal, _credits;
MainMenuMusic() {
_normal = -1;
_credits = -1;
}
} _musicKey;
// UI elements related to the demo
pyrodactyl::ui::Button _steam, _direct;
public:
MainMenu();
~MainMenu() {}
void handleEvents(Common::Event &event, bool &shouldChangeState, GameStateID &newStateId);
void internalEvents(bool &shouldChangeState, GameStateID &newStateId);
void draw();
void changeState(MenuState ms, const bool &start = false);
void setUI();
// We don't need to save game state here
void autoSave() {}
};
} // End of namespace Crab
#endif // CRAB_MAINMENU_H
|