コード例 #1
0
ファイル: monsters.test.c プロジェクト: stm2/server
static void init_language(void)
{
    struct locale* lang;
    int i;

    lang = get_or_create_locale("de");
    locale_setstring(lang, "skill::unarmed", "Waffenloser Kampf");
    locale_setstring(lang, "keyword::attack", "ATTACKIERE");
    locale_setstring(lang, "keyword::study", "LERNE");
    locale_setstring(lang, "keyword::tax", "TREIBE");
    locale_setstring(lang, "keyword::loot", "PLUENDERE");
    locale_setstring(lang, "keyword::piracy", "PIRATERIE");
    locale_setstring(lang, "keyword::guard", "BEWACHE");
    locale_setstring(lang, "keyword::move", "NACH");
    locale_setstring(lang, "keyword::message", "BOTSCHAFT");
    locale_setstring(lang, "REGION", "REGION");
    locale_setstring(lang, "east", "O");

    for (i = 0; i < MAXKEYWORDS; ++i) {
        if (!locale_getstring(lang, mkname("keyword", keywords[i])))
            locale_setstring(lang, mkname("keyword", keywords[i]), keywords[i]);
    }
    for (i = 0; i < MAXSKILLS; ++i) {
        if (!locale_getstring(lang, mkname("skill", skillnames[i])))
            locale_setstring(lang, mkname("skill", skillnames[i]), skillnames[i]);
    }
    init_keywords(lang);
    init_skills(lang);
}
コード例 #2
0
ファイル: bind_locale.c プロジェクト: TomBraun/server
const char * locale_get(const char *lang, const char *key) {
    struct locale *loc = get_locale(lang);
    if (loc) {
        return locale_getstring(loc, key);
    }
    return 0;
}
コード例 #3
0
ファイル: names.c プロジェクト: Xolgrim/server
static const char *make_names(const char *monster, int *num_postfix,
    int pprefix, int *num_name, int *num_prefix, int ppostfix)
{
    int uv, uu, un;
    static char name[NAMESIZE + 1]; // FIXME: static return value
    char zText[32];
    const char *str;

    if (*num_prefix == 0) {

        for (*num_prefix = 0;; ++*num_prefix) {
            sprintf(zText, "%s_prefix_%d", monster, *num_prefix);
            str = locale_getstring(default_locale, zText);
            if (str == NULL)
                break;
        }

        for (*num_name = 0;; ++*num_name) {
            sprintf(zText, "%s_name_%d", monster, *num_name);
            str = locale_getstring(default_locale, zText);
            if (str == NULL)
                break;
        }

        for (*num_postfix = 0;; ++*num_postfix) {
            sprintf(zText, "%s_postfix_%d", monster, *num_postfix);
            str = locale_getstring(default_locale, zText);
            if (str == NULL)
                break;
        }
    }

    if (*num_name == 0) {
        return NULL;
    }

    /* nur 50% aller Namen haben "Vor-Teil" */
    uv = rng_int() % (*num_prefix * pprefix);

    uu = rng_int() % *num_name;

    /* nur 50% aller Namen haben "Nach-Teil", wenn kein Vor-Teil */
    if (uv >= *num_prefix) {
        un = rng_int() % *num_postfix;
    }
    else {
        un = rng_int() % (*num_postfix * ppostfix);
    }

    name[0] = 0;
    if (uv < *num_prefix) {
        sprintf(zText, "%s_prefix_%d", monster, uv);
        str = locale_getstring(default_locale, zText);
        if (str) {
            strcat(name, (const char *)str);
            strcat(name, " ");
        }
    }

    sprintf(zText, "%s_name_%d", monster, uu);
    str = locale_getstring(default_locale, zText);
    if (str)
        strcat(name, (const char *)str);

    if (un < *num_postfix) {
        sprintf(zText, "%s_postfix_%d", monster, un);
        str = locale_getstring(default_locale, zText);
        if (str) {
            strcat(name, " ");
            strcat(name, (const char *)str);
        }
    }
    return name;
}
コード例 #4
0
ファイル: names.c プロジェクト: Xolgrim/server
static const char *dragon_name(const unit * u)
{
    static char name[NAMESIZE + 1]; // FIXME: static return value
    int rnd, ter = 0;
    int anzahl = 1;
    static int num_postfix;
    char zText[32];
    const char *str;

    if (num_postfix == 0) {
        for (num_postfix = 0;; ++num_postfix) {
            sprintf(zText, "dragon_postfix_%d", num_postfix);
            str = locale_getstring(default_locale, zText);
            if (str == NULL)
                break;
        }
        if (num_postfix == 0)
            num_postfix = -1;
    }
    if (num_postfix <= 0) {
        return NULL;
    }

    if (u) {
        region *r = u->region;
        anzahl = u->number;
        switch (rterrain(r)) {
        case T_PLAIN:
            ter = 1;
            break;
        case T_MOUNTAIN:
            ter = 2;
            break;
        case T_DESERT:
            ter = 3;
            break;
        case T_SWAMP:
            ter = 4;
            break;
        case T_GLACIER:
            ter = 5;
            break;
        }
    }

    rnd = num_postfix / 6;
    rnd = (rng_int() % rnd) + ter * rnd;

    sprintf(zText, "dragon_postfix_%d", rnd);

    str = locale_getstring(default_locale, zText);
    assert(str != NULL);

    if (anzahl > 1) {
        const char *no_article = strchr((const char *)str, ' ');
        assert(no_article);
        // TODO: localization
        sprintf(name, "Die %sn von %s", no_article + 1, rname(u->region,
            default_locale));
    }
    else {
        char n[32];

        strcpy(n, silbe1[rng_int() % SIL1]);
        strcat(n, silbe2[rng_int() % SIL2]);
        strcat(n, silbe3[rng_int() % SIL3]);
        if (rng_int() % 5 > 2) {
            sprintf(name, "%s, %s", n, str);  /* "Name, der Titel" */
        }
        else {
            strcpy(name, (const char *)str);  /* "Der Titel Name" */
            name[0] = (char)toupper(name[0]); /* TODO: UNICODE - should use towupper() */
            strcat(name, " ");
            strcat(name, n);
        }
        if (u && (rng_int() % 3 == 0)) {
            strcat(name, " von ");
            strcat(name, (const char *)rname(u->region, default_locale));
        }
    }

    return name;
}