diff --git a/po/de.po b/po/de.po index 795753bc..0fe96638 100644 --- a/po/de.po +++ b/po/de.po @@ -2304,7 +2304,7 @@ msgstr "Ru" #: src/cup.c:1099 msgid "Round robin" -msgstr "Jeder gg. jeden" +msgstr "Gruppenphase" #: src/misc_interface.c:1087 msgid "Safety (%)" diff --git a/src/cup.c b/src/cup.c index 8e2497e2..572f1a10 100644 --- a/src/cup.c +++ b/src/cup.c @@ -68,6 +68,7 @@ cup_new(gboolean new_id) new.teams = g_ptr_array_new(); new.team_names = g_ptr_array_new(); new.fixtures = g_array_new(FALSE, FALSE, sizeof(Fixture)); + new.week_breaks = g_array_new(FALSE, FALSE, sizeof(WeekBreak)); new.bye = g_ptr_array_new(); new.properties = g_ptr_array_new(); diff --git a/src/cup_struct.h b/src/cup_struct.h index 5a430f60..d498a648 100644 --- a/src/cup_struct.h +++ b/src/cup_struct.h @@ -178,6 +178,8 @@ typedef struct GPtrArray *team_names; /** The fixtures of a season for the cup. */ GArray *fixtures; + /** Array of custom breaks in schedule. */ + GArray *week_breaks; } Cup; #endif diff --git a/src/fixture.c b/src/fixture.c index 8058fa15..a7fcc2c2 100644 --- a/src/fixture.c +++ b/src/fixture.c @@ -536,12 +536,12 @@ fixture_write_round_robin(gpointer league_cup, gint cup_round, } /* first half of fixtures */ - week_number = first_week; + week_number = league_cup_get_week_with_break(clid, first_week); for(i=0;i 0 && !query_league_cup_matchday_in_two_match_week(two_match_weeks, fixture_count_matchdays(fixtures) + 1)) - week_number += week_gap; + week_number = league_cup_get_week_with_break(clid, week_number + week_gap); fixture_write_round_robin_matchday(fixtures, cup_round, teams, i, week_number, clid, home_advantage); @@ -550,13 +550,13 @@ fixture_write_round_robin(gpointer league_cup, gint cup_round, if(!one_round) { /* second half of fixtures */ - week_number += g_array_index(rr_breaks, gint, rr_break_idx + 1); + week_number = league_cup_get_week_with_break(clid, week_number + g_array_index(rr_breaks, gint, rr_break_idx + 1)); for(i = 0; i < len - 1; i++) { if(i > 0 && !query_league_cup_matchday_in_two_match_week(two_match_weeks, fixture_count_matchdays(fixtures) + 1)) - week_number += week_gap; + week_number = league_cup_get_week_with_break(clid, week_number + week_gap); week_round_number = fixture_get_free_round(week_number, teams, -1, -1); @@ -671,20 +671,21 @@ fixture_write_knockout_round(Cup *cup, gint cup_round, GPtrArray *teams) else if(round->randomise_teams) teams = misc_randomise_g_pointer_array(teams); + week_number = league_cup_get_week_with_break(cup->id, first_week); week_round_number = - fixture_get_free_round(first_week, teams, -1, -1); + fixture_get_free_round(week_number, teams, -1, -1); for(i=0; i<=(teams->len - 2) / 2; i++) if(!round->home_away && query_league_cup_has_property(cup->id, "weak_at_home") && league_from_clid(((Team*)g_ptr_array_index(teams, 2 * i))->clid)->layer < league_from_clid(((Team*)g_ptr_array_index(teams, 2 * i + 1))->clid)->layer) fixture_write(cup->fixtures, (Team*)g_ptr_array_index(teams, 2 * i + 1), - (Team*)g_ptr_array_index(teams, 2 * i), first_week, + (Team*)g_ptr_array_index(teams, 2 * i), week_number, week_round_number, cup->id, cup_round, 0, !round->neutral, FALSE, (!round->home_away && round->replay == 0)); else fixture_write(cup->fixtures, (Team*)g_ptr_array_index(teams, 2 * i), - (Team*)g_ptr_array_index(teams, 2 * i + 1), first_week, + (Team*)g_ptr_array_index(teams, 2 * i + 1), week_number, week_round_number, cup->id, cup_round, 0, !round->neutral, FALSE, (!round->home_away && round->replay == 0)); @@ -693,7 +694,8 @@ fixture_write_knockout_round(Cup *cup, gint cup_round, GPtrArray *teams) if(round->home_away) { week_number = (round->two_match_week) ? - first_week : first_week + cup->week_gap; + week_number : + league_cup_get_week_with_break(cup->id, week_number + cup->week_gap); week_round_number = fixture_get_free_round(week_number, teams, -1, -1); for(i=0; i<=(teams->len - 2) / 2; i++) diff --git a/src/free.c b/src/free.c index 55dfa1ca..e946dc6e 100644 --- a/src/free.c +++ b/src/free.c @@ -395,6 +395,7 @@ free_league(League *league) free_g_array(&league->fixtures); free_g_array(&league->rr_breaks); + free_g_array(&league->week_breaks); free_g_array(&league->two_match_weeks[0]); free_g_array(&league->two_match_weeks[1]); @@ -646,6 +647,7 @@ free_cup(Cup *cup) free_g_array(&cup->rounds); free_g_array(&cup->fixtures); + free_g_array(&cup->week_breaks); free_g_ptr_array(&cup->bye); free_gchar_array(&cup->team_names); diff --git a/src/league.c b/src/league.c index cb482da2..52a861c6 100644 --- a/src/league.c +++ b/src/league.c @@ -72,6 +72,7 @@ league_new(gboolean new_id) new.tables = g_array_new(FALSE, FALSE, sizeof(Table)); new.properties = g_ptr_array_new(); new.rr_breaks = g_array_new(FALSE, FALSE, sizeof(gint)); + new.week_breaks = g_array_new(FALSE, FALSE, sizeof(WeekBreak)); new.first_week = new.week_gap = 1; new.two_match_weeks[0] = g_array_new(FALSE, FALSE, sizeof(gint)); @@ -1118,3 +1119,33 @@ league_cup_fill_rr_breaks(GArray *rr_breaks, const gchar *breaks) g_strfreev(breaks_arr); } + +/** Set the values of the week breaks to the week gap of the league or + cup if necessary. */ +void +league_cup_adjust_week_breaks(GArray *week_breaks, gint week_gap) +{ + gint i; + + for(i = 0; i < week_breaks->len; i++) + if(g_array_index(week_breaks, WeekBreak, i).length == -1) + g_array_index(week_breaks, WeekBreak, i).length = week_gap; +} + +/** Return the week number with a possible schedule break adjustment. */ +gint +league_cup_get_week_with_break(gint clid, gint week_number) +{ + gint i; + const GArray *week_breaks; + + week_breaks = (clid >= ID_CUP_START) ? + cup_from_clid(clid)->week_breaks : + league_from_clid(clid)->week_breaks; + + for(i = 0; i < week_breaks->len; i++) + if(g_array_index(week_breaks, WeekBreak, i).week_number == week_number) + return week_number + g_array_index(week_breaks, WeekBreak, i).length; + + return week_number; +} diff --git a/src/league.h b/src/league.h index f8baa214..87678e87 100644 --- a/src/league.h +++ b/src/league.h @@ -164,4 +164,10 @@ league_cup_adjust_rr_breaks(GArray *rr_breaks, gint round_robins, gint week_gap) void league_cup_fill_rr_breaks(GArray *rr_breaks, const gchar *breaks); +void +league_cup_adjust_week_breaks(GArray *week_breaks, gint week_gap); + +gint +league_cup_get_week_with_break(gint clid, gint week_number); + #endif diff --git a/src/league_struct.h b/src/league_struct.h index 6403e03f..341404e4 100644 --- a/src/league_struct.h +++ b/src/league_struct.h @@ -27,7 +27,6 @@ #define LEAGUE_STRUCT_H #include "bygfoot.h" -#include "cup_struct.h" #include "stat_struct.h" #include "table_struct.h" @@ -112,6 +111,18 @@ typedef struct gchar *name; } NewTable; +/** + A structure describing a custom break in the fixtures + schedule occuring at a particular week. +*/ +typedef struct +{ + /** In which week the break occurs. */ + gint week_number; + /** Length of break in weeks. */ + gint length; +} WeekBreak; + /** Representation of a league. @see PromRel @@ -165,6 +176,8 @@ typedef struct GArray *fixtures; /** A gchar pointer array of properties (like "inactive"). */ GPtrArray *properties; + /** Array of custom breaks in schedule. */ + GArray *week_breaks; /** The current league statistics. */ LeagueStat stats; } League; diff --git a/src/news.c b/src/news.c index 36e9c163..5c89ef4d 100644 --- a/src/news.c +++ b/src/news.c @@ -84,6 +84,7 @@ news_generate_match(const LiveGame *live_game) new_article.subtitle_id = subtitle_id; new_article.user_idx = fixture_user_team_involved(live_game->fix); new_article.clid = live_game->fix->clid; + new_article.cup_round = live_game->fix->round; if(counters[COUNT_NEW_NEWS] == 0) counters[COUNT_NEW_NEWS] = 2; diff --git a/src/news_struct.h b/src/news_struct.h index f79cac13..b29f23c6 100644 --- a/src/news_struct.h +++ b/src/news_struct.h @@ -78,7 +78,7 @@ typedef struct { gint week_number, week_round_number; gint title_id, subtitle_id; - gint clid; + gint clid, cup_round; gchar *title_small, *title, *subtitle; gint id; gint user_idx; diff --git a/src/treeview_helper.c b/src/treeview_helper.c index 1a486241..bc2a006a 100644 --- a/src/treeview_helper.c +++ b/src/treeview_helper.c @@ -1848,7 +1848,7 @@ treeview_helper_news_additional(GtkTreeViewColumn *col, const NewsPaperArticle *article = NULL; const gchar *colour_fg; const gchar *colour_bg; - gchar buf[SMALL]; + gchar buf[SMALL], buf2[SMALL], round_name[SMALL]; gtk_tree_model_get(model, iter, 2, &article, -1); @@ -1862,9 +1862,17 @@ treeview_helper_news_additional(GtkTreeViewColumn *col, return; } + if(article->clid >= ID_CUP_START) + { + cup_get_round_name(cup_from_clid(article->clid), article->cup_round, round_name); + sprintf(buf2, "%s\n%s", league_cup_get_name_string(article->clid), round_name); + } + else + sprintf(buf2, "%s", league_cup_get_name_string(article->clid)); + sprintf(buf, "%s", const_app("string_news_window_league_cup_attribute"), - league_cup_get_name_string(article->clid)); + buf2); g_object_set(renderer, "markup", buf, "background", colour_bg, "foreground", colour_fg, NULL); diff --git a/src/xml.h b/src/xml.h index 97b159ff..50d4833f 100644 --- a/src/xml.h +++ b/src/xml.h @@ -50,6 +50,8 @@ enum XmlTags TAG_SHORT_NAME, TAG_ID, TAG_WEEK_GAP, + TAG_WEEK_BREAK, + TAG_WEEK_BREAK_LENGTH, TAG_YELLOW_RED, TAG_TEAM_ID, TAG_NAMES_FILE, @@ -57,6 +59,16 @@ enum XmlTags TAG_ROUND }; +#define TAG_DEF_NAME "name" +#define TAG_DEF_SHORT_NAME "short_name" +#define TAG_DEF_SID "sid" +#define TAG_DEF_SYMBOL "symbol" +#define TAG_DEF_WEEK_GAP "week_gap" +#define TAG_DEF_PROPERTY "property" +#define TAG_DEF_YELLOW_RED "yellow_red" +#define TAG_DEF_WEEK_BREAK "break_in" +#define ATT_DEF_NAME_WEEK_BREAK_LENGTH "length" + /** Starting values for tag enums in the various xml loading source files. */ #define TAG_START_MISC 1000 #define TAG_START_LEAGUE 2000 diff --git a/src/xml_country.c b/src/xml_country.c index de4d371c..d641d736 100644 --- a/src/xml_country.c +++ b/src/xml_country.c @@ -31,15 +31,13 @@ #include "xml_cup.h" #include "xml_country.h" #include "xml_league.h" +#include "xml.h" /** * The tags used in the XML files defining countries. */ #define TAG_COUNTRY "country" -#define TAG_NAME "name" #define TAG_RATING "rating" -#define TAG_SYMBOL "symbol" -#define TAG_SID "sid" #define TAG_SUPERNATIONAL "supernational" #define TAG_LEAGUES "leagues" #define TAG_LEAGUE "league" @@ -88,13 +86,13 @@ xml_country_read_start_element (GMarkupParseContext *context, printf("xml_country_read_start_element\n"); #endif - if(strcmp(element_name, TAG_NAME) == 0) + if(strcmp(element_name, TAG_DEF_NAME) == 0) state = STATE_NAME; else if(strcmp(element_name, TAG_RATING) == 0) state = STATE_RATING; - else if(strcmp(element_name, TAG_SYMBOL) == 0) + else if(strcmp(element_name, TAG_DEF_SYMBOL) == 0) state = STATE_SYMBOL; - else if(strcmp(element_name, TAG_SID) == 0) + else if(strcmp(element_name, TAG_DEF_SID) == 0) state = STATE_SID; else if(strcmp(element_name, TAG_SUPERNATIONAL) == 0) state = STATE_SUPERNATIONAL; @@ -130,14 +128,15 @@ xml_country_read_end_element (GMarkupParseContext *context, gpointer user_data, GError **error) { + #ifdef DEBUG printf("xml_country_read_end_element\n"); #endif - if(strcmp(element_name, TAG_NAME) == 0 || + if(strcmp(element_name, TAG_DEF_NAME) == 0 || strcmp(element_name, TAG_RATING) == 0 || - strcmp(element_name, TAG_SYMBOL) == 0 || - strcmp(element_name, TAG_SID) == 0 || + strcmp(element_name, TAG_DEF_SYMBOL) == 0 || + strcmp(element_name, TAG_DEF_SID) == 0 || strcmp(element_name, TAG_SUPERNATIONAL) == 0 || strcmp(element_name, TAG_LEAGUES) == 0 || strcmp(element_name, TAG_CUPS) == 0) diff --git a/src/xml_cup.c b/src/xml_cup.c index 597c7055..6842c78d 100644 --- a/src/xml_cup.c +++ b/src/xml_cup.c @@ -31,21 +31,15 @@ #include "option.h" #include "variables.h" #include "xml_cup.h" +#include "xml.h" /** * The tags used in the XML files defining cups. */ #define TAG_CUP "cup" -#define TAG_NAME "name" -#define TAG_SHORT_NAME "short_name" -#define TAG_SYMBOL "symbol" -#define TAG_SID "sid" #define TAG_GROUP "group" -#define TAG_PROPERTY "property" #define TAG_LAST_WEEK "last_week" #define TAG_ADD_WEEK "add_week" -#define TAG_WEEK_GAP "week_gap" -#define TAG_YELLOW_RED "yellow_red" #define TAG_TALENT_DIFF "talent_diff" #define TAG_CUP_ROUNDS "cup_rounds" #define TAG_CUP_ROUND "cup_round" @@ -90,6 +84,7 @@ enum XmlCupStates STATE_LAST_WEEK, STATE_ADD_WEEK, STATE_WEEK_GAP, + STATE_WEEK_BREAK, STATE_YELLOW_RED, STATE_TALENT_DIFF, STATE_CUP_ROUNDS, @@ -131,6 +126,7 @@ gint state; Cup new_cup; CupRound new_round; CupChooseTeam new_choose_team; +WeekBreak new_week_break; /** * The function called by the parser when an opening tag is read. @@ -155,25 +151,33 @@ xml_cup_read_start_element (GMarkupParseContext *context, new_cup = cup_new(FALSE); state = STATE_CUP; } - else if(strcmp(element_name, TAG_NAME) == 0) + else if(strcmp(element_name, TAG_DEF_NAME) == 0) state = STATE_NAME; - else if(strcmp(element_name, TAG_SHORT_NAME) == 0) + else if(strcmp(element_name, TAG_DEF_SHORT_NAME) == 0) state = STATE_SHORT_NAME; - else if(strcmp(element_name, TAG_SYMBOL) == 0) + else if(strcmp(element_name, TAG_DEF_SYMBOL) == 0) state = STATE_SYMBOL; - else if(strcmp(element_name, TAG_SID) == 0) + else if(strcmp(element_name, TAG_DEF_SID) == 0) state = STATE_SID; else if(strcmp(element_name, TAG_GROUP) == 0) state = STATE_GROUP; else if(strcmp(element_name, TAG_LAST_WEEK) == 0) state = STATE_LAST_WEEK; - else if(strcmp(element_name, TAG_PROPERTY) == 0) + else if(strcmp(element_name, TAG_DEF_PROPERTY) == 0) state = STATE_PROPERTY; else if(strcmp(element_name, TAG_ADD_WEEK) == 0) state = STATE_ADD_WEEK; - else if(strcmp(element_name, TAG_WEEK_GAP) == 0) + else if(strcmp(element_name, TAG_DEF_WEEK_GAP) == 0) state = STATE_WEEK_GAP; - else if(strcmp(element_name, TAG_YELLOW_RED) == 0) + else if(strcmp(element_name, TAG_DEF_WEEK_BREAK) == 0) + { + state = STATE_WEEK_BREAK; + if(attribute_names[0] != NULL && strcmp(attribute_names[0], ATT_DEF_NAME_WEEK_BREAK_LENGTH) == 0) + new_week_break.length = (gint)g_ascii_strtod(attribute_values[0], NULL); + else + new_week_break.length = -1; + } + else if(strcmp(element_name, TAG_DEF_YELLOW_RED) == 0) state = STATE_YELLOW_RED; else if(strcmp(element_name, TAG_TALENT_DIFF) == 0) state = STATE_TALENT_DIFF; @@ -257,19 +261,24 @@ xml_cup_read_end_element (GMarkupParseContext *context, printf("xml_cup_read_end_element\n"); #endif - if(strcmp(element_name, TAG_NAME) == 0 || - strcmp(element_name, TAG_SHORT_NAME) == 0 || - strcmp(element_name, TAG_SYMBOL) == 0 || - strcmp(element_name, TAG_SID) == 0 || + if(strcmp(element_name, TAG_DEF_NAME) == 0 || + strcmp(element_name, TAG_DEF_SHORT_NAME) == 0 || + strcmp(element_name, TAG_DEF_SYMBOL) == 0 || + strcmp(element_name, TAG_DEF_SID) == 0 || strcmp(element_name, TAG_GROUP) == 0 || strcmp(element_name, TAG_LAST_WEEK) == 0 || - strcmp(element_name, TAG_PROPERTY) == 0 || + strcmp(element_name, TAG_DEF_PROPERTY) == 0 || strcmp(element_name, TAG_ADD_WEEK) == 0 || - strcmp(element_name, TAG_WEEK_GAP) == 0 || - strcmp(element_name, TAG_YELLOW_RED) == 0 || + strcmp(element_name, TAG_DEF_WEEK_GAP) == 0 || + strcmp(element_name, TAG_DEF_YELLOW_RED) == 0 || strcmp(element_name, TAG_TALENT_DIFF) == 0 || strcmp(element_name, TAG_CUP_ROUNDS) == 0) state = STATE_CUP; + else if(strcmp(element_name, TAG_DEF_WEEK_BREAK) == 0) + { + state = STATE_CUP; + g_array_append_val(new_cup.week_breaks, new_week_break); + } else if(strcmp(element_name, TAG_CUP_ROUND) == 0) { state = STATE_CUP_ROUNDS; @@ -361,6 +370,8 @@ xml_cup_read_text (GMarkupParseContext *context, new_cup.add_week = int_value; else if(state == STATE_WEEK_GAP) new_cup.week_gap = int_value; + else if(state == STATE_WEEK_BREAK) + new_week_break.week_number = int_value; else if(state == STATE_YELLOW_RED) new_cup.yellow_red = int_value; else if(state == STATE_TALENT_DIFF) @@ -472,5 +483,6 @@ xml_cup_read(const gchar *cup_name, GArray *cups) } new_cup.id = cup_id_new; + league_cup_adjust_week_breaks(new_cup.week_breaks, new_cup.week_gap); g_array_append_val(cups, new_cup); } diff --git a/src/xml_league.c b/src/xml_league.c index 350637fe..b0e8e253 100644 --- a/src/xml_league.c +++ b/src/xml_league.c @@ -34,25 +34,19 @@ #include "variables.h" #include "xml_league.h" #include "xml_cup.h" +#include "xml.h" /** * The tags used in the XML files defining leagues. */ #define TAG_LEAGUE "league" -#define TAG_NAME "name" -#define TAG_SHORT_NAME "short_name" -#define TAG_SID "sid" -#define TAG_SYMBOL "symbol" #define TAG_LAYER "layer" #define TAG_FIRST_WEEK "first_week" -#define TAG_WEEK_GAP "week_gap" #define TAG_ROUND_ROBINS "round_robins" -#define TAG_YELLOW_RED "yellow_red" #define TAG_AVERAGE_TALENT "average_talent" #define TAG_NAMES_FILE "names_file" #define TAG_BREAK "break" #define TAG_JOINED_LEAGUE "joined_league" -#define TAG_PROPERTY "property" #define TAG_NEW_TABLE "new_table" #define TAG_PROM_REL "prom_rel" #define TAG_PROM_GAMES "prom_games" @@ -92,6 +86,7 @@ enum XmlLeagueStates STATE_LAYER, STATE_FIRST_WEEK, STATE_WEEK_GAP, + STATE_WEEK_BREAK, STATE_ROUND_ROBINS, STATE_YELLOW_RED, STATE_AVERAGE_TALENT, @@ -155,29 +150,40 @@ xml_league_read_start_element (GMarkupParseContext *context, Team new_team; JoinedLeague new_joined_league; NewTable new_table; + WeekBreak new_week_break; if(strcmp(element_name, TAG_LEAGUE) == 0) { new_league = league_new(TRUE); state = STATE_LEAGUE; } - else if(strcmp(element_name, TAG_NAME) == 0) + else if(strcmp(element_name, TAG_DEF_NAME) == 0) state = STATE_NAME; - else if(strcmp(element_name, TAG_SHORT_NAME) == 0) + else if(strcmp(element_name, TAG_DEF_SHORT_NAME) == 0) state = STATE_SHORT_NAME; - else if(strcmp(element_name, TAG_SID) == 0) + else if(strcmp(element_name, TAG_DEF_SID) == 0) state = STATE_SID; - else if(strcmp(element_name, TAG_SYMBOL) == 0) + else if(strcmp(element_name, TAG_DEF_SYMBOL) == 0) state = STATE_SYMBOL; else if(strcmp(element_name, TAG_FIRST_WEEK) == 0) state = STATE_FIRST_WEEK; else if(strcmp(element_name, TAG_LAYER) == 0) state = STATE_LAYER; - else if(strcmp(element_name, TAG_WEEK_GAP) == 0) + else if(strcmp(element_name, TAG_DEF_WEEK_GAP) == 0) state = STATE_WEEK_GAP; + else if(strcmp(element_name, TAG_DEF_WEEK_BREAK) == 0) + { + state = STATE_WEEK_BREAK; + if(attribute_names[0] != NULL && strcmp(attribute_names[0], ATT_DEF_NAME_WEEK_BREAK_LENGTH) == 0) + new_week_break.length = (gint)g_ascii_strtod(attribute_values[0], NULL); + else + new_week_break.length = -1; + + g_array_append_val(new_league.week_breaks, new_week_break); + } else if(strcmp(element_name, TAG_ROUND_ROBINS) == 0) state = STATE_ROUND_ROBINS; - else if(strcmp(element_name, TAG_YELLOW_RED) == 0) + else if(strcmp(element_name, TAG_DEF_YELLOW_RED) == 0) state = STATE_YELLOW_RED; else if(strcmp(element_name, TAG_AVERAGE_TALENT) == 0) state = STATE_AVERAGE_TALENT; @@ -185,7 +191,7 @@ xml_league_read_start_element (GMarkupParseContext *context, state = STATE_NAMES_FILE; else if(strcmp(element_name, TAG_BREAK) == 0) state = STATE_BREAK; - else if(strcmp(element_name, TAG_PROPERTY) == 0) + else if(strcmp(element_name, TAG_DEF_PROPERTY) == 0) state = STATE_PROPERTY; else if(strcmp(element_name, TAG_JOINED_LEAGUE) == 0) { @@ -286,20 +292,21 @@ xml_league_read_end_element (GMarkupParseContext *context, printf("xml_league_read_end_element\n"); #endif - if(strcmp(element_name, TAG_NAME) == 0 || - strcmp(element_name, TAG_SHORT_NAME) == 0 || - strcmp(element_name, TAG_SID) == 0 || - strcmp(element_name, TAG_SYMBOL) == 0 || + if(strcmp(element_name, TAG_DEF_NAME) == 0 || + strcmp(element_name, TAG_DEF_SHORT_NAME) == 0 || + strcmp(element_name, TAG_DEF_SID) == 0 || + strcmp(element_name, TAG_DEF_SYMBOL) == 0 || strcmp(element_name, TAG_LAYER) == 0 || strcmp(element_name, TAG_FIRST_WEEK) == 0 || - strcmp(element_name, TAG_WEEK_GAP) == 0 || + strcmp(element_name, TAG_DEF_WEEK_GAP) == 0 || + strcmp(element_name, TAG_DEF_WEEK_BREAK) == 0 || strcmp(element_name, TAG_ROUND_ROBINS) == 0 || - strcmp(element_name, TAG_YELLOW_RED) == 0 || + strcmp(element_name, TAG_DEF_YELLOW_RED) == 0 || strcmp(element_name, TAG_AVERAGE_TALENT) == 0 || strcmp(element_name, TAG_NAMES_FILE) == 0 || strcmp(element_name, TAG_BREAK) == 0 || strcmp(element_name, TAG_JOINED_LEAGUE) == 0 || - strcmp(element_name, TAG_PROPERTY) == 0 || + strcmp(element_name, TAG_DEF_PROPERTY) == 0 || strcmp(element_name, TAG_NEW_TABLE) == 0 || strcmp(element_name, TAG_TWO_MATCH_WEEK_START) == 0 || strcmp(element_name, TAG_TWO_MATCH_WEEK_END) == 0 || @@ -374,6 +381,9 @@ xml_league_read_text (GMarkupParseContext *context, new_league.first_week = int_value; else if(state == STATE_WEEK_GAP) new_league.week_gap = int_value; + else if(state == STATE_WEEK_BREAK) + g_array_index(new_league.week_breaks, WeekBreak, + new_league.week_breaks->len - 1).week_number = int_value; else if(state == STATE_ROUND_ROBINS) new_league.round_robins = int_value; else if(state == STATE_YELLOW_RED) @@ -508,6 +518,7 @@ xml_league_read(const gchar *league_name, GArray *leagues) g_free(file_contents); league_cup_adjust_rr_breaks(new_league.rr_breaks, new_league.round_robins, new_league.week_gap); + league_cup_adjust_week_breaks(new_league.week_breaks, new_league.week_gap); g_array_append_val(leagues, new_league); } else diff --git a/src/xml_loadsave_cup.c b/src/xml_loadsave_cup.c index 459e935b..125225b3 100644 --- a/src/xml_loadsave_cup.c +++ b/src/xml_loadsave_cup.c @@ -81,6 +81,7 @@ Cup *new_cup; CupChooseTeam new_choose_team; CupRound new_round; gchar *dirname; +WeekBreak new_week_break; void xml_loadsave_cup_start_element (GMarkupParseContext *context, @@ -141,6 +142,8 @@ xml_loadsave_cup_end_element (GMarkupParseContext *context, tag == TAG_ID || tag == TAG_YELLOW_RED || tag == TAG_WEEK_GAP || + tag == TAG_WEEK_BREAK || + tag == TAG_WEEK_BREAK_LENGTH || tag == TAG_PROPERTY || tag == TAG_CUP_LAST_WEEK || tag == TAG_CUP_ADD_WEEK || @@ -229,6 +232,13 @@ xml_loadsave_cup_text (GMarkupParseContext *context, new_cup->id = int_value; else if(state == TAG_WEEK_GAP) new_cup->week_gap = int_value; + else if(state == TAG_WEEK_BREAK) + new_week_break.week_number = int_value; + else if(state == TAG_WEEK_BREAK_LENGTH) + { + new_week_break.length = int_value; + g_array_append_val(new_cup->week_breaks, new_week_break); + } else if(state == TAG_YELLOW_RED) new_cup->yellow_red = int_value; else if(state == TAG_PROPERTY) @@ -401,6 +411,12 @@ xml_loadsave_cup_write(const gchar *prefix, const Cup *cup) for(i=0;irounds->len;i++) xml_loadsave_cup_write_round(fil, prefix, cup, i); + + for(i = 0; i < cup->week_breaks->len; i++) + { + xml_write_int(fil, g_array_index(cup->week_breaks, WeekBreak, i).week_number, TAG_WEEK_BREAK, I0); + xml_write_int(fil, g_array_index(cup->week_breaks, WeekBreak, i).length, TAG_WEEK_BREAK_LENGTH, I0); + } if(cup->bye != NULL) for(i=0;ibye->len;i++) diff --git a/src/xml_loadsave_league.c b/src/xml_loadsave_league.c index 77091c23..60f1dc01 100644 --- a/src/xml_loadsave_league.c +++ b/src/xml_loadsave_league.c @@ -70,6 +70,7 @@ enum gint promrankidx, state; PromRelElement new_element; PromGames new_prom_games; +WeekBreak new_week_break; League *new_league; gchar *dirname; @@ -161,6 +162,8 @@ xml_loadsave_league_end_element (GMarkupParseContext *context, tag == TAG_SID || tag == TAG_ID || tag == TAG_WEEK_GAP || + tag == TAG_WEEK_BREAK || + tag == TAG_WEEK_BREAK_LENGTH || tag == TAG_YELLOW_RED || tag == TAG_LEAGUE_PROM_REL) state = TAG_LEAGUE; @@ -239,6 +242,13 @@ xml_loadsave_league_text (GMarkupParseContext *context, new_league->round_robins = int_value; else if(state == TAG_WEEK_GAP) new_league->week_gap = int_value; + else if(state == TAG_WEEK_BREAK) + new_week_break.week_number = int_value; + else if(state == TAG_WEEK_BREAK_LENGTH) + { + new_week_break.length = int_value; + g_array_append_val(new_league->week_breaks, new_week_break); + } else if(state == TAG_YELLOW_RED) new_league->yellow_red = int_value; else if(state == TAG_LEAGUE_BREAK) @@ -381,6 +391,12 @@ xml_loadsave_league_write(const gchar *prefix, const League *league) for(i = 0; i < league->rr_breaks->len; i++) xml_write_int(fil, g_array_index(league->rr_breaks, gint, i), TAG_LEAGUE_BREAK, I0); + for(i = 0; i < league->week_breaks->len; i++) + { + xml_write_int(fil, g_array_index(league->week_breaks, WeekBreak, i).week_number, TAG_WEEK_BREAK, I0); + xml_write_int(fil, g_array_index(league->week_breaks, WeekBreak, i).length, TAG_WEEK_BREAK_LENGTH, I0); + } + for(i=0;itables->len;i++) { sprintf(buf, "%s___league_%d_table_%02d.xml", basename, league->id, i); diff --git a/src/xml_loadsave_newspaper.c b/src/xml_loadsave_newspaper.c index 092a2850..a6516f00 100644 --- a/src/xml_loadsave_newspaper.c +++ b/src/xml_loadsave_newspaper.c @@ -45,6 +45,7 @@ enum TAG_NEWS_PAPER_ARTICLE_SUBTITLE, TAG_NEWS_PAPER_ARTICLE_USER_IDX, TAG_NEWS_PAPER_ARTICLE_CLID, + TAG_NEWS_PAPER_ARTICLE_CUP_ROUND, TAG_END }; @@ -107,6 +108,7 @@ xml_loadsave_newspaper_end_element (GMarkupParseContext *context, tag == TAG_NEWS_PAPER_ARTICLE_SUBTITLE || tag == TAG_NEWS_PAPER_ARTICLE_USER_IDX || tag == TAG_NEWS_PAPER_ARTICLE_CLID || + tag == TAG_NEWS_PAPER_ARTICLE_CUP_ROUND || tag == TAG_NEWS_PAPER_ARTICLE_SUBTITLE_ID) { state = TAG_NEWS_PAPER_ARTICLE; @@ -155,6 +157,8 @@ xml_loadsave_newspaper_text (GMarkupParseContext *context, new_article.user_idx = int_value; else if(state == TAG_NEWS_PAPER_ARTICLE_CLID) new_article.clid = int_value; + else if(state == TAG_NEWS_PAPER_ARTICLE_CUP_ROUND) + new_article.cup_round = int_value; } void @@ -240,6 +244,8 @@ xml_loadsave_newspaper_write(const gchar *prefix) TAG_NEWS_PAPER_ARTICLE_USER_IDX, I1); xml_write_int(fil, g_array_index(newspaper.articles, NewsPaperArticle, i).clid, TAG_NEWS_PAPER_ARTICLE_CLID, I1); + xml_write_int(fil, g_array_index(newspaper.articles, NewsPaperArticle, i).cup_round, + TAG_NEWS_PAPER_ARTICLE_CUP_ROUND, I1); fprintf(fil, "%s\n", I0, TAG_NEWS_PAPER_ARTICLE); } diff --git a/support_files/news/news_de.xml b/support_files/news/news_de.xml index 6c858f47..f1c3677f 100644 --- a/support_files/news/news_de.xml +++ b/support_files/news/news_de.xml @@ -3,7 +3,7 @@ match _TLAYERDIFF_ = 0 and _GD_ G 3 _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ nach Verlängerung - _TW_ hat das besser Ende für sich nach Verlängerung + _TW_ hat nach Verlängerung das besser Ende für sich _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ _REW_ nach Elfmeterschießen _TW_ behält die Nerven im Elfmeterschießen gegen _TL_ _TL_ ohne Chance bei _TW_ @@ -37,7 +37,7 @@ match _TLAYERDIFF_ = 0 and _GD_ G 2 _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ nach Verlängerung - _TW_ hat das besser Ende für sich nach Verlängerung + _TW_ hat nach Verlängerung das besser Ende für sich _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ _REW_ nach Elfmeterschießen _TW_ behält die Nerven im Elfmeterschießen gegen _TL_ _TL_ chancenlos gegen _TW_ @@ -74,7 +74,7 @@ _TW_ besiegt _TL_ mit _REW_ _TL_ unterliegt _TW_ _REL_ _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ nach Verlängerung - _TW_ hat das besser Ende für sich nach Verlängerung + _TW_ hat nach Verlängerung das besser Ende für sich _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ _REW_ nach Elfmeterschießen _TW_ behält die Nerven im Elfmeterschießen gegen _TL_ _T0_ gegen _T1_ endet _RE_ @@ -128,9 +128,9 @@ match - _TLAYERDIFF_ = 0 and _GD_ = 0 + _TLAYERDIFF_ = 0 and _GDAGG_ = 0 _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ nach Verlängerung - _TW_ hat das besser Ende für sich nach Verlängerung + _TW_ hat nach Verlängerung das besser Ende für sich _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ _REW_ nach Elfmeterschießen _TW_ behält die Nerven im Elfmeterschießen gegen _TL_ _T1_ holt Unentschieden bei _T0_ @@ -173,7 +173,7 @@ match _TLAYERDIFF_ = 0 and _GD_ = 1 _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ nach Verlängerung - _TW_ hat das besser Ende für sich nach Verlängerung + _TW_ hat nach Verlängerung das besser Ende für sich _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ _REW_ nach Elfmeterschießen _TW_ behält die Nerven im Elfmeterschießen gegen _TL_ Knappes _REW_ für _TW_ @@ -201,7 +201,7 @@ match _TLAYERDIFF_ = 0 and _GD_ != 0 and _TAVSKILLDIFF_ > 7 _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ nach Verlängerung - _TW_ hat das besser Ende für sich nach Verlängerung + _TW_ hat nach Verlängerung das besser Ende für sich _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ _REW_ nach Elfmeterschießen _TW_ behält die Nerven im Elfmeterschießen gegen _TL_ _TW_ [besiegt|gewinnt gegen|bezwingt|schlägt] _TL_ @@ -225,7 +225,7 @@ match _TLAYERDIFF_ > 0 _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ nach Verlängerung - _TW_ hat das besser Ende für sich nach Verlängerung + _TW_ hat nach Verlängerung das besser Ende für sich _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ _REW_ nach Elfmeterschießen _TW_ behält die Nerven im Elfmeterschießen gegen _TL_ _T[_TLAYER0_ L _TLAYER1_]_ schafft überraschendes Unentschieden @@ -253,10 +253,10 @@ match 25 _CUP_ = 1 and _CUPKO_ = 1 and _CUPPROMREL_ = 0 and _CUPAUX_ = 0 and _CUPSTAGE_ = 1 and _GDAGG_ != 0 - _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ nach Verlängerung - _TW_ hat das besser Ende für sich nach Verlängerung - _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ _REW_ nach Elfmeterschießen - _TW_ behält die Nerven im Elfmeterschießen gegen _TL_ + _CUPMATCHWINNER_ [besiegt|schlägt|bezwingt|gewinnt gegen] _CUPMATCHLOSER_ nach Verlängerung + _CUPMATCHWINNER_ hat nach Verlängerung das besser Ende für sich + _CUPMATCHWINNER_ [besiegt|schlägt|bezwingt|gewinnt gegen] _CUPMATCHLOSER_ _REW_ nach Elfmeterschießen + _CUPMATCHWINNER_ behält die Nerven im Elfmeterschießen gegen _CUPMATCHLOSER_ _TW_ [gewinnt|siegt im|siegreich im] Hinspiel im _LEAGUECUPNAME_-Finale _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ im Hinspiel des _LEAGUECUPNAME_-Endspiels _TL_ unterliegt _RE_ im Hinspiel des _LEAGUECUPNAME_-Endspiels @@ -266,24 +266,24 @@ _CUPMATCHWINNER_ gewinnt _LEAGUECUPNAME_-Finale _CUPMATCHWINNER_ besiegt _CUPMATCHLOSER_ in _LEAGUECUPNAME_-Finale Spannendes _LEAGUECUPNAME_-Finale zwischen _T0_ und _T1_ - _CUPMATCHLOSER_ hat das Nachsehen im _LEAGUECUPNAME_-Finale. - _CUPMATCHLOSER_ unterliegt _REL_ im _LEAGUECUPNAME_-Finale. + _CUPMATCHLOSER_ hat das Nachsehen im _LEAGUECUPNAME_-Finale + _CUPMATCHLOSER_ unterliegt _REL_ im _LEAGUECUPNAME_-Finale _CUPMATCHWINNER_ ist nach dem _REW_ im Final-Rückspiel erfolgreich. _TL_ hofft, das _RE_ im Rückspiel wettmachen zu können. _TL_ steckt nach der Heimniederlage tief in der Patsche. _TW_ hat sich eine ausgezeichnete Ausgangsposition für das Rückspiel geschaffen. _TW_ ist der Titel so kaum noch zu nehmen. - _TW_ hat nach dem überzeugenden Vorstellung vor heimischem Publikum nun allerbeste Chancen auf den Titel. + _TW_ hat nach der überzeugenden Vorstellung vor heimischem Publikum nun allerbeste Chancen auf den Titel. _TW_ geht mit einem mageren Tor Vorsprung ins Rückspiel. Nur noch wenige Experten geben _TL_ jetzt noch eine Chance auf den _LEAGUECUPNAME_-Titel. _TL_ hat immer noch alle Chancen, den Pokal zu holen. _TL_ immer noch zuversichtlich, mit einer guten Leistung im Rückspiel das _RE_ wieder wettzumachen. Das _RE_ im Rückspiel reicht _CUPMATCHWINNER_, um den Titel zu holen. - Anhänger von _CUPMATCHLOSER_ ziehen randalierend durch die Innenstadt nach dem enttäuschenden _RE_. + Anhänger von _CUPMATCHLOSER_ ziehen nach dem enttäuschenden _RE_ randalierend durch die Innenstadt. _CUPMATCHWINNER_ endlich am Ziel, nachdem auch _CUPMATCHLOSER_ bezwungen ist. _CUPMATCHWINNER_ ist auch von _CUPMATCHLOSER_ nicht aufzuhalten und gewinnt den Titel mit einem _REW_. - _SCORERS_CUPMATCHWINNERN__ verhelfen vor _AT_ Zusehern in einer Partie voller Spannung zum Titel. - _SCORERS_CUPMATCHWINNERN__ wird zum Matchwinner gegen _CUPMATCHLOSER_ beim _REW_. + _SCORERS_CUPMATCHWINNERN__ verhelfen ihrem Team vor _AT_ Zusehern in einer Partie voller Spannung zum Titel. + _SCORERS_CUPMATCHWINNERN__ wird zum Matchwinner gegen _CUPMATCHLOSER_ beim _REW_. _SCORERS_CUPMATCHWINNERN__ entscheidet mit seinem Treffer die Partie gegen _CUPMATCHLOSER_ und bringt die Fans von _CUPMATCHWINNER_ zum Ausrasten. _CUPMATCHWINNER_ kontrolliert die Finalbegegnung und gewinnt mit _REW_ den Titel. _SCORERS_CUPMATCHWINNERN__ trifft gegen _CUPMATCHLOSER_ und darf den Pokal auf der Ehrenrunde tragen. @@ -293,5 +293,172 @@ _CUPMATCHLOSER_ wird in einem letztlich einseitigen Finale bezwungen und muss bei der Siegerehrung zuschauen. + + match + 25 + _CUP_ = 1 and _CUPKO_ = 1 and _CUPPROMREL_ = 0 and _CUPAUX_ = 0 and _CUPSTAGE_ = 2 and _GDAGG_ != 0 + _CUPMATCHWINNER_ [besiegt|schlägt|bezwingt|gewinnt gegen] _CUPMATCHLOSER_ nach Verlängerung + _CUPMATCHWINNER_ hat nach Verlängerung das besser Ende für sich + _CUPMATCHWINNER_ [besiegt|schlägt|bezwingt|gewinnt gegen] _CUPMATCHLOSER_ _REW_ nach Elfmeterschießen + _CUPMATCHWINNER_ behält die Nerven im Elfmeterschießen gegen _CUPMATCHLOSER_ + _TW_ [gewinnt|siegt im|siegreich im] Hinspiel im _LEAGUECUPNAME_-Halbfinale + _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ im Hinspiel des _LEAGUECUPNAME_-Halbfinals + _TL_ unterliegt _RE_ im Hinspiel des _LEAGUECUPNAME_-Halbfinals + _CUPMATCHLOSER_ scheidet im _LEAGUECUPNAME_-Halbfinale aus + _CUPMATCHWINNER_ kommt weiter in _LEAGUECUPNAME_ + _CUPMATCHWINNER_ ist im _LEAGUECUPNAME_-Finale + _CUPMATCHWINNER_ kommt ins _LEAGUECUPNAME_-Finale + _CUPMATCHWINNER_ besiegt _CUPMATCHLOSER_ im _LEAGUECUPNAME_-Halbfinale + Spannendes _LEAGUECUPNAME_-Halbfinale zwischen _T0_ und _T1_ + _CUPMATCHLOSER_ hat das Nachsehen im _LEAGUECUPNAME_-Halbfinale + _CUPMATCHLOSER_ unterliegt _REL_ im _LEAGUECUPNAME_-Halbfinale + _CUPMATCHWINNER_ ist nach dem _REW_ im Halbfinal-Rückspiel erfolgreich. + _TL_ hofft, das _RE_ im Rückspiel wettmachen zu können. + _TL_ steckt nach der Heimniederlage tief in der Patsche. + _TW_ hat sich eine ausgezeichnete Ausgangsposition für das Rückspiel geschaffen. + _TW_ ist mit einem Bein im Finale. + _TW_ hat nach der überzeugenden Vorstellung vor heimischem Publikum nun allerbeste Chancen aufs Weiterkommen. + _TW_ geht mit einem mageren Tor Vorsprung ins Rückspiel. + Nur noch wenige Experten geben _TL_ jetzt noch eine Chance auf das Finale. + _TL_ hat immer noch alle Chancen, weiterzukommen. + _TL_ immer noch zuversichtlich, mit einer guten Leistung im Rückspiel das _RE_ wieder wettzumachen. + Das _RE_ im Rückspiel reicht _CUPMATCHWINNER_, um weiterzukommen. + Anhänger von _CUPMATCHLOSER_ ziehen nach dem enttäuschenden _RE_ randalierend durch die Innenstadt. + _CUPMATCHWINNER_ erreicht das Endspiel, nachdem _CUPMATCHLOSER_ bezwungen ist. + _CUPMATCHWINNER_ ist auch von _CUPMATCHLOSER_ nicht aufzuhalten und zieht mit _REW_ ins Finale ein. + _SCORERS_CUPMATCHWINNERN__ verhelfen ihrem Team vor _AT_ Zusehern in einer Partie voller Spannung zur Endspielteilnahme. + _SCORERS_CUPMATCHWINNERN__ wird zum Matchwinner gegen _CUPMATCHLOSER_ beim _REW_. + _SCORERS_CUPMATCHWINNERN__ entscheidet mit seinem Treffer die Partie gegen _CUPMATCHLOSER_ und bringt die Fans von _CUPMATCHWINNER_ zum Ausrasten. + _CUPMATCHWINNER_ kontrolliert die Begegnung und zieht ins Finale ein. + _SCORERS_CUPMATCHWINNERN__ trifft gegen _CUPMATCHLOSER_ und zieht mit _CUPMATCHWINNER_ ins Endspiel ein. + _CUPMATCHWINNER_ beherrscht _CUPMATCHLOSER_ in allen Belangen und kommt verdient ins Finale. + _CUPMATCHWINNER_ dominierte in den beiden Halbfinalbegegnungen und zieht verdient ins Endspiel ein. + _CUPMATCHLOSER_ wird in einer einseitigen Begegnung durch Tore von _SCORERS_CUPMATCHWINNERN__ zerlegt und scheidet aus. + _CUPMATCHLOSER_ wird in einer letztlich einseitigen Begegnung bezwungen und scheidet aus. + + + + match + 25 + _CUP_ = 1 and _CUPKO_ = 1 and _CUPPROMREL_ = 0 and _CUPAUX_ = 0 and _CUPSTAGE_ = 3 and _GDAGG_ != 0 + _CUPMATCHWINNER_ [besiegt|schlägt|bezwingt|gewinnt gegen] _CUPMATCHLOSER_ nach Verlängerung + _CUPMATCHWINNER_ hat nach Verlängerung das besser Ende für sich + _CUPMATCHWINNER_ [besiegt|schlägt|bezwingt|gewinnt gegen] _CUPMATCHLOSER_ _REW_ nach Elfmeterschießen + _CUPMATCHWINNER_ behält die Nerven im Elfmeterschießen gegen _CUPMATCHLOSER_ + _TW_ [gewinnt|siegt im|siegreich im] Hinspiel im _LEAGUECUPNAME_-Viertelfinale + _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ im Hinspiel des _LEAGUECUPNAME_-Viertelfinals + _TL_ unterliegt _RE_ im Hinspiel des _LEAGUECUPNAME_-Viertelfinals + _CUPMATCHLOSER_ scheidet im _LEAGUECUPNAME_-Viertelfinale aus + _CUPMATCHWINNER_ kommt weiter in _LEAGUECUPNAME_ + _CUPMATCHWINNER_ erreicht _LEAGUECUPNAME_-Vorschlussrunde + _CUPMATCHWINNER_ kommt ins _LEAGUECUPNAME_-Halbfinale + _CUPMATCHWINNER_ besiegt _CUPMATCHLOSER_ im _LEAGUECUPNAME_-Viertelfinale + Spannendes _LEAGUECUPNAME_-Viertelfinale zwischen _T0_ und _T1_ + _CUPMATCHLOSER_ hat das Nachsehen im _LEAGUECUPNAME_-Viertelfinale + _CUPMATCHLOSER_ unterliegt _REL_ im _LEAGUECUPNAME_-Viertelfinale + _CUPMATCHWINNER_ ist nach dem _REW_ im Rückspiel des _LEAGUECUPNAME_-Viertelfinals erfolgreich. + _TL_ hofft, das _RE_ im Rückspiel wettmachen zu können. + _TL_ steckt nach der Heimniederlage tief in der Patsche. + _TW_ hat sich eine ausgezeichnete Ausgangsposition für das Rückspiel geschaffen. + _TW_ ist jetzt mit einem Bein im Halbfinale. + _TW_ hat nach der überzeugenden Vorstellung vor heimischem Publikum nun allerbeste Chancen aufs Weiterkommen. + _TW_ geht mit einem mageren Tor Vorsprung ins Rückspiel. + Nur noch wenige Experten geben _TL_ jetzt noch eine Chance auf das Finale. + _TL_ hat immer noch alle Chancen, weiterzukommen. + _TL_ immer noch zuversichtlich, mit einer guten Leistung im Rückspiel das _RE_ wieder wettzumachen. + Das _RE_ im Rückspiel reicht _CUPMATCHWINNER_, um weiterzukommen. + Anhänger von _CUPMATCHLOSER_ ziehen nach dem enttäuschenden _RE_ randalierend durch die Innenstadt. + _CUPMATCHWINNER_ erreicht das Halbfinale, nachdem _CUPMATCHLOSER_ bezwungen ist. + _CUPMATCHWINNER_ ist auch von _CUPMATCHLOSER_ nicht aufzuhalten und zieht mit _REW_ ins Halbfinale ein. + _SCORERS_CUPMATCHWINNERN__ verhelfen ihrem Team vor _AT_ Zusehern in einer Partie voller Spannung zur Halbfinalteilnahme. + _SCORERS_CUPMATCHWINNERN__ wird zum Matchwinner gegen _CUPMATCHLOSER_ beim _REW_. + _SCORERS_CUPMATCHWINNERN__ entscheidet mit seinem Treffer die Partie gegen _CUPMATCHLOSER_ und bringt die Fans von _CUPMATCHWINNER_ zum Ausrasten. + _CUPMATCHWINNER_ kontrolliert die Begegnung und zieht in die Vorschlussrunde ein. + _SCORERS_CUPMATCHWINNERN__ trifft gegen _CUPMATCHLOSER_ und zieht mit _CUPMATCHWINNER_ ins Halbfinale ein. + _CUPMATCHWINNER_ beherrscht _CUPMATCHLOSER_ in allen Belangen und kommt verdient eine Runde weiter. + _CUPMATCHWINNER_ dominierte in den beiden Viertelfinalbegegnungen und zieht verdient in die Vorschlussrunde ein. + _CUPMATCHLOSER_ wird in einer einseitigen Begegnung durch Tore von _SCORERS_CUPMATCHWINNERN__ zerlegt und scheidet aus. + _CUPMATCHLOSER_ wird in einer letztlich einseitigen Begegnung bezwungen und scheidet aus. + + + + match + 25 + _CUP_ = 1 and _CUPKO_ = 1 and _CUPPROMREL_ = 0 and _CUPAUX_ = 0 and _CUPSTAGE_ > 3 and _CUPFIRSTLEG_ = 1 + _T1_ schafft Unentschieden bei _T0_ + Hinspiel zwischen _T0_ und _T1_ endet unentschieden + _T1_ zufrieden nach Unentschieden + _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_ im Hinspiel + _TL_ hat das Nachsehen im Hinspiel gegen _TW_ + Überzeugender Sieg für _TW_ im Hinspiel + _TL_ unterliegt [klar|deutlich] in Hinspiel + Knapper Sieg für _TW_ im Hinspiel + _TL_ unterliegt nur knapp in Hinspiel + _TW_ ist kaum mehr aufzuhalten nach dem klaren _REW_-Sieg. + _TL_ steckt jetzt tief in der Krise und kann das Weiterkommen wohl schon abschreiben. + _TW_ darf nach dem _REW_ vor _AT_ Zuschauern fast schon aufs Weiterkommen anstoßen. + _TW_ ist nach dem Auswärtserfolg mit einem Bein in der nächsten Runde. + _TL_ kann seine Hoffnungen auf die nächste Runde nach der Heimpleite fast schon begraben. + Hervorragende Voraussetzungen für _TW_ nach dem überzeugenden Auswärtssieg. + _TW_ schafft mit dem _REW_-Auswärtssieg ein bequemes Polster fürs Rückspiel. + _TW_ hat jetzt die besseren Karten und kann schon mit einem Unentschieden zuhause weiterkommen. + _TW_ ist nach dem klaren Heimsieg mit einem Bein in der nächsten Runde. + _TL_ muss nun versuchen, das _REL_ vor heimischem Publikum wettzumachen. + Hervorragende Voraussetzungen für _TW_ nach dem überzeugenden Heimsieg. + Nach dem mageren _REW_-Heimsieg für _TW_ ist noch alles offen in dieser Paarung. + _TL_ muss mit zwei Toren Vorsprung zuhause gewinnen, um weiterzukommen. + _TL_ erzielt wichtige Auswärtstore und hat nun gute Karten für das Rückspiel. + _TW_ gewinnt, ärgert sich aber, hier _GOALS1_ Gegentore zugelassen zu haben. + _T1_ ist mit einem Heimerfolg im Rückspiel weiter. + _AT_ Zuschauer sehen ein mageres Unentschieden ihrer Mannschaft. + _T0_ muss sich im Rückspiel steigern, sonst droht das Ausscheiden. + _T1_ reicht jetzt ein 0 : 0 im Rückspiel, um eine Runde weiterzukommen. + + + + match + 25 + _CUP_ = 1 and _CUPKO_ = 1 and _CUPPROMREL_ = 0 and _CUPAUX_ = 0 and _CUPSTAGE_ > 3 and _CUPSECONDLEG_ = 1 + _CUPMATCHWINNER_ ist in der nächsten Runde + _CUPMATCHWINNER_ [ist|kommt] weiter + _CUPMATCHLOSER_ scheidet aus + _CUPMATCHLOSER_ draussen + _CUPMATCHWINNER_ [besiegt|schlägt|bezwingt|gewinnt gegen] _CUPMATCHLOSER_ nach Verlängerung + _CUPMATCHWINNER_ hat nach Verlängerung das besser Ende für sich + _CUPMATCHWINNER_ [besiegt|schlägt|bezwingt|gewinnt gegen] _CUPMATCHLOSER_ _REW_ nach Elfmeterschießen + _CUPMATCHWINNER_ behält die Nerven im Elfmeterschießen gegen _CUPMATCHLOSER_ + Unentschieden reicht _CUPMATCHWINNER_ + _CUPMATCHWINNER_ kommt mit Unentschieden weiter + _CUPMATCHLOSER_ scheidet nach _RE_ im Rückspiel aus + _TW_ [besiegt|schlägt|bezwingt|gewinnt gegen] _TL_, scheidet aus + _REW_ reicht nicht für _TW_ im Rückspiel + _TW_ draussen trotz _REW_ + _CUPMATCHWINNER_ kommt trotz Niederlage weiter + _CUPMATCHWINNER_ kommt dank Auswärtstorregelung weiter + _CUPMATCHWINNER_ weiter nach _RE_ + Knappes Gesamtergebnis zwischen _T0_ und _T1_ + _CUPMATCHWINNER_ mit einem Tor Vorsprung weiter + _CUPMATCHLOSER_ scheidet knapp aus + _CUPMATCHLOSER_ nach knappem Gesamtergebnis draussen + _CUPMATCHWINNER_ locker weiter + _CUPMATCHWINNER_ ohne Probleme weiter + _CUPMATCHWINNER_ kommt locker in die nächste Runde + _SCORERS_CUPMATCHWINNERN__ machen die Sache klar für _CUPMATCHWINNER_. + _CUPMATCHWINNER_ kommt dank der Tore von _SCORERS_CUPMATCHWINNERN__ weiter. + _SCORERS_CUPMATCHWINNERN__ schießt _CUPMATCHWINNER_ eine Runde weiter. + _CUPMATCHWINNER_ kommt dank _SCORERS_CUPMATCHWINNERN__ weiter. + _AT_ Zuschauer halten den Atem an beim spannenden _RE_ im Rückspiel. + Die beiden Teams schenkten sich nichts in diesen Begegnungen, doch _CUPMATCHWINNER_ hat das bessere Ende für sich. + _CUPMATCHLOSER_ fehlt ein einziges Tor, um weiterzukommen. + Diese Paarung hatte es in sich, doch nach dem _RE_ muss sich _CUPMATCHLOSER_ mit dem Ausscheiden abfinden. + _CUPMATCHWINNER_ hält durch gegen _CUPMATCHLOSER_ und kommt denkbar knapp in dei nächste Runde. + _CUPMATCHWINNER_ kann sich bei _SCORERS_CUPMATCHWINNERN__ fürs Weiterkommen bedanken. + _SCORERS_CUPMATCHWINNERN__ treffen beim knappen Sieg für _CUPMATCHWINNER_. + _CUPMATCHWINNER_ war letztlich ungefährdet in diesen Begegnungen und kommt verdient eine Runde weiter. + _CUPMATCHLOSER_ ist im Gesamtergebnis chancenlos und fliegt raus. + _CUPMATCHLOSER_ hätte das Weiterkommen nicht verdient nach dem _RE_. + _CUPMATCHWINNER_ dominierte die beiden Begegnungen und kann weiter auf den Titel hoffen. + +