MCPcopy Create free account
hub / github.com/OpenXcom/OpenXcom / NewPossibleResearchState

Method NewPossibleResearchState

src/Geoscape/NewPossibleResearchState.cpp:43–105  ·  view source on GitHub ↗

* Initializes all the elements in the EndResearch screen. * @param game Pointer to the core game. * @param base Pointer to the base to get info from. * @param possibilities List of newly possible ResearchProject */

Source from the content-addressed store, hash-verified

41 * @param possibilities List of newly possible ResearchProject
42 */
43NewPossibleResearchState::NewPossibleResearchState(Game * game, Base * base, const std::vector<RuleResearch *> & possibilities) : State (game), _base(base)
44{
45 _screen = false;
46
47 // Create objects
48 _window = new Window(this, 288, 180, 16, 10);
49 _btnOk = new TextButton(160, 14, 80, 149);
50 _btnResearch = new TextButton(160, 14, 80, 165);
51 _txtTitle = new Text(288, 40, 16, 20);
52 _lstPossibilities = new TextList(288, 80, 16, 56);
53
54 // Set palette
55 setPalette("PAL_GEOSCAPE", 1);
56
57 add(_window);
58 add(_btnOk);
59 add(_btnResearch);
60 add(_txtTitle);
61 add(_lstPossibilities);
62
63 centerAllSurfaces();
64
65 // Set up objects
66 _window->setColor(Palette::blockOffset(15)-1);
67 _window->setBackground(_game->getResourcePack()->getSurface("BACK05.SCR"));
68
69 _btnOk->setColor(Palette::blockOffset(8)+5);
70 _btnOk->setText(tr("STR_OK"));
71 _btnOk->onMouseClick((ActionHandler)&NewPossibleResearchState::btnOkClick);
72 _btnOk->onKeyboardPress((ActionHandler)&NewPossibleResearchState::btnOkClick, Options::keyCancel);
73 _btnResearch->setColor(Palette::blockOffset(8)+5);
74 _btnResearch->setText(tr("STR_ALLOCATE_RESEARCH"));
75 _btnResearch->onMouseClick((ActionHandler)&NewPossibleResearchState::btnResearchClick);
76 _btnResearch->onKeyboardPress((ActionHandler)&NewPossibleResearchState::btnResearchClick, Options::keyOk);
77 _txtTitle->setColor(Palette::blockOffset(15)-1);
78 _txtTitle->setBig();
79 _txtTitle->setAlign(ALIGN_CENTER);
80
81 _lstPossibilities->setColor(Palette::blockOffset(8)+10);
82 _lstPossibilities->setColumns(1, 288);
83 _lstPossibilities->setBig();
84 _lstPossibilities->setAlign(ALIGN_CENTER);
85
86 size_t tally(0);
87 for(std::vector<RuleResearch *>::const_iterator iter = possibilities.begin (); iter != possibilities.end (); ++iter)
88 {
89 bool liveAlien = _game->getRuleset()->getUnit((*iter)->getName()) != 0;
90 if(!_game->getSavedGame()->wasResearchPopped(*iter) && (*iter)->getRequirements().empty() && !liveAlien)
91 {
92 _game->getSavedGame()->addPoppedResearch((*iter));
93 _lstPossibilities->addRow (1, tr((*iter)->getName ()).c_str());
94 }
95 else
96 {
97 tally++;
98 }
99 }
100

Callers

nothing calls this directly

Calls 15

onMouseClickMethod · 0.80
onKeyboardPressMethod · 0.80
setColumnsMethod · 0.80
wasResearchPoppedMethod · 0.80
getSavedGameMethod · 0.80
addPoppedResearchMethod · 0.80
addRowMethod · 0.80
setColorMethod · 0.45
setBackgroundMethod · 0.45
getSurfaceMethod · 0.45
getResourcePackMethod · 0.45
setTextMethod · 0.45

Tested by

no test coverage detected