// TODO: merge this with input_context::get_desc std::string input_context::press_x(const std::string &action_id, const std::string &key_bound_pre, const std::string &key_bound_suf, const std::string &key_unbound) const { if (action_id == "ANY_INPUT") { return _("any key"); } if (action_id == "COORDINATE") { return _("mouse movement"); } const input_manager::t_input_event_list &events = inp_mngr.get_input_for_action(action_id, category); if (events.empty()) { return key_unbound; } std::ostringstream keyed; keyed << key_bound_pre; for (size_t j = 0; j < events.size(); j++) { for (size_t k = 0; k < events[j].sequence.size(); ++k) { keyed << inp_mngr.get_keyname(events[j].sequence[k], events[j].type); } if (j + 1 < events.size()) { keyed << _(" or "); } } keyed << key_bound_suf; return keyed.str(); }
const std::string input_context::get_desc( const std::string &action_descriptor, const unsigned int max_limit ) const { if( action_descriptor == "ANY_INPUT" ) { return "(*)"; // * for wildcard } const std::vector<input_event> &events = inp_mngr.get_input_for_action( action_descriptor, category ); if( events.empty() ) { return _( "Unbound!" ); } std::vector<input_event> inputs_to_show; for( auto &events_i : events ) { const input_event &event = events_i; // Only display gamepad buttons if a gamepad is available. if( gamepad_available() || event.type != CATA_INPUT_GAMEPAD ) { inputs_to_show.push_back( event ); } if( max_limit > 0 && inputs_to_show.size() == max_limit ) { break; } } std::stringstream rval; for( size_t i = 0; i < inputs_to_show.size(); ++i ) { for( size_t j = 0; j < inputs_to_show[i].sequence.size(); ++j ) { rval << inp_mngr.get_keyname( inputs_to_show[i].sequence[j], inputs_to_show[i].type ); } // We're generating a list separated by "," and "or" if( i + 2 == inputs_to_show.size() ) { rval << _( " or " ); } else if( i + 1 < inputs_to_show.size() ) { rval << ", "; } } return rval.str(); }
const std::string input_context::get_desc(const std::string &action_descriptor) { if(action_descriptor == "ANY_INPUT") { return "(*)"; // * for wildcard } const std::vector<input_event> &events = inp_mngr.get_input_for_action(action_descriptor, category); if(events.size() == 0) { return UNDEFINED; } std::vector<input_event> inputs_to_show; for( size_t i = 0; i < events.size(); ++i ) { const input_event &event = events[i]; // Only display gamepad buttons if a gamepad is available. if(gamepad_available() || event.type != CATA_INPUT_GAMEPAD) { inputs_to_show.push_back(event); } } std::stringstream rval; for( size_t i = 0; i < inputs_to_show.size(); ++i ) { for( size_t j = 0; j < inputs_to_show[i].sequence.size(); ++j ) { rval << inp_mngr.get_keyname(inputs_to_show[i].sequence[j], inputs_to_show[i].type); } // We're generating a list separated by "," and "or" if(i + 2 == inputs_to_show.size()) { rval << " or "; } else if(i + 1 < inputs_to_show.size()) { rval << ", "; } } return rval.str(); }