1
1
mirror of https://github.com/tstellar/bygfoot.git synced 2025-02-03 17:27:31 +01:00

Tables display implemented. Flags added.

This commit is contained in:
gyboth 2005-03-15 15:10:57 +00:00
parent 6e61f7ffe3
commit 323e24b52b
44 changed files with 601 additions and 228 deletions

View File

@ -98,7 +98,7 @@
<signal name="activate" handler="on_start_editor_activate" last_modification_time="Sun, 30 May 2004 19:58:16 GMT"/>
<child internal-child="image">
<widget class="GtkImage" id="image209">
<widget class="GtkImage" id="image217">
<property name="visible">True</property>
<property name="stock">gtk-preferences</property>
<property name="icon_size">1</property>
@ -119,7 +119,7 @@
<signal name="activate" handler="on_start_update_activate" last_modification_time="Mon, 13 Sep 2004 12:30:42 GMT"/>
<child internal-child="image">
<widget class="GtkImage" id="image210">
<widget class="GtkImage" id="image218">
<property name="visible">True</property>
<property name="stock">gtk-refresh</property>
<property name="icon_size">1</property>
@ -168,7 +168,7 @@
<signal name="activate" handler="on_menu_preferences_activate" last_modification_time="Sun, 02 Jan 2005 15:30:45 GMT"/>
<child internal-child="image">
<widget class="GtkImage" id="image211">
<widget class="GtkImage" id="image219">
<property name="visible">True</property>
<property name="stock">gtk-preferences</property>
<property name="icon_size">1</property>
@ -250,21 +250,22 @@
</widget>
</child>
<child>
<widget class="GtkMenuItem" id="menu_my_league_results">
<property name="visible">True</property>
<property name="label" translatable="yes">My league results</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_menu_my_league_results_activate" last_modification_time="Sun, 02 Jan 2005 15:55:13 GMT"/>
</widget>
</child>
<child>
<widget class="GtkMenuItem" id="menu_tables">
<property name="visible">True</property>
<property name="label" translatable="yes">Tables</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_menu_tables_activate" last_modification_time="Sun, 02 Jan 2005 15:38:39 GMT"/>
<accelerator key="F5" modifiers="0" signal="activate"/>
</widget>
</child>
<child>
<widget class="GtkMenuItem" id="menu_my_league_results">
<property name="visible">True</property>
<property name="label" translatable="yes">My league results</property>
<property name="use_underline">True</property>
<signal name="activate" handler="on_menu_my_league_results_activate" last_modification_time="Sun, 02 Jan 2005 15:55:13 GMT"/>
</widget>
</child>
@ -653,7 +654,7 @@
<accelerator key="F9" modifiers="0" signal="activate"/>
<child internal-child="image">
<widget class="GtkImage" id="image212">
<widget class="GtkImage" id="image220">
<property name="visible">True</property>
<property name="stock">gtk-go-forward</property>
<property name="icon_size">1</property>
@ -675,7 +676,7 @@
<accelerator key="F8" modifiers="0" signal="activate"/>
<child internal-child="image">
<widget class="GtkImage" id="image213">
<widget class="GtkImage" id="image221">
<property name="visible">True</property>
<property name="stock">gtk-go-back</property>
<property name="icon_size">1</property>
@ -697,7 +698,7 @@
<accelerator key="F12" modifiers="0" signal="activate"/>
<child internal-child="image">
<widget class="GtkImage" id="image214">
<widget class="GtkImage" id="image222">
<property name="visible">True</property>
<property name="stock">gtk-justify-fill</property>
<property name="icon_size">1</property>
@ -1843,7 +1844,6 @@
<child>
<widget class="GtkButton" id="button_browse_back">
<property name="border_width">2</property>
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Previous (Q)</property>
<property name="can_focus">True</property>
@ -1873,7 +1873,6 @@
<child>
<widget class="GtkButton" id="button_browse_forward">
<property name="border_width">2</property>
<property name="visible">True</property>
<property name="tooltip" translatable="yes">Next (W)</property>
<property name="can_focus">True</property>

View File

@ -68,6 +68,24 @@ callback_show_next_live_game(void)
void
callback_player_clicked(gint idx, GdkEventButton *event)
{
/*d*/
gint i,j,k, sum=0, cnt;
for(i=0;i<ligs->len;i++)
{
sum = cnt = 0;
for(j=0;j<lig(i).teams->len;j++)
{
for(k=0;k<g_array_index(lig(i).teams, Team, j).players->len;k++)
{
sum += g_array_index(g_array_index(lig(i).teams, Team, j).players, Player, k).wage;
}
cnt++;
}
printf("%s %d\n", lig(i).name->str, (gint)rint((gfloat)sum / (gfloat)cnt));
}
/** Only accept single-clicks right now. */
if(event->type != GDK_BUTTON_PRESS)
return;
@ -137,3 +155,31 @@ callback_show_fixtures(gint type)
stat2 = fix->week_number;
stat3 = fix->week_round_number;
}
/** Show tables.
@type Integer telling us whether to show the current user's
tables or those of the previous/next league/cup. */
void
callback_show_tables(gint type)
{
gint clid = -1;
if(type == SHOW_CURRENT)
clid = usr(current_user).tm->clid;
else if(type == SHOW_NEXT_LEAGUE)
{
clid = league_cup_get_next_clid(stat1);
while(clid >= ID_CUP_START && cup_from_clid(clid)->tables->len == 0)
clid = league_cup_get_next_clid(clid);
}
else if(type == SHOW_PREVIOUS_LEAGUE)
{
clid = league_cup_get_previous_clid(stat1);
while(clid >= ID_CUP_START && cup_from_clid(clid)->tables->len == 0)
clid = league_cup_get_previous_clid(clid);
}
stat1 = clid;
treeview_show_table(GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right")), clid);
}

View File

@ -15,4 +15,7 @@ callback_show_last_match(void);
void
callback_show_fixtures(gint type);
void
callback_show_tables(gint type);
#endif

View File

@ -1,7 +1,6 @@
#include "callbacks.h"
#include "callback_func.h"
#include "enums.h"
#include "fixture.h"
#include "game_gui.h"
#include "main.h"
#include "team.h"
@ -197,7 +196,7 @@ on_button_browse_forward_clicked (GtkButton *button,
switch(stat0)
{
case STATUS_SHOW_FIXTURES:
callback_show_fixtures(SHOW_FIX_NEXT);
callback_show_fixtures(SHOW_NEXT);
break;
}
}
@ -210,7 +209,7 @@ on_button_browse_back_clicked (GtkButton *button,
switch(stat0)
{
case STATUS_SHOW_FIXTURES:
callback_show_fixtures(SHOW_FIX_PREVIOUS);
callback_show_fixtures(SHOW_PREVIOUS);
break;
}
}
@ -224,7 +223,10 @@ on_button_cl_back_clicked (GtkButton *button,
switch(stat0)
{
case STATUS_SHOW_FIXTURES:
callback_show_fixtures(SHOW_FIX_PREVIOUS_LEAGUE);
callback_show_fixtures(SHOW_PREVIOUS_LEAGUE);
break;
case STATUS_SHOW_TABLES:
callback_show_tables(SHOW_PREVIOUS_LEAGUE);
break;
}
}
@ -237,7 +239,10 @@ on_button_cl_forward_clicked (GtkButton *button,
switch(stat0)
{
case STATUS_SHOW_FIXTURES:
callback_show_fixtures(SHOW_FIX_NEXT_LEAGUE);
callback_show_fixtures(SHOW_NEXT_LEAGUE);
break;
case STATUS_SHOW_TABLES:
callback_show_tables(SHOW_NEXT_LEAGUE);
break;
}
}
@ -288,14 +293,15 @@ on_menu_fixtures_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
stat0 = STATUS_SHOW_FIXTURES;
callback_show_fixtures(SHOW_FIX_TEAM);
callback_show_fixtures(SHOW_TEAM);
}
void
on_menu_tables_activate (GtkMenuItem *menuitem,
gpointer user_data)
{
stat0 = STATUS_SHOW_TABLES;
callback_show_tables(SHOW_CURRENT);
}

View File

