bygfoot/src/xml.c

179 lines
4.8 KiB
C
Raw Normal View History

2005-04-06 00:14:39 +02:00
#include "cup.h"
#include "file.h"
#include "free.h"
#include "gui.h"
#include "league.h"
#include "misc.h"
2005-05-02 16:39:30 +02:00
#include "option.h"
2005-04-06 00:14:39 +02:00
#include "support.h"
#include "table.h"
#include "transfer_struct.h"
#include "user.h"
#include "variables.h"
#include "xml.h"
#include "xml_loadsave_cup.h"
#include "xml_loadsave_fixtures.h"
#include "xml_loadsave_league.h"
2005-04-30 15:57:58 +02:00
#include "xml_loadsave_league_stat.h"
2005-04-06 00:14:39 +02:00
#include "xml_loadsave_live_game.h"
#include "xml_loadsave_table.h"
#include "xml_loadsave_teams.h"
#include "xml_loadsave_transfers.h"
#include "xml_loadsave_users.h"
void
xml_load_users(const gchar *dirname, const gchar *basename)
{
gint i;
gchar buf[SMALL];
free_users(TRUE);
xml_loadsave_users_read(dirname, basename);
for(i=0;i<users->len;i++)
{
sprintf(buf, "%s/%s___user_%02d_options", dirname, basename, i);
file_load_opt_file(buf, &usr(i).options);
sprintf(buf, "%s/%s___user_%02d_live_game.xml", dirname, basename, i);
xml_loadsave_live_game_read(buf, &usr(i).live_game);
}
}
void
xml_load_leagues(const gchar *dirname, const gchar *basename)
{
gint i;
gchar buf[SMALL];
GPtrArray *dir_contents = NULL;
sprintf(buf, "%s___league_", basename);
dir_contents = file_dir_get_contents(dirname, buf, ".xml");
free_leagues_array(&ligs, TRUE);
for(i=0;i<dir_contents->len;i++)
2005-10-05 21:59:37 +02:00
if(!g_str_has_suffix((gchar*)g_ptr_array_index(dir_contents, i), "_table.xml") &&
!g_str_has_suffix((gchar*)g_ptr_array_index(dir_contents, i), "_fixtures.xml") &&
!g_str_has_suffix((gchar*)g_ptr_array_index(dir_contents, i), "_teams.xml") &&
!g_str_has_suffix((gchar*)g_ptr_array_index(dir_contents, i), "_stat.xml") &&
!g_strrstr((gchar*)g_ptr_array_index(dir_contents, i), "_promcup"))
xml_load_league(dirname, (gchar*)g_ptr_array_index(dir_contents, i),
2005-04-06 00:14:39 +02:00
dir_contents);
2005-10-05 21:59:37 +02:00
free_gchar_array(&dir_contents);
2005-04-06 00:14:39 +02:00
}
void
xml_load_league(const gchar *dirname, const gchar *basename, const GPtrArray *dir_contents)
{
gchar buf[SMALL];
2005-04-14 21:07:25 +02:00
League new = league_new(FALSE);
2005-04-06 00:14:39 +02:00
gchar *prefix = g_strndup(basename, strlen(basename) - 4);
sprintf(buf, "%s/%s", dirname, basename);
xml_loadsave_league_read(buf, &new);
g_array_append_val(ligs, new);
2005-06-18 16:45:29 +02:00
sprintf(buf, _("Loading league: %s"),
2005-10-09 11:35:44 +02:00
new.name);
2005-04-06 00:14:39 +02:00
gui_show_progress(
gtk_progress_bar_get_fraction(
GTK_PROGRESS_BAR(lookup_widget(window.progress, "progressbar"))), buf);
2005-08-16 14:49:45 +02:00
if(debug > 80)
printf("%s\n", buf);
2005-04-06 00:14:39 +02:00
sprintf(buf, "%s/%s_teams.xml", dirname, prefix);
xml_loadsave_teams_read(buf, lig(ligs->len - 1).teams);
sprintf(buf, "%s/%s_fixtures.xml", dirname, prefix);
xml_loadsave_fixtures_read(buf, lig(ligs->len - 1).fixtures);
sprintf(buf, "%s/%s_table.xml", dirname, prefix);
xml_loadsave_table_read(buf, &lig(ligs->len - 1).table);
2005-04-30 15:57:58 +02:00
sprintf(buf, "%s/%s_stat.xml", dirname, prefix);
xml_loadsave_league_stat_read(buf, &lig(ligs->len - 1).stats);
2005-04-06 00:14:39 +02:00
g_free(prefix);
}
void
xml_load_cups(const gchar *dirname, const gchar *basename)
{
gint i;
gchar buf[SMALL];
GPtrArray *dir_contents = NULL;
2005-04-14 21:07:25 +02:00
Cup new_cup;
2005-04-06 00:14:39 +02:00
sprintf(buf, "%s___cup_", basename);
dir_contents = file_dir_get_contents(dirname, buf, ".xml");
free_cups_array(&cps, TRUE);
for(i=0;i<dir_contents->len;i++)
{
2005-10-05 21:59:37 +02:00
if(!g_strrstr((gchar*)g_ptr_array_index(dir_contents, i), "_table") &&
!g_str_has_suffix((gchar*)g_ptr_array_index(dir_contents, i), "_fixtures.xml") &&
!g_str_has_suffix((gchar*)g_ptr_array_index(dir_contents, i), "_teams.xml"))
2005-04-14 21:07:25 +02:00
{
new_cup = cup_new(FALSE);
2005-05-08 19:56:26 +02:00
g_array_append_val(cps, new_cup);
xml_load_cup(&g_array_index(cps, Cup, cps->len - 1), dirname,
2005-10-05 21:59:37 +02:00
(gchar*)g_ptr_array_index(dir_contents, i),
2005-04-06 00:14:39 +02:00
dir_contents);
2005-04-14 21:07:25 +02:00
}
2005-04-06 00:14:39 +02:00
}
2005-10-05 21:59:37 +02:00
free_gchar_array(&dir_contents);
2005-04-06 00:14:39 +02:00
}
void
2005-04-14 21:07:25 +02:00
xml_load_cup(Cup *cup, const gchar *dirname, const gchar *basename, const GPtrArray *dir_contents)
2005-04-06 00:14:39 +02:00
{
gchar buf[SMALL];
2005-04-06 00:14:39 +02:00
gchar *prefix = g_strndup(basename, strlen(basename) - 4);
sprintf(buf, "%s/%s", dirname, basename);
2005-04-14 21:07:25 +02:00
xml_loadsave_cup_read(buf, cup);
2005-04-06 00:14:39 +02:00
2005-06-18 16:45:29 +02:00
sprintf(buf, _("Loading cup: %s"),
2005-10-09 11:35:44 +02:00
cup->name);
2005-04-06 00:14:39 +02:00
gui_show_progress(
gtk_progress_bar_get_fraction(
GTK_PROGRESS_BAR(lookup_widget(window.progress, "progressbar"))), buf);
2005-08-16 14:49:45 +02:00
if(debug > 80)
printf("%s\n", buf);
2005-04-06 00:14:39 +02:00
sprintf(buf, "%s/%s_fixtures.xml", dirname, prefix);
2005-05-08 19:56:26 +02:00
xml_loadsave_fixtures_read(buf, cup->fixtures);
2005-04-06 00:14:39 +02:00
g_free(prefix);
}
void
xml_load_transfers(const gchar *dirname, const gchar *basename)
{
gchar buf[SMALL];
sprintf(buf, "%s/%s___transfer_list.xml", dirname, basename);
free_g_array(&transfer_list);
transfer_list = g_array_new(FALSE, FALSE, sizeof(Transfer));
xml_loadsave_transfers_read(buf);
}
2005-10-15 18:49:04 +02:00
void
xml_write_string(FILE *fil, const gchar *string, gint tag, const gchar* indent)
{
if(string == NULL)
return;
fprintf(fil, "%s<_%d>%s</_%d>\n", indent, tag, string, tag);
}