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

Added new struct style and cup struct.

This commit is contained in:
gyboth 2004-12-23 20:43:43 +00:00
parent d2e3997553
commit ba51e1a908
6 changed files with 136 additions and 45 deletions

View File

@ -35,12 +35,10 @@ enum ExitCodes
EXIT_END EXIT_END
}; };
typedef struct _Country Country;
/** /**
* A struct representing a country. * A struct representing a country.
*/ */
struct _Country typedef struct
{ {
GString *name, /**< Name of the country. */ GString *name, /**< Name of the country. */
*symbol, /**< Symbol of the country, e.g. a flag pixmap. */ *symbol, /**< Symbol of the country, e.g. a flag pixmap. */
@ -50,7 +48,7 @@ struct _Country
GArray *leagues, GArray *leagues,
*cups, *cups,
*supercups; *supercups;
}; } Country;
/** Convenience abbreviation. */ /** Convenience abbreviation. */
#define ligs country.leagues #define ligs country.leagues

1
src/cup.c Normal file
View File

@ -0,0 +1 @@
#include "cup.h"

101
src/cup.h Normal file
View File

@ -0,0 +1,101 @@
#ifndef CUP_H
#define CUP_H
#include "bygfoot.h"
/**
There are only two cup types currently,
national and international cups.
*/
enum CupType
{
CUP_TYPE_NATIONAL = 0,
CUP_TYPE_INTERNATIONAL,
CUP_TYPE_END
};
/** Rules for a round of a cup.
Cups consist of rounds, e.g. the final counts as
a round or the round robin games. */
typedef struct
{
/** Whether there are home and away games or only one leg.
Default: TRUE. */
gboolean home_away;
/** How many times a match gets repeated if there's a draw.
Default: 0. */
gint replay;
/** Whether the matches are on neutral ground.
Default: FALSE. */
gboolean neutral;
/** How many round robin groups there are.
Default: 0 (ie. no round robin). */
gint round_robin_number_of_groups;
/** How many teams advance from each group.
Default: -1. */
gint round_robin_number_of_advance;
/** How many teams advance apart from those that
are specified already (e.g. the first two advance
and additionally the best 3 from all the groups.
Default: -1. */
gint round_robin_number_of_best_advance;
} CupRound;
/**
Rules for choosing teams from the league files.
This could tell us to select the first three teams
from the league 'Italy 1' to participate in the cup.
*/
typedef struct
{
/** The string id of the league we choose from.
Default: "". */
GString *id;
/** The number of teams chosen.
Default: -1 (ie. all teams are chosen). */
gint number_of_teams;
/** The range from which the teams are chosen,
e.g. 2 and 5 means the teams from 2 to 5 are chosen
(given that 'number_of_teams' is 4).
Defaults: -1. */
gint start_idx, end_idx;
/** Whether the teams are chosen randomly,
ie. 3 random teams from the range 1-20.
Default: FALSE. */
gboolean randomly;
} CupChooseTeam;
/**
Structure representing a cup.
*/
typedef struct
{
/** Name and short name of the cup, a pixmap path,
and the string id (e.g. england_fa or so). */
GString *name, *short_name, *symbol, *id;
/** Numerical id.*/
gint nid;
/** The cup type. @see #CupType*/
gint cup_type;
/** Last week (typically the week the final
takes place) and weeks between matchdays. */
gint last_week, week_gap;
/** Number of yellow cards that lead to a missed match. */
gint yellow_red;
/** These are only read if it's an international cup. */
gint average_skill, average_talent;
/** Array with rules how teams are chosen.
@see #CupChooseTeam */
GArray *choose_teams;
/** The ChooseTeam rule according to which
the participant from the user's league is chosen.
This is irrelevant for national cups.
@see #CupChooseTeam */
CupChooseTeam user;
/** The rounds of the cup.
@see #CupRound*/
GArray *rounds;
} Cup;
#endif

View File