@ -27,7 +27,6 @@ cup_new(void)
new.last_week = new.week_gap = -1;
new.yellow_red = 1000;
new.skill_diff = 0;
new.average_capacity = -1;
new.choose_teams = g_array_new(FALSE, FALSE, sizeof(CupChooseTeam));
new.choose_team_user = cup_choose_team_new();
@ -174,7 +173,7 @@ cup_load_choose_teams(Cup *cup)
}
for(i=0;i<cup->teams->len;i++)
team_generate_players(&g_array_index(cup->teams, Team, i));
team_generate_players_stadium(&g_array_index(cup->teams, Team, i));
/*d*/
/* printf("\n%s\n", cup->name->str); */

View File

@ -89,8 +89,6 @@ typedef struct
the league with highest average skill.
Default: 0. */
gint skill_diff;
/** Average stadium capacity. Default: -1. */
gint average_capacity;
/** Array with rules how teams are chosen.
@see #CupChooseTeam */
GArray *choose_teams;

View File

@ -61,7 +61,21 @@ enum Status0Value
STATUS_SHOW_LAST_MATCH,
STATUS_SHOW_LAST_MATCH_STATS,
STATUS_SHOW_FIXTURES,
STATUS_SHOW_TABLES,
STATUS_END
};
/** Enum used to determine what kind of fixtures or
tables to show (e.g. when an arrow is clicked on). */
enum ShowType
{
SHOW_TEAM = 0,
SHOW_CURRENT,
SHOW_NEXT,
SHOW_PREVIOUS,
SHOW_NEXT_LEAGUE,
SHOW_PREVIOUS_LEAGUE,
SHOW_END
};
#endif

View File

