Esempio n. 1
0
// 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();
}
Esempio n. 2
0
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();
}
Esempio n. 3
0
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();
}