Def improvements, Italian definition corrected.

This commit is contained in:
gyboth 2008-12-23 10:33:55 +00:00
parent 2862dc2263
commit 23fb53c5b8
25 changed files with 258 additions and 140 deletions

View File

@ -54,14 +54,14 @@ INCLUDES = -I.. -I$(top_srcdir)/intl
COMPILE = $(CC) -c $(DEFS) $(INCLUDES) $(CPPFLAGS) $(CFLAGS) $(XCFLAGS)
SOURCES =
POFILES = de.po nl.po fr.po pl.po ro.po bg.po zh.po es.po da.po sv.po it.po
GMOFILES = de.gmo nl.gmo fr.gmo pl.gmo ro.gmo bg.gmo zh.gmo es.gmo da.gmo sv.gmo it.gmo
POFILES = de.po nl.po fr.po pl.po pt.po ro.po bg.po zh.po es.po da.po sv.po it.po
GMOFILES = de.gmo nl.gmo fr.gmo pl.gmo pt.gmo ro.gmo bg.gmo zh.gmo es.gmo da.gmo sv.gmo it.gmo
DISTFILES = ChangeLog Makefile.in.in POTFILES.in $(GETTEXT_PACKAGE).pot \
$(POFILES) $(GMOFILES) $(SOURCES)
POTFILES = \
CATALOGS = de.gmo nl.gmo fr.gmo pl.gmo ro.gmo bg.gmo zh.gmo es.gmo da.gmo sv.gmo it.gmo
CATALOGS = de.gmo nl.gmo fr.gmo pl.gmo pt.gmo ro.gmo bg.gmo zh.gmo es.gmo da.gmo sv.gmo it.gmo
CATOBJEXT = .gmo
INSTOBJEXT = .mo

View File

@ -381,16 +381,14 @@ free_league(League *league)
free_gchar_ptr(league->short_name);
free_gchar_ptr(league->symbol);
free_gchar_ptr(league->sid);
free_gchar_ptr(league->prom_rel.prom_games_dest_sid);
free_gchar_ptr(league->prom_rel.prom_games_cup_sid);
if(league->teams != NULL)
free_teams_array(&league->teams, FALSE);
free_joined_leagues(&league->joined_leagues);
free_prom_rel(&league->prom_rel);
free_g_array(&league->teams);
free_g_array(&league->prom_rel.elements);;
free_tables(&league->tables);
free_new_tables(&league->new_tables);
@ -404,6 +402,27 @@ free_league(League *league)
free_league_stats(&league->stats);
}
/** Free the promotion/relegation struct of a league. */
void
free_prom_rel(PromRel *prom_rel)
{
gint i;
for(i = 0; i < prom_rel->elements->len; i++)
g_free(g_array_index(prom_rel->elements, PromRelElement, i).dest_sid);
free_g_array(&prom_rel->elements);
for(i = 0; i < prom_rel->prom_games->len; i++)
{
g_free(g_array_index(prom_rel->prom_games, PromGames, i).dest_sid);
g_free(g_array_index(prom_rel->prom_games, PromGames, i).loser_sid);
g_free(g_array_index(prom_rel->prom_games, PromGames, i).cup_sid);
}
free_g_array(&prom_rel->prom_games);
}
/** Free the data in the joined leagues array. */
void
free_joined_leagues(GArray **joined_leagues)

View File

@ -159,4 +159,7 @@ free_newspaper_article(NewsPaperArticle *article);
void
free_cup_round(CupRound *cup_round);
void
free_prom_rel(PromRel *prom_rel);
#endif

View File