@ -165,7 +165,7 @@ fixture_get_cup_round_winners(const Cup *cup)
const CupRound *cupround = &g_array_index(cup->rounds, CupRound, round);
if(cupround->round_robin_number_of_groups > 0)
return fixture_get_round_robin_advance(cup);
return fixture_get_round_robin_advance(cup, round);
array = g_ptr_array_new();
@ -204,13 +204,13 @@ fixture_get_cup_round_winners(const Cup *cup)
/** Return an array of teams advancing from a round robin
stage of a cup.
@param cup The cup.
@param round The cup round.
@return The pointers to the teams. */
GPtrArray*
fixture_get_round_robin_advance(const Cup *cup)
fixture_get_round_robin_advance(const Cup *cup, gint round)
{
gint i, j;
GArray *fixtures = cup->fixtures;
gint round = g_array_index(fixtures, Fixture, fixtures->len - 1).round;
GPtrArray *array = g_ptr_array_new();
const CupRound *cupround = &g_array_index(cup->rounds, CupRound, round);
GArray *best_advance = g_array_new(FALSE, FALSE, sizeof(TableElement));
@ -828,7 +828,7 @@ fixture_get_previous(gint clid, gint week_number, gint week_round_number)
@param clid The id of the current league/cup we're showing.
@param week_number The week we're showing.
@param week_round_number The round we're showing.
@param tm A team pointer (for the case SHOW_FIX_TEAM).
@param tm A team pointer (for the case SHOW_TEAM).
@return A fixture pointer or NULL. */
Fixture*
fixture_get(gint type, gint clid, gint week_number, gint week_round_number, const Team *tm)
@ -836,29 +836,29 @@ fixture_get(gint type, gint clid, gint week_number, gint week_round_number, cons
Fixture *fix = NULL;
gint new_clid = -1;
if(type == SHOW_FIX_TEAM)
if(type == SHOW_TEAM)
{
fix = team_get_fixture(tm, TRUE);
if(fix == NULL)
fix = team_get_fixture(tm, FALSE);
}
else if(type == SHOW_FIX_CURRENT)
else if(type == SHOW_CURRENT)
{
fix = league_cup_get_previous_fixture(clid, week_number, week_round_number);
if(fix == NULL)
fix = league_cup_get_next_fixture(clid, week_number, week_round_number);
}
else if(type == SHOW_FIX_NEXT)
else if(type == SHOW_NEXT)
fix = fixture_get_next(clid, week_number, week_round_number);
else if(type == SHOW_FIX_PREVIOUS)
else if(type == SHOW_PREVIOUS)
fix = fixture_get_previous(clid, week_number, week_round_number);
else if(type == SHOW_FIX_NEXT_LEAGUE ||
type == SHOW_FIX_PREVIOUS_LEAGUE)
else if(type == SHOW_NEXT_LEAGUE ||
type == SHOW_PREVIOUS_LEAGUE)
{
new_clid = (type == SHOW_FIX_NEXT_LEAGUE) ?
new_clid = (type == SHOW_NEXT_LEAGUE) ?
league_cup_get_next_clid(clid):
league_cup_get_previous_clid(clid);
fix = fixture_get(SHOW_FIX_CURRENT, new_clid, week, week_round, NULL);
fix = fixture_get(SHOW_CURRENT, new_clid, week, week_round, NULL);
}
if(fix == NULL)

View File

@ -6,17 +6,6 @@
#include "fixture_struct.h"
#include "league_struct.h"
enum ShowFixType
{
SHOW_FIX_TEAM = 0,
SHOW_FIX_CURRENT,
SHOW_FIX_NEXT,
SHOW_FIX_PREVIOUS,
SHOW_FIX_NEXT_LEAGUE,
SHOW_FIX_PREVIOUS_LEAGUE,
SHOW_FIX_END
};
void
fixture_write_league_fixtures(League *league);
@ -52,7 +41,7 @@ GPtrArray*
fixture_get_cup_round_winners(const Cup *cup);
GPtrArray*
fixture_get_round_robin_advance(const Cup *cup);
fixture_get_round_robin_advance(const Cup *cup, gint round);
Team*
fixture_winner_of(const Fixture *fix);

View File

@ -146,12 +146,11 @@ void
free_league(League *league)
{
gint i;
GString **strings[7] =
GString **strings[6] =
{&league->name,
&league->short_name,
&league->symbol,
&league->sid,
&league->prom_rel.prom_games_cup_sid,
&league->prom_rel.prom_games_dest_sid,
&league->table.name};
GArray **arrays[3] =
@ -159,7 +158,7 @@ free_league(League *league)
&league->prom_rel.elements,
&league->table.elements};
for(i=0;i<7;i++)
for(i=0;i<6;i++)
free_g_string(strings[i]);
if(league->teams != NULL)

View File

@ -42,15 +42,15 @@ create_main_window (void)
GtkWidget *trennlinie1;
GtkWidget *separatormenuitem1;
GtkWidget *start_editor;
GtkWidget *image209;
GtkWidget *image217;
GtkWidget *start_update;
GtkWidget *image210;
GtkWidget *image218;
GtkWidget *trennlinie2;
GtkWidget *menu_quit;
GtkWidget *menu_options;
GtkWidget *menu_options_menu;
GtkWidget *menu_preferences;
GtkWidget *image211;
GtkWidget *image219;
GtkWidget *trennlinie7;
GtkWidget *menu_notify;
GtkWidget *menu_job_offers;
@ -59,8 +59,8 @@ create_main_window (void)
GtkWidget *menu_figures;
GtkWidget *menu_figures_menu;
GtkWidget *menu_fixtures;
GtkWidget *menu_my_league_results;
GtkWidget *menu_tables;
GtkWidget *menu_my_league_results;
GtkWidget *players1;
GtkWidget *menu_season_history;
GtkWidget *menu_team;
@ -109,11 +109,11 @@ create_main_window (void)
GtkWidget *menu_user_show_last_stats;
GtkWidget *trennlinie9;
GtkWidget *menu_next_user;
GtkWidget *image212;
GtkWidget *image220;
GtkWidget *menu_previous_user;
GtkWidget *image213;
GtkWidget *image221;
GtkWidget *menu_manage_users;
GtkWidget *image214;
GtkWidget *image222;
GtkWidget *menu_finances_stadium;
GtkWidget *menu_finances_stadium_menu;
GtkWidget *menu_increase_capacity;
@ -263,17 +263,17 @@ create_main_window (void)
gtk_widget_show (start_editor);
gtk_container_add (GTK_CONTAINER (menu_file_menu), start_editor);
image209 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU);
gtk_widget_show (image209);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (start_editor), image209);
image217 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU);
gtk_widget_show (image217);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (start_editor), image217);
start_update = gtk_image_menu_item_new_with_mnemonic (_("Start Bygfoot Online Update"));
gtk_widget_show (start_update);
gtk_container_add (GTK_CONTAINER (menu_file_menu), start_update);
image210 = gtk_image_new_from_stock ("gtk-refresh", GTK_ICON_SIZE_MENU);
gtk_widget_show (image210);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (start_update), image210);
image218 = gtk_image_new_from_stock ("gtk-refresh", GTK_ICON_SIZE_MENU);
gtk_widget_show (image218);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (start_update), image218);
trennlinie2 = gtk_separator_menu_item_new ();
gtk_widget_show (trennlinie2);
@ -295,9 +295,9 @@ create_main_window (void)
gtk_widget_show (menu_preferences);
gtk_container_add (GTK_CONTAINER (menu_options_menu), menu_preferences);
image211 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU);
gtk_widget_show (image211);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_preferences), image211);
image219 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU);
gtk_widget_show (image219);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_preferences), image219);
trennlinie7 = gtk_separator_menu_item_new ();
gtk_widget_show (trennlinie7);
@ -334,13 +334,16 @@ create_main_window (void)
GDK_F4, 0,
GTK_ACCEL_VISIBLE);
menu_my_league_results = gtk_menu_item_new_with_mnemonic (_("My league results"));
gtk_widget_show (menu_my_league_results);
gtk_container_add (GTK_CONTAINER (menu_figures_menu), menu_my_league_results);
menu_tables = gtk_menu_item_new_with_mnemonic (_("Tables"));
gtk_widget_show (menu_tables);
gtk_container_add (GTK_CONTAINER (menu_figures_menu), menu_tables);
gtk_widget_add_accelerator (menu_tables, "activate", accel_group,
GDK_F5, 0,
GTK_ACCEL_VISIBLE);
menu_my_league_results = gtk_menu_item_new_with_mnemonic (_("My league results"));
gtk_widget_show (menu_my_league_results);
gtk_container_add (GTK_CONTAINER (menu_figures_menu), menu_my_league_results);
players1 = gtk_menu_item_new_with_mnemonic (_("Players"));
gtk_widget_show (players1);
@ -551,9 +554,9 @@ create_main_window (void)
GDK_F9, 0,
GTK_ACCEL_VISIBLE);
image212 = gtk_image_new_from_stock ("gtk-go-forward", GTK_ICON_SIZE_MENU);
gtk_widget_show (image212);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_next_user), image212);
image220 = gtk_image_new_from_stock ("gtk-go-forward", GTK_ICON_SIZE_MENU);
gtk_widget_show (image220);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_next_user), image220);
menu_previous_user = gtk_image_menu_item_new_with_mnemonic (_("Previous user"));
gtk_widget_show (menu_previous_user);
@ -562,9 +565,9 @@ create_main_window (void)
GDK_F8, 0,
GTK_ACCEL_VISIBLE);
image213 = gtk_image_new_from_stock ("gtk-go-back", GTK_ICON_SIZE_MENU);
gtk_widget_show (image213);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_previous_user), image213);
image221 = gtk_image_new_from_stock ("gtk-go-back", GTK_ICON_SIZE_MENU);
gtk_widget_show (image221);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_previous_user), image221);
menu_manage_users = gtk_image_menu_item_new_with_mnemonic (_("Manage users"));
gtk_widget_show (menu_manage_users);
@ -573,9 +576,9 @@ create_main_window (void)
GDK_F12, 0,
GTK_ACCEL_VISIBLE);
image214 = gtk_image_new_from_stock ("gtk-justify-fill", GTK_ICON_SIZE_MENU);
gtk_widget_show (image214);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_manage_users), image214);
image222 = gtk_image_new_from_stock ("gtk-justify-fill", GTK_ICON_SIZE_MENU);
gtk_widget_show (image222);
gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_manage_users), image222);
menu_finances_stadium = gtk_menu_item_new_with_mnemonic (_("FinStad"));
gtk_widget_show (menu_finances_stadium);
@ -974,7 +977,6 @@ create_main_window (void)
button_browse_back = gtk_button_new ();
gtk_widget_show (button_browse_back);
gtk_box_pack_start (GTK_BOX (hbox_14), button_browse_back, TRUE, TRUE, 0);
gtk_container_set_border_width (GTK_CONTAINER (button_browse_back), 2);
gtk_tooltips_set_tip (tooltips, button_browse_back, _("Previous (Q)"), NULL);
gtk_widget_add_accelerator (button_browse_back, "clicked", accel_group,
GDK_q, 0,
@ -987,7 +989,6 @@ create_main_window (void)
button_browse_forward = gtk_button_new ();
gtk_widget_show (button_browse_forward);
gtk_box_pack_start (GTK_BOX (hbox_14), button_browse_forward, TRUE, TRUE, 0);
gtk_container_set_border_width (GTK_CONTAINER (button_browse_forward), 2);
gtk_tooltips_set_tip (tooltips, button_browse_forward, _("Next (W)"), NULL);
gtk_widget_add_accelerator (button_browse_forward, "clicked", accel_group,
GDK_w, 0,
@ -1054,12 +1055,12 @@ create_main_window (void)
g_signal_connect ((gpointer) menu_fixtures, "activate",
G_CALLBACK (on_menu_fixtures_activate),
NULL);
g_signal_connect ((gpointer) menu_my_league_results, "activate",
G_CALLBACK (on_menu_my_league_results_activate),
NULL);
g_signal_connect ((gpointer) menu_tables, "activate",
G_CALLBACK (on_menu_tables_activate),
NULL);
g_signal_connect ((gpointer) menu_my_league_results, "activate",
G_CALLBACK (on_menu_my_league_results_activate),
NULL);
g_signal_connect ((gpointer) players1, "activate",
G_CALLBACK (on_players1_activate),
NULL);
@ -1242,15 +1243,15 @@ create_main_window (void)
GLADE_HOOKUP_OBJECT (main_window, trennlinie1, "trennlinie1");
GLADE_HOOKUP_OBJECT (main_window, separatormenuitem1, "separatormenuitem1");
GLADE_HOOKUP_OBJECT (main_window, start_editor, "start_editor");
GLADE_HOOKUP_OBJECT (main_window, image209, "image209");
GLADE_HOOKUP_OBJECT (main_window, image217, "image217");
GLADE_HOOKUP_OBJECT (main_window, start_update, "start_update");
GLADE_HOOKUP_OBJECT (main_window, image210, "image210");
GLADE_HOOKUP_OBJECT (main_window, image218, "image218");
GLADE_HOOKUP_OBJECT (main_window, trennlinie2, "trennlinie2");
GLADE_HOOKUP_OBJECT (main_window, menu_quit, "menu_quit");
GLADE_HOOKUP_OBJECT (main_window, menu_options, "menu_options");
GLADE_HOOKUP_OBJECT (main_window, menu_options_menu, "menu_options_menu");
GLADE_HOOKUP_OBJECT (main_window, menu_preferences, "menu_preferences");
GLADE_HOOKUP_OBJECT (main_window, image211, "image211");
GLADE_HOOKUP_OBJECT (main_window, image219, "image219");
GLADE_HOOKUP_OBJECT (main_window, trennlinie7, "trennlinie7");
GLADE_HOOKUP_OBJECT (main_window, menu_notify, "menu_notify");
GLADE_HOOKUP_OBJECT (main_window, menu_job_offers, "menu_job_offers");
@ -1259,8 +1260,8 @@ create_main_window (void)
GLADE_HOOKUP_OBJECT (main_window, menu_figures, "menu_figures");
GLADE_HOOKUP_OBJECT (main_window, menu_figures_menu, "menu_figures_menu");
GLADE_HOOKUP_OBJECT (main_window, menu_fixtures, "menu_fixtures");
GLADE_HOOKUP_OBJECT (main_window, menu_my_league_results, "menu_my_league_results");
GLADE_HOOKUP_OBJECT (main_window, menu_tables, "menu_tables");
GLADE_HOOKUP_OBJECT (main_window, menu_my_league_results, "menu_my_league_results");
GLADE_HOOKUP_OBJECT (main_window, players1, "players1");
GLADE_HOOKUP_OBJECT (main_window, menu_season_history, "menu_season_history");
GLADE_HOOKUP_OBJECT (main_window, menu_team, "menu_team");
@ -1305,11 +1306,11 @@ create_main_window (void)
GLADE_HOOKUP_OBJECT (main_window, menu_user_show_last_stats, "menu_user_show_last_stats");
GLADE_HOOKUP_OBJECT (main_window, trennlinie9, "trennlinie9");
GLADE_HOOKUP_OBJECT (main_window, menu_next_user, "menu_next_user");
GLADE_HOOKUP_OBJECT (main_window, image212, "image212");
GLADE_HOOKUP_OBJECT (main_window, image220, "image220");
GLADE_HOOKUP_OBJECT (main_window, menu_previous_user, "menu_previous_user");
GLADE_HOOKUP_OBJECT (main_window, image213, "image213");
GLADE_HOOKUP_OBJECT (main_window, image221, "image221");
GLADE_HOOKUP_OBJECT (main_window, menu_manage_users, "menu_manage_users");
GLADE_HOOKUP_OBJECT (main_window, image214, "image214");
GLADE_HOOKUP_OBJECT (main_window, image222, "image222");
GLADE_HOOKUP_OBJECT (main_window, menu_finances_stadium, "menu_finances_stadium");
GLADE_HOOKUP_OBJECT (main_window, menu_finances_stadium_menu, "menu_finances_stadium_menu");
GLADE_HOOKUP_OBJECT (main_window, menu_increase_capacity, "menu_increase_capacity");

View File

@ -21,10 +21,9 @@ league_new(void)
new.id = league_new_id();
new.average_skill = new.average_capacity = -1;
new.average_skill = -1;
new.prom_rel.prom_games_dest_sid = g_string_new("");
new.prom_rel.prom_games_cup_sid = g_string_new("");
new.prom_rel.elements = g_array_new(FALSE, FALSE, sizeof(PromRelElement));
new.teams = g_array_new(FALSE, FALSE, sizeof(Team));
@ -54,6 +53,7 @@ prom_rel_element_new(void)
new.ranks[0] = new.ranks[1] = 0;
new.dest_sid = g_string_new("");
new.type = PROM_REL_NONE;
return new;
}

View File

@ -3,6 +3,14 @@
#include "bygfoot.h"
#include "table_struct.h"
#include "cup_struct.h"
enum PromRelType
{
PROM_REL_PROMOTION = 0,
PROM_REL_RELEGATION,
PROM_REL_NONE
};
/**
An element representing a promotion or relegation rule.
@ -14,6 +22,7 @@ typedef struct
{
gint ranks[2]; /**< The range of teams; default 0 and 0 */
GString *dest_sid; /**< The id of the destination league. Default "" */
gint type; /**< Type. Promotion or relegation or none. */
} PromRelElement;
/**
@ -26,16 +35,14 @@ typedef struct
{
/** The id of the league the promotion games winner gets promoted to. Default "" */
GString *prom_games_dest_sid;
/** The id of the cup that specifies the promotion games format.
We regard the promotion games as a national cup like any other cup.
@see Cup
*/
GString *prom_games_cup_sid; /* "" */
/** Array with promotion/relegation rules.
@see PromRelElement
*/
GArray *elements;
/** The cup determining how the promotion games are handled. */
Cup prom_games_cup;
} PromRel;
/**
@ -60,8 +67,6 @@ typedef struct
gint yellow_red;
/** Average skill for the first season. Default: -1. */
gint average_skill;
/** Average stadium capacity. Default: -1. */
gint average_capacity;
/** Array of teams in the league.
@see Team */
GArray *teams;

