Exemplo n.º 1
0
bool hasPickupRule(std::string sRule)
{
    for( auto &elem : vAutoPickupRules[APU_CHARACTER] ) {
        if( sRule.length() == elem.sRule.length() && ci_find_substr( sRule, elem.sRule ) != -1 ) {
            return true;
        }
    }
    return false;
}
Exemplo n.º 2
0
bool auto_pickup::has_rule(const std::string &sRule)
{
    for( auto &elem : vRules[CHARACTER] ) {
        if( sRule.length() == elem.sRule.length() && ci_find_substr( sRule, elem.sRule ) != -1 ) {
            return true;
        }
    }
    return false;
}
Exemplo n.º 3
0
bool hasPickupRule(std::string sRule)
{
    for (int i = 0; i < vAutoPickupRules[2].size(); i++) {
        if (sRule.length() == (vAutoPickupRules[2][i].sRule).length() && ci_find_substr(sRule, vAutoPickupRules[2][i].sRule) != -1) {
            return true;
        }
    }

    return false;
}
Exemplo n.º 4
0
void removePickupRule(std::string sRule)
{
    for (int i = 0; i < vAutoPickupRules[2].size(); i++) {
        if (sRule.length() == (vAutoPickupRules[2][i].sRule).length() && ci_find_substr(sRule, vAutoPickupRules[2][i].sRule) != -1) {
            vAutoPickupRules[2].erase(vAutoPickupRules[2].begin() + i);
            merge_vector();
            createPickupRules();
            break;
        }
    }
}
Exemplo n.º 5
0
bool safemode::has_rule( const std::string &rule_in, const Creature::Attitude attitude_in )
{
    for( auto &elem : character_rules ) {
        if( rule_in.length() == elem.rule.length()
            && ci_find_substr( rule_in, elem.rule ) != -1
            && elem.attitude == attitude_in ) {
            return true;
        }
    }
    return false;
}
Exemplo n.º 6
0
bool hasPickupRule(std::string sRule)
{
    for (std::vector<cPickupRules>::iterator it = vAutoPickupRules[APU_CHARACTER].begin();
         it != vAutoPickupRules[APU_CHARACTER].end(); ++it) {
        if (sRule.length() == it->sRule.length() &&
            ci_find_substr(sRule, it->sRule) != -1) {
            return true;
        }
    }
    return false;
}
Exemplo n.º 7
0
void safemode::remove_rule( const std::string &rule_in, const Creature::Attitude attitude_in )
{
    for( auto it = character_rules.begin();
         it != character_rules.end(); ++it ) {
        if( rule_in.length() == it->rule.length()
            && ci_find_substr( rule_in, it->rule ) != -1
            && it->attitude == attitude_in ) {
            character_rules.erase( it );
            create_rules();
            break;
        }
    }
}
Exemplo n.º 8
0
void removePickupRule(std::string sRule)
{
    for (std::vector<cPickupRules>::iterator it = vAutoPickupRules[APU_CHARACTER].begin();
         it != vAutoPickupRules[APU_CHARACTER].end(); ++it) {
        if (sRule.length() == it->sRule.length() &&
            ci_find_substr(sRule, it->sRule) != -1) {
            vAutoPickupRules[APU_CHARACTER].erase(it);
            merge_vector();
            createPickupRules();
            break;
        }
    }
}
Exemplo n.º 9
0
void auto_pickup::remove_rule(const std::string &sRule)
{
    for (auto it = vRules[CHARACTER].begin();
         it != vRules[CHARACTER].end(); ++it) {
        if (sRule.length() == it->sRule.length() &&
            ci_find_substr(sRule, it->sRule) != -1) {
            vRules[CHARACTER].erase(it);
            merge_vector();
            create_rules();
            break;
        }
    }
}
Exemplo n.º 10
0
void Messages::dialog::do_filter( const std::string &filter_str )
{
    // Split the search string into type and text
    bool has_type_filter = false;
    game_message_type filter_type = m_neutral;
    std::string filter_text;
    const auto colon = filter_str.find( ':' );
    if( colon != std::string::npos ) {
        has_type_filter = msg_type_from_name( filter_type, filter_str.substr( 0, colon ) );
        filter_text = filter_str.substr( colon + 1 );
    } else {
        filter_text = filter_str;
    }

    // Start filtering the log
    folded_filtered.clear();
    for( size_t folded_ind = 0; folded_ind < folded_all.size(); ) {
        const size_t msg_ind = folded_all[folded_ind].first;
        const game_message &msg = player_messages.history( msg_ind );
        const bool match = ( !has_type_filter || filter_type == msg.type ) &&
                           ci_find_substr( remove_color_tags( msg.get_with_count() ), filter_text ) >= 0;

        // Always advance the index, but only add to filtered list if the original message matches
        for( ; folded_ind < folded_all.size() && folded_all[folded_ind].first == msg_ind; ++folded_ind ) {
            if( match ) {
                folded_filtered.emplace_back( folded_ind );
            }
        }
    }

    // Reset view
    if( log_from_top || max_lines > folded_filtered.size() ) {
        offset = 0;
    } else {
        offset = folded_filtered.size() - max_lines;
    }
}
Exemplo n.º 11
0
bool auto_pickup_match(std::string sText, std::string sPattern)
{
    //case insenitive search

    /* Possible patterns
    *
    wooD
    wood*
    *wood
    Wood*aRrOW
    wood*arrow*
    *wood*arrow
    *wood*hard* *x*y*z*arrow*
    */

    if (sText == "") {
        return false;
    } else if (sText == "*") {
        return true;
    }

    size_t iPos;
    std::vector<std::string> vPattern;

    sPattern = trim_rule(sPattern);

    split(sPattern, '*', vPattern);
    size_t iNum = vPattern.size();

    if (iNum == 0) { //should never happen
        return false;
    } else if (iNum == 1) { // no * found
        if (sText.length() == vPattern[0].length() && ci_find_substr(sText, vPattern[0]) != -1) {
            return true;
        }

        return false;
    }

    for (int i=0; i < vPattern.size(); i++) {
        if (i==0 && vPattern[i] != "") { //beginning: ^vPat[i]
            if (sText.length() < vPattern[i].length() || ci_find_substr(sText.substr(0, vPattern[i].length()), vPattern[i]) == -1) {
                //debugmsg(("1: sText: " + sText + " | sPattern: ^" + vPattern[i] + " | no match").c_str());
                return false;
            }

            sText = sText.substr(vPattern[i].length(), sText.length()-vPattern[i].length());
        } else if (i==vPattern.size()-1 && vPattern[i] != "") { //linenend: vPat[i]$
            if (sText.length() < vPattern[i].length() || ci_find_substr(sText.substr(sText.length()-vPattern[i].length(), vPattern[i].length()), vPattern[i]) == -1) {
                //debugmsg(("2: sText: " + sText + " | sPattern: " + vPattern[i] + "$ | no match").c_str());
                return false;
            }
        } else { //inbetween: vPat[i]
            if (vPattern[i] != "") {
                if ((iPos = ci_find_substr(sText, vPattern[i])) == -1) {
                    //debugmsg(("3: sText: " + sText + " | sPattern: " + vPattern[i] + " | no match").c_str());
                    return false;
                }

                sText = sText.substr(iPos+vPattern[i].length(), sText.length()-iPos);
            }
        }
    }

    return true;
}
Exemplo n.º 12
0
bool auto_pickup_match(std::string sText, std::string sPattern)
{
    //case insenitive search

    /* Possible patterns
    *
    wooD
    wood*
    *wood
    Wood*aRrOW
    wood*arrow*
    *wood*arrow
    *wood*hard* *x*y*z*arrow*
    */

    if (sText == "") {
        return false;
    } else if (sText == "*") {
        return true;
    }

    int iPos;
    std::vector<std::string> vPattern;

    sPattern = trim_rule(sPattern);

    split(sPattern, '*', vPattern);
    size_t iNum = vPattern.size();

    if (iNum == 0) { //should never happen
        return false;
    } else if (iNum == 1) { // no * found
        if (sText.length() == vPattern[0].length() && ci_find_substr(sText, vPattern[0]) != -1) {
            return true;
        }

        return false;
    }

    for (std::vector<std::string>::iterator it = vPattern.begin();
         it != vPattern.end(); ++it) {
        if (it == vPattern.begin() && *it != "") { //beginning: ^vPat[i]
            if (sText.length() < it->length() ||
                ci_find_substr(sText.substr(0, it->length()), *it) == -1) {
                return false;
            }

            sText = sText.substr(it->length(), sText.length() - it->length());
        } else if (it == vPattern.end() - 1 && *it != "") { //linenend: vPat[i]$
            if (sText.length() < it->length() ||
                ci_find_substr(sText.substr(sText.length() - it->length(),
                                            it->length()), *it) == -1) {
                return false;
            }
        } else { //inbetween: vPat[i]
            if (*it != "") {
                if ((iPos = (int)ci_find_substr(sText, *it)) == -1) {
                    return false;
                }

                sText = sText.substr(iPos + (int)it->length(), (int)sText.length() - iPos);
            }
        }
    }

    return true;
}