@ -62,12 +62,8 @@ league_new(gboolean new_id)
new.average_talent = 0;
new.prom_rel.prom_games_dest_sid = NULL;
new.prom_rel.prom_games_loser_sid = NULL;
new.prom_rel.prom_games_cup_sid = NULL;
new.prom_rel.prom_games_number_of_advance = 1;
new.prom_rel.elements = g_array_new(FALSE, FALSE, sizeof(PromRelElement));
new.prom_rel.prom_games = g_array_new(FALSE, FALSE, sizeof(PromGames));
new.teams = g_array_new(FALSE, FALSE, sizeof(Team));
new.fixtures = g_array_new(FALSE, FALSE, sizeof(Fixture));
@ -110,6 +106,27 @@ prom_rel_element_new(void)
return new;
}
/**
Create a new PromGames with default values.
@see PromGames
*/
PromGames
prom_games_new(void)
{
#ifdef DEBUG
printf("prom_games_new\n");
#endif
PromGames new;
new.dest_sid = NULL;
new.loser_sid = NULL;
new.cup_sid = NULL;
new.number_of_advance = 1;
return new;
}
/** Get the array index of the given league or cup id.
@param clid The id of the league or cup.
@return The index in the leagues or cups array. */
@ -511,38 +528,41 @@ query_league_rank_in_prom_games(const League *league, gint rank)
printf("query_league_rank_in_prom_games\n");
#endif
gint i, j, k;
gint i, j, k, l;
const Cup *cup = NULL;
const CupRound *cup_round = NULL;
for(i=0;i<ligs->len;i++)
if(query_league_has_prom_games((&lig(i))))
{
cup = cup_from_sid(lig(i).prom_rel.prom_games_cup_sid);
for(k=0;k<cup->rounds->len;k++)
{
cup_round = &g_array_index(cup->rounds, CupRound, k);
for(j=0;j<cup_round->choose_teams->len;j++)
{
if(strcmp(g_array_index(cup_round->choose_teams, CupChooseTeam, j).sid,
league->sid) == 0 &&
((rank >= g_array_index(cup_round->choose_teams,
CupChooseTeam, j).start_idx &&
rank <= g_array_index(cup_round->choose_teams,
CupChooseTeam, j).end_idx &&
g_array_index(cup_round->choose_teams,
CupChooseTeam, j).randomly) ||
(rank >= g_array_index(cup_round->choose_teams,
CupChooseTeam, j).start_idx &&
rank < g_array_index(cup_round->choose_teams,
CupChooseTeam, j).start_idx +
g_array_index(cup_round->choose_teams,
CupChooseTeam, j).number_of_teams &&
!g_array_index(cup_round->choose_teams,
CupChooseTeam, j).randomly)))
return TRUE;
}
}
for(l = 0; l < lig(i).prom_rel.prom_games->len; l++)
{
cup = cup_from_sid(g_array_index(lig(i).prom_rel.prom_games, PromGames, l).cup_sid);
for(k=0;k<cup->rounds->len;k++)
{
cup_round = &g_array_index(cup->rounds, CupRound, k);
for(j=0;j<cup_round->choose_teams->len;j++)
{
if(strcmp(g_array_index(cup_round->choose_teams, CupChooseTeam, j).sid,
league->sid) == 0 &&
((rank >= g_array_index(cup_round->choose_teams,
CupChooseTeam, j).start_idx &&
rank <= g_array_index(cup_round->choose_teams,
CupChooseTeam, j).end_idx &&
g_array_index(cup_round->choose_teams,
CupChooseTeam, j).randomly) ||
(rank >= g_array_index(cup_round->choose_teams,
CupChooseTeam, j).start_idx &&
rank < g_array_index(cup_round->choose_teams,
CupChooseTeam, j).start_idx +
g_array_index(cup_round->choose_teams,
CupChooseTeam, j).number_of_teams &&
!g_array_index(cup_round->choose_teams,
CupChooseTeam, j).randomly)))
return TRUE;
}
}
}
}
return FALSE;
@ -617,8 +637,9 @@ league_get_team_movements_prom_rel(const League *league, GArray *team_movements)
/** Add the team movements from the promotion games
to the array. */
void
league_get_team_movements_prom_games(const League *league, GArray *team_movements,
const GPtrArray *prom_games_teams, gboolean up)
league_get_team_movements_prom_games(const League *league, const PromGames *prom_games,
GArray *team_movements, const GPtrArray *prom_games_teams,
gboolean up)
{
#ifdef DEBUG
printf("league_get_team_movements_prom_games\n");
@ -627,18 +648,18 @@ league_get_team_movements_prom_games(const League *league, GArray *team_movement
gint i, j;
TeamMove new_move;
GPtrArray *dest_sids = (up) ?
misc_separate_strings(league->prom_rel.prom_games_dest_sid) :
misc_separate_strings(league->prom_rel.prom_games_loser_sid);
misc_separate_strings(prom_games->dest_sid) :
misc_separate_strings(prom_games->loser_sid);
GArray *dest_idcs = NULL;
gint dest_idcs_int[dest_sids->len];
gint dest_idcs_order[dest_sids->len];
gint start_idx = 0,
end_idx = league->prom_rel.prom_games_number_of_advance;
end_idx = prom_games->number_of_advance;
gint prom_type = PROM_REL_PROMOTION;
if(!up)
{
start_idx = league->prom_rel.prom_games_number_of_advance;
start_idx = prom_games->number_of_advance;
end_idx = prom_games_teams->len;
prom_type = PROM_REL_RELEGATION;
}
@ -674,6 +695,7 @@ league_get_team_movements(League *league, GArray *team_movements)
printf("league_get_team_movements\n");
#endif
gint i;
GPtrArray *prom_games_teams = NULL;
const Cup *prom_cup = NULL;
@ -681,24 +703,21 @@ league_get_team_movements(League *league, GArray *team_movements)
if(query_league_has_prom_games(league))
{
prom_cup = cup_from_sid(league->prom_rel.prom_games_cup_sid);
for(i = 0; i < league->prom_rel.prom_games->len; i++)
{
prom_cup = cup_from_sid(g_array_index(league->prom_rel.prom_games, PromGames, i).cup_sid);
if(prom_cup == NULL)
{
g_warning("league_get_team_movements: promotion games cup not found for league %s (cup sid %s).\n",
league->name, league->prom_rel.prom_games_cup_sid);
return;
}
prom_games_teams = cup_get_teams_sorted(prom_cup);
prom_games_teams = cup_get_teams_sorted(prom_cup);
league_get_team_movements_prom_games(league, &g_array_index(league->prom_rel.prom_games, PromGames, i),
team_movements, prom_games_teams, TRUE);
league_get_team_movements_prom_games(league, team_movements, prom_games_teams, TRUE);
if(g_array_index(league->prom_rel.prom_games, PromGames, i).loser_sid != NULL)
league_get_team_movements_prom_games(league, &g_array_index(league->prom_rel.prom_games, PromGames, i),
team_movements, prom_games_teams, FALSE);
if(league->prom_rel.prom_games_loser_sid != NULL)
league_get_team_movements_prom_games(league, team_movements,
prom_games_teams, FALSE);
g_ptr_array_free(prom_games_teams, TRUE);
g_ptr_array_free(prom_games_teams, TRUE);
}
}
g_array_sort_with_data(league->teams, team_compare_func,

View File

@ -38,7 +38,7 @@
#define league_table_cumul(league) (&g_array_index((league)->tables, Table, 0))
#define league_table(league) (&g_array_index((league)->tables, Table, league->tables->len - 1))
#define query_league_has_prom_games(league) (league->prom_rel.prom_games_dest_sid != NULL)
#define query_league_has_prom_games(league) (league->prom_rel.prom_games->len > 0)
#define query_league_active(league) (!query_league_cup_has_property((league)->id, "inactive"))
/** A struct needed when managing promotions
@ -59,6 +59,9 @@ league_new(gboolean new_id);
PromRelElement
prom_rel_element_new(void);
PromGames
prom_games_new(void);
gint
league_cup_get_index_from_clid(gint clid);
@ -105,7 +108,8 @@ void
league_get_team_movements_prom_rel(const League *league, GArray *team_movements);
void
league_get_team_movements_prom_games(const League *league, GArray *team_movements,
league_get_team_movements_prom_games(const League *league, const PromGames *prom_games,
GArray *team_movements,
const GPtrArray *prom_games_teams, gboolean up);
void

View File

@ -52,6 +52,22 @@ typedef struct
gint type; /**< Type. Promotion or relegation or none. */
} PromRelElement;
/**
An element representing promotion/relegation games.
*/
typedef struct
{
/** The id of the league the promotion games winner gets promoted to. Default "" */
gchar *dest_sid;
/** The id of the league the promotion games losers get moved to. Default "" */
gchar *loser_sid;
/** Number of teams that advance from the promotion games. Default: 1. */
gint number_of_advance;
/** The cup determining how the promotion games are handled. */
gchar *cup_sid;
} PromGames;
/**
This structure specifies how promotion and relegation is handled in a league.
It contains promotion and relegation rules in an array and possibly also
@ -60,22 +76,16 @@ typedef struct
*/
typedef struct
{
/** The id of the league the promotion games winner gets promoted to. Default "" */
gchar *prom_games_dest_sid;
/** The id of the league the promotion games losers get moved to. Default "" */
gchar *prom_games_loser_sid;
/** Number of teams that advance from the promotion games. Default: 1. */
gint prom_games_number_of_advance;
/** Array with promotion/relegation rules.
@see PromRelElement
*/
GArray *elements;
/** The cup determining how the promotion games are handled. */
gchar *prom_games_cup_sid;
/** Array with promotion/relegation games.
@see PromGames
*/
GArray *prom_games;
} PromRel;
/**

View File

@ -151,6 +151,7 @@ xml_league_read_start_element (GMarkupParseContext *context,
#endif
PromRelElement new_element;
PromGames new_prom_games;
Team new_team;
JoinedLeague new_joined_league;
NewTable new_table;
@ -214,7 +215,11 @@ xml_league_read_start_element (GMarkupParseContext *context,
else if(strcmp(element_name, TAG_PROM_REL) == 0)
state = STATE_PROM_REL;
else if(strcmp(element_name, TAG_PROM_GAMES) == 0)
state = STATE_PROM_GAMES;
{
state = STATE_PROM_GAMES;
new_prom_games = prom_games_new();
g_array_append_val(new_league.prom_rel.prom_games, new_prom_games);
}
else if(strcmp(element_name, TAG_PROM_GAMES_DEST_SID) == 0)
state = STATE_PROM_GAMES_DEST_SID;
else if(strcmp(element_name, TAG_PROM_GAMES_LOSER_SID) == 0)
@ -394,13 +399,17 @@ xml_league_read_text (GMarkupParseContext *context,
else if(state == STATE_TWO_MATCH_WEEK_END)
g_array_append_val(new_league.two_match_weeks[1], int_value);
else if(state == STATE_PROM_GAMES_DEST_SID)
misc_string_assign(&new_league.prom_rel.prom_games_dest_sid, buf);
g_array_index(new_league.prom_rel.prom_games, PromGames,
new_league.prom_rel.prom_games->len - 1).dest_sid = g_strdup(buf);
else if(state == STATE_PROM_GAMES_LOSER_SID)
misc_string_assign(&new_league.prom_rel.prom_games_loser_sid, buf);
g_array_index(new_league.prom_rel.prom_games, PromGames,
new_league.prom_rel.prom_games->len - 1).loser_sid = g_strdup(buf);
else if(state == STATE_PROM_GAMES_NUMBER_OF_ADVANCE)
new_league.prom_rel.prom_games_number_of_advance = int_value;
g_array_index(new_league.prom_rel.prom_games, PromGames,
new_league.prom_rel.prom_games->len - 1).number_of_advance = int_value;
else if(state == STATE_PROM_GAMES_CUP_SID)
misc_string_assign(&new_league.prom_rel.prom_games_cup_sid, buf);
g_array_index(new_league.prom_rel.prom_games, PromGames,
new_league.prom_rel.prom_games->len - 1).cup_sid = g_strdup(buf);
else if(state == STATE_PROM_REL_ELEMENT_RANK_START)
g_array_index(new_league.prom_rel.elements,
PromRelElement,

View File

@ -45,11 +45,11 @@ enum
TAG_LEAGUE_ROUND_ROBINS,
TAG_LEAGUE_AVERAGE_TALENT,
TAG_LEAGUE_PROM_REL,
TAG_LEAGUE_PROM_GAMES,
TAG_LEAGUE_PROM_REL_PROM_GAMES_DEST_SID,
TAG_LEAGUE_PROM_REL_PROM_GAMES_CUP_SID,
TAG_LEAGUE_PROM_REL_PROM_GAMES_LOSER_SID,
TAG_LEAGUE_PROM_REL_PROM_GAMES_NUMBER_OF_ADVANCE,
TAG_LEAGUE_PROM_REL_CUP,
TAG_LEAGUE_PROM_REL_ELEMENTS,
TAG_LEAGUE_PROM_REL_ELEMENT,
TAG_LEAGUE_PROM_REL_ELEMENT_RANK,
@ -69,6 +69,7 @@ enum
gint promrankidx, state;
PromRelElement new_element;
PromGames new_prom_games;
League *new_league;
gchar *dirname;
@ -110,6 +111,9 @@ xml_loadsave_league_start_element (GMarkupParseContext *context,
promrankidx = 0;
}
if(tag == TAG_LEAGUE_PROM_GAMES)
new_prom_games = prom_games_new();
if(tag == TAG_LEAGUE_JOINED_LEAGUE_SID)
g_array_append_val(new_league->joined_leagues, new_joined_league);
@ -160,13 +164,18 @@ xml_loadsave_league_end_element (GMarkupParseContext *context,
tag == TAG_YELLOW_RED ||
tag == TAG_LEAGUE_PROM_REL)
state = TAG_LEAGUE;
else if(tag == TAG_LEAGUE_PROM_GAMES ||
tag == TAG_LEAGUE_PROM_REL_ELEMENTS)
{
state = TAG_LEAGUE_PROM_REL;
if(tag == TAG_LEAGUE_PROM_GAMES)
g_array_append_val(new_league->prom_rel.prom_games, new_prom_games);
}
else if(tag == TAG_LEAGUE_PROM_REL_PROM_GAMES_DEST_SID ||
tag == TAG_LEAGUE_PROM_REL_PROM_GAMES_CUP_SID ||
tag == TAG_LEAGUE_PROM_REL_PROM_GAMES_LOSER_SID ||
tag == TAG_LEAGUE_PROM_REL_PROM_GAMES_NUMBER_OF_ADVANCE ||
tag == TAG_LEAGUE_PROM_REL_CUP ||
tag == TAG_LEAGUE_PROM_REL_ELEMENTS)
state = TAG_LEAGUE_PROM_REL;
tag == TAG_LEAGUE_PROM_REL_PROM_GAMES_NUMBER_OF_ADVANCE)
state = TAG_LEAGUE_PROM_GAMES;
else if(tag == TAG_LEAGUE_PROM_REL_ELEMENT)
{
state = TAG_LEAGUE_PROM_REL_ELEMENTS;
@ -265,13 +274,13 @@ xml_loadsave_league_text (GMarkupParseContext *context,
else if(state == TAG_LEAGUE_AVERAGE_TALENT)
new_league->average_talent = float_value;
else if(state == TAG_LEAGUE_PROM_REL_PROM_GAMES_DEST_SID)
misc_string_assign(&new_league->prom_rel.prom_games_dest_sid, buf);
new_prom_games.dest_sid = g_strdup(buf);
else if(state == TAG_LEAGUE_PROM_REL_PROM_GAMES_CUP_SID)
misc_string_assign(&new_league->prom_rel.prom_games_cup_sid, buf);
new_prom_games.cup_sid = g_strdup(buf);
else if(state == TAG_LEAGUE_PROM_REL_PROM_GAMES_NUMBER_OF_ADVANCE)
new_league->prom_rel.prom_games_number_of_advance = int_value;
new_prom_games.number_of_advance = int_value;
else if(state == TAG_LEAGUE_PROM_REL_PROM_GAMES_LOSER_SID)
misc_string_assign(&new_league->prom_rel.prom_games_loser_sid, buf);
new_prom_games.loser_sid = g_strdup(buf);
else if(state == TAG_LEAGUE_PROM_REL_ELEMENT_RANK)
new_element.ranks[promrankidx] = int_value;
else if(state == TAG_LEAGUE_PROM_REL_ELEMENT_TYPE)
@ -403,16 +412,36 @@ xml_loadsave_league_write(const gchar *prefix, const League *league)
TAG_LEAGUE_TWO_MATCH_WEEK_END, I0);
}
xml_loadsave_league_prom_rel_write(fil, league);
fprintf(fil, "%s</_%d>\n", I0, TAG_LEAGUE);
fclose(fil);
}
/** Write the prom_rel data into the file. */
void
xml_loadsave_league_prom_rel_write(FILE *fil, const League *league)
{
gint i;
fprintf(fil, "%s<_%d>\n", I0, TAG_LEAGUE_PROM_REL);
xml_write_string(fil, league->prom_rel.prom_games_dest_sid,
TAG_LEAGUE_PROM_REL_PROM_GAMES_DEST_SID, I1);
xml_write_string(fil, league->prom_rel.prom_games_cup_sid,
TAG_LEAGUE_PROM_REL_PROM_GAMES_CUP_SID, I1);
xml_write_int(fil, league->prom_rel.prom_games_number_of_advance,
TAG_LEAGUE_PROM_REL_PROM_GAMES_NUMBER_OF_ADVANCE, I1);
xml_write_string(fil, league->prom_rel.prom_games_loser_sid,
TAG_LEAGUE_PROM_REL_PROM_GAMES_LOSER_SID, I1);
for(i = 0; i < league->prom_rel.prom_games->len; i++)
{
fprintf(fil, "%s<_%d>\n", I1, TAG_LEAGUE_PROM_GAMES);
xml_write_string(fil, g_array_index(league->prom_rel.prom_games, PromGames, i).dest_sid,
TAG_LEAGUE_PROM_REL_PROM_GAMES_DEST_SID, I2);
xml_write_string(fil, g_array_index(league->prom_rel.prom_games, PromGames, i).cup_sid,
TAG_LEAGUE_PROM_REL_PROM_GAMES_CUP_SID, I2);
xml_write_int(fil, g_array_index(league->prom_rel.prom_games, PromGames, i).number_of_advance,
TAG_LEAGUE_PROM_REL_PROM_GAMES_NUMBER_OF_ADVANCE, I2);
xml_write_string(fil, g_array_index(league->prom_rel.prom_games, PromGames, i).loser_sid,
TAG_LEAGUE_PROM_REL_PROM_GAMES_LOSER_SID, I2);
fprintf(fil, "%s</_%d>\n", I1, TAG_LEAGUE_PROM_GAMES);
}
fprintf(fil, "%s<_%d>\n", I1, TAG_LEAGUE_PROM_REL_ELEMENTS);
for(i=0;i<league->prom_rel.elements->len;i++)
@ -434,9 +463,4 @@ xml_loadsave_league_write(const gchar *prefix, const League *league)
fprintf(fil, "%s</_%d>\n", I0, TAG_LEAGUE_PROM_REL);
fprintf(fil, "%s</_%d>\n", I0, TAG_LEAGUE);
fclose(fil);
}

View File

@ -56,4 +56,7 @@ xml_loadsave_league_write(const gchar *prefix, const League *league);
void
xml_loadsave_league_read(const gchar *filename, const gchar *team_file, League *league);
void
xml_loadsave_league_prom_rel_write(FILE *fil, const League *league);
#endif

View File

@ -22,15 +22,15 @@
<cup>supercup_league_vs_cup</cup>
<cup>supercup_europe_uefa</cup>
<cup>supercup_europe_intercontinental</cup>
<cup>italy_prom_games1</cup>
<cup>italy_prom_games2</cup>
<cup>italy_prom_games3</cup>
<cup>italy_prom_games4</cup>
<cup>italy_prom_games5</cup>
<cup>italy_prom_games6</cup>
<cup>italy_prom_games7</cup>
<cup>italy_prom_games8</cup>
<cup>italy_prom_games9</cup>
<cup>italy_prom_games_2_1</cup>
<cup>italy_prom_games_2_3</cup>
<cup>italy_prom_games_3a_2</cup>
<cup>italy_prom_games_3b_2</cup>
<cup>italy_prom_games_3a_4</cup>
<cup>italy_prom_games_3b_4</cup>
<cup>italy_prom_games_4a_3</cup>
<cup>italy_prom_games_4b_3</cup>
<cup>italy_prom_games_4c_3</cup>
</cups>
</country>

View File

@ -3,10 +3,11 @@
<name>Serie B Promotion</name>
<short_name>Serie B Prom.</short_name>
<symbol>flag_italy.png</symbol>
<sid>italy_prom_games1</sid>
<sid>italy_prom_games_2_1</sid>
<add_week>1000</add_week>
<property>national</property>
<property>highlight2</property>
<property>promotion</property>
<cup_rounds>
<cup_round>

View File

@ -3,10 +3,11 @@
<name>Serie B Relegation</name>
<short_name>Serie B Rel.</short_name>
<symbol>flag_italy.png</symbol>
<sid>italy_prom_games2</sid>
<sid>italy_prom_games_2_3</sid>
<add_week>1000</add_week>
<property>national</property>
<property>highlight2</property>
<property>promotion</property>
<cup_rounds>
<cup_round>

View File

@ -3,10 +3,11 @@
<name>Prima Divisione A Promotion</name>
<short_name>Pr. Div. A Prom.</short_name>
<symbol>flag_italy.png</symbol>
<sid>italy_prom_games3</sid>
<sid>italy_prom_games_3a_2</sid>
<add_week>1000</add_week>
<property>national</property>
<property>highlight2</property>
<property>promotion</property>
<cup_rounds>
<cup_round>

View File

@ -3,16 +3,15 @@
<name>Prima Divisione A Relegation</name>
<short_name>Pr. Div. A Rel.</short_name>
<symbol>flag_italy.png</symbol>
<sid>italy_prom_games5</sid>
<sid>italy_prom_games_3a_4</sid>
<add_week>1000</add_week>
<property>national</property>
<property>highlight2</property>
<property>promotion</property>
<cup_rounds>
<cup_round>
<home_away>1</home_away>
<number_of_advance>2</number_of_advance>
<choose_teams>
<choose_team>
<choose_team_sid>italy3a</choose_team_sid>

View File

@ -3,10 +3,11 @@
<name>Prima Divisione B Promotion</name>
<short_name>Pr. Div. B Prom.</short_name>
<symbol>flag_italy.png</symbol>
<sid>italy_prom_games4</sid>
<sid>italy_prom_games_3b_2</sid>
<add_week>1000</add_week>
<property>national</property>
<property>highlight2</property>
<property>promotion</property>
<cup_rounds>
<cup_round>

View File

@ -3,16 +3,15 @@
<name>Prima Divisione B Relegation</name>
<short_name>Pr. Div. B Rel.</short_name>
<symbol>flag_italy.png</symbol>
<sid>italy_prom_games6</sid>
<sid>italy_prom_games_3b_4</sid>
<add_week>1000</add_week>
<property>national</property>
<property>highlight2</property>
<property>promotion</property>
<cup_rounds>
<cup_round>
<home_away>1</home_away>
<number_of_advance>2</number_of_advance>
<choose_teams>
<choose_team>
<choose_team_sid>italy3b</choose_team_sid>

View File

@ -3,10 +3,11 @@
<name>Seconda Divisione A Promotion</name>
<short_name>S. Div. A Prom.</short_name>
<symbol>flag_italy.png</symbol>
<sid>italy_prom_games7</sid>
<sid>italy_prom_games_4a_3</sid>
<add_week>1000</add_week>
<property>national</property>
<property>highlight2</property>
<property>promotion</property>
<cup_rounds>
<cup_round>

View File

@ -3,10 +3,11 @@
<name>Seconda Divisione B Promotion</name>
<short_name>S. Div. B Prom.</short_name>
<symbol>flag_italy.png</symbol>
<sid>italy_prom_games8</sid>
<sid>italy_prom_games_4b_3</sid>
<add_week>1000</add_week>
<property>national</property>
<property>highlight2</property>
<property>promotion</property>
<cup_rounds>
<cup_round>

View File

@ -3,10 +3,11 @@
<name>Seconda Divisione C Promotion</name>
<short_name>S. Div. C Prom.</short_name>
<symbol>flag_italy.png</symbol>
<sid>italy_prom_games9</sid>
<sid>italy_prom_games_4c_3</sid>
<add_week>1000</add_week>
<property>national</property>
<property>highlight2</property>
<property>promotion</property>
<cup_rounds>
<cup_round>

View File

@ -20,6 +20,18 @@
<two_match_week_end>35</two_match_week_end>
<prom_rel>
<prom_games>
<prom_games_dest_sid>italy1</prom_games_dest_sid>
<prom_games_cup_sid>italy_prom_games_2_1</prom_games_cup_sid>
</prom_games>
<prom_games>
<prom_games_dest_sid>italy2</prom_games_dest_sid>
<prom_games_loser_sid>italy3a italy3b</prom_games_loser_sid>
<prom_games_cup_sid>italy_prom_games_2_3</prom_games_cup_sid>
</prom_games>
<prom_rel_element>
<rank_start>1</rank_start>
<rank_end>2</rank_end>
@ -27,13 +39,9 @@
<prom_rel_type>promotion</prom_rel_type>
</prom_rel_element>
<prom_games>
<prom_games_dest_sid>italy1</prom_games_dest_sid>
<prom_games_cup_sid>italy_prom_games1</prom_games_cup_sid>
</prom_games>
<prom_rel_element>
<rank_start>19</rank_start>
<!-- <rank_start>19</rank_start> -->
<rank_start>20</rank_start>
<rank_end>22</rank_end>
<dest_sid>italy3a italy3b</dest_sid>
<prom_rel_type>relegation</prom_rel_type>

View File

@ -13,6 +13,18 @@
<layer>3</layer>
<prom_rel>
<prom_games>
<prom_games_dest_sid>italy2</prom_games_dest_sid>
<prom_games_cup_sid>italy_prom_games_3a_2</prom_games_cup_sid>
</prom_games>
<prom_games>
<prom_games_dest_sid>italy3a</prom_games_dest_sid>
<prom_games_loser_sid>italy4a italy4b italy4c</prom_games_loser_sid>
<prom_games_cup_sid>italy_prom_games_3a_4</prom_games_cup_sid>
<prom_games_number_of_advance>2</prom_games_number_of_advance>
</prom_games>
<prom_rel_element>
<rank_start>1</rank_start>
<rank_end>1</rank_end>
@ -20,13 +32,8 @@
<prom_rel_type>promotion</prom_rel_type>
</prom_rel_element>
<prom_games>
<prom_games_dest_sid>italy2</prom_games_dest_sid>
<prom_games_cup_sid>italy_prom_games3</prom_games_cup_sid>
</prom_games>
<prom_rel_element>
<rank_start>16</rank_start>
<rank_start>18</rank_start>
<rank_end>18</rank_end>
<dest_sid>italy4a italy4b italy4c</dest_sid>
<prom_rel_type>relegation</prom_rel_type>

View File

@ -13,6 +13,18 @@
<layer>3</layer>
<prom_rel>
<prom_games>
<prom_games_dest_sid>italy2</prom_games_dest_sid>
<prom_games_cup_sid>italy_prom_games_3b_2</prom_games_cup_sid>
</prom_games>
<prom_games>
<prom_games_dest_sid>italy3b</prom_games_dest_sid>
<prom_games_loser_sid>italy4a italy4b italy4c</prom_games_loser_sid>
<prom_games_cup_sid>italy_prom_games_3b_4</prom_games_cup_sid>
<prom_games_number_of_advance>2</prom_games_number_of_advance>
</prom_games>
<prom_rel_element>
<rank_start>1</rank_start>
<rank_end>1</rank_end>
@ -20,13 +32,8 @@
<prom_rel_type>promotion</prom_rel_type>
</prom_rel_element>
<prom_games>
<prom_games_dest_sid>italy2</prom_games_dest_sid>
<prom_games_cup_sid>italy_prom_games4</prom_games_cup_sid>
</prom_games>
<prom_rel_element>
<rank_start>16</rank_start>
<rank_start>18</rank_start>
<rank_end>18</rank_end>
<dest_sid>italy4a italy4b italy4c</dest_sid>
<prom_rel_type>relegation</prom_rel_type>

View File

@ -22,7 +22,7 @@
<prom_games>
<prom_games_dest_sid>italy3a italy3b</prom_games_dest_sid>
<prom_games_cup_sid>italy_prom_games7</prom_games_cup_sid>
<prom_games_cup_sid>italy_prom_games_4a_3</prom_games_cup_sid>
</prom_games>
</prom_rel>

View File

@ -22,7 +22,7 @@
<prom_games>
<prom_games_dest_sid>italy3a italy3b</prom_games_dest_sid>
<prom_games_cup_sid>italy_prom_games8</prom_games_cup_sid>
<prom_games_cup_sid>italy_prom_games_4b_3</prom_games_cup_sid>
</prom_games>
</prom_rel>

View File

@ -22,7 +22,7 @@
<prom_games>
<prom_games_dest_sid>italy3a italy3b</prom_games_dest_sid>
<prom_games_cup_sid>italy_prom_games9</prom_games_cup_sid>
<prom_games_cup_sid>italy_prom_games_4c_3</prom_games_cup_sid>
</prom_games>
</prom_rel>