View File

@ -60,14 +60,7 @@ start_new_season(void)
fixture_write_league_fixtures(&lig(i));
for(i=0;i<cps->len;i++)
{
fixture_write_cup_fixtures(&cp(i));
/*d*/
/* printf("%s %d %d %d\n", */
/* cp(i).name->str, cp(i).id, */
/* g_array_index(cp(i).fixtures, Fixture, 0).week_number, */
/* g_array_index(cp(i).fixtures, Fixture, 0).week_round_number); */
}
}
/** Fill some global variables with default values at the
@ -91,24 +84,14 @@ void
start_generate_league_teams(void)
{
gint i, j;
Team *tm;
if(ligs->len == 0)
main_exit_program(EXIT_NO_LEAGUES,
"start_generate_league_teams: no leagues found. there must be at least one league in the game.\n");
for(i=0;i<ligs->len;i++)
{
for(j=0;j<lig(i).teams->len;j++)
{
tm = &g_array_index(lig(i).teams, Team, j);
tm->stadium.capacity =
math_gauss_disti((gint)(lig(i).average_capacity * 0.66),
(gint)(lig(i).average_capacity * 1.33));
team_generate_players(tm);
}
}
team_generate_players_stadium(&g_array_index(lig(i).teams, Team, j));
}
/** Load the names from the xml files for the cups

View File

@ -40,6 +40,8 @@ table_update(const Fixture *fix)
elements[i]->values[TABLE_PLAYED]++;
elements[i]->values[TABLE_GF] += fix->result[i][0];
elements[i]->values[TABLE_GA] += fix->result[!i][0];
elements[i]->values[TABLE_GD] =
elements[i]->values[TABLE_GF] - elements[i]->values[TABLE_GA];
}
if(fix->result[0][0] == fix->result[1][0])

View File

@ -17,6 +17,7 @@ enum TableElementValues
TABLE_LOST,
TABLE_GF,
TABLE_GA,
TABLE_GD,
TABLE_PTS,
TABLE_END
};

View File

@ -30,8 +30,6 @@ team_new(void)
new.style = team_assign_playing_style();
new.boost = 0;
new.stadium = team_stadium_new();
new.players = g_array_new(FALSE, FALSE, sizeof(Player));
return new;
@ -92,7 +90,8 @@ team_stadium_new(void)
Stadium new;
new.capacity = -1;
new.safety = math_gauss_disti(80, 100);
new.safety = 0;
new.average_attendance =
new.possible_attendance =
new.games = 0;
@ -100,21 +99,22 @@ team_stadium_new(void)
return new;
}
/* Fill the players array of the team.
/* Fill the players array of the team and the stadium.
@param tm The team that gets filled. */
void
team_generate_players(Team *tm)
team_generate_players_stadium(Team *tm)
{
gint i;
gfloat skill_factor = math_rnd(1 - const_float("float_team_skill_variance"),
1 + const_float("float_team_skill_variance"));
Player new;
gfloat average_skill;
gfloat wages = 0;
if(tm->clid < ID_CUP_START)
average_skill =
const_float("float_player_max_skill") * skill_factor *
((gfloat)team_return_league_cup_value_int(tm, LEAGUE_CUP_VALUE_AVERAGE_SKILL) / 100);
((gfloat)team_return_league_cup_value_int(tm, LEAGUE_CUP_VALUE_AVERAGE_SKILL) / 1000);
else
average_skill =
skill_factor * lig(0).average_skill *
@ -125,8 +125,26 @@ team_generate_players(Team *tm)
for(i=0;i<const_int("int_team_max_players");i++)
{
new = player_new(tm, average_skill);
wages += new.wage;
g_array_append_val(tm->players, new);
}
tm->stadium.average_attendance = tm->stadium.possible_attendance =
tm->stadium.games = 0;
tm->stadium.safety =
math_rnd(const_float("float_team_stadium_safety_lower"),
const_float("float_team_stadium_safety_upper"));
tm->stadium.capacity =
math_round_integer((gint)rint((wages / (gfloat)const_int("int_team_stadium_ticket_price")) *
const_float("float_team_stadium_size_wage_factor")), 2);
/*d*/
/* printf("%30s wag %.0f stadcap %d cap * tick %d diff %d\n", */
/* tm->name->str, wages, tm->stadium.capacity, */
/* tm->stadium.capacity * const_int("int_team_stadium_ticket_price"), */
/* math_round_integer((gint)(2 * wages) - */
/* tm->stadium.capacity * const_int("int_team_stadium_ticket_price"), 3)); */
}
/** Return a certain value from the league or cup struct
@ -150,8 +168,6 @@ team_return_league_cup_value_int(const Team *tm, gint value_type)
return cp(idx).week_gap;
case LEAGUE_CUP_VALUE_YELLOW_RED:
return cp(idx).yellow_red;
case LEAGUE_CUP_VALUE_AVERAGE_CAPACITY:
return cp(idx).average_capacity;
case LEAGUE_CUP_VALUE_CUP_TYPE:
return cp(idx).type;
case LEAGUE_CUP_VALUE_SKILL_DIFF:
@ -174,8 +190,6 @@ team_return_league_cup_value_int(const Team *tm, gint value_type)
return lig(idx).yellow_red;
case LEAGUE_CUP_VALUE_AVERAGE_SKILL:
return lig(idx).average_skill;
case LEAGUE_CUP_VALUE_AVERAGE_CAPACITY:
return lig(idx).average_capacity;
default:
g_warning("team_return_league_cup_value_int: unknown value_type for leagues: %d\n",
value_type);

View File

@ -22,7 +22,7 @@ gboolean
query_is_my_team(const Team *tm);
void
team_generate_players(Team *tm);
team_generate_players_stadium(Team *tm);
gint
team_return_league_cup_value_int(const Team *tm, gint value_type);

View File

@ -1002,13 +1002,13 @@ treeview_create_fixture(const Fixture *fix, GtkListStore *liststore)
{
if(fixture_user_team_involved(fix) == current_user)
{
colour_fg = const_str("string_treeview_fixture_current_user_fg");
colour_bg = const_str("string_treeview_fixture_current_user_bg");
colour_fg = const_str("string_treeview_current_user_fg");
colour_bg = const_str("string_treeview_current_user_bg");
}
else
{
colour_fg = const_str("string_treeview_fixture_user_fg");
colour_bg = const_str("string_treeview_fixture_user_bg");
colour_fg = const_str("string_treeview_user_fg");
colour_bg = const_str("string_treeview_user_bg");
}
}
else
@ -1089,7 +1089,8 @@ treeview_set_up_fixtures(GtkTreeView *treeview)
col = gtk_tree_view_column_new();
gtk_tree_view_append_column(treeview, col);
renderer = gtk_cell_renderer_pixbuf_new();
g_object_set(renderer, "cell-background", "lightgrey", NULL);
g_object_set(renderer, "cell-background",
const_str("string_treeview_symbol_bg"), NULL);
gtk_tree_view_column_pack_start(col, renderer, TRUE);
gtk_tree_view_column_add_attribute(col, renderer,
"pixbuf", 0);
@ -1110,7 +1111,9 @@ treeview_set_up_fixtures(GtkTreeView *treeview)
col = gtk_tree_view_column_new();
gtk_tree_view_append_column(treeview, col);
renderer = gtk_cell_renderer_pixbuf_new();
gtk_tree_view_column_pack_start(col, renderer, TRUE);
g_object_set(renderer, "cell-background",
const_str("string_treeview_symbol_bg"), NULL);
gtk_tree_view_column_pack_start(col, renderer, FALSE);
gtk_tree_view_column_add_attribute(col, renderer,
"pixbuf", 4);
}
@ -1134,3 +1137,249 @@ treeview_show_fixtures(GtkTreeView *treeview, gint clid,
gtk_tree_view_set_model(treeview, model);
g_object_unref(model);
}
/** Write the header for a table into the liststore
@param clid The cup or league id.
@param number The number of the table if we display more than one. */
void
treeview_table_write_header(GtkListStore *liststore, gint clid, gint number)
{
gint i;
gchar buf[SMALL];
GdkPixbuf *symbol = NULL;
GtkTreeIter iter;
if(clid < ID_CUP_START)
{
symbol = treeview_pixbuf_from_filename(league_from_clid(clid)->symbol->str);
strcpy(buf, league_from_clid(clid)->name->str);
}
else
{
symbol = treeview_pixbuf_from_filename(cup_from_clid(clid)->symbol->str);
sprintf(buf, _("%s Group %d"), cup_from_clid(clid)->name->str, number);
}
gtk_list_store_append(liststore, &iter);
gtk_list_store_set(liststore, &iter, 0, symbol, 1, "", 2, buf, -1);
for(i=3;i<11;i++)
gtk_list_store_set(liststore, &iter, i, "", -1);
if(symbol != NULL)
g_object_unref(symbol);
}
/** Get the colours for a team in the tables.
@param table The table pointer.
@param idx The index of the element we're looking at.
@param user Whether to take into account user colours. */
void
treeview_get_table_element_colours(const Table *table, gint idx, gchar *colour_fg,
gchar *colour_bg, gboolean user)
{
gint i;
const TableElement *elem = &g_array_index(table->elements, TableElement, idx);
const PromRelElement *pelem = NULL;
const League *league = NULL;
GPtrArray *cup_advance = NULL;
strcpy(colour_fg, const_str("string_treeview_cell_color_default_foreground"));
strcpy(colour_bg, const_str("string_treeview_cell_color_default_background"));
if(user && elem->team == usr(current_user).tm)
{
strcpy(colour_fg, const_str("string_treeview_current_user_fg"));
strcpy(colour_bg, const_str("string_treeview_current_user_bg"));
}
else if(user && team_is_user(elem->team) != -1)
{
strcpy(colour_fg, const_str("string_treeview_user_fg"));
strcpy(colour_bg, const_str("string_treeview_user_bg"));
}
else if(table->clid < ID_CUP_START)
{
league = league_from_clid(table->clid);
if(idx + 1 == 1)
strcpy(colour_bg, const_str("string_treeview_table_first"));
else
{
for(i=0;i<league->prom_rel.elements->len;i++)
{
pelem = &g_array_index(league_from_clid(table->clid)->prom_rel.elements, PromRelElement, i);
if(pelem->ranks[0] <= idx + 1 && idx + 1 <= pelem->ranks[1])
{
if(pelem->type == PROM_REL_PROMOTION)
strcpy(colour_bg, const_str("string_treeview_table_promotion"));
else if(pelem->type == PROM_REL_RELEGATION)
strcpy(colour_bg, const_str("string_treeview_table_relegation"));
}
}
if(strlen(league->prom_rel.prom_games_dest_sid->str) != 0 &&
g_array_index(league->prom_rel.prom_games_cup.choose_teams,
CupChooseTeam, 0).start_idx <= idx + 1 &&
idx + 1 <= g_array_index(league->prom_rel.prom_games_cup.choose_teams,
CupChooseTeam, 0).end_idx)
strcpy(colour_bg, const_str("string_treeview_table_promgames"));
}
}
else
{
cup_advance =
fixture_get_round_robin_advance(cup_from_clid(table->clid), table->round);
for(i=0;i<cup_advance->len;i++)
if((Team*)g_ptr_array_index(cup_advance, i) == elem->team)
strcpy(colour_bg, const_str("string_treeview_table_promotion"));
free_g_ptr_array(&cup_advance);
}
}
/** Display a table in the liststore.
@param number The number of the table if we display more than one
(cups, round robin); or -1 for leagues. */
void
treeview_create_single_table(GtkListStore *liststore, const Table *table, gint number)
{
gint i, j;
GtkTreeIter iter;
GdkPixbuf *symbol = NULL;
TableElement *elem = NULL;
gchar buf[10][SMALL];
gchar colour_bg[SMALL], colour_fg[SMALL];
treeview_table_write_header(liststore, table->clid, number);
for(i=0;i<table->elements->len;i++)
{
gtk_list_store_append(liststore, &iter);
elem = &g_array_index(table->elements, TableElement, i);
if(table->clid >= ID_CUP_START)
symbol = treeview_pixbuf_from_filename(elem->team->symbol->str);
gtk_list_store_set(liststore, &iter, 0, symbol, -1);
treeview_get_table_element_colours(table, i, colour_fg, colour_bg, FALSE);
sprintf(buf[0], "<span background='%s' foreground = '%s'>%d</span>",
colour_bg, colour_fg, i + 1);
treeview_get_table_element_colours(table, i, colour_fg, colour_bg, TRUE);
sprintf(buf[1], "<span background='%s' foreground = '%s'>%s</span>",
colour_bg, colour_fg, elem->team->name->str);
for(j=2;j<10;j++)
if(j - 2 != TABLE_GD)
sprintf(buf[j], "%d", elem->values[j - 2]);
else
sprintf(buf[j], "%+d", elem->values[j - 2]);
for(j=0;j<10;j++)
gtk_list_store_set(liststore, &iter, j + 1, buf[j], -1);
if(symbol != NULL)
g_object_unref(symbol);
}
gtk_list_store_append(liststore, &iter);
gtk_list_store_set(liststore, &iter, 0, NULL, -1);
for(j=1;j<11;j++)
gtk_list_store_set(liststore, &iter, j, "", -1);
}
/** Create a league table or one or more cup tables. */
GtkTreeModel*
treeview_create_table(gint clid)
{
gint i;
GArray *tables = NULL;
GtkListStore *liststore =
gtk_list_store_new(11,
GDK_TYPE_PIXBUF,
G_TYPE_STRING,
G_TYPE_STRING,
G_TYPE_STRING,
G_TYPE_STRING,
G_TYPE_STRING,
G_TYPE_STRING,
G_TYPE_STRING,
G_TYPE_STRING,
G_TYPE_STRING,
G_TYPE_STRING);
if(clid < ID_CUP_START)
treeview_create_single_table(liststore,
&league_from_clid(clid)->table, -1);
else
{
tables = cup_from_clid(clid)->tables;
for(i=0;i<tables->len;i++)
treeview_create_single_table(liststore, &g_array_index(tables, Table, i), i + 1);
}
return GTK_TREE_MODEL(liststore);
}
void
treeview_set_up_table(GtkTreeView *treeview)
{
gint i;
GtkTreeViewColumn *col;
GtkCellRenderer *renderer;
gchar *titles[11] =
{"",
"",
_("Team"),
_("PL"),
_("W"),
_("D"),
_("L"),
_("GF"),
_("GA"),
_("GD"),
_("PTS")};
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
GTK_SELECTION_NONE);
col = gtk_tree_view_column_new();
gtk_tree_view_append_column(treeview, col);
renderer = gtk_cell_renderer_pixbuf_new();
g_object_set(renderer, "cell-background",
const_str("string_treeview_symbol_bg"), NULL);
gtk_tree_view_column_pack_start(col, renderer, TRUE);
gtk_tree_view_column_add_attribute(col, renderer,
"pixbuf", 0);
for(i=1;i<11;i++)
{
col = gtk_tree_view_column_new();
gtk_tree_view_column_set_title(col, titles[i]);
gtk_tree_view_append_column(treeview, col);
renderer = gtk_cell_renderer_text_new();
gtk_tree_view_column_pack_start(col, renderer, FALSE);
gtk_tree_view_column_add_attribute(col, renderer,
"markup", i);
if(i == 1)
g_object_set(renderer, "xalign", 1.0, NULL);
}
}
/** Show the table going with a league or cup. */
void
treeview_show_table(GtkTreeView *treeview, gint clid)
{
GtkTreeModel *model = NULL;
treeview_clear(treeview);
gtk_tree_view_set_headers_visible(treeview, TRUE);
treeview_set_up_table(treeview);
model = treeview_create_table(clid);
gtk_tree_view_set_model(treeview, model);
g_object_unref(model);
}

