mirror of
https://github.com/tstellar/bygfoot.git
synced 2025-06-05 21:49:20 +02:00
"Live game commentary in xml files."
This commit is contained in:
File diff suppressed because one or more lines are too long
1211
po/bygfoot.pot
1211
po/bygfoot.pot
File diff suppressed because it is too large
Load Diff
@@ -21,11 +21,11 @@ bygfoot_SOURCES = \
|
||||
game_gui.c callbacks.h file.h game_gui.h gui.h league.h live_game.h maths.h misc.h option.h support.h team.h treeview.h user.h variables.h window.h \
|
||||
gui.c gui.h misc.h support.h variables.h window.h \
|
||||
interface.c callbacks.h interface.h support.h \
|
||||
language.c callbacks.h free.h language.h misc.h option.h variables.h window.h \
|
||||
lg_commentary.c free.h lg_commentary.h live_game.h main.h misc.h option.h player.h variables.h \
|
||||
league.c cup.h league.h main.h maths.h misc.h option.h player.h stat.h table.h team.h user.h variables.h \
|
||||
language.c callbacks.h free.h language.h lg_commentary.h misc.h option.h variables.h window.h \
|
||||
lg_commentary.c file.h free.h lg_commentary.h live_game.h main.h misc.h option.h player.h variables.h xml_lg_commentary.h \
|
||||
league.c cup.h free.h league.h main.h maths.h misc.h option.h player.h stat.h table.h team.h user.h variables.h \
|
||||
live_game.c callbacks.h fixture.h free.h game_gui.h game.h lg_commentary.h live_game.h main.h maths.h misc_callback_func.h option.h player.h support.h team.h treeview.h user.h variables.h window.h \
|
||||
load_save.c callbacks.h file.h game_gui.h gui.h load_save.h option.h support.h user.h variables.h xml.h xml_loadsave_cup.h xml_loadsave_league.h xml_loadsave_misc.h xml_loadsave_season_stats.h xml_loadsave_transfers.h xml_loadsave_users.h \
|
||||
load_save.c callbacks.h file.h game_gui.h gui.h language.h load_save.h option.h support.h user.h variables.h xml.h xml_loadsave_cup.h xml_loadsave_league.h xml_loadsave_misc.h xml_loadsave_season_stats.h xml_loadsave_transfers.h xml_loadsave_users.h \
|
||||
main.c file.h free.h language.h live_game.h main.h misc_callbacks.h name_struct.h option.h stat_struct.h transfer_struct.h variables.h window.h \
|
||||
maths.c maths.h misc.h variables.h \
|
||||
misc.c main.h maths.h misc.h \
|
||||
@@ -66,6 +66,7 @@ bygfoot_SOURCES = \
|
||||
xml_cup.c cup.h file.h main.h misc.h option.h variables.h xml_cup.h \
|
||||
xml_country.c file.h free.h misc.h option.h variables.h xml_country.h xml_cup.h xml_league.h \
|
||||
xml_league.c cup_struct.h file.h free.h league.h misc.h table.h team.h variables.h xml_cup.h xml_league.h \
|
||||
xml_lg_commentary.c free.h lg_commentary.h live_game.h misc.h variables.h xml_lg_commentary.h \
|
||||
xml_name.c file.h free.h misc.h name.h variables.h xml_name.h \
|
||||
xml_team.c file.h free.h main.h misc.h option.h player.h team.h variables.h xml_team.h
|
||||
|
||||
|
@@ -81,6 +81,7 @@ enum ExitCodes
|
||||
EXIT_OPTION_NOT_FOUND, /**< An option couldn't be found. */
|
||||
EXIT_POINTER_NOT_FOUND, /**< We didn't find a pointer needed. */
|
||||
EXIT_INT_NOT_FOUND, /**< We didn't find an integer value (mostly indices). */
|
||||
EXIT_FILE_NOT_FOUND, /**< Some file couldn't be found. */
|
||||
EXIT_NO_SUPPORT_DIR, /**< No support directory found. */
|
||||
EXIT_CUP_ROUND_ERROR, /**< Too few cup rounds. */
|
||||
EXIT_LOAD_TEAM_DEF, /**< Error loading a team definition file. */
|
||||
|
@@ -142,7 +142,7 @@ void
|
||||
on_button_transfers_clicked (GtkButton *button,
|
||||
gpointer user_data)
|
||||
{
|
||||
if(opt_int("int_opt_disable_transfers"))
|
||||
if(sett_int("int_opt_disable_transfers"))
|
||||
game_gui_print_message(_("Transfers are disabled in this country definition."));
|
||||
else if(week < transfer_get_deadline())
|
||||
{
|
||||
@@ -393,7 +393,7 @@ void
|
||||
on_menu_put_on_transfer_list_activate (GtkMenuItem *menuitem,
|
||||
gpointer user_data)
|
||||
{
|
||||
if(opt_int("int_opt_disable_transfers"))
|
||||
if(sett_int("int_opt_disable_transfers"))
|
||||
game_gui_print_message(_("Transfers are disabled in this country definition."));
|
||||
else if(selected_row[0] == -1)
|
||||
game_gui_print_message(_("You haven't selected a player."));
|
||||
@@ -716,7 +716,7 @@ on_eventbox_boost_button_press_event (GtkWidget *widget,
|
||||
else
|
||||
return FALSE;
|
||||
|
||||
if(new_boost == 1 && opt_int("int_opt_disable_boost_on"))
|
||||
if(new_boost == 1 && sett_int("int_opt_disable_boost_on"))
|
||||
{
|
||||
new_boost = 0;
|
||||
game_gui_print_message(_("Boost ON is disabled in this country definition."));
|
||||
@@ -739,7 +739,7 @@ void
|
||||
on_menu_show_finances_activate (GtkMenuItem *menuitem,
|
||||
gpointer user_data)
|
||||
{
|
||||
if(opt_int("int_opt_disable_finances"))
|
||||
if(sett_int("int_opt_disable_finances"))
|
||||
{
|
||||
game_gui_print_message(_("Finances are disabled in this country definition."));
|
||||
return;
|
||||
@@ -758,7 +758,7 @@ void
|
||||
on_menu_show_stadium_activate (GtkMenuItem *menuitem,
|
||||
gpointer user_data)
|
||||
{
|
||||
if(opt_int("int_opt_disable_stadium"))
|
||||
if(sett_int("int_opt_disable_stadium"))
|
||||
{
|
||||
game_gui_print_message(_("Stadium management is disabled in this country definition."));
|
||||
return;
|
||||
@@ -783,7 +783,7 @@ void
|
||||
on_menu_offer_new_contract_activate (GtkMenuItem *menuitem,
|
||||
gpointer user_data)
|
||||
{
|
||||
if(opt_int("int_opt_disable_contracts"))
|
||||
if(sett_int("int_opt_disable_contracts"))
|
||||
{
|
||||
game_gui_print_message(_("Contracts are disabled in this country definition."));
|
||||
return;
|
||||
|
@@ -811,6 +811,7 @@ cup_get_round_name(const Cup *cup, gint round, gchar *buf)
|
||||
switch(cup->rounds->len - round)
|
||||
{
|
||||
default:
|
||||
/* A cup stage, e.g. Last 32 when there are only 32 teams left. */
|
||||
sprintf(buf, _("Last %d"), (gint)rint(powf(2, cup->rounds->len - round)));
|
||||
break;
|
||||
case 1:
|
||||
|
@@ -25,7 +25,7 @@ finance_update_user_weekly(User *user)
|
||||
const_float("float_finance_scout_factor3"),
|
||||
const_float("float_finance_scout_factor4")};
|
||||
|
||||
if(opt_int("int_opt_disable_finances"))
|
||||
if(sett_int("int_opt_disable_finances"))
|
||||
return;
|
||||
|
||||
if(week % 2 == 1)
|
||||
|
@@ -793,8 +793,10 @@ fixture_result_to_buf(const Fixture *fix, gchar *buf)
|
||||
sprintf(local_buf, "%d - %d", math_sum_int_array(fix->result[0], 3),
|
||||
math_sum_int_array(fix->result[1], 3));
|
||||
if(fix->result[0][2] + fix->result[1][2] != 0)
|
||||
/* Game was decided in penalty shoot-out. */
|
||||
strcat(local_buf, _(" p."));
|
||||
else if(fix->result[0][1] + fix->result[1][1] != 0)
|
||||
/* Game was decided in extra time. */
|
||||
strcat(local_buf, _(" e.t."));
|
||||
|
||||
if(fix->second_leg)
|
||||
|
@@ -450,10 +450,16 @@ free_cup_choose_team(CupChooseTeam *cup_choose_team)
|
||||
void
|
||||
free_variables(void)
|
||||
{
|
||||
gint i;
|
||||
|
||||
free_option_list(&options, FALSE);
|
||||
free_option_list(&settings, FALSE);
|
||||
free_option_list(&constants, FALSE);
|
||||
free_option_list(&constants_app, FALSE);
|
||||
|
||||
for(i=0;i<LIVE_GAME_EVENT_END;i++)
|
||||
free_g_string_array(&lg_commentary[i]);
|
||||
|
||||
free_g_string(&save_file);
|
||||
|
||||
g_rand_free(rand_generator);
|
||||
|
@@ -252,7 +252,7 @@ game_initialize(Fixture *fix)
|
||||
ticket_income =
|
||||
fix->attendance * const_int("int_team_stadium_ticket_price");
|
||||
|
||||
if(!opt_int("int_opt_disable_finances") && user_idx[0] != -1 && fix->home_advantage)
|
||||
if(!sett_int("int_opt_disable_finances") && user_idx[0] != -1 && fix->home_advantage)
|
||||
{
|
||||
usr(user_idx[0]).money += ticket_income;
|
||||
usr(user_idx[0]).money_in[1][MON_IN_TICKET] += ticket_income;
|
||||
@@ -863,8 +863,10 @@ game_update_stats_player(gpointer live_game, gconstpointer live_game_unit)
|
||||
array_index = (own_goal) ? !team : team;
|
||||
|
||||
if(live_game_unit_before(unit, -1)->event.type == LIVE_GAME_EVENT_PENALTY)
|
||||
/* A goal scored with penalty. */
|
||||
strcpy(buf2, _(" (P)"));
|
||||
else if(live_game_unit_before(unit, -1)->event.type == LIVE_GAME_EVENT_FREE_KICK)
|
||||
/* A goal scored with a free kick. */
|
||||
strcpy(buf2, _(" (FK)"));
|
||||
else if(unit->event.type == LIVE_GAME_EVENT_OWN_GOAL)
|
||||
strcpy(buf2, _(" (OG)"));
|
||||
|
@@ -122,7 +122,7 @@ game_gui_live_game_set_hscale(const LiveGameUnit *unit, GtkHScale *hscale)
|
||||
((unit->possession == 0) ? 1 : -1)));
|
||||
}
|
||||
else if(unit->event.type == LIVE_GAME_EVENT_POST ||
|
||||
unit->event.type == LIVE_GAME_EVENT_MISSED ||
|
||||
unit->event.type == LIVE_GAME_EVENT_MISS ||
|
||||
unit->event.type == LIVE_GAME_EVENT_SAVE ||
|
||||
unit->event.type == LIVE_GAME_EVENT_CROSS_BAR)
|
||||
gdk_color_parse(const_app("string_game_gui_live_game_scale_color_miss"), &color);
|
||||
@@ -199,7 +199,7 @@ game_gui_set_main_window_header(void)
|
||||
gui_label_set_text_from_int(label_round, week_round, FALSE);
|
||||
gui_label_set_text_from_int(label_rank, week_round, FALSE);
|
||||
|
||||
if(!opt_int("int_opt_disable_finances"))
|
||||
if(!sett_int("int_opt_disable_finances"))
|
||||
{
|
||||
misc_print_grouped_int(current_user.money, buf, FALSE);
|
||||
gtk_label_set_text(label_money, buf);
|
||||
@@ -303,7 +303,7 @@ game_gui_read_radio_items(GtkWidget *widget)
|
||||
{
|
||||
current_user.tm->boost = i - 1;
|
||||
|
||||
if(current_user.tm->boost == 1 && opt_int("int_opt_disable_boost_on"))
|
||||
if(current_user.tm->boost == 1 && sett_int("int_opt_disable_boost_on"))
|
||||
{
|
||||
current_user.tm->boost = 0;
|
||||
game_gui_print_message(_("Boost ON is disabled in this country definition."));
|
||||
|
@@ -3,6 +3,7 @@
|
||||
#include "callbacks.h"
|
||||
#include "free.h"
|
||||
#include "language.h"
|
||||
#include "lg_commentary.h"
|
||||
#include "misc.h"
|
||||
#include "option.h"
|
||||
#include "variables.h"
|
||||
@@ -35,6 +36,8 @@ language_set(gint index)
|
||||
}
|
||||
}
|
||||
|
||||
lg_commentary_load_commentary_file_from_option();
|
||||
|
||||
free_g_string_array(&codes);
|
||||
}
|
||||
|
||||
|
@@ -1,3 +1,6 @@
|
||||
#include <locale.h>
|
||||
|
||||
#include "file.h"
|
||||
#include "free.h"
|
||||
#include "lg_commentary.h"
|
||||
#include "live_game.h"
|
||||
@@ -6,6 +9,7 @@
|
||||
#include "option.h"
|
||||
#include "player.h"
|
||||
#include "variables.h"
|
||||
#include "xml_lg_commentary.h"
|
||||
|
||||
/** Generate commentary for the live game event in the unit.
|
||||
@param unit The unit we comment.
|
||||
@@ -14,22 +18,35 @@ void
|
||||
lg_commentary_generate(LiveGameUnit *unit, const Fixture *fix)
|
||||
{
|
||||
gchar *strings[LG_TOKEN_END][2];
|
||||
GPtrArray *commentaries = NULL;
|
||||
gchar buf[SMALL];
|
||||
GPtrArray **commentaries = NULL;
|
||||
gint i;
|
||||
|
||||
lg_commentary_set_strings(strings, unit, fix);
|
||||
|
||||
commentaries = lg_commentary_get_commentaries(unit->event.type);
|
||||
if(unit->event.type == LIVE_GAME_EVENT_STYLE_CHANGE_ALL_OUT_DEFEND ||
|
||||
unit->event.type == LIVE_GAME_EVENT_STYLE_CHANGE_DEFEND ||
|
||||
unit->event.type == LIVE_GAME_EVENT_STYLE_CHANGE_BALANCED ||
|
||||
unit->event.type == LIVE_GAME_EVENT_STYLE_CHANGE_ATTACK ||
|
||||
unit->event.type == LIVE_GAME_EVENT_STYLE_CHANGE_ALL_OUT_ATTACK)
|
||||
commentaries = &lg_commentary[LIVE_GAME_EVENT_STYLE_CHANGE_ALL_OUT_DEFEND];
|
||||
else if(unit->event.type == LIVE_GAME_EVENT_BOOST_CHANGE_ANTI ||
|
||||
unit->event.type == LIVE_GAME_EVENT_BOOST_CHANGE_OFF ||
|
||||
unit->event.type == LIVE_GAME_EVENT_BOOST_CHANGE_ON)
|
||||
commentaries = &lg_commentary[LIVE_GAME_EVENT_BOOST_CHANGE_ANTI];
|
||||
else
|
||||
commentaries = &lg_commentary[unit->event.type];
|
||||
|
||||
for(i=0;i<commentaries->len;i++)
|
||||
*commentaries = misc_randomise_g_pointer_array(*commentaries);
|
||||
|
||||
for(i=0;i<(*commentaries)->len;i++)
|
||||
{
|
||||
if(lg_commentary_replace_tokens(
|
||||
((GString*)g_ptr_array_index(commentaries, i))->str, strings, buf))
|
||||
((GString*)g_ptr_array_index((*commentaries), i))->str, strings, buf))
|
||||
break;
|
||||
}
|
||||
|
||||
if(i == commentaries->len)
|
||||
if(i == (*commentaries)->len)
|
||||
{
|
||||
g_warning("lg_commentary_generate: didn't find fitting commentary for unit type %d \n",
|
||||
unit->event.type);
|
||||
@@ -40,8 +57,6 @@ lg_commentary_generate(LiveGameUnit *unit, const Fixture *fix)
|
||||
|
||||
for(i=LG_TOKEN_ATTENDANCE;i<LG_TOKEN_END;i++)
|
||||
g_free(strings[i][1]);
|
||||
|
||||
free_g_string_array(&commentaries);
|
||||
}
|
||||
|
||||
/** Try to replace all special tokens in the string and write the result to dest.
|
||||
@@ -70,253 +85,6 @@ lg_commentary_replace_tokens(const gchar *string, gchar *strings[][2], gchar *de
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
/** Get an array of commentary strings with tokens depending on
|
||||
the live game event. */
|
||||
GPtrArray*
|
||||
lg_commentary_get_commentaries(gint event_type)
|
||||
{
|
||||
GPtrArray *commentaries = g_ptr_array_new();
|
||||
|
||||
if(event_type == LIVE_GAME_EVENT_STYLE_CHANGE_ALL_OUT_DEFEND ||
|
||||
event_type == LIVE_GAME_EVENT_STYLE_CHANGE_DEFEND ||
|
||||
event_type == LIVE_GAME_EVENT_STYLE_CHANGE_BALANCED ||
|
||||
event_type == LIVE_GAME_EVENT_STYLE_CHANGE_ATTACK ||
|
||||
event_type == LIVE_GAME_EVENT_STYLE_CHANGE_ALL_OUT_ATTACK)
|
||||
g_ptr_array_add(commentaries, g_string_new(_("TT has changed their style to EX")));
|
||||
else if(event_type == LIVE_GAME_EVENT_BOOST_CHANGE_ANTI ||
|
||||
event_type == LIVE_GAME_EVENT_BOOST_CHANGE_OFF ||
|
||||
event_type == LIVE_GAME_EVENT_BOOST_CHANGE_ON)
|
||||
g_ptr_array_add(commentaries, g_string_new(_("TT has changed their boost to EX")));
|
||||
else
|
||||
{
|
||||
switch(event_type)
|
||||
{
|
||||
default:
|
||||
g_warning("lg_commentary_get_commentaries: unknown event type %d. \n", event_type);
|
||||
break;
|
||||
case LIVE_GAME_EVENT_GENERAL:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 feeds the ball through to P1")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 threads a great ball to P1 ")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Lovely pass from P2 releases P1")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Long floating pass from P2 finds P1")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Good passing move across the pitch and down the right")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Quick passing move down the left")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 cross controlled by P1 who slips past his man")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Another decent move down the wing")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 latches onto P2's pass")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 needles ball through players and finds P1")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 controls it with his chest and passes to P1")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 heads the ball towards P1")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 twisting and turning again")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 rips through the midfield")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 spins past his marker")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_LOST_POSSESSION:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 wins the ball with a perfectly timed challenge")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Bad control by P2 lets P1 steal the ball off him")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 takes the ball away from P2 with a sliding tackle")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Loose ball falls to P1")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_FOUL:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Oww, nasty tackle on P1")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Surely that's a sending off offence")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 knocks over P1 with a double footed lunge")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Crunching challenge on P1")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 gets his legs taken away from him by P2")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Slicing challenge by P2 on P1")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Vicious tackle from P2 leaves P1 lying on the floor in agony")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Ouch that's got to hurt")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Extremely high boot from P2 sends P1 to the ground")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_SCORING_CHANCE:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 charges towards goal and shoots!")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 spins and shoots")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Long ball from P2 finds P1 at far post")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 can't quite get it under control but his miss kick heads toward goal")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 shoots from 22 yards looks like it's going wide")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 dribbles into the box, turns inside the defence and fires")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 cuts in from the left flank and shoots")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 tries his luck from 30 yards")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 arrows shot towards top left corner")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 shoots from close range")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Great ball from P2 sends P1 one on one with the goalkeeper")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1's overhead kick heads towards the top right hand corner")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 spins past two defenders, wrong foots the keeper and back heels the ball towards goal")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 lays the ball off to P1 who sends a rocket of a shot towards goal")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_GOAL:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Goal!!!")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("And the ball is smacked into the back of the net!!!")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 scores!!!")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("And the ball flies straight past P2 and into the back of the net!!!")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("The ball flies past P2 and it's a goal!!!")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 wheels away in celebration after a great goal sent the fans wild")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2's despairing dive can't keep P1's shot out and the ball is in the back of the net!!!")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("The dance ignites the fans, P1 celebrates in his own special fashion")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_MISSED:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 fired wide!")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 should have squared the ball went alone and lashed wide")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Defender clears")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 curls ball over")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Defender back to block just as it seemed to open up")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 smacks into row Z")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("And the shot creeps just past the post")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_SAVE:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2's fingertips flicks it wide")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 forced to tip P1's shot over the crossbar")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Great pace shown by P1 to get to the ball first but P2 produced superb block tackle")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Low shot taken well to his left by P2")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 makes a superb reflex save to tip wide")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 runs at P1 and blocks shot with ankle")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Easy save for the goalkeeper")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Caught well by P2")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_START_MATCH:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("It's a crowd of AT here as the whistle blows")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("We're under way")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("The two teams are greeted by a wall of noise as they take to the pitch")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("The crowd roars as the players run out from the tunnel to start the match")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("A cloudless day, gives the impression this match is going to sparkle")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("AT fans can't be wrong, this is the match we have all come to watch")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("The referee gets the nod from the linesman and we are away")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("The clash of the titans kicks off")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("The referees are ready, players set, the battle begins")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_HALF_TIME:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("It's half time")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("It's a RE at half time.")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("It's a RE at half time, TL's manager has to find something special to spur his team on.")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("TL heads into the tunnel to await the managers scolding")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("TW are just 45 minutes away from a stunning victory")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("TL's manager cops a rollicking from the fans as he turns from the dugout")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("There are two teams out there and only one of them is playing football")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_EXTRA_TIME:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("After a close match the game heads into extra time")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("It's still RE: extra time")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("After MI minutes it's still RE: extra time")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Who will breakdown first, extra time it is")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("It's down to determination and fitness now as we head into extra time")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_PENALTIES:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Who would have thought MI minutes ago it would come down to this")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("And now we have the tense drama of a penalty shoot out")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Two teams, equall till now in every respect,face off in penalties")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("The teams cant do it so now it's one on one. Striker against goalie")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_END_MATCH:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("The match is over!")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("TW are triumphant!!!")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("The fans boo TL off the pitch")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("After MI minutes the match ends with a RE")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("The referee checks his watch and blows for full time")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Well that's that. It ends RE")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("RE, what an astonishing result for TW")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_OWN_GOAL:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Ohh no, the ball ricocheted off P1 into the net")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("It's a pinball in the penalty box, finally spinning off P1 across the line")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Oh that's a great shot and it's deflected off P1 and into the back of the net")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 passes the ball back to his goalie, oh no the keepers missed it! It's an own goal by P1!")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("That little missunderstanding has cost TT a goal")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_HEADER:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 chips the ball towards P1 who heads the ball towards goal")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Diving header by P1")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("He just floated in midair for ages then thunder heads it towards home")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_POST:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Sweet strike by P1, hits the post")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("And the shot glances wide off the post")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("I'm suprised the post has managed to withstand that cracking shot")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_CROSS_BAR:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Ball dinked over P2 but hit crossbar and bounced to safety")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("The ball smacks into the crossbar with P2 stranded")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 seemed to be everywhere at once, finally tipping the ball off the crossbar")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_PENALTY:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 steps up to take the penalty")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 has a chance to score with a penalty kick")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 has missed a penalty before but he now has a chance to redeem himself")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("You have to bury the nerves, swallow and concentrate when your taking penalties")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_FREE_KICK:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Short free-kick from P1")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 drives free kick low and hard")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 takes free-kick quickly and curls around wall")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 curls the free kick over the wall")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Free kick: P1 plays the ball out wide")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Free kick: P1 hits a long ball up the pitch")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Free kick whipped across the face of goal by P1")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_FOUL_YELLOW:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 for dangerous slide tackle on P1")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 for foul on P1")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 for kicking ball away ")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 for time wasting")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 for handball")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 for stopping P1 taking a quick free-kick")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 is booked for repeated dissent")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_FOUL_RED:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 is reprimanded for high kicking")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 is given his marching orders for contempt")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 for malicious showing of studs")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 for intentional handball")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 is sent off for stopping a clear goal scoring opportunity")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 has been red carded for punching P1")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 for swearing at opposition fans")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_FOUL_RED_INJURY:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 fouls and the stretcher bearers come racing on with P1 lying in agony on the turf")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Foul by P2; P1 seems to be injured... he might have to be substituted")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_SEND_OFF:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 has been sent off")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_INJURY:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 will have to go off after what seems an ankle injury")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 looks like he's badly injured")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_TEMP_INJURY:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 has pulled a muscle but should be able to continue")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 has picked up a slight knock")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P1 has a large cut above his left eye but it has been patched up and he will be able to continue ")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_STADIUM_BREAKDOWN:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("TH is undergoing stadium problems")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("The floodlights have just gone out")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_STADIUM_RIOTS:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("The peasants are revolting")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("And the fans are throwing flares onto the pitch")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("The riot police have moved in to stop fighting between sets of oppostion supporters")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("A fan has managed to get onto the pitch and has begun to attack the referee")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("The fans pour onto the pitch in a full scale pitch invasion")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_STADIUM_FIRE:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Fire consumes TT's stadium")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("Away fans have set fire to the north stand")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("A flare chucked onto the touchline has started a massive blaze")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("A speaker has gone up in flames and the blaze spreading around the entire stadium")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_SUBSTITUTION:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("TT make a substitution, P1 comes on to replace P2")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 goes off to applause from the fans, P1 replaces him")));
|
||||
g_ptr_array_add(commentaries, g_string_new(_("P2 is booed off the pitch as he is replaced by P1")));
|
||||
break;
|
||||
case LIVE_GAME_EVENT_STRUCTURE_CHANGE:
|
||||
g_ptr_array_add(commentaries, g_string_new(_("TT has changed their structure to EX")));
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
return misc_randomise_g_pointer_array(commentaries);
|
||||
}
|
||||
|
||||
/** Get the strings corresponding to the commentary tokens. */
|
||||
void
|
||||
lg_commentary_set_strings(gchar *strings[][2], const LiveGameUnit *unit, const Fixture *fix)
|
||||
@@ -405,7 +173,7 @@ lg_commentary_get_player_name(const LiveGameUnit *unit, const Fixture *fix, gboo
|
||||
unit->event.player)->name->str);
|
||||
}
|
||||
else if(unit->event.type == LIVE_GAME_EVENT_GOAL ||
|
||||
unit->event.type == LIVE_GAME_EVENT_MISSED ||
|
||||
unit->event.type == LIVE_GAME_EVENT_MISS ||
|
||||
unit->event.type == LIVE_GAME_EVENT_SAVE ||
|
||||
unit->event.type == LIVE_GAME_EVENT_POST ||
|
||||
unit->event.type == LIVE_GAME_EVENT_CROSS_BAR)
|
||||
@@ -493,3 +261,55 @@ lg_commentary_get_extra_data(const LiveGameUnit *unit, const Fixture *fix)
|
||||
|
||||
return g_strdup(buf);
|
||||
}
|
||||
|
||||
/** Load the appropriate commentary file by evaluating
|
||||
the language option. */
|
||||
void
|
||||
lg_commentary_load_commentary_file_from_option(void)
|
||||
{
|
||||
gchar buf[SMALL], commentary_file[SMALL];
|
||||
gchar *cur_locale = setlocale(LC_MESSAGES, NULL);
|
||||
|
||||
if(strcmp(opt_str("string_opt_language_code"), "") == 0)
|
||||
{
|
||||
strncpy(buf, cur_locale, 2);
|
||||
buf[2] = '\0';
|
||||
}
|
||||
else if(strcmp(opt_str("string_opt_language_code"), "C") == 0)
|
||||
strcpy(buf, "en");
|
||||
else
|
||||
{
|
||||
strncpy(buf, opt_str("string_opt_language_code"), 2);
|
||||
buf[2] = '\0';
|
||||
}
|
||||
|
||||
sprintf(commentary_file, "lg_commentary_%s.xml", buf);
|
||||
|
||||
lg_commentary_load_commentary_file(commentary_file, FALSE);
|
||||
}
|
||||
|
||||
/** Load the commentary file given. Abort if not found and abort=TRUE,
|
||||
load default english file otherwise. */
|
||||
void
|
||||
lg_commentary_load_commentary_file(const gchar *commentary_file, gboolean abort)
|
||||
{
|
||||
gchar *file_name = file_find_support_file(commentary_file, FALSE);
|
||||
gchar buf[SMALL];
|
||||
|
||||
if(file_name != NULL)
|
||||
{
|
||||
xml_lg_commentary_read(file_name);
|
||||
g_free(file_name);
|
||||
}
|
||||
else
|
||||
{
|
||||
if(abort)
|
||||
{
|
||||
sprintf(buf, "lg_commentary_load_commentary_file: file %s not found \n",
|
||||
file_name);
|
||||
main_exit_program(EXIT_FILE_NOT_FOUND, buf);
|
||||
}
|
||||
else
|
||||
lg_commentary_load_commentary_file("lg_commentary_en.xml", TRUE);
|
||||
}
|
||||
}
|
||||
|
@@ -33,14 +33,16 @@ lg_commentary_set_strings(gchar *strings[][2], const LiveGameUnit *unit, const F
|
||||
void
|
||||
lg_commentary_generate(LiveGameUnit *unit, const Fixture *fix);
|
||||
|
||||
GPtrArray*
|
||||
lg_commentary_get_commentaries(gint event_type);
|
||||
|
||||
gchar*
|
||||
lg_commentary_get_extra_data(const LiveGameUnit *unit, const Fixture *fix);
|
||||
|
||||
gboolean
|
||||
lg_commentary_replace_tokens(const gchar *string, gchar *strings[][2], gchar *dest);
|
||||
|
||||
#endif
|
||||
void
|
||||
lg_commentary_load_commentary_file_from_option(void);
|
||||
|
||||
void
|
||||
lg_commentary_load_commentary_file(const gchar *commentary_file, gboolean abort);
|
||||
|
||||
#endif
|
||||
|
@@ -674,7 +674,7 @@ live_game_event_general(gboolean create_new)
|
||||
}
|
||||
else if(last_unit.event.type == LIVE_GAME_EVENT_GOAL ||
|
||||
last_unit.event.type == LIVE_GAME_EVENT_OWN_GOAL ||
|
||||
last_unit.event.type == LIVE_GAME_EVENT_MISSED ||
|
||||
last_unit.event.type == LIVE_GAME_EVENT_MISS ||
|
||||
last_unit.event.type == LIVE_GAME_EVENT_SAVE ||
|
||||
last_unit.event.type == LIVE_GAME_EVENT_POST ||
|
||||
last_unit.event.type == LIVE_GAME_EVENT_CROSS_BAR)
|
||||
@@ -1474,7 +1474,7 @@ live_game_event_get_verbosity(gint event_type)
|
||||
event_type == LIVE_GAME_EVENT_HEADER ||
|
||||
event_type == LIVE_GAME_EVENT_FREE_KICK ||
|
||||
event_type == LIVE_GAME_EVENT_POST ||
|
||||
event_type == LIVE_GAME_EVENT_MISSED ||
|
||||
event_type == LIVE_GAME_EVENT_MISS ||
|
||||
event_type == LIVE_GAME_EVENT_CROSS_BAR ||
|
||||
event_type == LIVE_GAME_EVENT_SAVE)
|
||||
return_value = 1;
|
||||
|
@@ -25,7 +25,7 @@ enum LiveGameEventType
|
||||
LIVE_GAME_EVENT_GOAL,
|
||||
LIVE_GAME_EVENT_OWN_GOAL,
|
||||
LIVE_GAME_EVENT_POST,
|
||||
LIVE_GAME_EVENT_MISSED,
|
||||
LIVE_GAME_EVENT_MISS,
|
||||
LIVE_GAME_EVENT_SAVE,
|
||||
LIVE_GAME_EVENT_CROSS_BAR,
|
||||
LIVE_GAME_EVENT_FOUL,
|
||||
|
@@ -2,6 +2,7 @@
|
||||
#include "file.h"
|
||||
#include "gui.h"
|
||||
#include "game_gui.h"
|
||||
#include "language.h"
|
||||
#include "load_save.h"
|
||||
#include "option.h"
|
||||
#include "support.h"
|
||||
@@ -188,6 +189,7 @@ load_save_load_game(const gchar* filename)
|
||||
file_load_opt_file(buf, &options);
|
||||
sprintf(buf, "%s___constants", prefix);
|
||||
file_load_opt_file(buf, &constants);
|
||||
language_set(language_get_code_index(opt_str("string_opt_language_code")) + 1);
|
||||
|
||||
if(debug > 60)
|
||||
printf("load_save_load leagues \n");
|
||||
|
17
src/main.c
17
src/main.c
@@ -54,9 +54,9 @@ main_init_variables(void)
|
||||
|
||||
save_file = g_string_new("");
|
||||
|
||||
constants_app.list =
|
||||
constants_app.list = settings.list =
|
||||
constants.list = options.list = NULL;
|
||||
constants_app.datalist =
|
||||
constants_app.datalist = settings.datalist =
|
||||
constants.datalist = options.datalist = NULL;
|
||||
|
||||
popups_active = 0;
|
||||
@@ -64,17 +64,20 @@ main_init_variables(void)
|
||||
|
||||
timeout_id = -1;
|
||||
|
||||
for(i=0;i<LIVE_GAME_EVENT_END;i++)
|
||||
lg_commentary[i] = g_ptr_array_new();
|
||||
|
||||
file_load_conf_files();
|
||||
|
||||
language_set(language_get_code_index(opt_str("string_opt_language_code")) + 1);
|
||||
|
||||
/** Some of these (or all) are disabled (set to 1) in supernational
|
||||
country defs. */
|
||||
option_add(&options, "int_opt_disable_finances", 0, NULL);
|
||||
option_add(&options, "int_opt_disable_transfers", 0, NULL);
|
||||
option_add(&options, "int_opt_disable_stadium", 0, NULL);
|
||||
option_add(&options, "int_opt_disable_contracts", 0, NULL);
|
||||
option_add(&options, "int_opt_disable_boost_on", 0, NULL);
|
||||
option_add(&settings, "int_opt_disable_finances", 0, NULL);
|
||||
option_add(&settings, "int_opt_disable_transfers", 0, NULL);
|
||||
option_add(&settings, "int_opt_disable_stadium", 0, NULL);
|
||||
option_add(&settings, "int_opt_disable_contracts", 0, NULL);
|
||||
option_add(&settings, "int_opt_disable_boost_on", 0, NULL);
|
||||
}
|
||||
|
||||
/**
|
||||
|
11
src/option.c
11
src/option.c
@@ -131,7 +131,10 @@ option_add(OptionList *optionlist, const gchar *name, gint int_value, const gcha
|
||||
{
|
||||
gint i;
|
||||
Option new;
|
||||
gpointer element = g_datalist_get_data(&optionlist->datalist, name);
|
||||
gpointer element = NULL;
|
||||
|
||||
if(optionlist->list != NULL)
|
||||
g_datalist_get_data(&optionlist->datalist, name);
|
||||
|
||||
if(element != NULL)
|
||||
{
|
||||
@@ -143,6 +146,12 @@ option_add(OptionList *optionlist, const gchar *name, gint int_value, const gcha
|
||||
new.value = int_value;
|
||||
new.string_value = (string_value == NULL) ? NULL : g_string_new(string_value);
|
||||
|
||||
if(optionlist->list == NULL)
|
||||
{
|
||||
optionlist->list = g_array_new(FALSE, FALSE, sizeof(Option));
|
||||
g_datalist_init(&optionlist->datalist);
|
||||
}
|
||||
|
||||
g_array_append_val(optionlist->list, new);
|
||||
|
||||
for(i=0;i<optionlist->list->len;i++)
|
||||
|
@@ -33,6 +33,9 @@
|
||||
#define const_int(name) option_int(name, &constants)
|
||||
#define const_float(name) option_float(name, &constants)
|
||||
|
||||
#define sett_int(name) option_int(name, &settings)
|
||||
#define sett_set_int(name, value) option_set_int(name, &settings, value)
|
||||
|
||||
gfloat
|
||||
option_float(const gchar *name, OptionList *optionlist);
|
||||
|
||||
|
@@ -1012,11 +1012,11 @@ player_update_weekly(Team *tm, gint idx)
|
||||
{
|
||||
pl->age += 0.0192;
|
||||
|
||||
if(!opt_int("int_opt_disable_contracts"))
|
||||
if(!sett_int("int_opt_disable_contracts"))
|
||||
pl->contract -= 0.0192;
|
||||
}
|
||||
|
||||
if(!opt_int("int_opt_disable_contracts") && debug < 50 &&
|
||||
if(!sett_int("int_opt_disable_contracts") && debug < 50 &&
|
||||
pl->contract * 12 <= opt_user_int("int_opt_user_contract_limit") &&
|
||||
(pl->contract + 0.0192) * 12 > opt_user_int("int_opt_user_contract_limit"))
|
||||
{
|
||||
|
12
src/team.c
12
src/team.c
@@ -512,10 +512,13 @@ team_attribute_to_char(gint attribute, gint value)
|
||||
switch(value)
|
||||
{
|
||||
case -1:
|
||||
/* Boost value. */
|
||||
return _("ANTI");
|
||||
case 0:
|
||||
/* Boost value. */
|
||||
return _("OFF");
|
||||
case 1:
|
||||
/* Boost value. */
|
||||
return _("ON");
|
||||
}
|
||||
break;
|
||||
@@ -967,15 +970,18 @@ team_write_own_results(const Team *tm, gchar *buf, gboolean sort)
|
||||
|
||||
if(res[((Fixture*)g_ptr_array_index(matches, i))->teams[0] != current_user.tm] >
|
||||
res[((Fixture*)g_ptr_array_index(matches, i))->teams[0] == current_user.tm])
|
||||
/* a won match */
|
||||
sprintf(buf2, _("W %d : %d"),
|
||||
res[((Fixture*)g_ptr_array_index(matches, i))->teams[0] != current_user.tm],
|
||||
res[((Fixture*)g_ptr_array_index(matches, i))->teams[0] == current_user.tm]);
|
||||
else if(res[((Fixture*)g_ptr_array_index(matches, i))->teams[0] != current_user.tm] <
|
||||
res[((Fixture*)g_ptr_array_index(matches, i))->teams[0] == current_user.tm])
|
||||
/* a lost match */
|
||||
sprintf(buf2, _("L %d : %d"),
|
||||
res[((Fixture*)g_ptr_array_index(matches, i))->teams[0] != current_user.tm],
|
||||
res[((Fixture*)g_ptr_array_index(matches, i))->teams[0] == current_user.tm]);
|
||||
else
|
||||
/* a drawn match */
|
||||
sprintf(buf2, _("Dw %d : %d"),
|
||||
res[((Fixture*)g_ptr_array_index(matches, i))->teams[0] != current_user.tm],
|
||||
res[((Fixture*)g_ptr_array_index(matches, i))->teams[0] == current_user.tm]);
|
||||
@@ -985,11 +991,13 @@ team_write_own_results(const Team *tm, gchar *buf, gboolean sort)
|
||||
|
||||
if(((Fixture*)g_ptr_array_index(matches, i))->teams[0] == current_user.tm)
|
||||
{
|
||||
/* a match at home */
|
||||
sprintf(buf3, _("%s (H) "), buf2);
|
||||
place = 0;
|
||||
}
|
||||
else
|
||||
{
|
||||
/* a match away */
|
||||
sprintf(buf3, _("<span background='%s' foreground='%s'>%s (A) </span> "),
|
||||
const_app("string_treeview_live_game_commentary_away_bg"),
|
||||
const_app("string_treeview_live_game_commentary_away_fg"),
|
||||
@@ -999,6 +1007,7 @@ team_write_own_results(const Team *tm, gchar *buf, gboolean sort)
|
||||
}
|
||||
else
|
||||
{
|
||||
/* a match on neutral ground */
|
||||
sprintf(buf3, _("%s (N) "), buf2);
|
||||
place = -1;
|
||||
}
|
||||
@@ -1048,11 +1057,14 @@ team_write_results(const Team *tm, gchar *result_buf, gchar *goals_buf)
|
||||
g_ptr_array_index(latest_fixtures, i))->
|
||||
result[(((Fixture*)g_ptr_array_index(latest_fixtures, i))->teams[0] == tm)], 2);
|
||||
if(res[0] == res[1])
|
||||
/* draw */
|
||||
strcat(result_buf, _("Dw "));
|
||||
else if(res[(((Fixture*)g_ptr_array_index(latest_fixtures, i))->teams[0] == tm)] >
|
||||
res[(((Fixture*)g_ptr_array_index(latest_fixtures, i))->teams[0] != tm)])
|
||||
/* lost */
|
||||
strcat(result_buf, _("L "));
|
||||
else
|
||||
/* won */
|
||||
strcat(result_buf, _("W "));
|
||||
}
|
||||
|
||||
|
@@ -20,7 +20,7 @@ transfer_update(void)
|
||||
gint i, j;
|
||||
|
||||
if(week > transfer_get_deadline() ||
|
||||
opt_int("int_opt_disable_transfers"))
|
||||
sett_int("int_opt_disable_transfers"))
|
||||
return;
|
||||
|
||||
if(week == transfer_get_deadline())
|
||||
|
@@ -134,8 +134,8 @@ treeview_set_up_team_selection_treeview(GtkTreeView *treeview)
|
||||
gtk_tree_view_column_add_attribute(col, renderer,
|
||||
"text", 3);
|
||||
|
||||
/* Average skill */
|
||||
col = gtk_tree_view_column_new();
|
||||
/* Average skill */
|
||||
gtk_tree_view_column_set_title(col, _("Av.Sk."));
|
||||
gtk_tree_view_column_set_sort_column_id(col, 4);
|
||||
gtk_tree_view_append_column(treeview, col);
|
||||
@@ -244,17 +244,28 @@ treeview_set_up_player_list(GtkTreeView *treeview, gint *attributes, gint max,
|
||||
GtkCellRenderer *renderer;
|
||||
gchar *titles[PLAYER_LIST_ATTRIBUTE_END] =
|
||||
{_("Name"),
|
||||
/* Current position of a player. */
|
||||
_("CPos"),
|
||||
/* Position of a player. */
|
||||
_("Pos"),
|
||||
/* Current skill of a player. */
|
||||
_("CSk"),
|
||||
/* Skill of a player. */
|
||||
_("Sk"),
|
||||
/* Fitness of a player. */
|
||||
_("Fit"),
|
||||
/* Games of a player. */
|
||||
_("Ga"),
|
||||
/* Shots of a player. */
|
||||
_("Sh"),
|
||||
/* Goals of a player. */
|
||||
_("Go"),
|
||||
/* Status of a player. */
|
||||
_("Status"),
|
||||
/* Yellow cards of a player. */
|
||||
_("YC"),
|
||||
_("Age"),
|
||||
/* Estimated talent of a player. */
|
||||
_("Etal"),
|
||||
_("Value"),
|
||||
_("Wage"),
|
||||
@@ -651,6 +662,7 @@ treeview_create_game_stats(LiveGame *live_game)
|
||||
gchar buf[2][SMALL];
|
||||
gchar buf3[SMALL];
|
||||
gchar *categories[LIVE_GAME_STAT_VALUE_END] =
|
||||
/* 'Normal' goals, ie. no penalties or free kicks. */
|
||||
{_("Goals (regular)"),
|
||||
_("Shots"),
|
||||
_("Shot %"),
|
||||
@@ -1021,6 +1033,7 @@ treeview_table_write_header(GtkListStore *ls, const Table *table, gint number)
|
||||
symbol = cup_from_clid(table->clid)->symbol->str;
|
||||
if(g_array_index(cup_from_clid(table->clid)->rounds, CupRound,
|
||||
table->round).tables->len > 1)
|
||||
/* A group of a round robin stage of a cup. */
|
||||
sprintf(buf, _("%s Group %d"), cup_from_clid(table->clid)->name->str, number);
|
||||
else
|
||||
sprintf(buf, "%s", cup_from_clid(table->clid)->name->str);
|
||||
@@ -1134,13 +1147,21 @@ treeview_set_up_table(GtkTreeView *treeview)
|
||||
GtkCellRenderer *renderer;
|
||||
gchar *titles[9] =
|
||||
{_("Team"),
|
||||
/* Games played (a number). */
|
||||
_("PL"),
|
||||
/* Games won. */
|
||||
_("W"),
|
||||
/* Games drawn. */
|
||||
_("Dw"),
|
||||
/* Games lost. */
|
||||
_("L"),
|
||||
/* Goals for. */
|
||||
_("GF"),
|
||||
/* Goals against. */
|
||||
_("GA"),
|
||||
/* Goal difference. */
|
||||
_("GD"),
|
||||
/* Points. */
|
||||
_("PTS")};
|
||||
|
||||
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
|
||||
@@ -1254,6 +1275,7 @@ treeview_create_finances(const User* user)
|
||||
_("Physio"),
|
||||
_("Scout"),
|
||||
_("Journey costs"),
|
||||
/* Money paid to players a user fired. */
|
||||
_("Compensations")};
|
||||
|
||||
GtkTreeIter iter;
|
||||
@@ -1264,6 +1286,7 @@ treeview_create_finances(const User* user)
|
||||
G_TYPE_STRING);
|
||||
|
||||
gtk_list_store_append(ls, &iter);
|
||||
/* Finances balance. */
|
||||
gtk_list_store_set(ls, &iter, 0, _("Bi-weekly balance"), 1, "", 2, "", -1);
|
||||
|
||||
for(i=0;i<MON_IN_TRANSFERS;i++)
|
||||
@@ -1288,6 +1311,7 @@ treeview_create_finances(const User* user)
|
||||
|
||||
misc_print_grouped_int(balance, buf, FALSE);
|
||||
gtk_list_store_append(ls, &iter);
|
||||
/* Finances balance. */
|
||||
gtk_list_store_set(ls, &iter, 0, _("Balance"), 1, "", 2, "", -1);
|
||||
if(balance >= 0)
|
||||
strcpy(buf2, buf);
|
||||
@@ -1353,6 +1377,7 @@ treeview_create_finances(const User* user)
|
||||
2, "", -1);
|
||||
|
||||
misc_print_grouped_int(user->sponsor.benefit, buf, FALSE);
|
||||
/* Contract time and money a sponsor pays. */
|
||||
sprintf(buf2, _("%.1f months / %s"), ((gfloat)user->sponsor.contract) / 4, buf);
|
||||
gtk_list_store_append(ls, &iter);
|
||||
gtk_list_store_set(ls, &iter, 0, _("Contract / Money"), 1, buf2, 2, "", -1);
|
||||
@@ -1554,6 +1579,7 @@ treeview_create_next_opponent(void)
|
||||
|
||||
team_write_own_results(opp, buf, FALSE);
|
||||
gtk_list_store_append(ls, &iter);
|
||||
/* The user's results against a specific team. */
|
||||
gtk_list_store_set(ls, &iter, 0, _("Your results"), 1, buf, -1);
|
||||
|
||||
return GTK_TREE_MODEL(ls);
|
||||
@@ -1781,6 +1807,8 @@ treeview_create_player_info(const Player *pl)
|
||||
_("Wage"),
|
||||
_("Contract"),
|
||||
_("Games/Goals\n"),
|
||||
/* 'Limit' is the number of yellow cards until a player gets
|
||||
banned automatically for a match. */
|
||||
_("Yellow cards (limit)\n"),
|
||||
_("Banned\n"),
|
||||
_("Career values"),
|
||||
@@ -1925,7 +1953,9 @@ treeview_set_up_user_history(GtkTreeView *treeview)
|
||||
gint i;
|
||||
GtkTreeViewColumn *col;
|
||||
GtkCellRenderer *renderer;
|
||||
gchar *titles[3] ={_("Sea"), _("Week"), _("Team")};
|
||||
/* Season. */
|
||||
gchar *titles[3] ={_("Sea"),
|
||||
_("Week"), _("Team")};
|
||||
|
||||
gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview),
|
||||
GTK_SELECTION_NONE);
|
||||
@@ -1990,7 +2020,9 @@ treeview_create_league_stats(GtkListStore *ls, const LeagueStat *league_stat)
|
||||
gchar *team_icons[2] = {const_app("string_treeview_league_stats_off_teams_icon"),
|
||||
const_app("string_treeview_league_stats_def_teams_icon")};
|
||||
gchar *player_titles[2][2] = {{_("Best goal scorers"), _("Shot %")},
|
||||
{_("Best goalkeepers"), _("Save %")}};
|
||||
{_("Best goalkeepers"),
|
||||
/* % of saves for goalies (#goals / #shots) */
|
||||
_("Save %")}};
|
||||
gchar *player_icons[2] = {const_app("string_treeview_league_stats_scorers_icon"),
|
||||
const_app("string_treeview_league_stats_goalies_icon")};
|
||||
gchar *colour_fg = NULL, *colour_bg = NULL;
|
||||
@@ -2041,7 +2073,9 @@ treeview_create_league_stats(GtkListStore *ls, const LeagueStat *league_stat)
|
||||
gtk_list_store_append(ls, &iter);
|
||||
treeview_helper_insert_icon(ls, &iter, 0, player_icons[i]);
|
||||
gtk_list_store_set(ls, &iter, 1, const_int("int_treeview_helper_int_empty"),
|
||||
/* Goals. */
|
||||
2, player_titles[i][0], 3, _("Go"),
|
||||
/* Goals per game. */
|
||||
4, _("Go/Ga"), 5, player_titles[i][1], -1);
|
||||
|
||||
for(j=0;j<players[i]->len;j++)
|
||||
@@ -2330,6 +2364,7 @@ treeview_create_language_list(void)
|
||||
misc_separate_strings(const_str("string_language_symbols"));
|
||||
|
||||
gtk_list_store_append(ls, &iter);
|
||||
/* Language is system-set (not user chosen). */
|
||||
gtk_list_store_set(ls, &iter, 0, NULL, 1, _("System"), -1);
|
||||
|
||||
for(i=0;i<names->len;i++)
|
||||
|
@@ -186,8 +186,8 @@ treeview_helper_live_game_icon(gint event_type)
|
||||
return const_app("string_live_game_event_cross_bar_icon");
|
||||
else if(event_type == LIVE_GAME_EVENT_SAVE)
|
||||
return const_app("string_live_game_event_save_icon");
|
||||
else if(event_type == LIVE_GAME_EVENT_MISSED)
|
||||
return const_app("string_live_game_event_missed_icon");
|
||||
else if(event_type == LIVE_GAME_EVENT_MISS)
|
||||
return const_app("string_live_game_event_miss_icon");
|
||||
else if(event_type == LIVE_GAME_EVENT_FOUL)
|
||||
return const_app("string_live_game_event_foul_icon");
|
||||
else if(event_type == LIVE_GAME_EVENT_FOUL_YELLOW)
|
||||
@@ -776,6 +776,7 @@ treeview_helper_player_info_banned_to_cell(GtkCellRenderer *renderer, const GArr
|
||||
for(i=0;i<cards->len;i++)
|
||||
if(g_array_index(cards, PlayerCard, i).red > 0)
|
||||
{
|
||||
/* Ban info of a player in the format: 'Cup/league name: Number of weeks banned' */
|
||||
sprintf(buf2, _("%s: %d weeks\n"),
|
||||
league_cup_get_name_string(g_array_index(cards, PlayerCard, i).clid),
|
||||
g_array_index(cards, PlayerCard, i).red);
|
||||
@@ -811,6 +812,8 @@ treeview_helper_player_info_yellow_to_cell(GtkCellRenderer *renderer, const GArr
|
||||
g_array_index(cards, PlayerCard, i).yellow, yellow_red);
|
||||
}
|
||||
else
|
||||
/* Yellow cards of a player in a cup/league. No limit means there isn't a limit
|
||||
after which the player gets banned for a match automatically. */
|
||||
sprintf(buf2, _("%s: %d (no limit)\n"),
|
||||
league_cup_get_name_string(g_array_index(cards, PlayerCard, i).clid),
|
||||
g_array_index(cards, PlayerCard, i).yellow);
|
||||
@@ -960,6 +963,7 @@ treeview_helper_player_name_to_cell(GtkCellRenderer *renderer, gchar *buf, const
|
||||
strcpy(buf, pl->name->str);
|
||||
if(pl->team == current_user.tm &&
|
||||
opt_user_int("int_opt_user_penalty_shooter") == pl->id)
|
||||
/* Penalty shooter. */
|
||||
strcat(buf, _(" (P)"));
|
||||
|
||||
if(off != NULL)
|
||||
@@ -1065,6 +1069,7 @@ treeview_helper_player_status_to_cell(GtkCellRenderer *renderer, gchar *buf, con
|
||||
|
||||
if(pl->health != PLAYER_INJURY_NONE)
|
||||
{
|
||||
/* Injury info. */
|
||||
sprintf(buf, _("INJ(%d)"), pl->recovery);
|
||||
g_object_set(renderer, "background",
|
||||
const_app("string_treeview_helper_color_player_injury"), NULL);
|
||||
@@ -1074,11 +1079,13 @@ treeview_helper_player_status_to_cell(GtkCellRenderer *renderer, gchar *buf, con
|
||||
|
||||
if(ban > 0)
|
||||
{
|
||||
/* Red card info (how long the player is banned). */
|
||||
sprintf(buf, _("BAN(%d)"), ban);
|
||||
g_object_set(renderer, "background",
|
||||
const_app("string_treeview_helper_color_player_banned"), NULL);
|
||||
}
|
||||
else
|
||||
/* Player status: ok. */
|
||||
strcpy(buf, _("OK"));
|
||||
|
||||
if(ban == -1)
|
||||
@@ -1146,6 +1153,7 @@ treeview_helper_player_pos_to_cell(GtkCellRenderer *renderer, gchar *buf, gint p
|
||||
switch(pos)
|
||||
{
|
||||
default:
|
||||
/* Goalie */
|
||||
strcpy(buf, _("G"));
|
||||
g_object_set(renderer, "background",
|
||||
const_app("string_treeview_helper_color_player_pos_goalie_bg"),
|
||||
@@ -1153,6 +1161,7 @@ treeview_helper_player_pos_to_cell(GtkCellRenderer *renderer, gchar *buf, gint p
|
||||
const_app("string_treeview_helper_color_player_pos_goalie_fg"), NULL);
|
||||
break;
|
||||
case PLAYER_POS_DEFENDER:
|
||||
/* Defender */
|
||||
strcpy(buf, _("D"));
|
||||
g_object_set(renderer, "background",
|
||||
const_app("string_treeview_helper_color_player_pos_defender_bg"),
|
||||
@@ -1160,6 +1169,7 @@ treeview_helper_player_pos_to_cell(GtkCellRenderer *renderer, gchar *buf, gint p
|
||||
const_app("string_treeview_helper_color_player_pos_defender_fg"), NULL);
|
||||
break;
|
||||
case PLAYER_POS_MIDFIELDER:
|
||||
/* Midfielder */
|
||||
strcpy(buf, _("M"));
|
||||
g_object_set(renderer, "background",
|
||||
const_app("string_treeview_helper_color_player_pos_midfielder_bg"),
|
||||
@@ -1167,6 +1177,7 @@ treeview_helper_player_pos_to_cell(GtkCellRenderer *renderer, gchar *buf, gint p
|
||||
const_app("string_treeview_helper_color_player_pos_midfielder_fg"), NULL);
|
||||
break;
|
||||
case PLAYER_POS_FORWARD:
|
||||
/* Forward */
|
||||
strcpy(buf, _("F"));
|
||||
g_object_set(renderer, "background",
|
||||
const_app("string_treeview_helper_color_player_pos_forward_bg"),
|
||||
|
44
src/user.c
44
src/user.c
@@ -101,7 +101,7 @@ user_set_up_team(User *user)
|
||||
user_set_up_finances(user);
|
||||
user_set_up_counters(user);
|
||||
|
||||
user->counters[COUNT_USER_NEW_SPONSOR] = (opt_int("int_opt_disable_finances")) ? -5 : 1;
|
||||
user->counters[COUNT_USER_NEW_SPONSOR] = (sett_int("int_opt_disable_finances")) ? -5 : 1;
|
||||
}
|
||||
|
||||
|
||||
@@ -463,17 +463,20 @@ user_event_show_next(void)
|
||||
case EVENT_TYPE_TRANSFER_OFFER_REJECTED_WAGE:
|
||||
misc_print_grouped_int(event->value1, buf2, FALSE);
|
||||
misc_print_grouped_int(event->value2, buf3, FALSE);
|
||||
/* A player from a team has rejected a transfer offer. */
|
||||
sprintf(buf, _("%s of %s has rejected your offer (%s / %s). He wasn't satisfied with the wage you offered."),
|
||||
event->value_string->str,
|
||||
((Team*)event->value_pointer)->name->str, buf2, buf3);
|
||||
game_gui_show_warning(buf);
|
||||
break;
|
||||
case EVENT_TYPE_TRANSFER_OFFER_MONEY:
|
||||
/* Buy a player from a team. */
|
||||
sprintf(buf, _("You didn't have enough money to buy %s from %s."),
|
||||
event->value_string->str, ((Team*)event->value_pointer)->name->str);
|
||||
game_gui_show_warning(buf);
|
||||
break;
|
||||
case EVENT_TYPE_TRANSFER_OFFER_ROSTER:
|
||||
/* Buy a player from a team. */
|
||||
sprintf(buf, _("Your roster is full. You couldn't buy %s from %s."),
|
||||
event->value_string->str, ((Team*)event->value_pointer)->name->str);
|
||||
game_gui_show_warning(buf);
|
||||
@@ -669,58 +672,69 @@ user_history_to_string(const UserHistory *history, gchar *buf)
|
||||
g_warning("user_history_to_string: unknown history type %d.\n", history->type);
|
||||
strcpy(buf, "FIXME!!!");
|
||||
case USER_HISTORY_START_GAME:
|
||||
/* Buy a team in a league. */
|
||||
sprintf(buf, _("You start the game with %s in the %s."),
|
||||
team_of_id(history->team_id)->name->str,
|
||||
league_cup_get_name_string(history->value1));
|
||||
break;
|
||||
case USER_HISTORY_FIRE_FINANCES:
|
||||
/* Team fires, team in a league. */
|
||||
sprintf(buf, _("%s fires you because of financial mismanagement.\nYou find a new job with %s in the %s."),
|
||||
team_of_id(history->team_id)->name->str,
|
||||
team_of_id(history->value1)->name->str,
|
||||
league_cup_get_name_string(history->value2));
|
||||
break;
|
||||
case USER_HISTORY_FIRE_FAILURE:
|
||||
/* Team fires, team in a league. */
|
||||
sprintf(buf, _("%s fires you because of unsuccessfulness.\nYou find a new job with %s in the %s."),
|
||||
team_of_id(history->team_id)->name->str,
|
||||
team_of_id(history->value1)->name->str,
|
||||
league_cup_get_name_string(history->value2));
|
||||
break;
|
||||
case USER_HISTORY_JOB_OFFER_ACCEPTED:
|
||||
/* Team in a league. Leave team. */
|
||||
sprintf(buf, _("%s offer you a job in the %s.\nYou accept the challenge and leave %s."),
|
||||
team_of_id(history->value1)->name->str,
|
||||
league_cup_get_name_string(history->value2),
|
||||
team_of_id(history->team_id)->name->str);
|
||||
break;
|
||||
case USER_HISTORY_END_SEASON:
|
||||
/* League name. */
|
||||
sprintf(buf, _("You finish the season in the %s on rank %d."),
|
||||
league_cup_get_name_string(history->value1),
|
||||
history->value2);
|
||||
break;
|
||||
case USER_HISTORY_PROMOTED:
|
||||
/* League name. */
|
||||
sprintf(buf, _("You get promoted to the %s."),
|
||||
league_cup_get_name_string(history->value1));
|
||||
break;
|
||||
case USER_HISTORY_RELEGATED:
|
||||
/* League name. */
|
||||
sprintf(buf, _("You get relegated to the %s."),
|
||||
league_cup_get_name_string(history->value1));
|
||||
break;
|
||||
case USER_HISTORY_WIN_FINAL:
|
||||
/* Cup name, team name. */
|
||||
sprintf(buf, _("You win the %s final against %s."),
|
||||
league_cup_get_name_string(history->value1),
|
||||
history->value_string->str);
|
||||
break;
|
||||
case USER_HISTORY_LOSE_FINAL:
|
||||
/* Cup name, team name. */
|
||||
sprintf(buf, _("You lose in the %s final against %s."),
|
||||
league_cup_get_name_string(history->value1),
|
||||
history->value_string->str);
|
||||
break;
|
||||
case USER_HISTORY_REACH_CUP_ROUND:
|
||||
cup_get_round_name(cup_from_clid(history->value1), history->value2, buf2);
|
||||
/* Cup round name (e.g. Last 32), number, cup name. */
|
||||
sprintf(buf, _("You reach the %s (round %d) of the %s."), buf2,
|
||||
history->value2 + 1,
|
||||
league_cup_get_name_string(history->value1));
|
||||
break;
|
||||
case USER_HISTORY_CHAMPION:
|
||||
/* League name. */
|
||||
sprintf(buf, _("You are champion of the %s!"),
|
||||
league_cup_get_name_string(history->value1));
|
||||
break;
|
||||
@@ -748,35 +762,63 @@ user_get_sponsor(const User *user)
|
||||
UserSponsor new;
|
||||
gint suc_factor = (current_user.counters[COUNT_USER_SUCCESS] < 0) ? -1 : 1;
|
||||
gchar *names[18] =
|
||||
/* Company name. */
|
||||
{_(" Systems"),
|
||||
/* Company name. */
|
||||
_(" Communications"),
|
||||
/* Company name. */
|
||||
_(" Holdings"),
|
||||
/* Company name. */
|
||||
_(" Industries"),
|
||||
/* Company name. */
|
||||
_(" Company"),
|
||||
/* Company name. */
|
||||
_(" Telecommunications"),
|
||||
/* Company name. */
|
||||
_(" Labs"),
|
||||
/* Company name. */
|
||||
_(" Technologies"),
|
||||
/* Company name. */
|
||||
_(" Chemicals"),
|
||||
/* Company name. */
|
||||
_(" Energy"),
|
||||
/* Company name. */
|
||||
_(" Bank"),
|
||||
/* Company name. */
|
||||
_(" Products"),
|
||||
/* Company name. */
|
||||
_(" Software"),
|
||||
/* Company name. */
|
||||
_(" Scientific"),
|
||||
/* Company name. */
|
||||
_(" Financial"),
|
||||
/* Company name. */
|
||||
_(" Petroleum"),
|
||||
/* Company name. */
|
||||
_(" Restaurants"),
|
||||
/* Company name. */
|
||||
_(" Data Systems")};
|
||||
gchar *short_names[7] =
|
||||
/* Company short name, leading to things like 'Marshall Data Systems Ltd.' */
|
||||
{_(" Ltd."),
|
||||
/* Company short name. */
|
||||
_(" Assoc."),
|
||||
/* Company short name. */
|
||||
_(" Co."),
|
||||
/* Company short name. */
|
||||
_(" Ent."),
|
||||
/* Company short name. Copy the '&'. */
|
||||
_(" & Co."),
|
||||
/* Company short name. */
|
||||
_(" Corp."),
|
||||
/* Company short name. */
|
||||
_(" Group")};
|
||||
gchar *name_add[3] =
|
||||
/* Company addition, leading to 'Marshall & Sons Petroleum Co.'. Copy the '&'. */
|
||||
{_(" & Sons"),
|
||||
/* Company addition. Copy the '&'. */
|
||||
_(" & Daughters"),
|
||||
/* Company addition. */
|
||||
_(" Bros.")};
|
||||
|
||||
new.name = g_string_new(name_get_random_last_name(name_get_list_from_sid(user->tm->names_file->str)));
|
||||
|
@@ -29,6 +29,11 @@ OptionList constants;
|
||||
/** Array of constants affecting game appearance rather than
|
||||
behaviour. */
|
||||
OptionList constants_app;
|
||||
/** Array with internal settings. */
|
||||
OptionList settings;
|
||||
|
||||
/** The array containing the live game commentary strings. */
|
||||
GPtrArray *lg_commentary[LIVE_GAME_EVENT_END];
|
||||
|
||||
/** The array containing players to be transfered.
|
||||
@see TransferPlayer */
|
||||
|
@@ -142,11 +142,11 @@ xml_country_read_text (GMarkupParseContext *context,
|
||||
country.sid = g_string_new(buf);
|
||||
else if(state == STATE_SUPERNATIONAL)
|
||||
{
|
||||
opt_set_int("int_opt_disable_finances", 1);
|
||||
opt_set_int("int_opt_disable_transfers", 1);
|
||||
opt_set_int("int_opt_disable_stadium", 1);
|
||||
opt_set_int("int_opt_disable_contracts", 1);
|
||||
opt_set_int("int_opt_disable_boost_on", 1);
|
||||
sett_set_int("int_opt_disable_finances", 1);
|
||||
sett_set_int("int_opt_disable_transfers", 1);
|
||||
sett_set_int("int_opt_disable_stadium", 1);
|
||||
sett_set_int("int_opt_disable_contracts", 1);
|
||||
sett_set_int("int_opt_disable_boost_on", 1);
|
||||
}
|
||||
else if(state == STATE_LEAGUE)
|
||||
xml_league_read(buf, ligs);
|
||||
@@ -199,11 +199,11 @@ xml_country_read(const gchar *country_name)
|
||||
|
||||
free_country(TRUE);
|
||||
|
||||
opt_set_int("int_opt_disable_finances", 0);
|
||||
opt_set_int("int_opt_disable_transfers", 0);
|
||||
opt_set_int("int_opt_disable_stadium", 0);
|
||||
opt_set_int("int_opt_disable_contracts", 0);
|
||||
opt_set_int("int_opt_disable_boost_on", 0);
|
||||
sett_set_int("int_opt_disable_finances", 0);
|
||||
sett_set_int("int_opt_disable_transfers", 0);
|
||||
sett_set_int("int_opt_disable_stadium", 0);
|
||||
sett_set_int("int_opt_disable_contracts", 0);
|
||||
sett_set_int("int_opt_disable_boost_on", 0);
|
||||
|
||||
if(g_markup_parse_context_parse(context, file_contents, length, &error))
|
||||
{
|
||||
|
259
src/xml_lg_commentary.c
Normal file
259
src/xml_lg_commentary.c
Normal file
@@ -0,0 +1,259 @@
|
||||
#include "free.h"
|
||||
#include "lg_commentary.h"
|
||||
#include "live_game.h"
|
||||
#include "misc.h"
|
||||
#include "variables.h"
|
||||
#include "xml_lg_commentary.h"
|
||||
|
||||
#define TAG_LG_COMMENTARY "lg_commentary"
|
||||
#define TAG_EVENT "event"
|
||||
#define TAG_EVENT_NAME "name"
|
||||
#define TAG_EVENT_COMMENTARY "commentary"
|
||||
|
||||
#define EVENT_NAME_GENERAL "general"
|
||||
#define EVENT_NAME_START_MATCH "start_match"
|
||||
#define EVENT_NAME_HALF_TIME "half_time"
|
||||
#define EVENT_NAME_EXTRA_TIME "extra_time"
|
||||
#define EVENT_NAME_END_MATCH "end_match"
|
||||
#define EVENT_NAME_LOST_POSSESSION "lost_possession"
|
||||
#define EVENT_NAME_SCORING_CHANCE "scoring_chance"
|
||||
#define EVENT_NAME_HEADER "header"
|
||||
#define EVENT_NAME_PENALTY "penalty"
|
||||
#define EVENT_NAME_FREE_KICK "free_kick"
|
||||
#define EVENT_NAME_GOAL "goal"
|
||||
#define EVENT_NAME_OWN_GOAL "own_goal"
|
||||
#define EVENT_NAME_POST "post"
|
||||
#define EVENT_NAME_MISS "miss"
|
||||
#define EVENT_NAME_SAVE "save"
|
||||
#define EVENT_NAME_CROSS_BAR "cross_bar"
|
||||
#define EVENT_NAME_FOUL "foul"
|
||||
#define EVENT_NAME_FOUL_YELLOW "foul_yellow"
|
||||
#define EVENT_NAME_FOUL_RED "foul_red"
|
||||
#define EVENT_NAME_FOUL_RED_INJURY "foul_red_injury"
|
||||
#define EVENT_NAME_SEND_OFF "send_off"
|
||||
#define EVENT_NAME_INJURY "injury"
|
||||
#define EVENT_NAME_TEMP_INJURY "temp_injury"
|
||||
#define EVENT_NAME_PENALTIES "penalties"
|
||||
#define EVENT_NAME_STADIUM_BREAKDOWN "stadium_breakdown"
|
||||
#define EVENT_NAME_STADIUM_RIOTS "stadium_riots"
|
||||
#define EVENT_NAME_STADIUM_FIRE "stadium_fire"
|
||||
#define EVENT_NAME_SUBSTITUTION "substitution"
|
||||
#define EVENT_NAME_STRUCTURE_CHANGE "structure_change"
|
||||
#define EVENT_NAME_STYLE_CHANGE "style_change"
|
||||
#define EVENT_NAME_BOOST_CHANGE "boost_change"
|
||||
|
||||
|
||||
enum XmlLgCommentaryStates
|
||||
{
|
||||
STATE_LG_COMMENTARY = 0,
|
||||
STATE_EVENT,
|
||||
STATE_EVENT_NAME,
|
||||
STATE_EVENT_COMMENTARY,
|
||||
STATE_END
|
||||
};
|
||||
|
||||
gint state, commentary_idx;
|
||||
|
||||
/**
|
||||
* The function called by the parser when an opening tag is read.
|
||||
* The state variable is changed in this function and
|
||||
* sometimes memory allocated for the information that's going to be read.
|
||||
* @see The GLib manual (Simple XML parser).
|
||||
*/
|
||||
void
|
||||
xml_lg_commentary_read_start_element (GMarkupParseContext *context,
|
||||
const gchar *element_name,
|
||||
const gchar **attribute_names,
|
||||
const gchar **attribute_values,
|
||||
gpointer user_data,
|
||||
GError **error)
|
||||
{
|
||||
if(strcmp(element_name, TAG_EVENT) == 0)
|
||||
state = STATE_EVENT;
|
||||
else if(strcmp(element_name, TAG_EVENT_NAME) == 0)
|
||||
state = STATE_EVENT_NAME;
|
||||
else if(strcmp(element_name, TAG_EVENT_COMMENTARY) == 0)
|
||||
state = STATE_EVENT_COMMENTARY;
|
||||
else if(strcmp(element_name, TAG_LG_COMMENTARY) != 0)
|
||||
g_warning("xml_lg_commentary_read_start_element: unknown tag: %s; I'm in state %d\n",
|
||||
element_name, state);
|
||||
}
|
||||
|
||||
/**
|
||||
* The function called by the parser when a closing tag is read.
|
||||
* The state variable is changed in this function.
|
||||
* @see The GLib manual (Simple XML parser).
|
||||
*/
|
||||
void
|
||||
xml_lg_commentary_read_end_element (GMarkupParseContext *context,
|
||||
const gchar *element_name,
|
||||
gpointer user_data,
|
||||
GError **error)
|
||||
{
|
||||
if(strcmp(element_name, TAG_EVENT) == 0)
|
||||
state = STATE_LG_COMMENTARY;
|
||||
else if(strcmp(element_name, TAG_EVENT_NAME) == 0 ||
|
||||
strcmp(element_name, TAG_EVENT_COMMENTARY) == 0)
|
||||
state = STATE_EVENT;
|
||||
else if(strcmp(element_name, TAG_LG_COMMENTARY) != 0)
|
||||
g_warning("xml_lg_commentary_read_start_element: unknown tag: %s; I'm in state %d\n",
|
||||
element_name, state);
|
||||
}
|
||||
|
||||
/**
|
||||
* The function called by the parser when the text between tags is read.
|
||||
* This function is responsible for filling in the variables (e.g. team names)
|
||||
* when a file gets loaded.
|
||||
* @see The GLib manual (Simple XML parser).
|
||||
*/
|
||||
void
|
||||
xml_lg_commentary_read_text (GMarkupParseContext *context,
|
||||
const gchar *text,
|
||||
gsize text_len,
|
||||
gpointer user_data,
|
||||
GError **error)
|
||||
{
|
||||
gchar buf[text_len + 1];
|
||||
gint int_value;
|
||||
GString *commentary = NULL;
|
||||
|
||||
strncpy(buf, text, text_len);
|
||||
buf[text_len] = '\0';
|
||||
|
||||
int_value = (gint)g_ascii_strtod(buf, NULL);
|
||||
|
||||
if(state == STATE_EVENT_NAME)
|
||||
{
|
||||
if(strcmp(buf, EVENT_NAME_GENERAL) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_GENERAL;
|
||||
else if(strcmp(buf, EVENT_NAME_START_MATCH) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_START_MATCH;
|
||||
else if(strcmp(buf, EVENT_NAME_HALF_TIME) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_HALF_TIME;
|
||||
else if(strcmp(buf, EVENT_NAME_EXTRA_TIME) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_EXTRA_TIME;
|
||||
else if(strcmp(buf, EVENT_NAME_END_MATCH) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_END_MATCH;
|
||||
else if(strcmp(buf, EVENT_NAME_LOST_POSSESSION) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_LOST_POSSESSION;
|
||||
else if(strcmp(buf, EVENT_NAME_SCORING_CHANCE) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_SCORING_CHANCE;
|
||||
else if(strcmp(buf, EVENT_NAME_HEADER) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_HEADER;
|
||||
else if(strcmp(buf, EVENT_NAME_PENALTY) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_PENALTY;
|
||||
else if(strcmp(buf, EVENT_NAME_FREE_KICK) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_FREE_KICK;
|
||||
else if(strcmp(buf, EVENT_NAME_GOAL) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_GOAL;
|
||||
else if(strcmp(buf, EVENT_NAME_OWN_GOAL) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_OWN_GOAL;
|
||||
else if(strcmp(buf, EVENT_NAME_POST) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_POST;
|
||||
else if(strcmp(buf, EVENT_NAME_MISS) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_MISS;
|
||||
else if(strcmp(buf, EVENT_NAME_SAVE) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_SAVE;
|
||||
else if(strcmp(buf, EVENT_NAME_CROSS_BAR) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_CROSS_BAR;
|
||||
else if(strcmp(buf, EVENT_NAME_FOUL) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_FOUL;
|
||||
else if(strcmp(buf, EVENT_NAME_FOUL_YELLOW) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_FOUL_YELLOW;
|
||||
else if(strcmp(buf, EVENT_NAME_FOUL_RED) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_FOUL_RED;
|
||||
else if(strcmp(buf, EVENT_NAME_FOUL_RED_INJURY) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_FOUL_RED_INJURY;
|
||||
else if(strcmp(buf, EVENT_NAME_SEND_OFF) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_SEND_OFF;
|
||||
else if(strcmp(buf, EVENT_NAME_INJURY) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_INJURY;
|
||||
else if(strcmp(buf, EVENT_NAME_TEMP_INJURY) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_TEMP_INJURY;
|
||||
else if(strcmp(buf, EVENT_NAME_PENALTIES) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_PENALTIES;
|
||||
else if(strcmp(buf, EVENT_NAME_STADIUM_BREAKDOWN) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_STADIUM_BREAKDOWN;
|
||||
else if(strcmp(buf, EVENT_NAME_STADIUM_RIOTS) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_STADIUM_RIOTS;
|
||||
else if(strcmp(buf, EVENT_NAME_STADIUM_FIRE) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_STADIUM_FIRE;
|
||||
else if(strcmp(buf, EVENT_NAME_SUBSTITUTION) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_SUBSTITUTION;
|
||||
else if(strcmp(buf, EVENT_NAME_STRUCTURE_CHANGE) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_STRUCTURE_CHANGE;
|
||||
else if(strcmp(buf, EVENT_NAME_STYLE_CHANGE) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_STYLE_CHANGE_ALL_OUT_DEFEND;
|
||||
else if(strcmp(buf, EVENT_NAME_BOOST_CHANGE) == 0)
|
||||
commentary_idx = LIVE_GAME_EVENT_BOOST_CHANGE_ANTI;
|
||||
else
|
||||
g_warning("xml_lg_commentary_read_text: unknown event name %s \n", buf);
|
||||
}
|
||||
else if(state == STATE_EVENT_COMMENTARY)
|
||||
{
|
||||
commentary = g_string_new(buf);
|
||||
g_ptr_array_add(lg_commentary[commentary_idx], commentary);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Function reading an XML file specifying a country.
|
||||
* The variable #country gets freed and overwritten afterwards.
|
||||
* @param lg_commentary_name name of the xml file (e.g. 'lg_commentary_england.xml')
|
||||
* to be read. Full path is not necessary, if the file is located in
|
||||
* one of the suppport directories; neither are the prefix 'lg_commentary_'
|
||||
* or the suffix '.xml'.
|
||||
*/
|
||||
void
|
||||
xml_lg_commentary_read(const gchar *commentary_file)
|
||||
{
|
||||
GMarkupParser parser = {xml_lg_commentary_read_start_element,
|
||||
xml_lg_commentary_read_end_element,
|
||||
xml_lg_commentary_read_text, NULL, NULL};
|
||||
GMarkupParseContext *context;
|
||||
gchar *file_contents;
|
||||
gint length;
|
||||
GError *error = NULL;
|
||||
gint i;
|
||||
|
||||
context =
|
||||
g_markup_parse_context_new(&parser, 0, NULL, NULL);
|
||||
|
||||
if(!g_file_get_contents(commentary_file, &file_contents, &length, &error))
|
||||
{
|
||||
g_warning("xml_lg_commentary_read: error reading file %s\n", commentary_file);
|
||||
if(g_str_has_suffix(commentary_file, "lg_commentary_en.xml"))
|
||||
misc_print_error(&error, TRUE);
|
||||
else
|
||||
{
|
||||
misc_print_error(&error, FALSE);
|
||||
lg_commentary_load_commentary_file("lg_commentary_en.xml", TRUE);
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
for(i=0;i<LIVE_GAME_EVENT_END;i++)
|
||||
{
|
||||
free_g_string_array(&lg_commentary[i]);
|
||||
lg_commentary[i] = g_ptr_array_new();
|
||||
}
|
||||
|
||||
if(g_markup_parse_context_parse(context, file_contents, length, &error))
|
||||
{
|
||||
g_markup_parse_context_end_parse(context, NULL);
|
||||
g_markup_parse_context_free(context);
|
||||
g_free(file_contents);
|
||||
}
|
||||
else
|
||||
{
|
||||
g_warning("xml_lg_commentary_read: error parsing file %s\n", commentary_file);
|
||||
if(g_str_has_suffix(commentary_file, "lg_commentary_en.xml"))
|
||||
misc_print_error(&error, TRUE);
|
||||
else
|
||||
{
|
||||
misc_print_error(&error, FALSE);
|
||||
lg_commentary_load_commentary_file("lg_commentary_en.xml", TRUE);
|
||||
}
|
||||
return;
|
||||
}
|
||||
}
|
31
src/xml_lg_commentary.h
Normal file
31
src/xml_lg_commentary.h
Normal file
@@ -0,0 +1,31 @@
|
||||
#ifndef XML_LG_COMMENTARY_H
|
||||
#define XML_LG_COMMENTARY_H
|
||||
|
||||
#include "bygfoot.h"
|
||||
|
||||
void
|
||||
xml_lg_commentary_read(const gchar *commentary_file);
|
||||
|
||||
void
|
||||
xml_lg_commentary_read_text (GMarkupParseContext *context,
|
||||
const gchar *text,
|
||||
gsize text_len,
|
||||
gpointer user_data,
|
||||
GError **error);
|
||||
|
||||
void
|
||||
xml_lg_commentary_read_end_element (GMarkupParseContext *context,
|
||||
const gchar *element_name,
|
||||
gpointer user_data,
|
||||
GError **error);
|
||||
|
||||
void
|
||||
xml_lg_commentary_read_start_element (GMarkupParseContext *context,
|
||||
const gchar *element_name,
|
||||
const gchar **attribute_names,
|
||||
const gchar **attribute_values,
|
||||
gpointer user_data,
|
||||
GError **error);
|
||||
|
||||
#endif
|
||||
|
@@ -162,7 +162,7 @@ string_live_game_event_own_goal_icon goal_own.png
|
||||
string_live_game_event_post_icon post.png
|
||||
string_live_game_event_cross_bar_icon cross_bar.png
|
||||
string_live_game_event_save_icon save.png
|
||||
string_live_game_event_missed_icon miss.png
|
||||
string_live_game_event_miss_icon miss.png
|
||||
string_live_game_event_foul_icon foul.png
|
||||
string_live_game_event_foul_yellow_icon yellow.png
|
||||
string_live_game_event_send_off_icon red.png
|
||||
|
@@ -350,20 +350,20 @@ int_team_new_bound_upper 10
|
||||
int_team_new_bound_lower 20
|
||||
|
||||
# tokens in the live game commentary
|
||||
string_lg_commentary_token_team_home TH
|
||||
string_lg_commentary_token_team_away TA
|
||||
string_lg_commentary_token_team_in_poss TP
|
||||
string_lg_commentary_token_team_not_in_poss TN
|
||||
string_lg_commentary_token_team_losing TL
|
||||
string_lg_commentary_token_team_winning TW
|
||||
string_lg_commentary_token_team TT
|
||||
string_lg_commentary_token_player1 P1
|
||||
string_lg_commentary_token_player2 P2
|
||||
string_lg_commentary_token_attendance AT
|
||||
string_lg_commentary_token_result RE
|
||||
string_lg_commentary_token_minute MI
|
||||
string_lg_commentary_token_extra EX
|
||||
|
||||
string_lg_commentary_token_team_home _TH_
|
||||
string_lg_commentary_token_team_away _TA_
|
||||
string_lg_commentary_token_team_in_poss _TP_
|
||||
string_lg_commentary_token_team_not_in_poss _TN_
|
||||
string_lg_commentary_token_team_losing _TL_
|
||||
string_lg_commentary_token_team_winning _TW_
|
||||
string_lg_commentary_token_team _TT_
|
||||
string_lg_commentary_token_player1 _P1_
|
||||
string_lg_commentary_token_player2 _P2_
|
||||
string_lg_commentary_token_attendance _AT_
|
||||
string_lg_commentary_token_result _RE_
|
||||
string_lg_commentary_token_minute _MI_
|
||||
string_lg_commentary_token_extra _EX_
|
||||
_
|
||||
# base probability that the ball gets from defending area
|
||||
# to midfield area.
|
||||
float_live_game_area_def_mid 5000
|
||||
|
252
support_files/lg_commentary/lg_commentary_de.xml
Normal file
252
support_files/lg_commentary/lg_commentary_de.xml
Normal file
@@ -0,0 +1,252 @@
|
||||
<lg_commentary>
|
||||
<event>
|
||||
<name>general</name>
|
||||
<commentary>_P2_ spielt in die Gasse und findet _P1_</commentary>
|
||||
<commentary>Kurzpass auf die linke Außenbahn</commentary>
|
||||
<commentary>Scharfer Pass von _P2_ an _P1_</commentary>
|
||||
<commentary>_P2_ köpft den Ball zu _P1_</commentary>
|
||||
<commentary>Brustannahme von _P2_, leitet weiter an _P1_</commentary>
|
||||
<commentary>_P1_ bringt Querpass von _P2_ unter Kontrolle</commentary>
|
||||
<commentary>_P2_ schiebt zu _P1_</commentary>
|
||||
<commentary>_P1_ ist wieder am Ball</commentary>
|
||||
<commentary>_P1_ lässt seinen Verteidiger stehen</commentary>
|
||||
<commentary>_P1_ pflügt durch das Mittelfeld</commentary>
|
||||
<commentary>_P1_ bekommt den Ball von _P2_</commentary>
|
||||
<commentary>Ein langer Pass von _P2_ findet _P1_ am langen Pfosten</commentary>
|
||||
<commentary>Ein Seitenwechsel von _P2_ zu _P1_</commentary>
|
||||
<commentary>_P1_ bekommt den Ball</commentary>
|
||||
<commentary>Schöner Pass von _P2_ eröffnet den Raum vor _P1_</commentary>
|
||||
<commentary>Guter Querpass auf die rechte Seite</commentary>
|
||||
<commentary>Ein weiterer Flankenlauf</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>goal</name>
|
||||
<commentary>Und der Ball fliegt an _P2_ vorbei und zappelt im Netz!!!</commentary>
|
||||
<commentary>Tor!!!</commentary>
|
||||
<commentary>Und der Ball ist im Tor!!!</commentary>
|
||||
<commentary>_P1_ trifft!!!</commentary>
|
||||
<commentary>Oh, ein schöner Schuss, er wird von _P2_ ins Tor abgelenkt</commentary>
|
||||
<commentary>_P2_ hechtet vergeblich, der Ball ist versenkt!!!</commentary>
|
||||
<commentary>Der Ball ist unerreichbar für _P2_, Tor!!</commentary>
|
||||
<commentary>_P1_ feiert in der ihm eigenen Art ein exzellentes Tor</commentary>
|
||||
<commentary>_P1_ vollführt eine Freudentanz nach einem wunderbaren Tor</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>header</name>
|
||||
<commentary>Hoher Ball von _P2_ an _P1_, der köpft</commentary>
|
||||
<commentary>Flugkopfball von _P1_</commentary>
|
||||
<commentary>Er scheint in der Luft zu schweben und produzier dann einen druckvollen Kopfball</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>start_match</name>
|
||||
<commentary>Ein wolkenloser Himmel verheißt ein spannedes Spiel</commentary>
|
||||
<commentary>Die Mannschaften werden durch eine ohrenbetäubende Lärmkulisse begrüßt</commentary>
|
||||
<commentary>Der Kampf der Titanen beginnt</commentary>
|
||||
<commentary>Die Menge begrüßt die Mannschaften mit rauschendem Applaus</commentary>
|
||||
<commentary>_AT_ Zuschauer warten auf den Anpfiff</commentary>
|
||||
<commentary>Der Schiedsrichter schaut zum Assistenten und pfeift an</commentary>
|
||||
<commentary>Der Schiri ist bereit, es kann losgehen</commentary>
|
||||
<commentary>Es kann losgehen</commentary>
|
||||
<commentary>_AT_ Fans können nicht irren, dies ist das Spiel, das wir alle sehen wollen</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>stadium_riots</name>
|
||||
<commentary>Die Fans stürmen das Spielfeld</commentary>
|
||||
<commentary>Die Hooligans toben</commentary>
|
||||
<commentary>Ein Fan ist aufs Spielfeld gelangt und greift den Schiedsrichter an</commentary>
|
||||
<commentary>Und die Fans schießen Leuchtraketen aufs Feld</commentary>
|
||||
<commentary>Die Ordner müssen eine Schlägerei zwischen den Fans unter Kontrolle bekommen</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>stadium_fire</name>
|
||||
<commentary>Eine Leuchtrakete hat einen Teil der Sitze entzündet</commentary>
|
||||
<commentary>Die Auswärtsfans haben Sitze entzündet</commentary>
|
||||
<commentary>Ein Feuer verschlingt _TT_'s Stadion</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>stadium_breakdown</name>
|
||||
<commentary>__TH__'s Stadion scheint technische Probleme zu haben</commentary>
|
||||
<commentary>Die Flutlichtanlage ist ausgefallen</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>extra_time</name>
|
||||
<commentary>Nach _MI_ Minuten steht's _RE_: Verlängerung</commentary>
|
||||
<commentary>Nach einem engen Spiel beginnt die Verlängerung</commentary>
|
||||
<commentary>Verlängerung: jetzt geht's um Willenskraft und Entschlossenheit</commentary>
|
||||
<commentary>Es steht immer noch _RE_: Verlängerung</commentary>
|
||||
<commentary>Jetzt geht's um alles, die Verlängerung beginnt</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>end_match</name>
|
||||
<commentary>_TL_ schleicht vom Platz, eine Standpauke folgt</commentary>
|
||||
<commentary>Das Spiel ist aus!</commentary>
|
||||
<commentary>_TW_ gewinnt!</commentary>
|
||||
<commentary>Nach _MI_ Minuten ended das Spiel mit einem _RE_</commentary>
|
||||
<commentary>Die Fans buhen _TL_ vom Platz</commentary>
|
||||
<commentary>Das wars, das Spiel endet _RE_</commentary>
|
||||
<commentary>Der Schiedsrichter schaut auf seine Uhr und pfeift, das Spiel ist aus</commentary>
|
||||
<commentary>_RE_, was für ein Ergebnis für _TW_</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>half_time</name>
|
||||
<commentary>_TW_ muss noch 45 Minuten überstehen</commentary>
|
||||
<commentary>Der Trainer von _TL_ wird zur Halbzeit ausgebuht</commentary>
|
||||
<commentary>Da draußen sind zwei Mannschaften, aber nur eine spielt Fußball</commentary>
|
||||
<commentary>Halbzeit.</commentary>
|
||||
<commentary>Es steht _RE_ zur Halbzeit, der Trainer von _TL_ sollte seine Mannschaft anspornen</commentary>
|
||||
<commentary>Es steht _RE_ zur Halbzeit.</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>penalties</name>
|
||||
<commentary>Jetzt geht es Mann gegen Mann, Schütze gegen Torwart</commentary>
|
||||
<commentary>Zwei Mannschaften waren gleichwertig, jetzt geht's ins Penaltyschießen</commentary>
|
||||
<commentary>Wer hätte das vor _MI_ Minuten gedacht, dass es soweit kommen würde</commentary>
|
||||
<commentary>Man muss die Nerven unter Kontrolle bekommen wenn man eine Chance im Elfmeterschießen haben will</commentary>
|
||||
<commentary>Und nun kommt das spannende Drama eines Elfmeterschießens</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>post</name>
|
||||
<commentary>Ich bin überrascht, dass der Pfosten diesem Schuss standhielt</commentary>
|
||||
<commentary>Und der Schuss knallt gegen den Pfosten</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>cross_bar</name>
|
||||
<commentary>Der Ball zirkelt über _P2_, trifft aber nur die Latte</commentary>
|
||||
<commentary>Zentimetergenauer Schuss von _P1_, trifft Aluminium</commentary>
|
||||
<commentary>_P2_ ist ohne Chance, aber der Ball trifft nur die Latte</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>save</name>
|
||||
<commentary>Superreflex von _P2_</commentary>
|
||||
<commentary>Ein Flachschuss, gut abgewehrt von _P2_</commentary>
|
||||
<commentary>_P2_ scheint über sich hinauszuwachsen und kann den Ball ablenken</commentary>
|
||||
<commentary>_P2_ war noch dran</commentary>
|
||||
<commentary>_P2_ lenkt den Ball gerade noch über die Latte</commentary>
|
||||
<commentary>Gute Abwehr von _P2_</commentary>
|
||||
<commentary>Ein dankbarer Ball für den Torhüter</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>foul</name>
|
||||
<commentary>_P1_ wird hart attackiert</commentary>
|
||||
<commentary>Hohes Bein von _P2_ schickt _P1_ zu Boden</commentary>
|
||||
<commentary>Aua, das war schmerzhaft</commentary>
|
||||
<commentary>Au, Blutgrätsche gegen _P1_</commentary>
|
||||
<commentary>_P2_ holt _P1_ von den Beinen</commentary>
|
||||
<commentary>_P2_ holt rüde mit gestrecktem Bein _P1_ von den Beinen</commentary>
|
||||
<commentary>Ein gemeines Foul von _P2_ lässt _P1_ meterweit fliegen</commentary>
|
||||
<commentary>_P2_ attackiert _P1_ ohne Gnade</commentary>
|
||||
<commentary>Das war ein harter Angriff</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>foul_red_injury</name>
|
||||
<commentary>_P2_ foult und _P2_ windet sich in Schmerzen am Boden</commentary>
|
||||
<commentary>_P2_ foult: _P1_ scheint verletzt zu sein... er muss vielleicht raus</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>free_kick</name>
|
||||
<commentary>_P1_ knallt einen Freistoß Richtung Tor</commentary>
|
||||
<commentary>_P1_ lupft den Freistoß</commentary>
|
||||
<commentary>Gelupfter Freistoß von _P1_</commentary>
|
||||
<commentary>_P1_ führt Freistoß schnell aus</commentary>
|
||||
<commentary>_P1_ dreht den Ball um die Mauer</commentary>
|
||||
<commentary>Freistoß: _P1_ schießt aus großer Entfernung</commentary>
|
||||
<commentary>Freistoß: _P1_ schlenzt den Ball über die Mauer</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>lost_possession</name>
|
||||
<commentary>_P1_ ersprintet den Ball aber _P2_ grätscht sauber</commentary>
|
||||
<commentary>_P1_ nimmt _P2_ den Ball mit einer sauberen Grätsche ab</commentary>
|
||||
<commentary>_P2_ kontrolliert den Ball schlecht, _P1_ kann ihn erobern</commentary>
|
||||
<commentary>_P1_ erobert mit gutem Körpereinsatz den Ball</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>own_goal</name>
|
||||
<commentary>Rückpass von _P1_... oh nein, der Torwart verfehlt ihn! Eigentor!</commentary>
|
||||
<commentary>Dieses Mißverständnis wurde mit einem Tor bezahlt</commentary>
|
||||
<commentary>Oh nein, der Ball springt gegen _P1_ und ins Netz</commentary>
|
||||
<commentary>Ein Billiardball im 5-Meterraum trifft _P1_ und rollt über die Linie</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>scoring_chance</name>
|
||||
<commentary>_P1_ schießt ins lange Eck</commentary>
|
||||
<commentary>_P1_ lässt zwei Verteiger stehen und versetzt den Torwart</commentary>
|
||||
<commentary>_P1_ verspringt der Ball aber er sein Schuss fliegt Richtung Tor </commentary>
|
||||
<commentary>_P1_ zieht zur Mitte und schießt</commentary>
|
||||
<commentary>_P2_ versucht es einfach aus 25 Metern</commentary>
|
||||
<commentary>_P1_ dribbelt im 16er, dreht sich und schießt</commentary>
|
||||
<commentary>_P1_ zieht aus 20 Metern ab, scheint danebenzugehen</commentary>
|
||||
<commentary>_P2_ legt den Ball zu _P1_ ab der einen Bombenschuss abfeuert</commentary>
|
||||
<commentary>_P1_ hält aus kurzer Distanz drauf</commentary>
|
||||
<commentary>Superpass von _P2_ schickt _P1_ Eins gegen Eins gegen den Torhüter</commentary>
|
||||
<commentary>_P1_ dreht sich um die eigene Achse und schießt</commentary>
|
||||
<commentary>Fallrückzieher von _P1_!</commentary>
|
||||
<commentary>_P1_ nimmt Fahrt auf und schießt!</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>miss</name>
|
||||
<commentary>Ein Verteidiger klärt in letzter Minute</commentary>
|
||||
<commentary>_P2_ greift _P1_ an und blockiert den Schuss</commentary>
|
||||
<commentary>Und der Schuss kriecht Zentimeter am Pfosten vorbei</commentary>
|
||||
<commentary>Ein Verteidiger klärt</commentary>
|
||||
<commentary>_P1_ hätte abgeben müssen, verschießt den Ball</commentary>
|
||||
<commentary>_P1_ trifft nur die Tribüne</commentary>
|
||||
<commentary>_P1_ verzieht</commentary>
|
||||
<commentary>_P1_'s Schuß weit daneben</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>temp_injury</name>
|
||||
<commentary>_P1_ ist leicht angeschlagen, kann aber weitermachen</commentary>
|
||||
<commentary>_P1_ hat eine Platzwunde, aber sie wird getackert und er kann weiterspielen</commentary>
|
||||
<commentary>_P1_ hat einen Krampf, spielt weiter</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>injury</name>
|
||||
<commentary>_P1_ scheint eine schwere Verletzung davongetragen zu haben</commentary>
|
||||
<commentary>_P1_ wird wohl das Feld verlassen müssen, scheint eine Knöchelverletzung zu sein</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>penalty</name>
|
||||
<commentary>_P1_ hat schon mal einen Elfer verschossen, hoffentlich trifft er diesmal</commentary>
|
||||
<commentary>_P1_ darf an den Elfmeterpunkt</commentary>
|
||||
<commentary>_P1_ übernimmt die Verantwortung und tritt den Elfmeter</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>substitution</name>
|
||||
<commentary>_P2_ verlässt unter großem Applaus das Spielfeld, _P1_ ersetzt ihn</commentary>
|
||||
<commentary>_TT_ wechselt aus, _P1_ kommt für _P2_</commentary>
|
||||
<commentary>_P2_ wird vom Platz gebuht und durch _P1_ ersetzt</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>foul_yellow</name>
|
||||
<commentary>_P2_ für Grätschen von hinten</commentary>
|
||||
<commentary>_P2_ für bösartiges Foul an _P1_</commentary>
|
||||
<commentary>_P2_ für Handspiel</commentary>
|
||||
<commentary>_P2_ für ungebührliches Verhalten</commentary>
|
||||
<commentary>_P2_ wird für hohes Bein verwarnt</commentary>
|
||||
<commentary>_P2_ für Ballwegtreten</commentary>
|
||||
<commentary>_P2_ für Zeitschinden</commentary>
|
||||
<commentary>_P2_ für Behinderung</commentary>
|
||||
<commentary>_P2_ wird wegen Meckerns verwarnt</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>foul_red</name>
|
||||
<commentary>_P2_ für eine Blutgrätsche</commentary>
|
||||
<commentary>_P2_ für absichtliches Handspiel</commentary>
|
||||
<commentary>_P1_ wurde vom Platz gestellt</commentary>
|
||||
<commentary>_P2_ sieht die rote Karte</commentary>
|
||||
<commentary>_P2_ wird wegen wiederholtem Meckern vom Platz gestellt</commentary>
|
||||
<commentary>_P2_ wird nach einer Notbremse zum Duschen geschickt</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>boost_change</name>
|
||||
<commentary>_TT_ hat den Boost auf _EX_ gestellt</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>structure_change</name>
|
||||
<commentary>_TT_ hat das System auf _EX_ umgestellt</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>style_change</name>
|
||||
<commentary>_TT_ hat den Spielstil auf _EX_ umgestellt</commentary>
|
||||
</event>
|
||||
</lg_commentary>
|
256
support_files/lg_commentary/lg_commentary_en.xml
Normal file
256
support_files/lg_commentary/lg_commentary_en.xml
Normal file
@@ -0,0 +1,256 @@
|
||||
<lg_commentary>
|
||||
<event>
|
||||
<name>general</name>
|
||||
<commentary>_P2_ feeds the ball through to _P1_</commentary>
|
||||
<commentary>_P2_ threads a great ball to _P1_ </commentary>
|
||||
<commentary>Lovely pass from _P2_ releases _P1_</commentary>
|
||||
<commentary>Long floating pass from _P2_ finds _P1_</commentary>
|
||||
<commentary>Good passing move across the pitch and down the right</commentary>
|
||||
<commentary>Quick passing move down the left</commentary>
|
||||
<commentary>_P2_ cross controlled by _P1_ who slips past his man</commentary>
|
||||
<commentary>Another decent move down the wing</commentary>
|
||||
<commentary>_P1_ latches onto _P2_'s pass</commentary>
|
||||
<commentary>_P2_ needles ball through players and finds _P1_</commentary>
|
||||
<commentary>_P2_ controls it with his chest and passes to _P1_</commentary>
|
||||
<commentary>_P2_ heads the ball towards _P1_</commentary>
|
||||
<commentary>_P1_ twisting and turning again</commentary>
|
||||
<commentary>_P1_ rips through the midfield</commentary>
|
||||
<commentary>_P1_ spins past his marker</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>lost_possession</name>
|
||||
<commentary>_P1_ wins the ball with a perfectly timed challenge</commentary>
|
||||
<commentary>Bad control by _P2_ lets _P1_ steal the ball off him</commentary>
|
||||
<commentary>_P1_ takes the ball away from _P2_ with a sliding tackle</commentary>
|
||||
<commentary>Loose ball falls to _P1_</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>foul</name>
|
||||
<commentary>Oww, nasty tackle on _P1_</commentary>
|
||||
<commentary>Surely that's a sending off offence</commentary>
|
||||
<commentary>_P2_ knocks over _P1_ with a double footed lunge</commentary>
|
||||
<commentary>Crunching challenge on _P1_</commentary>
|
||||
<commentary>_P1_ gets his legs taken away from him by _P2_</commentary>
|
||||
<commentary>Slicing challenge by _P2_ on _P1_</commentary>
|
||||
<commentary>Vicious tackle from _P2_ leaves _P1_ lying on the floor in agony</commentary>
|
||||
<commentary>Ouch that's got to hurt</commentary>
|
||||
<commentary>Extremely high boot from _P2_ sends _P1_ to the ground</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>scoring_chance</name>
|
||||
<commentary>_P1_ charges towards goal and shoots!</commentary>
|
||||
<commentary>_P1_ spins and shoots</commentary>
|
||||
<commentary>Long ball from _P2_ finds _P1_ at far post</commentary>
|
||||
<commentary>_P1_ can't quite get it under control but his miss kick heads toward goal</commentary>
|
||||
<commentary>_P1_ shoots from 22 yards looks like it's going wide</commentary>
|
||||
<commentary>_P1_ dribbles into the box, turns inside the defence and fires</commentary>
|
||||
<commentary>_P1_ cuts in from the left flank and shoots</commentary>
|
||||
<commentary>_P1_ tries his luck from 30 yards</commentary>
|
||||
<commentary>_P1_ arrows shot towards top left corner</commentary>
|
||||
<commentary>_P1_ shoots from close range</commentary>
|
||||
<commentary>Great ball from _P2_ sends _P1_ one on one with the goalkeeper</commentary>
|
||||
<commentary>_P1_'s overhead kick heads towards the top right hand corner</commentary>
|
||||
<commentary>_P1_ spins past two defenders, wrong foots the keeper and back heels the ball towards goal</commentary>
|
||||
<commentary>_P2_ lays the ball off to _P1_ who sends a rocket of a shot towards goal</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>goal</name>
|
||||
<commentary>Goal!!!</commentary>
|
||||
<commentary>And the ball is smacked into the back of the net!!!</commentary>
|
||||
<commentary>_P1_ scores!!!</commentary>
|
||||
<commentary>And the ball flies straight past _P2_ and into the back of the net!!!</commentary>
|
||||
<commentary>The ball flies past _P2_ and it's a goal!!!</commentary>
|
||||
<commentary>_P1_ wheels away in celebration after a great goal sent the fans wild</commentary>
|
||||
<commentary>_P2_'s despairing dive can't keep _P1_'s shot out and the ball is in the back of the net!!!</commentary>
|
||||
<commentary>The dance ignites the fans, _P1_ celebrates in his own special fashion</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>miss</name>
|
||||
<commentary>_P1_ fired wide!</commentary>
|
||||
<commentary>_P1_ should have squared the ball went alone and lashed wide</commentary>
|
||||
<commentary>Defender clears</commentary>
|
||||
<commentary>_P1_ curls ball over</commentary>
|
||||
<commentary>Defender back to block just as it seemed to open up</commentary>
|
||||
<commentary>_P1_ smacks into row Z</commentary>
|
||||
<commentary>And the shot creeps just past the post</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>save</name>
|
||||
<commentary>_P2_'s fingertips flicks it wide</commentary>
|
||||
<commentary>_P2_ forced to tip _P1_'s shot over the crossbar</commentary>
|
||||
<commentary>Great pace shown by _P1_ to get to the ball first but _P2_ produced superb block tackle</commentary>
|
||||
<commentary>Low shot taken well to his left by _P2_</commentary>
|
||||
<commentary>_P2_ makes a superb reflex save to tip wide</commentary>
|
||||
<commentary>_P2_ runs at _P1_ and blocks shot with ankle</commentary>
|
||||
<commentary>Easy save for the goalkeeper</commentary>
|
||||
<commentary>Caught well by _P2_</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>start_match</name>
|
||||
<commentary>It's a crowd of _AT_ here as the whistle blows</commentary>
|
||||
<commentary>We're under way</commentary>
|
||||
<commentary>The two teams are greeted by a wall of noise as they take to the pitch</commentary>
|
||||
<commentary>The crowd roars as the players run out from the tunnel to start the match</commentary>
|
||||
<commentary>A cloudless day, gives the impression this match is going to sparkle</commentary>
|
||||
<commentary>_AT_ fans can't be wrong, this is the match we have all come to watch</commentary>
|
||||
<commentary>The referee gets the nod from the linesman and we are away</commentary>
|
||||
<commentary>The clash of the titans kicks off</commentary>
|
||||
<commentary>The referees are ready, players set, the battle begins</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>half_time</name>
|
||||
<commentary>It's half time</commentary>
|
||||
<commentary>It's a _RE_ at half time.</commentary>
|
||||
<commentary>It's a _RE_ at half time, _TL_'s manager has to find something special to spur his team on.</commentary>
|
||||
<commentary>_TL_ heads into the tunnel to await the managers scolding</commentary>
|
||||
<commentary>_TW_ are just 45 minutes away from a stunning victory</commentary>
|
||||
<commentary>_TL_'s manager cops a rollicking from the fans as he turns from the dugout</commentary>
|
||||
<commentary>There are two teams out there and only one of them is playing football</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>extra_time</name>
|
||||
<commentary>After a close match the game heads into extra time</commentary>
|
||||
<commentary>It's still _RE_: extra time</commentary>
|
||||
<commentary>After _MI_ minutes it's still _RE_: extra time</commentary>
|
||||
<commentary>Who will breakdown first, extra time it is</commentary>
|
||||
<commentary>It's down to determination and fitness now as we head into extra time</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>penalties</name>
|
||||
<commentary>Who would have thought _MI_ minutes ago it would come down to this</commentary>
|
||||
<commentary>And now we have the tense drama of a penalty shoot out</commentary>
|
||||
<commentary>Two teams, equall till now in every respect,face off in penalties</commentary>
|
||||
<commentary>The teams cant do it so now it's one on one. Striker against goalie</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>end_match</name>
|
||||
<commentary>The match is over!</commentary>
|
||||
<commentary>_TW_ are triumphant!!!</commentary>
|
||||
<commentary>The fans boo _TL_ off the pitch</commentary>
|
||||
<commentary>After _MI_ minutes the match ends with a _RE_</commentary>
|
||||
<commentary>The referee checks his watch and blows for full time</commentary>
|
||||
<commentary>Well that's that. It ends _RE_</commentary>
|
||||
<commentary>_RE_, what an astonishing result for _TW_</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>own_goal</name>
|
||||
<commentary>Ohh no, the ball ricocheted off _P1_ into the net</commentary>
|
||||
<commentary>It's a pinball in the penalty box, finally spinning off _P1_ across the line</commentary>
|
||||
<commentary>Oh that's a great shot and it's deflected off _P1_ and into the back of the net</commentary>
|
||||
<commentary>_P1_ passes the ball back to his goalie, oh no the keepers missed it! It's an own goal by _P1_!</commentary>
|
||||
<commentary>That little missunderstanding has cost _TT_ a goal</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>header</name>
|
||||
<commentary>_P2_ chips the ball towards _P1_ who heads the ball towards goal</commentary>
|
||||
<commentary>Diving header by _P1_</commentary>
|
||||
<commentary>He just floated in midair for ages then thunder heads it towards home</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>post</name>
|
||||
<commentary>Sweet strike by _P1_, hits the post</commentary>
|
||||
<commentary>And the shot glances wide off the post</commentary>
|
||||
<commentary>I'm suprised the post has managed to withstand that cracking shot</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>cross_bar</name>
|
||||
<commentary>Ball dinked over _P2_ but hit crossbar and bounced to safety</commentary>
|
||||
<commentary>The ball smacks into the crossbar with _P2_ stranded</commentary>
|
||||
<commentary>_P2_ seemed to be everywhere at once, finally tipping the ball off the crossbar</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>penalty</name>
|
||||
<commentary>_P1_ steps up to take the penalty</commentary>
|
||||
<commentary>_P1_ has a chance to score with a penalty kick</commentary>
|
||||
<commentary>_P1_ has missed a penalty before but he now has a chance to redeem himself</commentary>
|
||||
<commentary>You have to bury the nerves, swallow and concentrate when your taking penalties</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>free_kick</name>
|
||||
<commentary>Short free-kick from _P1_</commentary>
|
||||
<commentary>_P1_ drives free kick low and hard</commentary>
|
||||
<commentary>_P1_ takes free-kick quickly and curls around wall</commentary>
|
||||
<commentary>_P1_ curls the free kick over the wall</commentary>
|
||||
<commentary>Free kick: _P1_ plays the ball out wide</commentary>
|
||||
<commentary>Free kick: _P1_ hits a long ball up the pitch</commentary>
|
||||
<commentary>Free kick whipped across the face of goal by _P1_</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>foul_yellow</name>
|
||||
<commentary>_P2_ for dangerous slide tackle on _P1_</commentary>
|
||||
<commentary>_P2_ for foul on _P1_</commentary>
|
||||
<commentary>_P2_ for kicking ball away </commentary>
|
||||
<commentary>_P2_ for time wasting</commentary>
|
||||
<commentary>_P2_ for handball</commentary>
|
||||
<commentary>_P2_ for stopping _P1_ taking a quick free-kick</commentary>
|
||||
<commentary>_P2_ is booked for repeated dissent</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>foul_red</name>
|
||||
<commentary>_P2_ is reprimanded for high kicking</commentary>
|
||||
<commentary>_P2_ is given his marching orders for contempt</commentary>
|
||||
<commentary>_P2_ for malicious showing of studs</commentary>
|
||||
<commentary>_P2_ for intentional handball</commentary>
|
||||
<commentary>_P2_ is sent off for stopping a clear goal scoring opportunity</commentary>
|
||||
<commentary>_P2_ has been red carded for punching _P1_</commentary>
|
||||
<commentary>_P2_ for swearing at opposition fans</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>foul_red_injury</name>
|
||||
<commentary>_P2_ fouls and the stretcher bearers come racing on with _P1_ lying in agony on the turf</commentary>
|
||||
<commentary>Foul by _P2_; _P1_ seems to be injured... he might have to be substituted</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>send_off</name>
|
||||
<commentary>_P1_ has been sent off</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>injury</name>
|
||||
<commentary>_P1_ will have to go off after what seems an ankle injury</commentary>
|
||||
<commentary>_P1_ looks like he's badly injured</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>temp_injury</name>
|
||||
<commentary>_P1_ has pulled a muscle but should be able to continue</commentary>
|
||||
<commentary>_P1_ has picked up a slight knock</commentary>
|
||||
<commentary>_P1_ has a large cut above his left eye but it has been patched up and he will be able to continue </commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>stadium_breakdown</name>
|
||||
<commentary>_TH_ is undergoing stadium problems</commentary>
|
||||
<commentary>The floodlights have just gone out</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>stadium_riots</name>
|
||||
<commentary>The peasants are revolting</commentary>
|
||||
<commentary>And the fans are throwing flares onto the pitch</commentary>
|
||||
<commentary>The riot police have moved in to stop fighting between sets of oppostion supporters</commentary>
|
||||
<commentary>A fan has managed to get onto the pitch and has begun to attack the referee</commentary>
|
||||
<commentary>The fans pour onto the pitch in a full scale pitch invasion</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>stadium_fire</name>
|
||||
<commentary>Fire consumes _TT_'s stadium</commentary>
|
||||
<commentary>Away fans have set fire to the north stand</commentary>
|
||||
<commentary>A flare chucked onto the touchline has started a massive blaze</commentary>
|
||||
<commentary>A speaker has gone up in flames and the blaze spreading around the entire stadium</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>substitution</name>
|
||||
<commentary>_TT_ make a substitution, _P1_ comes on to replace _P2_</commentary>
|
||||
<commentary>_P2_ goes off to applause from the fans, _P1_ replaces him</commentary>
|
||||
<commentary>_P2_ is booed off the pitch as he is replaced by _P1_</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>structure_change</name>
|
||||
<commentary>_TT_ has changed their structure to _EX_</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>style_change</name>
|
||||
<commentary>_TT_ has changed their style to _EX_</commentary>
|
||||
</event>
|
||||
<event>
|
||||
<name>boost_change</name>
|
||||
<commentary>_TT_ has changed their boost to _EX_</commentary>
|
||||
</event>
|
||||
</lg_commentary>
|
Reference in New Issue
Block a user