@ -4,16 +4,10 @@
#include "bygfoot.h" #include "bygfoot.h"
#include "team.h" #include "team.h"
typedef struct _League League;
typedef struct _Table Table;
typedef struct _TableElement TableElement;
typedef struct _PromRel PromRel;
typedef struct _PromRelElement PromRelElement;
/** /**
Table element values. Table element values.
@see _TableElement @see TableElement
@see _Table @see Table
*/ */
enum TableElementValues enum TableElementValues
{ {
@ -29,70 +23,70 @@ enum TableElementValues
/** /**
An element representing a team in the tables. An element representing a team in the tables.
@see _Table @see Table
@see #TableElementValues @see #TableElementValues
*/ */
struct _TableElement typedef struct
{ {
gint team_id; gint team_id;
gint values[TABLE_END]; gint values[TABLE_END];
}; } TableElement;
/** /**
A table belonging to a league or a cup with round robin. A table belonging to a league or a cup with round robin.
@see _TableElement @see TableElement
*/ */
struct _Table typedef struct
{ {
GString *name; GString *name;
GString *league_id; GString *league_id;
GArray *elements; GArray *elements;
}; } Table;
/** /**
An element representing a promotion or relegation rule. An element representing a promotion or relegation rule.
This means, a PromRelElement specifies a range of teams This means, a PromRelElement specifies a range of teams
that get promoted or relegated to a given league. that get promoted or relegated to a given league.
@see _PromRel @see PromRel
*/ */
struct _PromRelElement typedef struct
{ {
gint ranks[2]; /**< The range of teams; default 0 and 0 */ gint ranks[2]; /**< The range of teams; default 0 and 0 */
GString *dest_id; /**< The id of the destination league. Default "" */ GString *dest_id; /**< The id of the destination league. Default "" */
}; } PromRelElement;
/** /**
This structure specifies how promotion and relegation is handled in a league. This structure specifies how promotion and relegation is handled in a league.
It contains promotion and relegation rules in an array and possibly also It contains promotion and relegation rules in an array and possibly also
a rule about promotion games to be played. a rule about promotion games to be played.
@see _PromRelElement @see PromRelElement
*/ */
struct _PromRel typedef struct
{ {
/** The id of the league the promotion games winner gets promoted to. Default "" */ /** The id of the league the promotion games winner gets promoted to. Default "" */
GString *prom_games_dest_id; GString *prom_games_dest_id;
/** The id of the cup that specifies the promotion games format. /** The id of the cup that specifies the promotion games format.
We regard the promotion games as a national cup like any other cup. We regard the promotion games as a national cup like any other cup.
@see _Cup @see Cup
*/ */
GString *prom_games_cup_id; /* "" */ GString *prom_games_cup_id; /* "" */
/** Array with promotion/relegation rules. /** Array with promotion/relegation rules.
@see _PromRelElement @see PromRelElement
*/ */
GArray *elements; GArray *elements;
}; } PromRel;
/** /**
Representation of a league. Representation of a league.
@see _PromRel @see PromRel
@see _Table @see Table
*/ */
struct _League typedef struct
{ {
/** Default value "" */ /** Default value "" */
GString *name, *short_name, *id, *symbol; GString *name, *short_name, *id, *symbol;
/** @see _PromRel */ /** @see PromRel */
PromRel prom_rel; PromRel prom_rel;
/** Numerical id, as opposed to the string id. */ /** Numerical id, as opposed to the string id. */
gint nid; gint nid;
@ -103,13 +97,15 @@ struct _League
/** Number of yellow cards until a player gets banned. /** Number of yellow cards until a player gets banned.
Default 1000 (which means 'off', basically). */ Default 1000 (which means 'off', basically). */
gint yellow_red; gint yellow_red;
/** Average skill and talent values for the first season. */
gint average_skill, average_talent;
/** Array of teams in the league. /** Array of teams in the league.
@see _Team */ @see Team */
GArray *teams; GArray *teams;
/** League table. /** League table.
@see _Table */ @see Table */
Table table; Table table;
}; } League;
League League

View File

@ -4,9 +4,6 @@
#include "variables.h" #include "variables.h"
#include "bygfoot.h" #include "bygfoot.h"
typedef struct _Player Player;
typedef struct _PlayerCard PlayerCard;
/** /**
Player attribute indices. Player attribute indices.
*/ */
@ -36,7 +33,7 @@ enum PlayerAttributes
Representation of a player. Representation of a player.
@see #PlayerAttributes @see #PlayerAttributes
*/ */
struct _Player typedef struct
{ {
GString *name; GString *name;
gint values[PLAYER_END]; gint values[PLAYER_END];
@ -45,13 +42,13 @@ struct _Player
GArray *cards; GArray *cards;
/** Player history. To be specified. */ /** Player history. To be specified. */
GArray *history; GArray *history;
}; } Player;
/** /**
Cards in different cups are counted separately for players; Cards in different cups are counted separately for players;
for each league or cup the cards are stored in such a struct. for each league or cup the cards are stored in such a struct.
*/ */
struct _PlayerCard typedef struct
{ {
/** Numerical id of the league or cup. */ /** Numerical id of the league or cup. */
gint league_cup_id; gint league_cup_id;
@ -59,6 +56,6 @@ struct _PlayerCard
gint yellow; gint yellow;
/** Number of weeks the player is banned. */ /** Number of weeks the player is banned. */
gint red; gint red;
}; } PlayerCard;
#endif #endif

View File

@ -5,13 +5,11 @@
#include "maths.h" #include "maths.h"
#include "player.h" #include "player.h"
typedef struct _Team Team;
/** /**
Structure representing a team. Structure representing a team.
@see _Player @see Player
*/ */
struct _Team typedef struct
{ {
GString *name; GString *name;
/** /**
@ -32,7 +30,7 @@ struct _Team
Array of players. Array of players.
*/ */
GArray *players; GArray *players;
}; } Team;
Team Team
team_new(void); team_new(void);