View File

@ -109,4 +109,23 @@ treeview_create_fixtures_header(const Fixture *fix, GtkListStore *liststore);
void
treeview_create_fixture(const Fixture *fix, GtkListStore *liststore);
void
treeview_show_table(GtkTreeView *treeview, gint clid);
void
treeview_set_up_table(GtkTreeView *treeview);
GtkTreeModel*
treeview_create_table(gint clid);
void
treeview_create_single_table(GtkListStore *liststore, const Table *table, gint number);
void
treeview_table_write_header(GtkListStore *liststore, gint clid, gint number);
void
treeview_get_table_element_colours(const Table *table, gint idx, gchar *colour_fg,
gchar *colour_bg, gboolean user);
#endif

View File

@ -18,7 +18,6 @@
#define TAG_WEEK_GAP "week_gap"
#define TAG_YELLOW_RED "yellow_red"
#define TAG_SKILL_DIFF "skill_diff"
#define TAG_AVERAGE_STADIUM_CAPACITY "average_stadium_capacity"
#define TAG_CUP_ROUNDS "cup_rounds"
#define TAG_CUP_ROUND "cup_round"
#define TAG_CUP_ROUND_HOME_AWAY "home_away"
@ -51,7 +50,6 @@ enum XmlCupStates
STATE_WEEK_GAP,
STATE_YELLOW_RED,
STATE_SKILL_DIFF,
STATE_AVERAGE_STADIUM_CAPACITY,
STATE_CUP_ROUNDS,
STATE_CUP_ROUND,
STATE_CUP_ROUND_HOME_AWAY,
@ -129,8 +127,6 @@ xml_cup_read_start_element (GMarkupParseContext *context,
state = STATE_YELLOW_RED;
else if(strcmp(element_name, TAG_SKILL_DIFF) == 0)
state = STATE_SKILL_DIFF;
else if(strcmp(element_name, TAG_AVERAGE_STADIUM_CAPACITY) == 0)
state = STATE_AVERAGE_STADIUM_CAPACITY;
else if(strcmp(element_name, TAG_CUP_ROUNDS) == 0)
state = STATE_CUP_ROUNDS;
else if(strcmp(element_name, TAG_CUP_ROUND) == 0)
@ -199,7 +195,6 @@ xml_cup_read_end_element (GMarkupParseContext *context,
strcmp(element_name, TAG_WEEK_GAP) == 0 ||
strcmp(element_name, TAG_YELLOW_RED) == 0 ||
strcmp(element_name, TAG_SKILL_DIFF) == 0 ||
strcmp(element_name, TAG_AVERAGE_STADIUM_CAPACITY) == 0 ||
strcmp(element_name, TAG_CUP_ROUNDS) == 0 ||
strcmp(element_name, TAG_CHOOSE_TEAMS) == 0)
state = STATE_CUP;
@ -284,8 +279,6 @@ xml_cup_read_text (GMarkupParseContext *context,
new_cup.yellow_red = value;
else if(state == STATE_SKILL_DIFF)
new_cup.skill_diff = value;
else if(state == STATE_AVERAGE_STADIUM_CAPACITY)
new_cup.average_capacity = value;
else if(state == STATE_CUP_ROUND_HOME_AWAY)
g_array_index(new_cup.rounds, CupRound, new_cup.rounds->len - 1).home_away = value;
else if(state == STATE_CUP_ROUND_REPLAY)

View File

@ -1,10 +1,13 @@
#include "cup_struct.h"
#include "file.h"
#include "free.h"
#include "league.h"
#include "misc.h"
#include "team.h"
#include "table.h"
#include "variables.h"
#include "xml_league.h"
#include "xml_cup.h"
/**
* The tags used in the XML files defining leagues.
@ -18,7 +21,6 @@
#define TAG_WEEK_GAP "week_gap"
#define TAG_YELLOW_RED "yellow_red"
#define TAG_AVERAGE_SKILL "average_skill"
#define TAG_AVERAGE_STADIUM_CAPACITY "average_stadium_capacity"
#define TAG_PROM_REL "prom_rel"
#define TAG_PROM_GAMES "prom_games"
#define TAG_PROM_GAMES_DEST_SID "prom_games_dest_sid"
@ -27,6 +29,7 @@
#define TAG_PROM_REL_ELEMENT_RANK_START "rank_start"
#define TAG_PROM_REL_ELEMENT_RANK_END "rank_end"
#define TAG_PROM_REL_ELEMENT_DEST_SID "dest_sid"
#define TAG_PROM_REL_ELEMENT_TYPE "prom_rel_type"
#define TAG_TEAMS "teams"
#define TAG_TEAM "team"
#define TAG_TEAM_NAME "team_name"
@ -45,7 +48,6 @@ enum XmlLeagueStates
STATE_WEEK_GAP,
STATE_YELLOW_RED,
STATE_AVERAGE_SKILL,
STATE_AVERAGE_STADIUM_CAPACITY,
STATE_PROM_REL,
STATE_PROM_GAMES,
STATE_PROM_GAMES_DEST_SID,
@ -54,6 +56,7 @@ enum XmlLeagueStates
STATE_PROM_REL_ELEMENT_RANK_START,
STATE_PROM_REL_ELEMENT_RANK_END,
STATE_PROM_REL_ELEMENT_DEST_SID,
STATE_PROM_REL_ELEMENT_TYPE,
STATE_TEAMS,
STATE_TEAM,
STATE_TEAM_NAME,
@ -108,8 +111,6 @@ xml_league_read_start_element (GMarkupParseContext *context,
state = STATE_YELLOW_RED;
else if(strcmp(element_name, TAG_AVERAGE_SKILL) == 0)
state = STATE_AVERAGE_SKILL;
else if(strcmp(element_name, TAG_AVERAGE_STADIUM_CAPACITY) == 0)
state = STATE_AVERAGE_STADIUM_CAPACITY;
else if(strcmp(element_name, TAG_PROM_REL) == 0)
state = STATE_PROM_REL;
else if(strcmp(element_name, TAG_PROM_GAMES) == 0)
@ -130,6 +131,8 @@ xml_league_read_start_element (GMarkupParseContext *context,
state = STATE_PROM_REL_ELEMENT_RANK_END;
else if(strcmp(element_name, TAG_PROM_REL_ELEMENT_DEST_SID) == 0)
state = STATE_PROM_REL_ELEMENT_DEST_SID;
else if(strcmp(element_name, TAG_PROM_REL_ELEMENT_TYPE) == 0)
state = STATE_PROM_REL_ELEMENT_TYPE;
else if(strcmp(element_name, TAG_TEAMS) == 0)
state = STATE_TEAMS;
else if(strcmp(element_name, TAG_TEAM) == 0)
@ -168,7 +171,6 @@ xml_league_read_end_element (GMarkupParseContext *context,
strcmp(element_name, TAG_WEEK_GAP) == 0 ||
strcmp(element_name, TAG_YELLOW_RED) == 0 ||
strcmp(element_name, TAG_AVERAGE_SKILL) == 0 ||
strcmp(element_name, TAG_AVERAGE_STADIUM_CAPACITY) == 0 ||
strcmp(element_name, TAG_PROM_REL) == 0 ||
strcmp(element_name, TAG_TEAMS) == 0)
state = STATE_LEAGUE;
@ -180,7 +182,8 @@ xml_league_read_end_element (GMarkupParseContext *context,
state = STATE_PROM_GAMES;
else if(strcmp(element_name, TAG_PROM_REL_ELEMENT_RANK_START) == 0 ||
strcmp(element_name, TAG_PROM_REL_ELEMENT_RANK_END) == 0 ||
strcmp(element_name, TAG_PROM_REL_ELEMENT_DEST_SID) == 0)
strcmp(element_name, TAG_PROM_REL_ELEMENT_DEST_SID) == 0 ||
strcmp(element_name, TAG_PROM_REL_ELEMENT_TYPE) == 0)
state = STATE_PROM_REL_ELEMENT;
else if(strcmp(element_name, TAG_TEAM) == 0)
state = STATE_TEAMS;
@ -206,6 +209,7 @@ xml_league_read_text (GMarkupParseContext *context,
{
gchar buf[text_len + 1];
gint value;
GArray *temp_cups = NULL;
strncpy(buf, text, text_len);
buf[text_len] = '\0';
@ -231,14 +235,16 @@ xml_league_read_text (GMarkupParseContext *context,
new_league.yellow_red = value;
else if(state == STATE_AVERAGE_SKILL)
new_league.average_skill = value;
else if(state == STATE_AVERAGE_STADIUM_CAPACITY)
new_league.average_capacity = value;
else if(state == STATE_PROM_GAMES_DEST_SID)
new_league.prom_rel.prom_games_dest_sid =
g_string_assign(new_league.prom_rel.prom_games_dest_sid, buf);
g_string_printf(new_league.prom_rel.prom_games_dest_sid, "%s", buf);
else if(state == STATE_PROM_GAMES_CUP)
new_league.prom_rel.prom_games_cup_sid =
g_string_assign(new_league.prom_rel.prom_games_cup_sid, buf);
{
strcat(buf, ".xml");
temp_cups = g_array_new(FALSE, FALSE, sizeof(Cup));
xml_cup_read(buf, temp_cups);
new_league.prom_rel.prom_games_cup = g_array_index(temp_cups, Cup, 0);
free_g_array(&temp_cups);
}
else if(state == STATE_PROM_REL_ELEMENT_RANK_START)
g_array_index(new_league.prom_rel.elements,
PromRelElement,
@ -247,13 +253,24 @@ xml_league_read_text (GMarkupParseContext *context,
g_array_index(new_league.prom_rel.elements,
PromRelElement,
new_league.prom_rel.elements->len - 1).ranks[1] = value;
else if(state == STATE_TEAM_NAME)
else if(state == STATE_PROM_REL_ELEMENT_DEST_SID)
g_string_printf(g_array_index(new_league.prom_rel.elements,
PromRelElement,
new_league.prom_rel.elements->len - 1).dest_sid, "%s", buf);
else if(state == STATE_PROM_REL_ELEMENT_TYPE)
{
g_array_index(new_league.teams, Team,
new_league.teams->len - 1).name =
g_string_assign(g_array_index(new_league.teams, Team,
new_league.teams->len - 1).name, buf);
}
if(strcmp(buf, "promotion") == 0)
g_array_index(new_league.prom_rel.elements,
PromRelElement,
new_league.prom_rel.elements->len - 1).type = PROM_REL_PROMOTION;
else if(strcmp(buf, "relegation") == 0)
g_array_index(new_league.prom_rel.elements,
PromRelElement,
new_league.prom_rel.elements->len - 1).type = PROM_REL_RELEGATION;
}
else if(state == STATE_TEAM_NAME)
g_string_printf(g_array_index(new_league.teams, Team,
new_league.teams->len - 1).name, "%s", buf);
}
/**
@ -307,13 +324,15 @@ xml_league_read(const gchar *league_name, GArray *leagues)
g_markup_parse_context_end_parse(context, NULL);
g_markup_parse_context_free(context);
g_free(file_contents);
g_array_append_val(leagues, new_league);
for(i=0;i<lig(ligs->len - 1).teams->len;i++)
for(i=0;i<g_array_index(leagues, League, leagues->len - 1).teams->len;i++)
{
new_table_element =
table_element_new(&g_array_index(lig(ligs->len - 1).teams, Team, i));
g_array_append_val(lig(ligs->len - 1).table.elements, new_table_element);
table_element_new(&g_array_index(
g_array_index(leagues, League, leagues->len - 1).teams, Team, i));
g_array_append_val(g_array_index(leagues, League, leagues->len - 1).
table.elements, new_table_element);
}
}
else

View File

@ -45,6 +45,18 @@ float_player_contract_upper 40000
float_player_lsu_lower 20000
float_player_lsu_upper 100000
# stadium safety bounds at generation
float_team_stadium_safety_lower 8000
float_team_stadium_safety_upper 10000
# ticket price; this determines together with
# the player wages the size of the stadium at
# generation
int_team_stadium_ticket_price 30
# factor for stadium size
float_team_stadium_size_wage_factor 24000
# lsu addition for injured players who are older
# than their peak age
float_player_lsu_injured_old 15000
@ -444,7 +456,7 @@ float_player_team_weight_forward_midfield 6000
float_player_team_weight_forward_attack 13000
#### string constants
#### colours and icons
# live game scale configuration
string_game_gui_live_game_scale_color_defend lightblue
@ -465,6 +477,33 @@ string_game_gui_boost_on_icon boost_on.png
string_game_gui_boost_off_icon boost_off.png
string_game_gui_boost_anti_icon boost_anti.png
# icons used in live games
string_live_game_event_start_match_icon whistle.png
string_live_game_event_lost_possession_icon
string_live_game_event_penalty_icon scoring_chance.png
string_live_game_event_scoring_chance_icon scoring_chance.png
string_live_game_event_goal_icon goal.png
string_live_game_event_own_goal_icon own_goal.png
string_live_game_event_post_icon
string_live_game_event_save_icon save.png
string_live_game_event_missed_icon miss.png
string_live_game_event_foul_icon
string_live_game_event_foul_yellow_icon yellow.png
string_live_game_event_send_off_icon red.png
string_live_game_event_injury_icon injury.png
string_live_game_event_temp_injury_icon injury_temp.png
string_live_game_event_stadium_breakdown_icon
string_live_game_event_stadium_fire_icon
string_live_game_event_stadium_riots_icon
string_live_game_event_substitution_icon sub.png
string_live_game_event_structure_change_icon structure_change.png
# font attributes for the live game window result.
string_treeview_cell_live_game_result_attributes weight='bold' size='large'
# colour indicating ball possession during a live game
string_live_game_possession_color darkblue
# default background and foreground in treeviews
string_treeview_cell_color_default_background white
string_treeview_cell_color_default_foreground black
@ -504,36 +543,19 @@ string_treeview_fixture_header_bg lightgrey
string_treeview_fixture_header_fg black
# team of current user
string_treeview_fixture_current_user_bg darkblue
string_treeview_fixture_current_user_fg white
string_treeview_current_user_bg darkblue
string_treeview_current_user_fg white
# teams of other users
string_treeview_fixture_user_bg lightsteelblue
string_treeview_fixture_user_fg black
string_treeview_user_bg wheat
string_treeview_user_fg black
# font attributes for the live game window result.
string_treeview_cell_live_game_result_attributes weight='bold' size='large'
# background of the team and league/cup symbols
string_treeview_symbol_bg lightgrey
# colour indicating ball possession during a live game
string_live_game_possession_color darkblue
# icons used in live games
string_live_game_event_start_match_icon whistle.png
string_live_game_event_lost_possession_icon
string_live_game_event_penalty_icon scoring_chance.png
string_live_game_event_scoring_chance_icon scoring_chance.png
string_live_game_event_goal_icon goal.png
string_live_game_event_own_goal_icon own_goal.png
string_live_game_event_post_icon
string_live_game_event_save_icon save.png
string_live_game_event_missed_icon miss.png
string_live_game_event_foul_icon
string_live_game_event_foul_yellow_icon yellow.png
string_live_game_event_send_off_icon red.png
string_live_game_event_injury_icon injury.png
string_live_game_event_temp_injury_icon injury_temp.png
string_live_game_event_stadium_breakdown_icon
string_live_game_event_stadium_fire_icon
string_live_game_event_stadium_riots_icon
string_live_game_event_substitution_icon sub.png
string_live_game_event_structure_change_icon structure_change.png
# background for the teams in a table
string_treeview_table_first tomato
string_treeview_table_promotion lightblue
string_treeview_table_relegation lightgreen
string_treeview_table_promgames khaki
string_treeview_table_best_advance khaki

View File

@ -6,10 +6,9 @@
<sid>champ_league</sid>
<type>international</type>
<yellow_red>3</yellow_red>
<skill_diff>8</skill_diff>
<skill_diff>1100</skill_diff>
<last_week>46</last_week>
<week_gap>4</week_gap>
<average_stadium_capacity>50000</average_stadium_capacity>
<cup_rounds>
<cup_round>

View File

@ -6,10 +6,9 @@
<sid>cwc</sid>
<type>international</type>
<yellow_red>3</yellow_red>
<skill_diff>5</skill_diff>
<skill_diff>1075</skill_diff>
<last_week>45</last_week>
<week_gap>4</week_gap>
<average_stadium_capacity>45000</average_stadium_capacity>
<cup_rounds>
<cup_round>

View File

@ -5,5 +5,22 @@
<symbol>flag_en.png</symbol>
<sid>england_prom_games</sid>
<type>national</type>
<home_away>1</home_away>
<cup_rounds>
<cup_round>
<home_away>1</home_away>
</cup_round>
<cup_round>
<home_away>0</home_away>
</cup_round>
</cup_rounds>
<choose_teams>
<choose_team>
<number_of_teams>4</number_of_teams>
<start_idx>3</start_idx>
<end_idx>6</end_idx>
</choose_team>
</choose_teams>
</cup>

View File

@ -6,10 +6,9 @@
<sid>uefa</sid>
<type>international</type>
<yellow_red>3</yellow_red>
<skill_diff>2</skill_diff>
<skill_diff>1050</skill_diff>
<last_week>44</last_week>
<week_gap>4</week_gap>
<average_stadium_capacity>40000</average_stadium_capacity>
<cup_rounds>
<cup_round>

View File

@ -7,14 +7,14 @@
<symbol>flag_en.png</symbol>
<first_week>1</first_week>
<week_gap>1</week_gap>
<average_skill>80</average_skill>
<average_stadium_capacity>40000</average_stadium_capacity>
<average_skill>800</average_skill>
<prom_rel>
<prom_rel_element>
<rank_start>18</rank_start>
<rank_end>20</rank_end>
<dest_sid>england2</dest_sid>
<prom_rel_type>relegation</prom_rel_type>
</prom_rel_element>
</prom_rel>

View File

@ -7,8 +7,7 @@
<symbol>flag_en.png</symbol>
<first_week>1</first_week>
<week_gap>1</week_gap>
<average_skill>70</average_skill>
<average_stadium_capacity>30000</average_stadium_capacity>
<average_skill>700</average_skill>
<prom_rel>
@ -21,12 +20,14 @@
<rank_start>1</rank_start>
<rank_end>2</rank_end>
<dest_sid>england1</dest_sid>
<prom_rel_type>promotion</prom_rel_type>
</prom_rel_element>
<prom_rel_element>
<rank_start>22</rank_start>
<rank_end>24</rank_end>
<dest_sid>england3</dest_sid>
<prom_rel_type>relegation</prom_rel_type>
</prom_rel_element>
</prom_rel>

View File

@ -7,8 +7,7 @@
<symbol>flag_en.png</symbol>
<first_week>1</first_week>
<week_gap>1</week_gap>
<average_skill>60</average_skill>
<average_stadium_capacity>20000</average_stadium_capacity>
<average_skill>600</average_skill>
<prom_rel>
@ -21,12 +20,14 @@
<rank_start>1</rank_start>
<rank_end>2</rank_end>
<dest_sid>england2</dest_sid>
<prom_rel_type>promotion</prom_rel_type>
</prom_rel_element>
<prom_rel_element>
<rank_start>21</rank_start>
<rank_end>24</rank_end>
<dest_sid>england4</dest_sid>
<prom_rel_type>relegation</prom_rel_type>
</prom_rel_element>
</prom_rel>

View File

@ -7,26 +7,27 @@
<symbol>flag_en.png</symbol>
<first_week>1</first_week>
<week_gap>1</week_gap>
<average_skill>50</average_skill>
<average_stadium_capacity>10000</average_stadium_capacity>
<average_skill>500</average_skill>
<prom_rel>
<prom_games>
<prom_games_dest_sid>england2</prom_games_dest_sid>
<cup>cup_england_prom_games</cup>
<prom_games_dest_sid>england3</prom_games_dest_sid>
<cup>cup_england_prom_games2</cup>
</prom_games>
<prom_rel_element>
<rank_start>1</rank_start>
<rank_end>2</rank_end>
<dest_sid>england2</dest_sid>
<rank_end>3</rank_end>
<dest_sid>england3</dest_sid>
<prom_rel_type>promotion</prom_rel_type>
</prom_rel_element>
<prom_rel_element>
<rank_start>21</rank_start>
<rank_start>23</rank_start>
<rank_end>24</rank_end>
<dest_sid>england4</dest_sid>
<dest_sid>england5</dest_sid>
<prom_rel_type>relegation</prom_rel_type>
</prom_rel_element>
</prom_rel>

View File

@ -7,20 +7,15 @@
<symbol>flag_en.png</symbol>
<first_week>1</first_week>
<week_gap>1</week_gap>
<average_skill>40</average_skill>
<average_stadium_capacity>7500</average_stadium_capacity>
<average_skill>400</average_skill>
<prom_rel>
<prom_games>
<prom_games_dest_sid>england4</prom_games_dest_sid>
<cup>cup_england_prom_games</cup>
</prom_games>
<prom_rel_element>
<rank_start>1</rank_start>
<rank_end>1</rank_end>
<rank_end>2</rank_end>
<dest_sid>england4</dest_sid>
<prom_rel_type>promotion</prom_rel_type>
</prom_rel_element>
</prom_rel>

Binary file not shown.

After

Width:  |  Height:  |  Size: 97 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 352 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 353 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 596 B

After

Width:  |  Height:  |  Size: 302 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 377 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 386 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 346 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 689 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 310 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B