1
1
mirror of https://github.com/tstellar/bygfoot.git synced 2025-02-26 08:17:37 +01:00

"Commentary improvements."

This commit is contained in:
gyboth 2005-06-28 02:08:56 +00:00
parent 6d2d7e5fcb
commit e75c763ed0
28 changed files with 605 additions and 351 deletions

File diff suppressed because one or more lines are too long

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2005-06-26 13:39+0200\n"
"POT-Creation-Date: 2005-06-28 04:05+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -71,7 +71,7 @@ msgid ""
"player's value. Do you accept?"
msgstr ""
#: src/callback_func.c:383 src/callbacks.c:533
#: src/callback_func.c:383 src/callbacks.c:538
msgid "Your offer has been removed."
msgstr ""
@ -148,94 +148,99 @@ msgstr ""
msgid "The current game state is unsaved and will be lost. Continue?"
msgstr ""
#: src/callbacks.c:146 src/callbacks.c:397
#: src/callbacks.c:148 src/callbacks.c:402
msgid "Transfers are disabled in this country definition."
msgstr ""
#: src/callbacks.c:150
#: src/callbacks.c:152
msgid "Left click to make an offer. Right click to remove offer."
msgstr ""
#: src/callbacks.c:157
#: src/callbacks.c:153
#, c-format
msgid "Transfer deadline is Week %d"
msgstr ""
#: src/callbacks.c:162
msgid "The transfer deadline is over."
msgstr ""
#: src/callbacks.c:166 src/callbacks.c:561 src/callbacks.c:578
#: src/callbacks.c:171 src/callbacks.c:566 src/callbacks.c:583
msgid "You still have some transfer business to manage."
msgstr ""
#: src/callbacks.c:170
#: src/callbacks.c:175
msgid "At least one user didn't take his turn this week. Continue?"
msgstr ""
#: src/callbacks.c:176
#: src/callbacks.c:181
msgid "There are injured or banned players in one of the user teams. Continue?"
msgstr ""
#: src/callbacks.c:381
#: src/callbacks.c:386
msgid "This is your first season."
msgstr ""
#: src/callbacks.c:399 src/callbacks.c:415 src/callbacks.c:431
#: src/callbacks.c:449 src/callbacks.c:794 src/callbacks.c:810
#: src/callbacks.c:404 src/callbacks.c:420 src/callbacks.c:436
#: src/callbacks.c:454 src/callbacks.c:799 src/callbacks.c:815
msgid "You haven't selected a player."
msgstr ""
#: src/callbacks.c:401
#: src/callbacks.c:406
msgid "The player is already on the list."
msgstr ""
#: src/callbacks.c:417
#: src/callbacks.c:422
msgid "The player is not on the list."
msgstr ""
#: src/callbacks.c:433
#: src/callbacks.c:438
msgid "Your team can't have less than 11 players."
msgstr ""
#: src/callbacks.c:454
#: src/callbacks.c:459
msgid "Penalty/free kick shooter deselected."
msgstr ""
#: src/callbacks.c:460
#: src/callbacks.c:465
#, c-format
msgid "%s will shoot penalties and free kicks when he plays."
msgstr ""
#: src/callbacks.c:535
#: src/callbacks.c:540
msgid "You haven't made an offer for the player."
msgstr ""
#: src/callbacks.c:594
#: src/callbacks.c:599
msgid "Enter a structure. The digits must sum up to 10."
msgstr ""
#: src/callbacks.c:595
#: src/callbacks.c:600
msgid "Structure"
msgstr ""
#: src/callbacks.c:628 src/callbacks.c:644
#: src/callbacks.c:633 src/callbacks.c:649
msgid "No match stored."
msgstr ""
#: src/callbacks.c:722 src/game_gui.c:309
#: src/callbacks.c:727 src/game_gui.c:309
msgid "Boost ON is disabled in this country definition."
msgstr ""
#: src/callbacks.c:744
#: src/callbacks.c:749
msgid "Finances are disabled in this country definition."
msgstr ""
#: src/callbacks.c:749
#: src/callbacks.c:754
msgid ""
"Left-click: get loan; Right-click: pay back; Middle click: stadium window."
msgstr ""
#: src/callbacks.c:763
#: src/callbacks.c:768
msgid "Stadium management is disabled in this country definition."
msgstr ""
#: src/callbacks.c:788
#: src/callbacks.c:793
msgid "Contracts are disabled in this country definition."
msgstr ""
@ -324,7 +329,7 @@ msgstr ""
msgid "Next week you'll fire him and hire a new one."
msgstr ""
#: src/game_gui.c:530
#: src/game_gui.c:548
#, c-format
msgid ""
"The team owners have fired you because of financial mismanagement. Luckily, "
@ -332,7 +337,7 @@ msgid ""
"some information on %s:"
msgstr ""
#: src/game_gui.c:533
#: src/game_gui.c:551
#, c-format
msgid ""
"The team owners have fired you because of unsuccessfulness. Luckily, the "
@ -340,49 +345,49 @@ msgid ""
"information on %s:"
msgstr ""
#: src/game_gui.c:536
#: src/game_gui.c:554
#, c-format
msgid ""
"The owners of %s are deeply impressed by your success with %s and would like "
"to hire you. Here's some information on %s:"
msgstr ""
#: src/game_gui.c:539
#: src/game_gui.c:557
msgid "Accept?"
msgstr ""
#: src/game_gui.c:541
#: src/game_gui.c:559
msgid " (NOTE: If you don't, the game is over for you.)"
msgstr ""
#: src/game_gui.c:592
#: src/game_gui.c:610
#, c-format
msgid "Job offers set to %s."
msgstr ""
#: src/game_gui.c:599
#: src/game_gui.c:617
#, c-format
msgid "Live game set to %s."
msgstr ""
#: src/game_gui.c:606
#: src/game_gui.c:624
#, c-format
msgid "Overwrite set to %s."
msgstr ""
#: src/game_gui.c:626
#: src/game_gui.c:644
msgid ""
"Bygfoot is a very intuitive and simple game, so there isn't a full-grown "
"documentation. However, if you have trouble, there are a few places to go.\n"
msgstr ""
#: src/game_gui.c:628
#: src/game_gui.c:646
msgid ""
"At the Bygfoot forums you can report bugs, ask for help and discuss the game "
"(you don't have to register):\n"
msgstr ""
#: src/game_gui.c:630
#: src/game_gui.c:648
msgid ""
"\n"
"If you feel you've found out something about the game that has to be shared, "
@ -728,38 +733,38 @@ msgstr ""
msgid "Next (W)"
msgstr ""
#: src/lg_commentary.c:237 src/team.c:500
#: src/lg_commentary.c:331 src/team.c:500
msgid "ALL OUT DEFEND"
msgstr ""
#: src/lg_commentary.c:240 src/team.c:502
#: src/lg_commentary.c:334 src/team.c:502
msgid "DEFEND"
msgstr ""
#: src/lg_commentary.c:243 src/team.c:504
#: src/lg_commentary.c:337 src/team.c:504
msgid "BALANCED"
msgstr ""
#: src/lg_commentary.c:246 src/team.c:506
#: src/lg_commentary.c:340 src/team.c:506
msgid "ATTACK"
msgstr ""
#: src/lg_commentary.c:249 src/team.c:508
#: src/lg_commentary.c:343 src/team.c:508
msgid "ALL OUT ATTACK"
msgstr ""
#. Boost value.
#: src/lg_commentary.c:252 src/team.c:516
#: src/lg_commentary.c:346 src/team.c:516
msgid "ANTI"
msgstr ""
#. Boost value.
#: src/lg_commentary.c:255 src/team.c:519
#: src/lg_commentary.c:349 src/team.c:519
msgid "OFF"
msgstr ""
#. Boost value.
#: src/lg_commentary.c:258 src/team.c:522
#: src/lg_commentary.c:352 src/team.c:522
msgid "ON"
msgstr ""
@ -767,71 +772,71 @@ msgstr ""
msgid "Saving options/constants..."
msgstr ""
#: src/load_save.c:59
#: src/load_save.c:61
msgid "Saving leagues..."
msgstr ""
#: src/load_save.c:70
#: src/load_save.c:72
msgid "Saving cups..."
msgstr ""
#: src/load_save.c:81
#: src/load_save.c:83
msgid "Saving users..."
msgstr ""
#: src/load_save.c:91
#: src/load_save.c:93
msgid "Saving transfer list..."
msgstr ""
#: src/load_save.c:101
#: src/load_save.c:103
msgid "Saving season stats..."
msgstr ""
#: src/load_save.c:111
#: src/load_save.c:113
msgid "Saving miscellaneous..."
msgstr ""
#: src/load_save.c:118
#: src/load_save.c:120
msgid "Compressing savegame..."
msgstr ""
#: src/load_save.c:126 src/load_save.c:257
#: src/load_save.c:128 src/load_save.c:261
msgid "Done."
msgstr ""
#: src/load_save.c:168
#: src/load_save.c:170
msgid "Last save file not found."
msgstr ""
#: src/load_save.c:176
#: src/load_save.c:178
msgid "Uncompressing savegame..."
msgstr ""
#: src/load_save.c:186
#: src/load_save.c:188
msgid "Loading options/constants..."
msgstr ""
#: src/load_save.c:200
#: src/load_save.c:204
msgid "Loading leagues..."
msgstr ""
#: src/load_save.c:210
#: src/load_save.c:214
msgid "Loading cups..."
msgstr ""
#: src/load_save.c:220
#: src/load_save.c:224
msgid "Loading users..."
msgstr ""
#: src/load_save.c:230
#: src/load_save.c:234
msgid "Loading transfer list..."
msgstr ""
#: src/load_save.c:240
#: src/load_save.c:244
msgid "Loading season stats..."
msgstr ""
#: src/load_save.c:250
#: src/load_save.c:254
msgid "Loading miscellaneous..."
msgstr ""
@ -2600,12 +2605,12 @@ msgstr ""
msgid "Sponsorship offers"
msgstr ""
#: src/xml.c:90
#: src/xml.c:80
#, c-format
msgid "Loading league: %s"
msgstr ""
#: src/xml.c:150
#: src/xml.c:140
#, c-format
msgid "Loading cup: %s"
msgstr ""

