forked from github/server
findparam improvements!
removed findbuildingtype from findparam separate isparam() function that I can optimize later
This commit is contained in:
parent
02ab10d723
commit
7b6a719a62
|
@ -1530,12 +1530,14 @@ static int display_cmd(unit * u, struct order *ord)
|
||||||
{
|
{
|
||||||
building *b = u->building;
|
building *b = u->building;
|
||||||
char **s = NULL;
|
char **s = NULL;
|
||||||
|
const char *str;
|
||||||
region *r = u->region;
|
region *r = u->region;
|
||||||
|
|
||||||
init_tokens(ord);
|
init_tokens(ord);
|
||||||
skip_token();
|
skip_token();
|
||||||
|
|
||||||
switch (getparam(u->faction->locale)) {
|
str = getstrtoken();
|
||||||
|
switch (findparam_ex(str, u->faction->locale)) {
|
||||||
case P_BUILDING:
|
case P_BUILDING:
|
||||||
case P_GEBAEUDE:
|
case P_GEBAEUDE:
|
||||||
if (!b) {
|
if (!b) {
|
||||||
|
@ -1695,14 +1697,17 @@ static int name_cmd(unit * u, struct order *ord)
|
||||||
char **s = NULL;
|
char **s = NULL;
|
||||||
param_t p;
|
param_t p;
|
||||||
boolean foreign = false;
|
boolean foreign = false;
|
||||||
|
const char *str;
|
||||||
|
|
||||||
init_tokens(ord);
|
init_tokens(ord);
|
||||||
skip_token();
|
skip_token();
|
||||||
p = getparam(u->faction->locale);
|
str = getstrtoken();
|
||||||
|
p = findparam_ex(str, u->faction->locale);
|
||||||
|
|
||||||
if (p == P_FOREIGN) {
|
if (p == P_FOREIGN) {
|
||||||
|
str = getstrtoken();
|
||||||
foreign = true;
|
foreign = true;
|
||||||
p = getparam(u->faction->locale);
|
p = findparam_ex(str, u->faction->locale);
|
||||||
}
|
}
|
||||||
|
|
||||||
switch (p) {
|
switch (p) {
|
||||||
|
@ -1951,7 +1956,7 @@ static int mail_cmd(unit * u, struct order *ord)
|
||||||
|
|
||||||
do {
|
do {
|
||||||
cont = 0;
|
cont = 0;
|
||||||
switch (findparam(s, u->faction->locale)) {
|
switch (findparam_ex(s, u->faction->locale)) {
|
||||||
case P_REGION:
|
case P_REGION:
|
||||||
/* können alle Einheiten in der Region sehen */
|
/* können alle Einheiten in der Region sehen */
|
||||||
s = getstrtoken();
|
s = getstrtoken();
|
||||||
|
@ -2991,7 +2996,7 @@ static int renumber_cmd(unit * u, order * ord)
|
||||||
init_tokens(ord);
|
init_tokens(ord);
|
||||||
skip_token();
|
skip_token();
|
||||||
s = getstrtoken();
|
s = getstrtoken();
|
||||||
switch (findparam(s, u->faction->locale)) {
|
switch (findparam_ex(s, u->faction->locale)) {
|
||||||
|
|
||||||
case P_FACTION:
|
case P_FACTION:
|
||||||
s = getstrtoken();
|
s = getstrtoken();
|
||||||
|
@ -3374,7 +3379,7 @@ static void new_units(void)
|
||||||
if (get_keyword(makeord) == K_MAKE) {
|
if (get_keyword(makeord) == K_MAKE) {
|
||||||
init_tokens(makeord);
|
init_tokens(makeord);
|
||||||
skip_token();
|
skip_token();
|
||||||
if (getparam(u->faction->locale) == P_TEMP) {
|
if (isparam(getstrtoken(), u->faction->locale, P_TEMP)) {
|
||||||
const char *token;
|
const char *token;
|
||||||
char *name = NULL;
|
char *name = NULL;
|
||||||
int alias;
|
int alias;
|
||||||
|
|
|
@ -416,13 +416,13 @@ int teach_cmd(unit * u, struct order *ord)
|
||||||
token = getstrtoken();
|
token = getstrtoken();
|
||||||
|
|
||||||
/* Beginne die Fehlermeldung */
|
/* Beginne die Fehlermeldung */
|
||||||
if (findparam(token, u->faction->locale) != P_TEMP) {
|
if (isparam(token, u->faction->locale, P_TEMP)) {
|
||||||
uid = token;
|
|
||||||
} else {
|
|
||||||
token = getstrtoken();
|
token = getstrtoken();
|
||||||
sprintf(tbuf, "%s %s", LOC(u->faction->locale,
|
sprintf(tbuf, "%s %s", LOC(u->faction->locale,
|
||||||
parameters[P_TEMP]), token);
|
parameters[P_TEMP]), token);
|
||||||
uid = tbuf;
|
uid = tbuf;
|
||||||
|
} else {
|
||||||
|
uid = token;
|
||||||
}
|
}
|
||||||
ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "unitnotfound_id",
|
ADDMSG(&u->faction->msgs, msg_feedback(u, ord, "unitnotfound_id",
|
||||||
"id", uid));
|
"id", uid));
|
||||||
|
|
|
@ -1341,10 +1341,12 @@ void do_misc(region * r, boolean lasttry)
|
||||||
param_t p;
|
param_t p;
|
||||||
int id;
|
int id;
|
||||||
unit *ulast = NULL;
|
unit *ulast = NULL;
|
||||||
|
const char * s;
|
||||||
|
|
||||||
init_tokens(ord);
|
init_tokens(ord);
|
||||||
skip_token();
|
skip_token();
|
||||||
p = getparam(u->faction->locale);
|
s = getstrtoken();
|
||||||
|
p = findparam_ex(s, u->faction->locale);
|
||||||
id = getid();
|
id = getid();
|
||||||
|
|
||||||
switch (p) {
|
switch (p) {
|
||||||
|
|
|
@ -1494,25 +1494,44 @@ keyword_t findkeyword(const char *s, const struct locale * lang)
|
||||||
|
|
||||||
param_t findparam(const char *s, const struct locale * lang)
|
param_t findparam(const char *s, const struct locale * lang)
|
||||||
{
|
{
|
||||||
void **tokens = get_translations(lang, UT_PARAMS);
|
|
||||||
int i;
|
|
||||||
param_t result = NOPARAM;
|
param_t result = NOPARAM;
|
||||||
const void * match;
|
|
||||||
char buffer[64];
|
char buffer[64];
|
||||||
char * str = transliterate(buffer, sizeof(buffer)-sizeof(int), s);
|
char * str = transliterate(buffer, sizeof(buffer)-sizeof(int), s);
|
||||||
critbit_tree *cb = (critbit_tree *)*tokens;
|
|
||||||
|
|
||||||
if (str && cb_find_prefix(cb, str, strlen(str), &match, 1, 0)) {
|
if (str) {
|
||||||
cb_get_kv(match, &i, sizeof(int));
|
int i;
|
||||||
result = (param_t)i;
|
const void * match;
|
||||||
} else {
|
void **tokens = get_translations(lang, UT_PARAMS);
|
||||||
|
critbit_tree *cb = (critbit_tree *)*tokens;
|
||||||
|
if (cb_find_prefix(cb, str, strlen(str), &match, 1, 0)) {
|
||||||
|
cb_get_kv(match, &i, sizeof(int));
|
||||||
|
result = (param_t)i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
param_t findparam_ex(const char *s, const struct locale * lang)
|
||||||
|
{
|
||||||
|
param_t result = findparam(s, lang);
|
||||||
|
|
||||||
|
if (result==NOPARAM) {
|
||||||
const building_type *btype = findbuildingtype(s, lang);
|
const building_type *btype = findbuildingtype(s, lang);
|
||||||
if (btype != NULL)
|
if (btype != NULL)
|
||||||
return (param_t) P_GEBAEUDE;
|
return P_GEBAEUDE;
|
||||||
}
|
}
|
||||||
return (result == P_BUILDING) ? P_GEBAEUDE : result;
|
return (result == P_BUILDING) ? P_GEBAEUDE : result;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int isparam(const char *s, const struct locale * lang, param_t param)
|
||||||
|
{
|
||||||
|
if (s[0]>'@') {
|
||||||
|
param_t p = (param==P_GEBAEUDE) ? findparam_ex(s, lang) : findparam(s, lang);
|
||||||
|
return p==param;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
param_t getparam(const struct locale * lang)
|
param_t getparam(const struct locale * lang)
|
||||||
{
|
{
|
||||||
return findparam(getstrtoken(), lang);
|
return findparam(getstrtoken(), lang);
|
||||||
|
@ -1588,18 +1607,17 @@ static int read_newunitid(const faction * f, const region * r)
|
||||||
int read_unitid(const faction * f, const region * r)
|
int read_unitid(const faction * f, const region * r)
|
||||||
{
|
{
|
||||||
const char *s = getstrtoken();
|
const char *s = getstrtoken();
|
||||||
param_t param;
|
|
||||||
|
|
||||||
/* Da s nun nur einen string enthaelt, suchen wir ihn direkt in der
|
/* Da s nun nur einen string enthaelt, suchen wir ihn direkt in der
|
||||||
* paramliste. machen wir das nicht, dann wird getnewunit in s nach der
|
* paramliste. machen wir das nicht, dann wird getnewunit in s nach der
|
||||||
* nummer suchen, doch dort steht bei temp-units nur "temp" drinnen! */
|
* nummer suchen, doch dort steht bei temp-units nur "temp" drinnen! */
|
||||||
|
|
||||||
param = findparam(s, f->locale);
|
if (!s || *s == 0) {
|
||||||
if (param == P_TEMP) {
|
return -1;
|
||||||
|
}
|
||||||
|
if (isparam(s, f->locale, P_TEMP)) {
|
||||||
return read_newunitid(f, r);
|
return read_newunitid(f, r);
|
||||||
}
|
}
|
||||||
if (!s || *s == 0)
|
|
||||||
return -1;
|
|
||||||
return atoi36((const char *)s);
|
return atoi36((const char *)s);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -179,8 +179,10 @@ extern "C" {
|
||||||
|
|
||||||
extern keyword_t findkeyword(const char *s, const struct locale *lang);
|
extern keyword_t findkeyword(const char *s, const struct locale *lang);
|
||||||
|
|
||||||
extern param_t findparam(const char *s, const struct locale *lang);
|
param_t findparam(const char *s, const struct locale *lang);
|
||||||
extern param_t getparam(const struct locale *lang);
|
param_t findparam_ex(const char *s, const struct locale * lang);
|
||||||
|
int isparam(const char *s, const struct locale * lang, param_t param);
|
||||||
|
param_t getparam(const struct locale *lang);
|
||||||
|
|
||||||
extern int getid(void);
|
extern int getid(void);
|
||||||
#define unitid(x) itoa36((x)->no)
|
#define unitid(x) itoa36((x)->no)
|
||||||
|
|
|
@ -1922,7 +1922,7 @@ addparam_unit(const char *const param[], spllprm ** spobjp, const unit * u,
|
||||||
sppobj_t otype = SPP_UNIT;
|
sppobj_t otype = SPP_UNIT;
|
||||||
|
|
||||||
*spobjp = NULL;
|
*spobjp = NULL;
|
||||||
if (findparam(param[0], u->faction->locale) == P_TEMP) {
|
if (isparam(param[0], u->faction->locale, P_TEMP)) {
|
||||||
if (param[1] == NULL) {
|
if (param[1] == NULL) {
|
||||||
/* Fehler: Ziel vergessen */
|
/* Fehler: Ziel vergessen */
|
||||||
cmistake(u, ord, 203, MSG_MAGIC);
|
cmistake(u, ord, 203, MSG_MAGIC);
|
||||||
|
@ -1981,7 +1981,6 @@ static spellparameter *add_spellparameter(region * target_r, unit * u,
|
||||||
|
|
||||||
while (!fail && *c && i < size && param[i] != NULL) {
|
while (!fail && *c && i < size && param[i] != NULL) {
|
||||||
spllprm *spobj = NULL;
|
spllprm *spobj = NULL;
|
||||||
param_t pword;
|
|
||||||
int j = -1;
|
int j = -1;
|
||||||
switch (*c) {
|
switch (*c) {
|
||||||
case '?':
|
case '?':
|
||||||
|
@ -2028,8 +2027,7 @@ static spellparameter *add_spellparameter(region * target_r, unit * u,
|
||||||
break;
|
break;
|
||||||
case 'k':
|
case 'k':
|
||||||
++c;
|
++c;
|
||||||
pword = findparam(param[i++], u->faction->locale);
|
switch (findparam_ex(param[i++], u->faction->locale)) {
|
||||||
switch (pword) {
|
|
||||||
case P_REGION:
|
case P_REGION:
|
||||||
spobj = (spllprm *)malloc(sizeof(spllprm));
|
spobj = (spllprm *)malloc(sizeof(spllprm));
|
||||||
spobj->flag = 0;
|
spobj->flag = 0;
|
||||||
|
|
|
@ -373,12 +373,12 @@ order *parse_order(const char *s, const struct locale * lang)
|
||||||
* \return true if the order is long
|
* \return true if the order is long
|
||||||
* \sa is_exclusive(), is_repeated(), is_persistent()
|
* \sa is_exclusive(), is_repeated(), is_persistent()
|
||||||
*/
|
*/
|
||||||
boolean is_repeated(const order * ord)
|
int is_repeated(const order * ord)
|
||||||
{
|
{
|
||||||
keyword_t kwd = ORD_KEYWORD(ord);
|
keyword_t kwd = ORD_KEYWORD(ord);
|
||||||
const struct locale *lang = ORD_LOCALE(ord);
|
const struct locale *lang = ORD_LOCALE(ord);
|
||||||
const char * s;
|
const char * s;
|
||||||
param_t param;
|
int result = 0;
|
||||||
|
|
||||||
switch (kwd) {
|
switch (kwd) {
|
||||||
case K_CAST:
|
case K_CAST:
|
||||||
|
@ -399,7 +399,8 @@ boolean is_repeated(const order * ord)
|
||||||
case K_BREED:
|
case K_BREED:
|
||||||
case K_PIRACY:
|
case K_PIRACY:
|
||||||
case K_PLANT:
|
case K_PLANT:
|
||||||
return true;
|
result = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
case K_FOLLOW:
|
case K_FOLLOW:
|
||||||
/* FOLLOW is only a long order if we are following a ship. */
|
/* FOLLOW is only a long order if we are following a ship. */
|
||||||
|
@ -407,13 +408,8 @@ boolean is_repeated(const order * ord)
|
||||||
init_tokens(ord);
|
init_tokens(ord);
|
||||||
skip_token();
|
skip_token();
|
||||||
s = getstrtoken();
|
s = getstrtoken();
|
||||||
if (s[0]>'9') {
|
result = isparam(s, lang, P_SHIP);
|
||||||
param = findparam(s, lang);
|
parser_popstate();
|
||||||
parser_popstate();
|
|
||||||
if (param == P_SHIP) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case K_MAKE:
|
case K_MAKE:
|
||||||
|
@ -426,16 +422,13 @@ boolean is_repeated(const order * ord)
|
||||||
init_tokens(ord); /* initialize token-parser */
|
init_tokens(ord); /* initialize token-parser */
|
||||||
skip_token();
|
skip_token();
|
||||||
s = getstrtoken();
|
s = getstrtoken();
|
||||||
if (s[0]>'9') {
|
result = !isparam(s, lang, P_TEMP);
|
||||||
param = findparam(s, lang);
|
parser_popstate();
|
||||||
parser_popstate();
|
|
||||||
return param != P_TEMP;
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return false;
|
result = 0;
|
||||||
}
|
}
|
||||||
return false;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -446,11 +439,11 @@ boolean is_repeated(const order * ord)
|
||||||
* \return true if the order is long
|
* \return true if the order is long
|
||||||
* \sa is_exclusive(), is_repeated(), is_persistent()
|
* \sa is_exclusive(), is_repeated(), is_persistent()
|
||||||
*/
|
*/
|
||||||
boolean is_exclusive(const order * ord)
|
int is_exclusive(const order * ord)
|
||||||
{
|
{
|
||||||
keyword_t kwd = ORD_KEYWORD(ord);
|
keyword_t kwd = ORD_KEYWORD(ord);
|
||||||
const struct locale *lang = ORD_LOCALE(ord);
|
const struct locale *lang = ORD_LOCALE(ord);
|
||||||
param_t param;
|
int result = 0;
|
||||||
|
|
||||||
switch (kwd) {
|
switch (kwd) {
|
||||||
case K_MOVE:
|
case K_MOVE:
|
||||||
|
@ -471,18 +464,16 @@ boolean is_exclusive(const order * ord)
|
||||||
case K_BREED:
|
case K_BREED:
|
||||||
case K_PIRACY:
|
case K_PIRACY:
|
||||||
case K_PLANT:
|
case K_PLANT:
|
||||||
return true;
|
result = 1;
|
||||||
|
break;
|
||||||
|
|
||||||
case K_FOLLOW:
|
case K_FOLLOW:
|
||||||
/* FOLLOW is only a long order if we are following a ship. */
|
/* FOLLOW is only a long order if we are following a ship. */
|
||||||
parser_pushstate();
|
parser_pushstate();
|
||||||
init_tokens(ord);
|
init_tokens(ord);
|
||||||
skip_token();
|
skip_token();
|
||||||
param = getparam(lang);
|
result = isparam(getstrtoken(), lang, P_SHIP);
|
||||||
parser_popstate();
|
parser_popstate();
|
||||||
|
|
||||||
if (param == P_SHIP)
|
|
||||||
return true;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case K_MAKE:
|
case K_MAKE:
|
||||||
|
@ -494,16 +485,13 @@ boolean is_exclusive(const order * ord)
|
||||||
parser_pushstate();
|
parser_pushstate();
|
||||||
init_tokens(ord); /* initialize token-parser */
|
init_tokens(ord); /* initialize token-parser */
|
||||||
skip_token();
|
skip_token();
|
||||||
param = getparam(lang);
|
result = !isparam(getstrtoken(), lang, P_TEMP);
|
||||||
parser_popstate();
|
parser_popstate();
|
||||||
|
|
||||||
if (param != P_TEMP)
|
|
||||||
return true;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return false;
|
result = 0;
|
||||||
}
|
}
|
||||||
return false;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -514,11 +502,11 @@ boolean is_exclusive(const order * ord)
|
||||||
* \return true if the order is long
|
* \return true if the order is long
|
||||||
* \sa is_exclusive(), is_repeated(), is_persistent()
|
* \sa is_exclusive(), is_repeated(), is_persistent()
|
||||||
*/
|
*/
|
||||||
boolean is_long(const order * ord)
|
int is_long(const order * ord)
|
||||||
{
|
{
|
||||||
keyword_t kwd = ORD_KEYWORD(ord);
|
keyword_t kwd = ORD_KEYWORD(ord);
|
||||||
const struct locale *lang = ORD_LOCALE(ord);
|
const struct locale *lang = ORD_LOCALE(ord);
|
||||||
param_t param;
|
int result = 0;
|
||||||
|
|
||||||
switch (kwd) {
|
switch (kwd) {
|
||||||
case K_CAST:
|
case K_CAST:
|
||||||
|
@ -548,11 +536,8 @@ boolean is_long(const order * ord)
|
||||||
parser_pushstate();
|
parser_pushstate();
|
||||||
init_tokens(ord);
|
init_tokens(ord);
|
||||||
skip_token();
|
skip_token();
|
||||||
param = getparam(lang);
|
result = isparam(getstrtoken(), lang, P_SHIP);
|
||||||
parser_popstate();
|
parser_popstate();
|
||||||
|
|
||||||
if (param == P_SHIP)
|
|
||||||
return true;
|
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case K_MAKE:
|
case K_MAKE:
|
||||||
|
@ -564,16 +549,13 @@ boolean is_long(const order * ord)
|
||||||
parser_pushstate();
|
parser_pushstate();
|
||||||
init_tokens(ord); /* initialize token-parser */
|
init_tokens(ord); /* initialize token-parser */
|
||||||
skip_token();
|
skip_token();
|
||||||
param = getparam(lang);
|
result = !isparam(getstrtoken(), lang, P_TEMP);
|
||||||
parser_popstate();
|
parser_popstate();
|
||||||
|
|
||||||
if (param != P_TEMP)
|
|
||||||
return true;
|
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
return false;
|
result = 0;
|
||||||
}
|
}
|
||||||
return false;
|
return result;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -585,10 +567,10 @@ boolean is_long(const order * ord)
|
||||||
* \return true if the order is persistent
|
* \return true if the order is persistent
|
||||||
* \sa is_exclusive(), is_repeated(), is_persistent()
|
* \sa is_exclusive(), is_repeated(), is_persistent()
|
||||||
*/
|
*/
|
||||||
boolean is_persistent(const order * ord)
|
int is_persistent(const order * ord)
|
||||||
{
|
{
|
||||||
keyword_t kwd = ORD_KEYWORD(ord);
|
keyword_t kwd = ORD_KEYWORD(ord);
|
||||||
boolean persist = ord->_persistent != 0;
|
int persist = ord->_persistent != 0;
|
||||||
switch (kwd) {
|
switch (kwd) {
|
||||||
case K_MOVE:
|
case K_MOVE:
|
||||||
case K_WEREWOLF:
|
case K_WEREWOLF:
|
||||||
|
|
|
@ -51,10 +51,10 @@ extern "C" {
|
||||||
extern keyword_t get_keyword(const order * ord);
|
extern keyword_t get_keyword(const order * ord);
|
||||||
extern void set_order(order ** destp, order * src);
|
extern void set_order(order ** destp, order * src);
|
||||||
extern char *getcommand(const order * ord);
|
extern char *getcommand(const order * ord);
|
||||||
extern boolean is_persistent(const order * ord);
|
extern int is_persistent(const order * ord);
|
||||||
extern boolean is_exclusive(const order * ord);
|
extern int is_exclusive(const order * ord);
|
||||||
extern boolean is_repeated(const order * ord);
|
extern int is_repeated(const order * ord);
|
||||||
extern boolean is_long(const order * ord);
|
extern int is_long(const order * ord);
|
||||||
|
|
||||||
extern char *write_order(const order * ord, char *buffer, size_t size);
|
extern char *write_order(const order * ord, char *buffer, size_t size);
|
||||||
|
|
||||||
|
|
|
@ -291,7 +291,7 @@ static unit *unitorders(FILE * F, int enc, struct faction *f)
|
||||||
if (s == NULL)
|
if (s == NULL)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
if (s[0]) {
|
if (s[0] && s[0]!='@') {
|
||||||
const char *stok = s;
|
const char *stok = s;
|
||||||
stok = parse_token(&stok);
|
stok = parse_token(&stok);
|
||||||
|
|
||||||
|
@ -436,7 +436,7 @@ int readorders(const char *filename)
|
||||||
b = getbuf(F, enc_gamedata);
|
b = getbuf(F, enc_gamedata);
|
||||||
if (!b)
|
if (!b)
|
||||||
break;
|
break;
|
||||||
p = igetparam(b, lang);
|
p = (b[0]=='@') ? NOPARAM : igetparam(b, lang);
|
||||||
} while ((p != P_UNIT || !f) && p != P_FACTION && p != P_NEXT
|
} while ((p != P_UNIT || !f) && p != P_FACTION && p != P_NEXT
|
||||||
&& p != P_GAMENAME);
|
&& p != P_GAMENAME);
|
||||||
break;
|
break;
|
||||||
|
|
Loading…
Reference in New Issue