OpenXcom  1.0
Open-source clone of the original X-Com
UfopaediaStartState.h
1 #pragma once
2 /*
3  * Copyright 2010-2016 OpenXcom Developers.
4  *
5  * This file is part of OpenXcom.
6  *
7  * OpenXcom is free software: you can redistribute it and/or modify
8  * it under the terms of the GNU General Public License as published by
9  * the Free Software Foundation, either version 3 of the License, or
10  * (at your option) any later version.
11  *
12  * OpenXcom is distributed in the hope that it will be useful,
13  * but WITHOUT ANY WARRANTY; without even the implied warranty of
14  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15  * GNU General Public License for more details.
16  *
17  * You should have received a copy of the GNU General Public License
18  * along with OpenXcom. If not, see <http://www.gnu.org/licenses/>.
19  */
20 #include "../Engine/State.h"
21 #include <string>
22 #include <vector>
23 
24 namespace OpenXcom
25 {
26  class Game;
27  class Action;
28  class Window;
29  class Text;
30  class TextButton;
31  class ArrowButton;
32  class Timer;
33 
39  class UfopaediaStartState : public State
40  {
41  public:
43  virtual ~UfopaediaStartState();
44 
45  protected:
46  static const size_t CAT_MIN_BUTTONS;
47  static const size_t CAT_MAX_BUTTONS;
48  Window *_window;
49  Text *_txtTitle;
50  TextButton *_btnOk;
51  std::vector<TextButton*> _btnSections;
52  ArrowButton *_btnScrollUp, *_btnScrollDown;
53  Timer *_timerScroll;
54 
55  int _offset, _scroll;
56  const std::vector<std::string> &_cats;
57 
58  // navigation callbacks
59  void think();
60  void btnSectionClick(Action *action);
61  void btnOkClick(Action *action);
62 
63  // scrolling logic
64  void btnScrollUpPress(Action *action);
65  void btnScrollUpClick(Action *action);
66  void btnScrollDownPress(Action *action);
67  void btnScrollDownClick(Action *action);
68  void btnScrollRelease(Action *action);
69  void scroll();
70  void updateButtons();
71  };
72 }
Container for all the information associated with a given user action, like mouse clicks...
Definition: Action.h:32
A game state that receives user input and reacts accordingly.
Definition: State.h:44
void scroll()
Offsets the list of section buttons.
Definition: UfopaediaStartState.cpp:204
void btnScrollDownClick(Action *action)
Scrolls the section buttons down.
Definition: UfopaediaStartState.cpp:186
Box with a coloured border and custom background.
Definition: Window.h:40
Timer used to run code in fixed intervals.
Definition: Timer.h:35
void think()
Run timers.
Definition: UfopaediaStartState.cpp:121
Text string displayed on screen.
Definition: Text.h:40
void btnScrollRelease(Action *action)
Stops scrolling the section buttons.
Definition: UfopaediaStartState.cpp:196
void btnScrollUpPress(Action *action)
Starts scrolling the section buttons up.
Definition: UfopaediaStartState.cpp:156
virtual ~UfopaediaStartState()
Deletes timers.
Definition: UfopaediaStartState.cpp:113
void btnScrollUpClick(Action *action)
Scrolls the section buttons up.
Definition: UfopaediaStartState.cpp:166
Coloured button with a text label.
Definition: TextButton.h:38
UfopaediaStartState is the screen that opens when clicking Ufopaedia button in Geoscape.
Definition: UfopaediaStartState.h:39
Button with an arrow on it.
Definition: ArrowButton.h:35
void btnOkClick(Action *action)
Returns to the previous screen.
Definition: UfopaediaStartState.cpp:131
void btnScrollDownPress(Action *action)
Starts scrolling the section buttons down.
Definition: UfopaediaStartState.cpp:176
void updateButtons()
Updates the section button labels based on scroll.
Definition: UfopaediaStartState.cpp:216
void btnSectionClick(Action *action)
Displays the list of articles for this section.
Definition: UfopaediaStartState.cpp:140
Definition: BaseInfoState.cpp:40