Commit Graph

1673 Commits

Author SHA1 Message Date
Tom Stellard 996bccc739 Implement promotion and relegation rules for reserve teams
This adds some new rules for promoting and relegating reserve
teams:

+ Reserve teams will not be promoted into a league that contains its
  first team or a higher-level reserve team.
+ If a first team or higher-level reserve team is relegated to a league
  with a lower reserve team, then that reserve team will also be relegated.

In order to enable these rules, you must add the
<reserve_promotion_rules>default</reserve_promotion_rules> tag to your
contry xml file, and also define reserve teams in your league/team_defs
file using the <first_team> and <reserve_level> tags.
2020-12-24 10:43:39 -08:00
Tom Stellard f928273875 Add first_team and reserve_level tags to team element
The first_team tag can be used to indicate that a team is a 'reserve
team'.  The value for this new tag is the name of the first team
for this reserve team.  The reserve_level is used to indicate if this
is the 2nd, 3rd, 4th, etc. team for the first team. For example:

<team>
  <team_name>Blue</team_name>
</team>
<team>
  <team_name>Blue 2</team_name>
  <first_team>Blue</first_team>
  <reserve_level>2</reserve_level>
</team>
<team>
  <team_name>Blue 3</team_name>
  <first_team>Blue</first_team>
  <reserve_level>3</reserve_level>
</team>
2020-12-24 10:43:39 -08:00
Tom Stellard 8bca18d8a2 Add number_of_teams tag to prom_rel_element
This tag is intended to be used for leagues that may have some teams in
the league that are ineligible for promotions (e.g. reserve teams).
Often these leagues will promote 2 of the top 3 teams or something
similar, so if one team is ineligible, the league would still be able
to promote 2 teams.  Below is an example of how to model this scenario
with the new tag:

<prom_rel_element>
  <rank_start>1</rank_start>
  <rank_end>3</rank_end>
  <number_of_teams>2</number_of_teams>
</prom_rel_element>
2020-12-24 10:43:39 -08:00
Tom Stellard 6201ec917a Import 2019/2020 faroe island definitions from forum
https://bygfoot.sourceforge.io/forum/viewtopic.php?f=12&t=1119

Official team names have been removed.
2020-12-24 10:43:39 -08:00
Tom Stellard a31ea36c08 Cache some commonly used constants
All constants were stored in a g_datalist structure, which has very slow
lookups.  This was not ideally for constansts used during game play
which are accessed thousands of times.  Caching these values makes the
game simulations about 2 times faster.
2020-12-24 10:43:39 -08:00
Tom Stellard f23d0a733a Remove use of deprecated glib type 2020-12-24 10:43:39 -08:00
Tom Stellard 10bd42a15e cmake: Silence warnings in gtk headers 2020-12-24 10:43:39 -08:00
Tom Stellard 9aa4099375 Fix unused variable from d195a59c80 2020-12-24 10:43:39 -08:00
Tom Stellard 5dc2c6ab46 Optimize team_get_fixture()
When searching for a team's next fixture, only search in leagues that the team
is actually in.  This improves performance a lot in countries with many leagues.
I see about a 7x speed up simulating the first 6 weeks of English leagues using
billys_boots 2019/2020 definitions from the forums.
2020-12-24 10:43:39 -08:00
Tom Stellard c1bc51a33b Simplify team_get_fixture() with an early continue 2020-12-24 10:43:39 -08:00
Tom Stellard d2a82fe888 Simplify code in team_get_fixture() to make it more readable 2020-12-24 10:43:39 -08:00
Tom Stellard 863fefd371 Make team_get_fixture() return const pointer 2020-12-24 10:43:39 -08:00
Tom Stellard bc506ef7c4 Make fixture_get() return const pointer 2020-12-24 10:43:39 -08:00
Tom Stellard 3b54d38578 Add --random-seed option
This flag can be used to set the seed for the random number generator.  This
is mainly meant for testing.
2020-12-24 10:43:39 -08:00
Tom Stellard 981cd51ef2 Validate country definitions on startup
Try to load all the country definitions on startup to ensure that they
are all valid.  Invalid XML can cause bygfoot to abort when simulating
matches and make users lose any unsaved progress.
2020-12-24 10:43:39 -08:00
Tom Stellard 6889fd148e Remove references to some cups that have no definitions 2020-12-24 10:43:39 -08:00
Tom Stellard a527695341 Fix invalid xml in algeria and angola league definitions 2020-12-24 10:43:39 -08:00
Tom Stellard fd4f1e4657 Remove Byte Order Mark and No-Break Space characters from xml files
The xml parser does not know how to parse these.
2020-12-24 10:43:39 -08:00
Tom Stellard 1d8058f7cf Fix African cup names 2020-12-24 10:43:39 -08:00
Tom Stellard bfa6430bef Speed up game simulations by using g_datalist_id_get_data()
g_datalist_id_get_data() performs much better than g_datalist_get_data()
because it uses a hash based lookup instead of string compare.
I tested this by starting a game with an English Premier league team
and then simulating to week 6.  According to perf's cycle counts, this
patch makes this test case about 10 times faster.

