--- deliantra/server/common/region.C 2008/12/31 17:35:37 1.40 +++ deliantra/server/common/region.C 2009/01/01 20:49:48 1.42 @@ -45,73 +45,13 @@ * used by the map parsing code. */ region * -region::find (const char *name) +region::find (shstr_cmp name) { for_all_regions (rgn) - if (!strcmp (rgn->name, name)) + if (rgn->name == name) return rgn; - LOG (llevError, "region called %s requested, but not found, using fallback.\n", name); - - return default_region (); -} - -/* - * Tries to find a region that 'name' corresponds to. - * It looks, in order, for: - * an exact match to region name (case insensitive) - * an exact match to longname (case insensitive) - * a substring that matches to the longname (eg Kingdom) - * a substring that matches to the region name (eg nav) - * if it can find none of these it returns the first parentless region - * (there should be only one of these - the top level one) - * If we got a NULL, then just return the top level region - * - */ -region * -region::find_fuzzy (const char *name) -{ - if (!name) - return default_region (); - - char *p = strchr (name, '\n'); - if (p) - *p = '\0'; - - for_all_regions (rgn) - if (!strcasecmp (rgn->name, name)) - return rgn; - - for_all_regions (rgn) - if (rgn->longname) - if (!strcasecmp (rgn->longname, name)) - return rgn; - - for_all_regions (rgn) - if (rgn->longname) - { - if (strstr (rgn->longname, name)) - return rgn; - } - - for_all_regions (rgn) - if (rgn->longname) - { - /* - * This is not a bug, we want the region that is most identifiably a discrete - * area in the game, eg if we have 'scor', we want to return 'scorn' and not - * 'scornarena', regardless of their order on the list so we only look at those - * regions with a longname set. - */ - if (strstr (rgn->name, name)) - return rgn; - } - - for_all_regions (rgn) - { - if (strstr (rgn->name, name)) - return rgn; - } + LOG (llevError, "region called %s requested, but not found, using fallback.\n", &name); return default_region (); }