View File

@ -142,12 +142,17 @@ void
on_button_transfers_clicked (GtkButton *button,
gpointer user_data)
{
gchar buf[SMALL];
if(sett_int("int_opt_disable_transfers"))
game_gui_print_message(_("Transfers are disabled in this country definition."));
else if(week < transfer_get_deadline())
{
stat0 = STATUS_SHOW_TRANSFER_LIST;
game_gui_print_message(_("Left click to make an offer. Right click to remove offer."));
sprintf(buf, _("Transfer deadline is Week %d"), transfer_get_deadline());
printf("buf %s \n", buf);
game_gui_print_message_with_delay(buf);
treeview_show_transfer_list(GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right")));
gtk_notebook_set_current_page(GTK_NOTEBOOK(lookup_widget(window.main, "notebook_player")), 1);

View File

@ -282,7 +282,7 @@ cup_load_choose_team(Cup *cup, GPtrArray *teams, const CupChooseTeam *ct)
if(ct->number_of_teams != -1 &&
number_of_teams != ct->number_of_teams)
{
g_warning("cup_load_choose_team (+): not enough teams (that don't participate in international cups yet) found in chooseteam %s for cup %s (%d specified, %d found) cup group %d.\n ",
g_warning("cup_load_choose_team (1): not enough teams (that don't participate in international cups yet) found in chooseteam %s for cup %s (%d specified, %d found) cup group %d.\n ",
ct->sid->str, cup->name->str, ct->number_of_teams, number_of_teams, cup->group);
main_exit_program(EXIT_CHOOSE_TEAM_ERROR, NULL);
}
@ -321,7 +321,7 @@ cup_load_choose_team(Cup *cup, GPtrArray *teams, const CupChooseTeam *ct)
if(number_of_teams != ct->number_of_teams)
{
g_warning("cup_load_choose_team (*): not enough teams found in league 0 for chooseteam %s (%d; required: %d) in cup %s (group %d)\n",
g_warning("cup_load_choose_team (2): not enough teams found in league 0 for chooseteam %s (%d; required: %d) in cup %s (group %d)\n",
ct->sid->str, number_of_teams, ct->number_of_teams, cup->name->str, cup->group);
main_exit_program(EXIT_CHOOSE_TEAM_ERROR, NULL);
}
@ -360,7 +360,7 @@ cup_load_choose_team(Cup *cup, GPtrArray *teams, const CupChooseTeam *ct)
if(ct->number_of_teams != -1 &&
number_of_teams != ct->number_of_teams)
{
g_warning("cup_load_choose_team(*): not enough teams (that don't participate in international cups yet) found in chooseteam %s for cup %s (%d specified, %d found) cup group %d.\n ",
g_warning("cup_load_choose_team(3): not enough teams (that don't participate in international cups yet) found in chooseteam %s for cup %s (%d specified, %d found) cup group %d.\n ",
ct->sid->str, cup->name->str, ct->number_of_teams, number_of_teams, cup->group);
main_exit_program(EXIT_CHOOSE_TEAM_ERROR, NULL);
}

View File

@ -451,6 +451,7 @@ file_load_conf_files(void)
file_load_opt_file(opt_str("string_opt_constants_file"), &constants);
file_load_opt_file(opt_str("string_opt_appearance_file"), &constants_app);
file_load_opt_file("bygfoot_lg_tokens", &lg_tokens);
}
/** Load a user-specific conf file.

View File

@ -456,6 +456,7 @@ free_variables(void)
free_option_list(&settings, FALSE);
free_option_list(&constants, FALSE);
free_option_list(&constants_app, FALSE);
free_option_list(&lg_tokens, FALSE);
for(i=0;i<LIVE_GAME_EVENT_END;i++)
free_g_string_array(&lg_commentary[i]);

View File

@ -366,16 +366,34 @@ game_gui_show_main(void)
}
/** Print a message into the main window entry. */
void
gboolean
game_gui_print_message(gchar *text)
{
gtk_entry_set_text(GTK_ENTRY(lookup_widget(window.main, "entry_message")), text);
if(g_str_has_prefix(text, "___"))
{
gtk_entry_set_text(GTK_ENTRY(lookup_widget(window.main, "entry_message")), text + 3);
g_free(text);
}
else
gtk_entry_set_text(GTK_ENTRY(lookup_widget(window.main, "entry_message")), text);
if(timeout_id != -1)
g_source_remove(timeout_id);
timeout_id = g_timeout_add(const_int("int_game_gui_message_duration") * 1000,
(GSourceFunc)game_gui_clear_entry_message, NULL);
return FALSE;
}
/** Print a message after some seconds of delay. */
void
game_gui_print_message_with_delay(gchar *text)
{
gchar *local_text = g_strdup_printf("___%s", text);
g_timeout_add(const_int("int_game_gui_message_delay") * 1000,
(GSourceFunc)game_gui_print_message, local_text);
}
/** Function that gets called from time to time. */

View File

@ -25,9 +25,12 @@ void
game_gui_get_radio_items(GtkWidget **style, GtkWidget **scout,
GtkWidget **physio, GtkWidget **boost);
void
gboolean
game_gui_print_message(gchar *text);
void
game_gui_print_message_with_delay(gchar *text);
void
game_gui_read_radio_items(GtkWidget *widget);

View File

@ -17,13 +17,13 @@
void
lg_commentary_generate(LiveGameUnit *unit, const Fixture *fix)
{
gchar *strings[LG_TOKEN_END][2];
gchar buf[SMALL];
GPtrArray **commentaries = NULL;
GPtrArray *strings = g_ptr_array_new();
gint i;
lg_commentary_set_strings(strings, unit, fix);
if(unit->event.type == LIVE_GAME_EVENT_STYLE_CHANGE_ALL_OUT_DEFEND ||
unit->event.type == LIVE_GAME_EVENT_STYLE_CHANGE_DEFEND ||
unit->event.type == LIVE_GAME_EVENT_STYLE_CHANGE_BALANCED ||
@ -55,8 +55,10 @@ lg_commentary_generate(LiveGameUnit *unit, const Fixture *fix)
unit->event.commentary = g_string_new(buf);
for(i=LG_TOKEN_ATTENDANCE;i<LG_TOKEN_END;i++)
g_free(strings[i][1]);
for(i=0;i<lg_tokens.list->len;i++)
g_free(g_ptr_array_index(strings, i));
g_ptr_array_free(strings, TRUE);
}
/** Try to replace all special tokens in the string and write the result to dest.
@ -65,79 +67,167 @@ lg_commentary_generate(LiveGameUnit *unit, const Fixture *fix)
@param dest The destination string.
@return TRUE if we could replace all tokens, FALSE otherwise. */
gboolean
lg_commentary_replace_tokens(const gchar *string, gchar *strings[][2], gchar *dest)
lg_commentary_replace_tokens(const gchar *string, const GPtrArray *strings, gchar *dest)
{
gint i;
gboolean condition;
gchar buf[SMALL];
const gchar *buf2 = NULL;
strcpy(buf, string);
strcpy(dest, string);
for(i=0;i<LG_TOKEN_END;i++)
for(i=0;i<lg_tokens.list->len;i++)
{
if(query_misc_string_contains(dest, strings[i][0]))
if(query_misc_string_contains(buf, g_array_index(lg_tokens.list, Option, i).string_value->str))
{
if(strings[i][1] == NULL)
if(g_ptr_array_index(strings, i) == NULL)
return FALSE;
else
misc_string_replace_token(dest, strings[i][0], strings[i][1]);
misc_string_replace_token(buf,
g_array_index(lg_tokens.list, Option, i).string_value->str,
(gchar*)g_ptr_array_index(strings, i));
}
}
misc_replace_sums(buf);
if(buf[0] == '#')
{
buf2 = misc_parse(buf + 1, &condition);
strcpy(dest, buf2);
return condition;
}
else
strcpy(dest, buf);
return TRUE;
}
/** Get the strings corresponding to the commentary tokens. */
void
lg_commentary_set_strings(gchar *strings[][2], const LiveGameUnit *unit, const Fixture *fix)
lg_commentary_set_strings(GPtrArray *strings, const LiveGameUnit *unit, const Fixture *fix)
{
gint i, tmp_int = 1;
gchar buf[SMALL];
strings[LG_TOKEN_TEAM_HOME][0] = const_str("string_lg_commentary_token_team_home");
strings[LG_TOKEN_TEAM_HOME][1] = fix->teams[0]->name->str;
strings[LG_TOKEN_TEAM_AWAY][0] = const_str("string_lg_commentary_token_team_away");
strings[LG_TOKEN_TEAM_AWAY][1] = fix->teams[1]->name->str;
strings[LG_TOKEN_TEAM_IN_POSS][0] = const_str("string_lg_commentary_token_team_in_poss");
strings[LG_TOKEN_TEAM_IN_POSS][1] = fix->teams[unit->possession]->name->str;
strings[LG_TOKEN_TEAM_NOT_IN_POSS][0] = const_str("string_lg_commentary_token_team_not_in_poss");
strings[LG_TOKEN_TEAM_NOT_IN_POSS][1] = fix->teams[!unit->possession]->name->str;
strings[LG_TOKEN_TEAM_LOSING][0] = const_str("string_lg_commentary_token_team_losing");
strings[LG_TOKEN_TEAM_LOSING][1] = (unit->result[0] == unit->result[1]) ? NULL :
fix->teams[(unit->result[0] > unit->result[1])]->name->str;
strings[LG_TOKEN_TEAM_WINNING][0] = const_str("string_lg_commentary_token_team_winning");
strings[LG_TOKEN_TEAM_WINNING][1] = (unit->result[0] == unit->result[1]) ? NULL :
fix->teams[(unit->result[0] < unit->result[1])]->name->str;
strings[LG_TOKEN_TEAM][0] = const_str("string_lg_commentary_token_team");
strings[LG_TOKEN_TEAM][1] = (unit->event.team == -1) ?
NULL : fix->teams[unit->event.team]->name->str;
strings[LG_TOKEN_PLAYER1][0] = const_str("string_lg_commentary_token_player1");
strings[LG_TOKEN_PLAYER1][1] = (unit->event.player == -1) ?
NULL : lg_commentary_get_player_name(unit, fix, FALSE);
strings[LG_TOKEN_PLAYER2][0] = const_str("string_lg_commentary_token_player2");
strings[LG_TOKEN_PLAYER2][1] = (unit->event.player2 == -1) ?
NULL : lg_commentary_get_player_name(unit, fix, TRUE);
strings[LG_TOKEN_ATTENDANCE][0] = const_str("string_lg_commentary_token_attendance");
misc_print_grouped_int(fix->attendance, buf, FALSE);
strings[LG_TOKEN_ATTENDANCE][1] = g_strdup(buf);
strings[LG_TOKEN_RESULT][0] = const_str("string_lg_commentary_token_result");
sprintf(buf, "%d : %d", unit->result[0], unit->result[1]);
strings[LG_TOKEN_RESULT][1] = g_strdup(buf);
strings[LG_TOKEN_MINUTE][0] = const_str("string_lg_commentary_token_minute");
sprintf(buf, "%d", live_game_unit_get_minute(unit));
strings[LG_TOKEN_MINUTE][1] = g_strdup(buf);
strings[LG_TOKEN_EXTRA][0] = const_str("string_lg_commentary_token_extra");
strings[LG_TOKEN_EXTRA][1] = lg_commentary_get_extra_data(unit, fix);
for(i=0;i<lg_tokens.list->len;i++)
{
if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_team_home")) == 0)
g_ptr_array_add(strings, g_strdup(fix->teams[0]->name->str));
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_team_away")) == 0)
g_ptr_array_add(strings, g_strdup(fix->teams[1]->name->str));
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_team_in_poss")) == 0)
g_ptr_array_add(strings, g_strdup(fix->teams[unit->possession]->name->str));
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_team_not_in_poss")) == 0)
g_ptr_array_add(strings, g_strdup(fix->teams[!unit->possession]->name->str));
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_team_losing")) == 0)
{
if(unit->result[0] == unit->result[1])
g_ptr_array_add(strings, NULL);
else
g_ptr_array_add(strings, g_strdup(fix->teams[(unit->result[0] > unit->result[1])]->name->str));
}
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_team_winning")) == 0)
{
if(unit->result[0] == unit->result[1])
g_ptr_array_add(strings, NULL);
else
g_ptr_array_add(strings, g_strdup(fix->teams[(unit->result[0] < unit->result[1])]->name->str));
}
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_team")) == 0)
{
if(unit->event.team == -1)
g_ptr_array_add(strings, NULL);
else
g_ptr_array_add(strings, g_strdup(fix->teams[unit->event.team]->name->str));
}
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_player1")) == 0)
g_ptr_array_add(strings, lg_commentary_get_player_name(unit, fix, FALSE));
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_player2")) == 0)
g_ptr_array_add(strings, lg_commentary_get_player_name(unit, fix, TRUE));
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_attendance")) == 0)
{
misc_print_grouped_int(fix->attendance, buf, FALSE);
g_ptr_array_add(strings, g_strdup(buf));
}
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_time")) == 0)
{
sprintf(buf, "%d", unit->time);
g_ptr_array_add(strings, g_strdup(buf));
}
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_minute")) == 0)
{
sprintf(buf, "%d", live_game_unit_get_minute(unit));
g_ptr_array_add(strings, g_strdup(buf));
}
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_minute_remaining")) == 0)
{
if(unit->time == LIVE_GAME_UNIT_TIME_EXTRA_TIME)
tmp_int = 120 - live_game_unit_get_minute(unit);
else if(unit->time == LIVE_GAME_UNIT_TIME_SECOND_HALF)
tmp_int = 90 - live_game_unit_get_minute(unit);
else if(unit->time == LIVE_GAME_UNIT_TIME_FIRST_HALF)
tmp_int = 45 - live_game_unit_get_minute(unit);
if(unit->time == LIVE_GAME_UNIT_TIME_PENALTIES ||
tmp_int <= 0)
g_ptr_array_add(strings, NULL);
else
{
sprintf(buf, "%d", tmp_int);
g_ptr_array_add(strings, g_strdup(buf));
}
}
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_result")) == 0)
{
sprintf(buf, "%d : %d", unit->result[0], unit->result[1]);
g_ptr_array_add(strings, g_strdup(buf));
}
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_goals_home")) == 0)
{
sprintf(buf, "%d", unit->result[0]);
g_ptr_array_add(strings, g_strdup(buf));
}
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_goals_away")) == 0)
{
sprintf(buf, "%d", unit->result[1]);
g_ptr_array_add(strings, g_strdup(buf));
}
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_goal_diff")) == 0)
{
sprintf(buf, "%d", ABS(unit->result[0] - unit->result[1]));
g_ptr_array_add(strings, strdup(buf));
}
else if(strcmp(g_array_index(lg_tokens.list, Option, i).string_value->str,
lg_token("string_lg_commentary_token_extra")) == 0)
g_ptr_array_add(strings, lg_commentary_get_extra_data(unit, fix));
else
{
g_warning("lg_commentary_set_strings: no rule found for token %s.",
g_array_index(lg_tokens.list, Option, i).string_value->str);
main_exit_program(EXIT_GENERAL, NULL);
}
}
}
/** Return the name of a player involved in the unit (or NULL).
@ -147,6 +237,10 @@ lg_commentary_get_player_name(const LiveGameUnit *unit, const Fixture *fix, gboo
{
gchar *return_value = NULL;
if((player2 && unit->event.player2 == -1) ||
(!player2 && unit->event.player == -1))
return NULL;
if(unit->event.type == LIVE_GAME_EVENT_GENERAL)
return_value = (player2) ?
player_get_last_name(player_of_id_team(fix->teams[unit->possession],

View File

@ -20,15 +20,23 @@ enum LGTokens
LG_TOKEN_PLAYER2,
LG_TOKEN_RESULT,
LG_TOKEN_MINUTE,
LG_TOKEN_GOALS_HOME,
LG_TOKEN_GOALS_AWAY,
LG_TOKEN_GOAL_DIFF,
LG_TOKEN_EXTRA,
LG_TOKEN_END
};
#define lg_token(name) option_string(name, &lg_tokens)
gchar*
lg_commentary_get_player_name(const LiveGameUnit *unit, const Fixture *fix, gint player);
gboolean
lg_commentary_replace_tokens(const gchar *string, const GPtrArray *strings, gchar *dest);
void
lg_commentary_set_strings(gchar *strings[][2], const LiveGameUnit *unit, const Fixture *fix);
lg_commentary_set_strings(GPtrArray *strings, const LiveGameUnit *unit, const Fixture *fix);
void
lg_commentary_generate(LiveGameUnit *unit, const Fixture *fix);
@ -36,9 +44,6 @@ lg_commentary_generate(LiveGameUnit *unit, const Fixture *fix);
gchar*
lg_commentary_get_extra_data(const LiveGameUnit *unit, const Fixture *fix);
gboolean
lg_commentary_replace_tokens(const gchar *string, gchar *strings[][2], gchar *dest);
void
lg_commentary_load_commentary_file_from_option(void);

View File

@ -49,6 +49,8 @@ load_save_save_game(const gchar *filename)
file_save_opt_file(buf, &options);
sprintf(buf, "%s___constants", prefix);
file_save_opt_file(buf, &constants);
sprintf(buf, "%s___settings", prefix);
file_save_opt_file(buf, &settings);
if(debug > 60)
printf("load_save_save leagues \n");
@ -189,6 +191,8 @@ load_save_load_game(const gchar* filename)
file_load_opt_file(buf, &options);
sprintf(buf, "%s___constants", prefix);
file_load_opt_file(buf, &constants);
sprintf(buf, "%s___settings", prefix);
file_load_opt_file(buf, &settings);
language_set(language_get_code_index(opt_str("string_opt_language_code")) + 1);
if(debug > 60)

View File

@ -55,9 +55,9 @@ main_init_variables(void)
save_file = g_string_new("");
constants_app.list = settings.list =
constants.list = options.list = NULL;
constants.list = options.list = lg_tokens.list = NULL;
constants_app.datalist = settings.datalist =
constants.datalist = options.datalist = NULL;
constants.datalist = options.datalist = lg_tokens.datalist = NULL;
popups_active = 0;
selected_row[0] = selected_row[1] = -1;

View File

@ -221,33 +221,11 @@ misc_float_compare(gfloat first, gfloat second)
return 0;
}
/** Remove some of the first or last characters from src and copy
the rest to dest; no error-checking is done. */
void
misc_truncate_string(const gchar *src, gchar *dest, gint number_of_chars)
{
gint i;
gint num = ABS(number_of_chars);
if(number_of_chars >= 0)
{
strncpy(dest, src, strlen(src) - num);
dest[strlen(src) - num] = '\0';
return;
}
for(i=0;i<strlen(src);i++)
if(i >= num)
dest[i - num] = src[i];
dest[i - num] = '\0';
}
/** Find out whether the first string contains the second string. */
gboolean
query_misc_string_contains(const gchar *string, const gchar *text)
{
gint i, j;
gint i;
gint lens = strlen(string),
lent = strlen(text);
@ -258,14 +236,8 @@ query_misc_string_contains(const gchar *string, const gchar *text)
return (strcmp(text, string) == 0);
for(i=0;i<lens - lent + 1;i++)
{
for(j=0;j<lent;j++)
if(string[i + j] != text[j])
break;
if(j == lent)
if(g_str_has_prefix(string + i, text))
return TRUE;
}
return FALSE;
}
@ -289,34 +261,49 @@ query_misc_string_in_array(const gchar *string, GPtrArray *array)
void
misc_string_replace_token(gchar *string, const gchar *token, const gchar *replacement)
{
gint i, j;
gchar buf[SMALL], buf2[SMALL], rest[SMALL];
for(i=strlen(string); i >= strlen(token); i--)
gint i;
gchar buf[SMALL], buf2[SMALL];
if(strlen(string) < strlen(token))
return;
for(i=0;i<strlen(string) - strlen(token) + 1;i++)
{
strcpy(buf, "");
strcpy(buf2, "");
strcpy(rest, "");
strncpy(buf, string, i);
buf[i] = '\0';
for(j=i;j<strlen(string);j++)
rest[j - i] = string[j];
rest[j - i] = '\0';
if(g_str_has_suffix(buf, token))
if(g_str_has_prefix(string + i, token))
{
strncpy(buf2, buf, strlen(buf) - strlen(token));
buf2[strlen(buf) - strlen(token)] = '\0';
strcat(buf2, replacement);
sprintf(string, "%s%s", buf2, rest);
strcpy(buf2, string + i + strlen(token));
strncpy(buf, string, i);
buf[i] = '\0';
sprintf(string, "%s%s%s", buf, replacement, buf2);
misc_string_replace_token(string, token, replacement);
return;
}
}
}
/** Replace sums of the form [1 + 2 - 3] in the string. */
void
misc_replace_sums(gchar *string)
{
gint i, result = -1;
gchar buf[SMALL], buf2[SMALL];
const gchar *buf_return = NULL;
strcpy(buf, string);
for(i=0;i<strlen(buf);i++)
if(buf[i] == '[')
{
strncpy(buf2, buf, i);
buf2[i] = '\0';
buf_return = misc_parse_expression(buf + i + 1, &result);
sprintf(string, "%s%d%s", buf2, result, buf_return + 1);
misc_replace_sums(string);
}
}
/** Get a float representation of someone's age
based on his birth year and month. */
gfloat
@ -330,3 +317,127 @@ misc_get_age_from_birth(gint birth_year, gint birth_month)
return (gfloat)g_date_days_between(birth_date, current_date) / 365.25;
}
/* skip spaces */
const gchar*
misc_skip_spaces(const gchar* s)
{
while (g_ascii_isspace(*s)) s++;
return s;
}
/* read number, skip all leading and trailing spaces */
const gchar*
misc_parse_value(const gchar *s, gint *value)
{
s = misc_skip_spaces(s);
*value = 0;
while (g_ascii_isdigit(*s)) {
*value = *value * 10 + (*s - '0');
s++;
}
return s;
}
/* parse numeric expression (supports + and -) */
const gchar*
misc_parse_expression(const gchar *s, gboolean *result)
{
gint value = 0;
s = misc_parse_value(s, &value);
*result = value;
gint loop = 1;
while (loop) {
s = misc_skip_spaces(s);
switch(*s) {
case '+':
s = misc_parse_value(s+1, &value);
*result += value;
break;
case '-':
s = misc_parse_value(s+1, &value);
*result -= value;
break;
default:
loop = 0;
}
}
return s;
}
/* parse comparison (supports '<', '>' and '=') */
const gchar*
misc_parse_comparison(const gchar *s, gboolean *result)
{
gint value = 0;
s = misc_parse_expression(s, result);
s = misc_skip_spaces(s);
switch(*s) {
case '<':
if (*(s+1) == '=')
{
s = misc_parse_expression(s+2, &value);
*result = *result <= value;
}
else
{
s = misc_parse_expression(s+1, &value);
*result = *result < value;
}
break;
case '=':
s = misc_parse_expression(s+1, &value);
*result = *result == value;
break;
case '>':
if (*(s+1) == '=')
{
s = misc_parse_expression(s+2, &value);
*result = *result >= value;
}
else
{
s = misc_parse_expression(s+1, &value);
*result = *result > value;
}
break;
case '!':
if(*(s + 1) == '=')
{
s = misc_parse_expression(s+2, &value);
*result = *result != value;
}
break;
}
return s;
}
const gchar*
misc_parse_and(const gchar *s, gboolean *result)
{
gint value = 0;
s = misc_parse_comparison(s, result);
s = misc_skip_spaces(s);
while (*s == 'a' && *(s+1) == 'n' && *(s+2) == 'd') {
s = misc_parse_comparison(s + 3, &value);
*result = *result && value;
s = misc_skip_spaces(s);
}
return s;
}
const gchar*
misc_parse(const gchar *s, gboolean *result)
{
gint value = 0;
s = misc_parse_and(s, result);
s = misc_skip_spaces(s);
while (*s == 'o' && *(s+1) == 'r') {
s = misc_parse_and(s + 2, &value);
*result = *result || value;
s = misc_skip_spaces(s);
}
return s;
}

View File

@ -45,7 +45,28 @@ query_misc_integer_is_in_g_array(gint item, GArray *array);
void
misc_string_replace_token(gchar *string, const gchar *token, const gchar *replacement);
void
misc_replace_sums(gchar *string);
gfloat
misc_get_age_from_birth(gint birth_year, gint birth_month);
const gchar*
misc_skip_spaces(const gchar* s);
const gchar*
misc_parse_value(const gchar *s, gint *value);
const gchar*
misc_parse_expression(const gchar *s, gboolean *result);
const gchar*
misc_parse_comparison(const gchar *s, gboolean *result);
const gchar*
misc_parse_and(const gchar *s, gboolean *result);
const gchar*
misc_parse(const gchar *s, gboolean *result);
#endif

View File

@ -31,6 +31,8 @@ OptionList constants;
OptionList constants_app;
/** Array with internal settings. */
OptionList settings;
/* Array holding live game tokens. */
OptionList lg_tokens;
/** The array containing the live game commentary strings. */
GPtrArray *lg_commentary[LIVE_GAME_EVENT_END];

View File

@ -21,16 +21,6 @@
#include "xml_loadsave_transfers.h"
#include "xml_loadsave_users.h"
gint
xml_get_tag_from_name(const gchar *element_name)
{
gchar buf[SMALL];
misc_truncate_string(element_name, buf, -1);
return (gint)g_ascii_strtod(buf, NULL);
}
void
xml_load_users(const gchar *dirname, const gchar *basename)
{

View File

@ -50,6 +50,8 @@ enum XmlTags
#define xml_write_float(fil, value, tag, indent) fprintf(fil, "%s<_%d>%d</_%d>\n", indent, tag, (gint)rint(value * 10000), tag)
#define xml_get_tag_from_name(name) (gint)g_ascii_strtod(name + 1, NULL)
void
xml_load_users(const gchar *dirname, const gchar *basename);
@ -65,9 +67,6 @@ xml_load_cups(const gchar *dirname, const gchar *basename);
void
xml_load_cup(Cup *cup, const gchar *dirname, const gchar *basename, const GPtrArray *dir_contents);
gint
xml_get_tag_from_name(const gchar *element_name);
void
xml_load_transfers(const gchar *dirname, const gchar *basename);

View File

@ -53,6 +53,7 @@ enum XmlLgCommentaryStates
};
gint state, commentary_idx;
gchar condition[SMALL];
/**
* The function called by the parser when an opening tag is read.
@ -73,7 +74,13 @@ xml_lg_commentary_read_start_element (GMarkupParseContext *context,
else if(strcmp(element_name, TAG_EVENT_NAME) == 0)
state = STATE_EVENT_NAME;
else if(strcmp(element_name, TAG_EVENT_COMMENTARY) == 0)
{
state = STATE_EVENT_COMMENTARY;
if(attribute_names[0] != NULL)
sprintf(condition, "#%s", attribute_values[0]);
else
strcpy(condition, "");
}
else if(strcmp(element_name, TAG_LG_COMMENTARY) != 0)
g_warning("xml_lg_commentary_read_start_element: unknown tag: %s; I'm in state %d\n",
element_name, state);
@ -114,14 +121,11 @@ xml_lg_commentary_read_text (GMarkupParseContext *context,
GError **error)
{
gchar buf[text_len + 1];
gint int_value;
GString *commentary = NULL;
strncpy(buf, text, text_len);
buf[text_len] = '\0';
int_value = (gint)g_ascii_strtod(buf, NULL);
if(state == STATE_EVENT_NAME)
{
if(strcmp(buf, EVENT_NAME_GENERAL) == 0)
@ -191,7 +195,8 @@ xml_lg_commentary_read_text (GMarkupParseContext *context,
}
else if(state == STATE_EVENT_COMMENTARY)
{
commentary = g_string_new(buf);
commentary = g_string_new("");
g_string_printf(commentary, "%s%s", condition, buf);
g_ptr_array_add(lg_commentary[commentary_idx], commentary);
}
}

View File

@ -16,6 +16,8 @@ string_save_suffix .zip
# number of seconds until messages disappear
int_game_gui_message_duration 5
# number of seconds to delay for delayed messages
int_game_gui_message_delay 3
# base values for stadium improvement: 500 seats and 5%
int_stadium_improvement_base_seats 500
@ -349,21 +351,6 @@ float_season_end_user_champ_addition 100
int_team_new_bound_upper 10
int_team_new_bound_lower 20
# tokens in the live game commentary
string_lg_commentary_token_team_home _TH_
string_lg_commentary_token_team_away _TA_
string_lg_commentary_token_team_in_poss _TP_
string_lg_commentary_token_team_not_in_poss _TN_
string_lg_commentary_token_team_losing _TL_
string_lg_commentary_token_team_winning _TW_
string_lg_commentary_token_team _TT_
string_lg_commentary_token_player1 _P1_
string_lg_commentary_token_player2 _P2_
string_lg_commentary_token_attendance _AT_
string_lg_commentary_token_result _RE_
string_lg_commentary_token_minute _MI_
string_lg_commentary_token_extra _EX_
_
# base probability that the ball gets from defending area
# to midfield area.
float_live_game_area_def_mid 5000

View File

@ -5,7 +5,7 @@
<symbol>flag_belgium.png</symbol>
<first_week>1</first_week>
<week_gap>1</week_gap>
<average_skill>8000</average_skill>
<average_skill>6500</average_skill>
<yellow_red>3</yellow_red>
<names_file>belgium</names_file>
@ -64,14 +64,14 @@
<team>
<team_name>Sint-Truiden</team_name>
</team>
<team>
<team_name>Oostende</team_name>
</team>
<team>
<team_name>Brussel</team_name>
</team>
<team>
<team_name>Bergen</team_name>
<team_name>Zulte-Waregem</team_name>
</team>
<team>
<team_name>Roeselare</team_name>
</team>
</teams>
</league>

View File

@ -5,7 +5,7 @@
<symbol>flag_belgium.png</symbol>
<first_week>1</first_week>
<week_gap>1</week_gap>
<average_skill>7000</average_skill>
<average_skill>5000</average_skill>
<yellow_red>3</yellow_red>
<names_file>belgium</names_file>
@ -32,7 +32,7 @@
<teams>
<team>
<team_name>Zulte Waregem</team_name>
<team_name>Oostende</team_name>
</team>
<team>
<team_name>Geel</team_name>
@ -44,7 +44,7 @@
<team_name>Ronse</team_name>
</team>
<team>
<team_name>Roeselare</team_name>
<team_name>Bergen</team_name>
</team>
<team>
<team_name>Antwerpen</team_name>
@ -65,7 +65,7 @@
<team_name>Deinze</team_name>
</team>
<team>
<team_name>Maasmechelen</team_name>
<team_name>Overpelt-Lommel</team_name>
</team>
<team>
<team_name>Hamme</team_name>
@ -80,10 +80,10 @@
<team_name>Eupen</team_name>
</team>
<team>
<team_name>Aalst</team_name>
<team_name>Leuven</team_name>
</team>
<team>
<team_name>Wezet</team_name>
<team_name>Mechelen</team_name>
</team>
</teams>
</league>

View File

@ -5,7 +5,7 @@
<symbol>flag_belgium.png</symbol>
<first_week>1</first_week>
<week_gap>1</week_gap>
<average_skill>6000</average_skill>
<average_skill>4000</average_skill>
<yellow_red>3</yellow_red>
<layer>3</layer>
<names_file>belgium</names_file>
@ -32,10 +32,10 @@
<team_name>Cappellen</team_name>
</team>
<team>
<team_name>K. Mechelen</team_name>
<team_name>Boom</team_name>
</team>
<team>
<team_name>Denderhoutem</team_name>
<team_name>Willebroek</team_name>
</team>
<team>
<team_name>Turnhout</team_name>
@ -56,7 +56,7 @@
<team_name>Wetteren</team_name>
</team>
<team>
<team_name>Harelbeke</team_name>
<team_name>Diegem</team_name>
</team>
<team>
<team_name>Waregem</team_name>
@ -68,13 +68,13 @@
<team_name>Bornem</team_name>
</team>
<team>
<team_name>Wevelgem</team_name>
<team_name>Woluwe</team_name>
</team>
<team>
<team_name>Lier II</team_name>
<team_name>Aalst</team_name>
</team>
<team>
<team_name>Evergem</team_name>
<team_name>West</team_name>
</team>
</teams>
</league>

View File

@ -5,7 +5,7 @@
<symbol>flag_belgium.png</symbol>
<first_week>1</first_week>
<week_gap>1</week_gap>
<average_skill>6000</average_skill>
<average_skill>4000</average_skill>
<yellow_red>3</yellow_red>
<layer>3</layer>
<names_file>belgium</names_file>
@ -29,10 +29,10 @@
<teams>
<team>
<team_name>Overpelt Lommel</team_name>
<team_name>Couillet</team_name>
</team>
<team>
<team_name>Leuven</team_name>
<team_name>Doornik</team_name>
</team>
<team>
<team_name>Tongeren</team_name>
@ -41,13 +41,13 @@
<team_name>Sprimont</team_name>
</team>
<team>
<team_name>Woluwe</team_name>
<team_name>Montegnée</team_name>
</team>
<team>
<team_name>Walhain</team_name>
</team>
<team>
<team_name>Diegem</team_name>
<team_name>Verviers</team_name>
</team>
<team>
<team_name>La Calamine</team_name>
@ -68,13 +68,13 @@
<team_name>Namen</team_name>
</team>
<team>
<team_name>Veldwezelt</team_name>
<team_name>Wezet</team_name>
</team>
<team>
<team_name>Seraing</team_name>
<team_name>Leopoldsburg</team_name>
</team>
<team>
<team_name>F.B. boussu</team_name>
<team_name>F.B. Boussu</team_name>
</team>
</teams>
</league>

View File

@ -5,7 +5,7 @@
<symbol>flag_belgium.png</symbol>
<first_week>1</first_week>
<week_gap>1</week_gap>
<average_skill>5000</average_skill>
<average_skill>3500</average_skill>
<yellow_red>3</yellow_red>
<layer>4</layer>
<names_file>belgium</names_file>
@ -23,10 +23,10 @@
<teams>
<team>
<team_name>Doornik</team_name>
<team_name>V. Oostende</team_name>
</team>
<team>
<team_name>Gistel</team_name>
<team_name>Eine</team_name>
</team>
<team>
<team_name>Zottegem</team_name>
@ -53,22 +53,22 @@
<team_name>Lauwe</team_name>
</team>
<team>
<team_name>L. Aalst</team_name>
<team_name>Evergem</team_name>
</team>
<team>
<team_name>Sint-Eloois-Winkel</team_name>
</team>
<team>
<team_name>Eernegem</team_name>
<team_name>Oostnieuwkerke</team_name>
</team>
<team>
<team_name>Wielsbeke</team_name>
<team_name>Rumbeke</team_name>
</team>
<team>
<team_name>Lovendegem</team_name>
</team>
<team>
<team_name>Ursel</team_name>
<team_name>Wevelgem</team_name>
</team>
</teams>
</league>

View File

@ -5,7 +5,7 @@
<symbol>flag_belgium.png</symbol>
<first_week>1</first_week>
<week_gap>1</week_gap>
<average_skill>5000</average_skill>
<average_skill>3500</average_skill>
<yellow_red>3</yellow_red>
<layer>4</layer>
<names_file>belgium</names_file>
@ -22,53 +22,53 @@
</prom_rel>
<teams>
<team>
<team_name>Willebroek</team_name>
</team>
<team>
<team_name>Boom</team_name>
</team>
<team>
<team_name>Londerzeel</team_name>
</team>
<team>
<team_name>Lebbeke</team_name>
</team>
<team>
<team_name>Hoogstraten</team_name>
</team>
<team>
<team_name>Berchem</team_name>
</team>
<team>
<team_name>Meldert</team_name>
</team>
<team>
<team_name>Dilbeek</team_name>
</team>
<team>
<team_name>Opstal</team_name>
<team_name>Grimbergen</team_name>
</team>
<team>
<team_name>Kampenhout</team_name>
</team>
<team>
<team_name>Kontich</team_name>
</team>
<team>
<team_name>Lebbeke</team_name>
</team>
<team>
<team_name>S. Lebeke</team_name>
</team>
<team>
<team_name>Londerzeel</team_name>
</team>
<team>
<team_name>Meldert</team_name>
</team>
<team>
<team_name>Opstal</team_name>
</team>
<team>
<team_name>Opwijk</team_name>
</team>
<team>
<team_name>Verrewinkel</team_name>
</team>
<team>
<team_name>Schoten</team_name>
</team>
<team>
<team_name>Temse</team_name>
</team>
<team>
<team_name>Vorst</team_name>
</team>
<team>
<team_name>Wilrijk</team_name>
</team>
<team>
<team_name>ZL Rijkevorsel</team_name>
</team>
<team>
<team_name>S. Lebbeke</team_name>
</team>
<team>
<team_name>Jette</team_name>
</team>
<team>
<team_name>Hoboken</team_name>
</team>
</teams>
</league>

View File

@ -5,7 +5,7 @@
<symbol>flag_belgium.png</symbol>
<first_week>1</first_week>
<week_gap>1</week_gap>
<average_skill>5000</average_skill>
<average_skill>3500</average_skill>
<yellow_red>3</yellow_red>
<layer>4</layer>
<names_file>belgium</names_file>
@ -23,7 +23,40 @@
<teams>
<team>
<team_name>Mol</team_name>
<team_name>Aarschot</team_name>
</team>
<team>
<team_name>Mol-Wezel</team_name>
</team>
<team>
<team_name>ZL Rijkevorsel</team_name>
</team>
<team>
<team_name>Olen</team_name>
</team>
<team>
<team_name>Meerhout</team_name>
</team>
<team>
<team_name>Hoogstraten</team_name>
</team>
<team>
<team_name>Bree</team_name>
</team>
<team>
<team_name>Heist</team_name>
</team>
<team>
<team_name>Maasmechelen</team_name>
</team>
<team>
<team_name>Veltwezelt</team_name>
</team>
<team>
<team_name>Tessenderlo</team_name>
</team>
<team>
<team_name>Lichtaart</team_name>
</team>
<team>
<team_name>Millen</team_name>
@ -31,44 +64,11 @@
<team>
<team_name>Spouwen Mopertingen</team_name>
</team>
<team>
<team_name>Heist</team_name>
</team>
<team>
<team_name>Olen</team_name>
</team>
<team>
<team_name>Leopoldsburg</team_name>
</team>
<team>
<team_name>Bree</team_name>
</team>
<team>
<team_name>Grimbergen</team_name>
</team>
<team>
<team_name>Aarschot</team_name>
</team>
<team>
<team_name>Kampenhout</team_name>
</team>
<team>
<team_name>Meerhout</team_name>
</team>
<team>
<team_name>Diest</team_name>
</team>
<team>
<team_name>Overijse</team_name>
</team>
<team>
<team_name>Vilvoorde</team_name>
</team>
<team>
<team_name>Berkenbos</team_name>
</team>
<team>
<team_name>V. Maasmechelen</team_name>
<team_name>Lier II</team_name>
</team>
</teams>
</league>

View File

@ -5,7 +5,7 @@
<symbol>flag_belgium.png</symbol>
<first_week>1</first_week>
<week_gap>1</week_gap>
<average_skill>5000</average_skill>
<average_skill>3500</average_skill>
<yellow_red>3</yellow_red>
<layer>4</layer>
<names_file>belgium</names_file>
@ -23,52 +23,52 @@
<teams>
<team>
<team_name>Verviers</team_name>
<team_name>Luik</team_name>
</team>
<team>
<team_name>Montegnée</team_name>
</team>
<team>
<team_name>Couillet</team_name>
</team>
<team>
<team_name>Hoei</team_name>
</team>
<team>
<team_name>Couvin</team_name>
</team>
<team>
<team_name>Aarlen</team_name>
</team>
<team>
<team_name>Seilles</team_name>
<team_name>Seraing</team_name>
</team>
<team>
<team_name>Spa</team_name>
</team>
<team>
<team_name>Bas-Oha</team_name>
<team_name>Huy</team_name>
</team>
<team>
<team_name>Meux</team_name>
</team>
<team>
<team_name>C. Luik</team_name>
<team_name>Malmundaria</team_name>
</team>
<team>
<team_name>Hannuit</team_name>
</team>
<team>
<team_name>Seilles</team_name>
</team>
<team>
<team_name>Ciney</team_name>
</team>
<team>
<team_name>Bas-Oha</team_name>
</team>
<team>
<team_name>Hamoir</team_name>
</team>
<team>
<team_name>Spy</team_name>
</team>
<team>
<team_name>Bertrige</team_name>
</team>
<team>
<team_name>Fleurus</team_name>
</team>
<team>
<team_name>Arlon</team_name>
</team>
<team>
<team_name>Bleid</team_name>
</team>
<team>
<team_name>Bercheux</team_name>
</team>
<team>
<team_name>Melen-Micheroux</team_name>
</team>
<team>
<team_name>Tamines</team_name>
<team_name>Couvin</team_name>
</team>
</teams>
</league>

View File

@ -232,11 +232,14 @@
<name>foul_red</name>
<commentary>_P2_ für eine Blutgrätsche</commentary>
<commentary>_P2_ für absichtliches Handspiel</commentary>
<commentary>_P1_ wurde vom Platz gestellt</commentary>
<commentary>_P2_ sieht die rote Karte</commentary>
<commentary>_P2_ wird wegen wiederholtem Meckern vom Platz gestellt</commentary>
<commentary>_P2_ wird nach einer Notbremse zum Duschen geschickt</commentary>
</event>
<event>
<name>send_off</name>
<commentary>_P1_ wurde vom Platz gestellt</commentary>
</event>
<event>
<name>boost_change</name>
<commentary>_TT_ hat den Boost auf _EX_ gestellt</commentary>