MCPcopy Create free account
hub / github.com/REGoth-project/REGoth / onInputAction

Method onInputAction

src/ui/Menu.cpp:274–315  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

272}
273
274bool UI::Menu::onInputAction(Engine::ActionType action)
275{
276 using Engine::ActionType;
277
278 switch (action)
279 {
280 case ActionType::UI_Up:
281 if (!m_SelectableItems.empty())
282 {
283 // Make sure we really do have a selectable item active
284 unsigned cnt = 0;
285 do
286 {
287 m_SelectedItem = Utils::mod(m_SelectedItem - 1, static_cast<int>(m_SelectableItems.size()));
288 cnt++;
289 } while (!m_Items[m_SelectableItems[m_SelectedItem]]->isSelectable() && cnt != m_SelectableItems.size());
290 }
291 break;
292
293 case ActionType::UI_Down:
294 if (!m_SelectableItems.empty())
295 {
296 // Skip all items which are no longer selectable
297 do
298 {
299 m_SelectedItem = Utils::mod(m_SelectedItem + 1, static_cast<int>(m_SelectableItems.size()));
300 } while (!m_Items[m_SelectableItems[m_SelectedItem]]->isSelectable());
301 }
302 break;
303
304 case ActionType::UI_Confirm:
305 if (!m_SelectableItems.empty()) performSelectAction(m_SelectableItems[m_SelectedItem]);
306 break;
307
308 case ActionType::UI_Close:
309 return true;
310
311 default:
312 break;
313 }
314 return false;
315}
316
317void UI::Menu::performSelectAction(Daedalus::GameState::MenuItemHandle item)
318{

Callers

nothing calls this directly

Calls 4

modFunction · 0.85
isSelectableMethod · 0.80
emptyMethod · 0.45
sizeMethod · 0.45

Tested by

no test coverage detected