2005-10-20 15:45:00 +00:00
|
|
|
/*
|
2005-11-26 16:52:51 +00:00
|
|
|
league_struct.h
|
|
|
|
|
2005-10-20 15:45:00 +00:00
|
|
|
Bygfoot Football Manager -- a small and simple GTK2-based
|
|
|
|
football management game.
|
|
|
|
|
|
|
|
http://bygfoot.sourceforge.net
|
|
|
|
|
|
|
|
Copyright (C) 2005 Gyözö Both (gyboth@bygfoot.com)
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU General Public License
|
|
|
|
as published by the Free Software Foundation; either version 2
|
|
|
|
of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program; if not, write to the Free Software
|
|
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
|
2004-12-30 16:48:19 +00:00
|
|
|
#ifndef LEAGUE_STRUCT_H
|
|
|
|
#define LEAGUE_STRUCT_H
|
|
|
|
|
2005-01-09 20:21:22 +00:00
|
|
|
#include "bygfoot.h"
|
2005-03-15 15:10:57 +00:00
|
|
|
#include "cup_struct.h"
|
2005-04-29 19:48:02 +00:00
|
|
|
#include "stat_struct.h"
|
|
|
|
#include "table_struct.h"
|
2005-03-15 15:10:57 +00:00
|
|
|
|
|
|
|
enum PromRelType
|
|
|
|
{
|
|
|
|
PROM_REL_PROMOTION = 0,
|
|
|
|
PROM_REL_RELEGATION,
|
|
|
|
PROM_REL_NONE
|
|
|
|
};
|
2004-12-30 16:48:19 +00:00
|
|
|
|
|
|
|
/**
|
|
|
|
An element representing a promotion or relegation rule.
|
|
|
|
This means, a PromRelElement specifies a range of teams
|
|
|
|
that get promoted or relegated to a given league.
|
|
|
|
@see PromRel
|
|
|
|
*/
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
gint ranks[2]; /**< The range of teams; default 0 and 0 */
|
2008-11-23 11:48:36 +00:00
|
|
|
gint from_table; /**< From which table to pick the teams in case there are several. Default: 0. */
|
2005-10-09 09:35:44 +00:00
|
|
|
gchar *dest_sid; /**< The id of the destination league. Default "" */
|
2005-03-15 15:10:57 +00:00
|
|
|
gint type; /**< Type. Promotion or relegation or none. */
|
2004-12-30 16:48:19 +00:00
|
|
|
} PromRelElement;
|
|
|
|
|
2008-12-23 10:33:55 +00:00
|
|
|
/**
|
|
|
|
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;
|
|
|
|
|
2004-12-30 16:48:19 +00:00
|
|
|
/**
|
|
|
|
This structure specifies how promotion and relegation is handled in a league.
|
|
|
|
It contains promotion and relegation rules in an array and possibly also
|
|
|
|
a rule about promotion games to be played.
|
|
|
|
@see PromRelElement
|
|
|
|
*/
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
/** Array with promotion/relegation rules.
|
|
|
|
@see PromRelElement
|
|
|
|
*/
|
|
|
|
GArray *elements;
|
2005-03-15 15:10:57 +00:00
|
|
|
|
2008-12-23 10:33:55 +00:00
|
|
|
/** Array with promotion/relegation games.
|
|
|
|
@see PromGames
|
|
|
|
*/
|
|
|
|
GArray *prom_games;
|
|
|
|
|
2004-12-30 16:48:19 +00:00
|
|
|
} PromRel;
|
|
|
|
|
2008-11-20 20:20:18 +00:00
|
|
|
/**
|
|
|
|
A structure describing a different league joined to the current one
|
|
|
|
in the sense that there are matches played between teams from both leagues
|
|
|
|
like in the US conference system.
|
|
|
|
*/
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
/** Sid of the joined league. */
|
|
|
|
gchar *sid;
|
|
|
|
/** How many round robins to schedule. */
|
|
|
|
gint rr;
|
|
|
|
} JoinedLeague;
|
|
|
|
|
2008-11-22 16:51:31 +00:00
|
|
|
/**
|
|
|
|
A structure containing a week when a new table
|
|
|
|
gets created with nullified values for the league;
|
|
|
|
older tables get stored.
|
|
|
|
*/
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
gint add_week;
|
|
|
|
gchar *name;
|
|
|
|
} NewTable;
|
|
|
|
|
2004-12-30 16:48:19 +00:00
|
|
|
/**
|
|
|
|
Representation of a league.
|
|
|
|
@see PromRel
|
|
|
|
@see Table
|
|
|
|
*/
|
|
|
|
typedef struct
|
|
|
|
{
|
|
|
|
/** Default value "" */
|
2005-10-09 09:35:44 +00:00
|
|
|
gchar *name, *short_name, *sid, *symbol;
|
2005-06-01 18:19:02 +00:00
|
|
|
/** The sid of the player names file the
|
|
|
|
teams in the league take their names from.
|
|
|
|
Default: 'general', meaning the 'player_names_general.xml' file. */
|
2005-10-09 09:35:44 +00:00
|
|
|
gchar *names_file;
|
2004-12-30 16:48:19 +00:00
|
|
|
/** @see PromRel */
|
|
|
|
PromRel prom_rel;
|
|
|
|
/** Numerical id, as opposed to the string id 'sid'. */
|
|
|
|
gint id;
|
2005-05-24 18:31:07 +00:00
|
|
|
/** Layer of the league; this specifies which leagues are
|
|
|
|
parallel. */
|
|
|
|
gint layer;
|
2004-12-30 16:48:19 +00:00
|
|
|
/** The first week games are played. Default 1. */
|
|
|
|
gint first_week;
|
|
|
|
/** Weeks between two matchdays. Default 1. */
|
|
|
|
gint week_gap;
|
2007-02-17 12:06:30 +00:00
|
|
|
/** Here we store intervals of fixtures during which
|
|
|
|
there should be two matches in a week instead of one. */
|
|
|
|
GArray *two_match_weeks[2];
|
2005-05-06 16:35:19 +00:00
|
|
|
/** How many round robins are played. Important for
|
2008-11-20 20:20:18 +00:00
|
|
|
small leagues with 10 teams or so. Default: 2. */
|
2005-05-06 16:35:19 +00:00
|
|
|
gint round_robins;
|
2007-02-17 12:06:30 +00:00
|
|
|
/** Number of weeks between the parts of a round robin. */
|
2008-12-14 10:37:10 +00:00
|
|
|
GArray *rr_breaks;
|
2004-12-30 16:48:19 +00:00
|
|
|
/** Number of yellow cards until a player gets banned.
|
|
|
|
Default 1000 (which means 'off', basically). */
|
|
|
|
gint yellow_red;
|
2005-09-21 17:42:41 +00:00
|
|
|
/** Average talent for the first season. Default: -1. */
|
|
|
|
gfloat average_talent;
|
2004-12-30 16:48:19 +00:00
|
|
|
/** Array of teams in the league.
|
|
|
|
@see Team */
|
|
|
|
GArray *teams;
|
2008-11-20 20:20:18 +00:00
|
|
|
/** List of leagues joined fixture-wise to this one.
|
|
|
|
@see JoinedLeague */
|
|
|
|
GArray *joined_leagues;
|
2008-11-21 17:00:47 +00:00
|
|
|
/** League tables. Usually only one, sometimes more than one is created.
|
2004-12-30 16:48:19 +00:00
|
|
|
@see Table */
|
2008-11-21 17:00:47 +00:00
|
|
|
GArray *tables;
|
2008-11-22 16:51:31 +00:00
|
|
|
/** Array holding NewTable elements specifying when to add
|
|
|
|
a new table to the tables array. */
|
|
|
|
GArray *new_tables;
|
2005-01-09 20:21:22 +00:00
|
|
|
/** The fixtures of a season for the league. */
|
|
|
|
GArray *fixtures;
|
2008-11-24 11:16:36 +00:00
|
|
|
/** A gchar pointer array of properties (like "inactive"). */
|
|
|
|
GPtrArray *properties;
|
2005-04-29 19:48:02 +00:00
|
|
|
/** The current league statistics. */
|
|
|
|
LeagueStat stats;
|
2004-12-30 16:48:19 +00:00
|
|
|
} League;
|
|
|
|
|
|
|
|
#endif
|