fix a FIXME: setting default order through config, making test better.

this feature is not in use, so all this work is really pointless.
This commit is contained in:
Enno Rehling 2016-04-09 19:05:28 +02:00
parent 11ae7dd55e
commit a834c486d9
11 changed files with 14 additions and 35 deletions

View File

@ -11,6 +11,7 @@
"settings": { "settings": {
"game.id": 2, "game.id": 2,
"game.name": "Eressea", "game.name": "Eressea",
"orders.default": "work",
"NewbieImmunity": 8, "NewbieImmunity": 8,
"modules.wormholes": true, "modules.wormholes": true,
"entertain.base": 0, "entertain.base": 0,

View File

@ -67,9 +67,5 @@
<text locale="de">ERESSEA 2 BEFEHLE</text> <text locale="de">ERESSEA 2 BEFEHLE</text>
<text locale="en">ERESSEA 2 ORDERS</text> <text locale="en">ERESSEA 2 ORDERS</text>
</string> </string>
<string name="defaultorder">
<text locale="de">ARBEITEN</text>
<text locale="en">WORK</text>
</string>
</strings> </strings>
</eressea> </eressea>

View File

@ -27,6 +27,7 @@
"settings": { "settings": {
"game.id": 3, "game.id": 3,
"game.name": "E3", "game.name": "E3",
"orders.default": "work",
"database.gameid": 7, "database.gameid": 7,
"NewbieImmunity": 4, "NewbieImmunity": 4,
"modules.astralspace": false, "modules.astralspace": false,

View File

@ -59,9 +59,5 @@
<text locale="de">ERESSEA 3 BEFEHLE</text> <text locale="de">ERESSEA 3 BEFEHLE</text>
<text locale="en">ERESSEA 3 ORDERS</text> <text locale="en">ERESSEA 3 ORDERS</text>
</string> </string>
<string name="defaultorder">
<text locale="de">ARBEITEN</text>
<text locale="en">WORK</text>
</string>
</strings> </strings>
</eressea> </eressea>

View File

@ -27,6 +27,7 @@
"settings": { "settings": {
"game.id": 4, "game.id": 4,
"game.name": "Deveron", "game.name": "Deveron",
"orders.default": "work",
"database.gameid": 7, "database.gameid": 7,
"NewbieImmunity": 4, "NewbieImmunity": 4,
"modules.astralspace": false, "modules.astralspace": false,

View File

@ -60,9 +60,5 @@
<text locale="de">ERESSEA 4 BEFEHLE</text> <text locale="de">ERESSEA 4 BEFEHLE</text>
<text locale="en">ERESSEA 4 ORDERS</text> <text locale="en">ERESSEA 4 ORDERS</text>
</string> </string>
<string name="defaultorder">
<text locale="de">ARBEITEN</text>
<text locale="en">WORK</text>
</string>
</strings> </strings>
</eressea> </eressea>

View File

@ -284,10 +284,6 @@
getting it after the second turn, please make one of your units give the getting it after the second turn, please make one of your units give the
order OPTION COMPUTER.</text> order OPTION COMPUTER.</text>
</string> </string>
<string name="defaultorder">
<text locale="de">ARBEITEN</text>
<text locale="en">WORK</text>
</string>
<string name="temple"> <string name="temple">
<text locale="de">Tempel</text> <text locale="de">Tempel</text>
<text locale="en">temple</text> <text locale="en">temple</text>

View File

@ -1003,29 +1003,24 @@ void kernel_init(void)
} }
static order * defaults[MAXLOCALES]; static order * defaults[MAXLOCALES];
keyword_t default_keyword = NOKEYWORD;
void set_default_order(int kwd) {
default_keyword = (keyword_t)kwd;
}
// TODO: outside of tests, default_keyword is never used, why is this here?
// see also test_long_order_hungry
order *default_order(const struct locale *lang) order *default_order(const struct locale *lang)
{ {
int i = locale_index(lang); int i = locale_index(lang);
order *result = 0; order *result = 0;
assert(i < MAXLOCALES); assert(i < MAXLOCALES);
if (default_keyword != NOKEYWORD) {
return create_order(default_keyword, lang, 0);
}
result = defaults[i]; result = defaults[i];
if (!result) { if (!result) {
const char * str = LOC(lang, "defaultorder"); const char * str;
keyword_t kwd = NOKEYWORD;
str = config_get("orders.default");
if (str) { if (str) {
result = defaults[i] = parse_order(str, lang); kwd = findkeyword(str);
}
if (kwd != NOKEYWORD) {
result = create_order(kwd, lang, NULL);
defaults[i] = result;
} }
} }
return result ? copy_order(result) : 0; return result ? copy_order(result) : 0;

View File

@ -195,7 +195,6 @@ struct param;
bool IsImmune(const struct faction *f); bool IsImmune(const struct faction *f);
struct order *default_order(const struct locale *lang); struct order *default_order(const struct locale *lang);
void set_default_order(int kwd);
int entertainmoney(const struct region *r); int entertainmoney(const struct region *r);
void init_parameters(struct locale *lang); void init_parameters(struct locale *lang);

View File

@ -180,7 +180,8 @@ static void test_default_order(CuTest *tc) {
loc = test_create_locale(); loc = test_create_locale();
ord = default_order(loc); ord = default_order(loc);
CuAssertPtrEquals(tc, 0, ord); CuAssertPtrEquals(tc, 0, ord);
locale_setstring(loc, "defaultorder", "work");
config_set("orders.default", "work");
ord = default_order(loc); ord = default_order(loc);
CuAssertPtrNotNull(tc, ord); CuAssertPtrNotNull(tc, ord);
CuAssertIntEquals(tc, K_WORK, getkeyword(ord)); CuAssertIntEquals(tc, K_WORK, getkeyword(ord));

View File

@ -1003,8 +1003,6 @@ static void test_long_order_buy_cast(CuTest *tc) {
} }
static void test_long_order_hungry(CuTest *tc) { static void test_long_order_hungry(CuTest *tc) {
// FIXME: set_default_order is a test-only function, this is a bad test.
// see also default_order
unit *u; unit *u;
test_cleanup(); test_cleanup();
config_set("hunger.long", "1"); config_set("hunger.long", "1");
@ -1012,12 +1010,11 @@ static void test_long_order_hungry(CuTest *tc) {
fset(u, UFL_HUNGER); fset(u, UFL_HUNGER);
unit_addorder(u, create_order(K_MOVE, u->faction->locale, 0)); unit_addorder(u, create_order(K_MOVE, u->faction->locale, 0));
unit_addorder(u, create_order(K_DESTROY, u->faction->locale, 0)); unit_addorder(u, create_order(K_DESTROY, u->faction->locale, 0));
set_default_order(K_WORK); config_set("orders.default", "work");
update_long_order(u); update_long_order(u);
CuAssertIntEquals(tc, K_WORK, getkeyword(u->thisorder)); CuAssertIntEquals(tc, K_WORK, getkeyword(u->thisorder));
CuAssertPtrNotNull(tc, u->orders); CuAssertPtrNotNull(tc, u->orders);
CuAssertPtrEquals(tc, 0, u->faction->msgs); CuAssertPtrEquals(tc, 0, u->faction->msgs);
set_default_order(NOKEYWORD);
test_cleanup(); test_cleanup();
} }