There is still room for improvement.  We currently re-compute the GQuark
value for every lookup, but we could pre-compute the GQuark once for each
option key and then use that value when looking up the data.
2020-12-24 10:43:39 -08:00
Tom Stellard f5521480a6 cmake: Add some fixes to get a minimal build/install working 2020-12-24 10:43:39 -08:00
Tom Stellard 315689583c zip: Remove usage of OF macros
These are only needed to support very old K&R C compilers[1].  gentoo has also
renamed these macros in its zlib package[2] which means this code was failing
to compile there.

[1] https://trac.osgeo.org/gdal/ticket/6220
[2] https://bugs.gentoo.org/383179
2020-12-24 10:43:39 -08:00
gunnar_g 19bc5b2171 add CmakeList files 2020-12-24 10:43:39 -08:00
Tom Stellard 70ac753abc Add rules files that were used to convert SVN repo to git 2020-12-24 10:43:35 -08:00
mrsmola 9dc3ee83e1 added svn-properties 2020-12-24 10:39:25 -08:00
mrsmola 689b721c97 Added svn properties 2020-12-24 10:39:25 -08:00
mrsmola fe9be6f19d Added svn properties 2020-12-24 10:39:25 -08:00
mrsmola 81033de648 added svn properties 2020-12-24 10:39:25 -08:00
mrsmola a623dcbbd7 changed svn-properties 2020-12-24 10:39:25 -08:00
mrsmola 971a50aa9e changed mime-type to text/xml 2020-12-24 10:39:25 -08:00
mrsmola 524129cb67 changed mime-type to text/xml 2020-12-24 10:39:25 -08:00
mrsmola a1108efd16 changed mime-type to text/xml 2020-12-24 10:39:25 -08:00
mrsmola 7302f6656c changed mime-type to text/xml 2020-12-24 10:39:25 -08:00
mrsmola 86c96be85c changed mime-type to text/xml 2020-12-24 10:39:25 -08:00
mrsmola 6215647748 changed mime-type to text/xml 2020-12-24 10:39:25 -08:00
mrsmola 2775e779e9 changed mime-type to text/xml 2020-12-24 10:39:25 -08:00
mrsmola 5c5edaa079 changed mime-type to text/xml 2020-12-24 10:39:25 -08:00
mrsmola 0802d261fb changed mime-type to text/xml 2020-12-24 10:39:25 -08:00
mrsmola 722b1ed51f changed mime-type to text/xml 2020-12-24 10:39:25 -08:00
mrsmola fcf6c149e6 changed mime-type to text/xml 2020-12-24 10:39:25 -08:00
mrsmola d3149d6d00 changed mime-type to text/xml 2020-12-24 10:39:25 -08:00
mrsmola 9c930fa6cb changed mime-type to text/xml 2020-12-24 10:39:25 -08:00
mrsmola c89dd5e21b changed mime-type to text/xml 2020-12-24 10:39:25 -08:00
mrsmola 7317ea2d54 changed mime-type to text/xml 2020-12-24 10:39:25 -08:00
mrsmola e82d7880a0 changed mime-type to image/jpeg 2020-12-24 10:39:25 -08:00
mrsmola 07de1866b5 changed mime-type to image/png 2020-12-24 10:39:25 -08:00
mrsmola be18d56725 changed mime-type to image/png 2020-12-24 10:39:25 -08:00
mrsmola a2684d3976 changed mime-type to application/octet-stream 2020-12-24 10:39:25 -08:00
mrsmola bacb4fef52 Set up after initial start 2020-12-24 10:39:18 -08:00
mrsmola 4a518680b3 Copy of the last stable Version from CVS 2020-12-24 10:39:17 -08:00