2005-10-20 17:45:00 +02:00
|
|
|
/*
|
2005-11-26 17:52:51 +01:00
|
|
|
debug.c
|
|
|
|
|
2005-10-20 17:45:00 +02:00
|
|
|
Bygfoot Football Manager -- a small and simple GTK2-based
|
|
|
|
football management game.
|
|
|
|
|
|
|
|
http://bygfoot.sourceforge.net
|
|
|
|
|
|
|
|
Copyright (C) 2005 Gyözö Both (gyboth@bygfoot.com)
|
|
|
|
|
|
|
|
This program is free software; you can redistribute it and/or
|
|
|
|
modify it under the terms of the GNU General Public License
|
|
|
|
as published by the Free Software Foundation; either version 2
|
|
|
|
of the License, or (at your option) any later version.
|
|
|
|
|
|
|
|
This program is distributed in the hope that it will be useful,
|
|
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
|
|
GNU General Public License for more details.
|
|
|
|
|
|
|
|
You should have received a copy of the GNU General Public License
|
|
|
|
along with this program; if not, write to the Free Software
|
|
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
*/
|
|
|
|
|
2005-08-14 21:03:11 +02:00
|
|
|
#include "callbacks.h"
|
2005-05-13 20:20:47 +02:00
|
|
|
#include "debug.h"
|
|
|
|
#include "game_gui.h"
|
2005-10-27 23:10:15 +02:00
|
|
|
#include "league.h"
|
|
|
|
#include "live_game.h"
|
2005-05-13 20:20:47 +02:00
|
|
|
#include "option.h"
|
2005-10-27 23:10:15 +02:00
|
|
|
#include "strategy.h"
|
2005-06-20 16:24:54 +02:00
|
|
|
#include "support.h"
|
2005-10-27 23:10:15 +02:00
|
|
|
#include "team.h"
|
2005-05-13 20:20:47 +02:00
|
|
|
#include "user.h"
|
|
|
|
#include "variables.h"
|
|
|
|
|
2005-12-10 13:21:19 +01:00
|
|
|
/** Take some debug action depending on the text. Text is a prefix and a number. */
|
2005-05-13 20:20:47 +02:00
|
|
|
void
|
2005-12-10 13:21:19 +01:00
|
|
|
debug_action(const gchar *text)
|
2005-05-13 20:20:47 +02:00
|
|
|
{
|
2008-11-25 14:50:07 +01:00
|
|
|
#ifdef DEBUG
|
|
|
|
printf("debug_action\n");
|
|
|
|
#endif
|
|
|
|
|
2005-12-10 13:21:19 +01:00
|
|
|
gchar buf[SMALL];
|
|
|
|
gint value = -1;
|
2008-12-22 12:33:55 +01:00
|
|
|
gint i, j;
|
2005-12-10 13:21:19 +01:00
|
|
|
|
2008-11-06 09:03:09 +01:00
|
|
|
printf("debact: %s\n", text);
|
|
|
|
|
2005-12-10 13:21:19 +01:00
|
|
|
sscanf(text, "%[^-0-9]%d", buf, &value);
|
|
|
|
|
2005-05-13 20:20:47 +02:00
|
|
|
if(g_str_has_prefix(text, "deb"))
|
|
|
|
{
|
2005-10-20 17:45:00 +02:00
|
|
|
option_set_int("int_debug", &constants, value);
|
2005-07-08 11:26:00 +02:00
|
|
|
game_gui_print_message("Debug value set to %d.", value);
|
2005-05-13 20:20:47 +02:00
|
|
|
}
|
2007-02-18 11:17:36 +01:00
|
|
|
else if(g_str_has_prefix(text, "writer"))
|
|
|
|
{
|
|
|
|
option_set_int("int_debug_writer", &constants, value);
|
|
|
|
game_gui_print_message("Debug writer value set to %d.", value);
|
|
|
|
}
|
2005-05-13 20:20:47 +02:00
|
|
|
else if(g_str_has_prefix(text, "cap"))
|
|
|
|
{
|
|
|
|
current_user.tm->stadium.capacity += value;
|
2005-07-08 11:26:00 +02:00
|
|
|
game_gui_print_message("Stadium capacity changed by %d. New: %d.", value,
|
2005-06-20 14:46:57 +02:00
|
|
|
current_user.tm->stadium.capacity);
|
2005-05-13 20:20:47 +02:00
|
|
|
}
|
|
|
|
else if(g_str_has_prefix(text, "saf"))
|
|
|
|
{
|
|
|
|
current_user.tm->stadium.safety += ((gfloat)value / 100);
|
|
|
|
current_user.tm->stadium.safety =
|
|
|
|
CLAMP(current_user.tm->stadium.safety, 0, 1);
|
2005-07-08 11:26:00 +02:00
|
|
|
game_gui_print_message("Stadium safety changed by %d. New: %.2f", value,
|
2005-06-20 14:46:57 +02:00
|
|
|
current_user.tm->stadium.safety);
|
2005-05-13 20:20:47 +02:00
|
|
|
}
|
|
|
|
else if(g_str_has_prefix(text, "mon"))
|
|
|
|
{
|
|
|
|
current_user.money += value;
|
2005-07-08 11:26:00 +02:00
|
|
|
game_gui_print_message("Money changed by %d. New: %d.", value,
|
2005-06-20 14:46:57 +02:00
|
|
|
current_user.money);
|
2005-05-13 20:20:47 +02:00
|
|
|
}
|
2005-05-28 12:41:53 +02:00
|
|
|
else if(g_str_has_prefix(text, "suc"))
|
|
|
|
{
|
|
|
|
current_user.counters[COUNT_USER_SUCCESS] += value;
|
2005-07-08 11:26:00 +02:00
|
|
|
game_gui_print_message("Success counter changed by %d. New: %d.", value,
|
2005-06-20 14:46:57 +02:00
|
|
|
current_user.counters[COUNT_USER_SUCCESS]);
|
2005-05-28 12:41:53 +02:00
|
|
|
}
|
2005-07-15 14:42:57 +02:00
|
|
|
else if(g_str_has_prefix(text, "scout"))
|
|
|
|
{
|
|
|
|
current_user.scout = value;
|
|
|
|
game_gui_print_message("Scout changed to %d.", value);
|
|
|
|
}
|
|
|
|
else if(g_str_has_prefix(text, "phys"))
|
|
|
|
{
|
|
|
|
current_user.physio = value;
|
|
|
|
game_gui_print_message("Physio changed to %d.", value);
|
|
|
|
}
|
|
|
|
else if(g_str_has_prefix(text, "yc"))
|
|
|
|
{
|
|
|
|
current_user.youth_academy.coach = value;
|
|
|
|
game_gui_print_message("Youth coach changed to %d.", value);
|
|
|
|
}
|
|
|
|
else if(g_str_has_prefix(text, "pospref"))
|
|
|
|
{
|
|
|
|
current_user.youth_academy.pos_pref = value;
|
|
|
|
game_gui_print_message("Recruiting pref changed to %d.", value);
|
|
|
|
}
|
2005-08-14 21:03:11 +02:00
|
|
|
else if(g_str_has_prefix(text, "goto"))
|
|
|
|
{
|
2009-01-09 15:32:34 +01:00
|
|
|
sett_set_int("int_opt_goto_mode", 1);
|
2009-01-10 11:41:27 +01:00
|
|
|
if(value < 100)
|
|
|
|
while(week < value)
|
|
|
|
on_button_new_week_clicked(NULL, NULL);
|
|
|
|
else
|
|
|
|
while(season < value - 100)
|
|
|
|
on_button_new_week_clicked(NULL, NULL);
|
2009-01-09 15:32:34 +01:00
|
|
|
sett_set_int("int_opt_goto_mode", 0);
|
2005-08-14 21:03:11 +02:00
|
|
|
}
|
2005-08-27 18:17:50 +02:00
|
|
|
else if(g_str_has_prefix(text, "testcom") ||
|
|
|
|
g_str_has_prefix(text, "tc"))
|
|
|
|
{
|
2005-08-28 13:35:21 +02:00
|
|
|
stat5 = -value - 1000;
|
2005-08-27 18:17:50 +02:00
|
|
|
game_gui_print_message("Commentary type displayed: %d.", value);
|
|
|
|
}
|
2008-12-22 12:33:55 +01:00
|
|
|
else if(g_str_has_prefix(text, "printweeks"))
|
|
|
|
{
|
|
|
|
for(i = 0; i < cps->len; i++)
|
|
|
|
{
|
|
|
|
if(cp(i).add_week != 1000)
|
|
|
|
{
|
|
|
|
g_print("Cup: %s\n", cp(i).name);
|
|
|
|
for(j = 0; j < cp(i).rounds->len; j++)
|
|
|
|
g_print(" Round %2d: Week %2d (w/o delay: %2d)\n",
|
|
|
|
j, cup_get_first_week_of_cup_round(&cp(i), j, TRUE),
|
|
|
|
cup_get_first_week_of_cup_round(&cp(i), j, FALSE));
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2005-05-28 12:41:53 +02:00
|
|
|
else if(g_str_has_prefix(text, "help"))
|
|
|
|
{
|
2005-12-14 15:05:59 +01:00
|
|
|
g_print("Debug options:\n"
|
2005-05-28 12:41:53 +02:00
|
|
|
"deb \t set debug value\n"
|
2007-02-18 11:17:36 +01:00
|
|
|
"writer \t set debug-writer value\n"
|
2005-05-28 12:41:53 +02:00
|
|
|
"cap \t change stadium capacity\n"
|
|
|
|
"saf \t change stadium safety\n"
|
|
|
|
"mon \t change money\n"
|
|
|
|
"suc \t change success counter\n"
|
2005-07-15 14:42:57 +02:00
|
|
|
"scout \t change scout\n"
|
|
|
|
"physio \t change physio\n"
|
2008-12-22 12:33:55 +01:00
|
|
|
"printweeks \t print the starting weeks of all cup rounds\n"
|
2005-07-15 14:42:57 +02:00
|
|
|
"youth coach \t change youth coach\n"
|
|
|
|
"pospref \t change recruiting pref\n"
|
2005-08-14 21:03:11 +02:00
|
|
|
"goto \t Press 'new week' automatically until\n"
|
|
|
|
" \t the appropriate week is reached\n"
|
2005-08-27 18:17:50 +02:00
|
|
|
"testcom|tc \t Test a specific live game commentary.\n"
|
|
|
|
" \t Find the numbers in live_game_struct.h (LiveGameEventType)\n"
|
|
|
|
" \t Use 'goto' afterwards.\n"
|
2005-05-28 12:41:53 +02:00
|
|
|
"help \t display this help\n");
|
|
|
|
}
|
2005-05-13 20:20:47 +02:00
|
|
|
|
2005-06-20 16:24:54 +02:00
|
|
|
setsav0;
|
2005-05-13 20:20:47 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
gboolean
|
|
|
|
debug_reset_counter(gpointer data)
|
|
|
|
{
|
2008-11-25 14:50:07 +01:00
|
|
|
#ifdef DEBUG
|
|
|
|
printf("debug_reset_counter\n");
|
|
|
|
#endif
|
|
|
|
|
2005-05-13 20:20:47 +02:00
|
|
|
counters[COUNT_SHOW_DEBUG] = 0;
|
|
|
|
|
|
|
|
return FALSE;
|
|
|
|
}
|
2005-10-27 23:10:15 +02:00
|
|
|
|
|
|
|
void
|
|
|
|
debug_calibrate_betting_odds(gint skilldiffmax, gint matches_per_skilldiff)
|
|
|
|
{
|
2008-11-25 14:50:07 +01:00
|
|
|
#ifdef DEBUG
|
|
|
|
printf("debug_calibrate_betting_odds\n");
|
|
|
|
#endif
|
|
|
|
|
2005-10-27 23:10:15 +02:00
|
|
|
gint i, skilldiff, matches;
|
|
|
|
Fixture *fix = &g_array_index(lig(0).fixtures, Fixture, 0);
|
2008-12-01 21:39:16 +01:00
|
|
|
LiveGame live_game;
|
2005-10-27 23:10:15 +02:00
|
|
|
|
|
|
|
fix->home_advantage = FALSE;
|
|
|
|
|
|
|
|
for(skilldiff=0;skilldiff<=skilldiffmax;skilldiff++)
|
|
|
|
{
|
|
|
|
gint res[3] = {0, 0, 0};
|
|
|
|
|
|
|
|
for(matches=0;matches<matches_per_skilldiff;matches++)
|
|
|
|
{
|
|
|
|
fix->attendance = -1;
|
|
|
|
fix->result[0][0] = fix->result[1][0] = 0;
|
|
|
|
for(i=0;i<fix->teams[0]->players->len;i++)
|
|
|
|
{
|
|
|
|
strategy_repair_player(&g_array_index(fix->teams[0]->players, Player, i));
|
|
|
|
strategy_repair_player(&g_array_index(fix->teams[1]->players, Player, i));
|
|
|
|
g_array_index(fix->teams[0]->players, Player, i).skill = 90;
|
|
|
|
g_array_index(fix->teams[1]->players, Player, i).skill = 90 - skilldiff;
|
|
|
|
g_array_index(fix->teams[0]->players, Player, i).fitness = 0.9;
|
|
|
|
g_array_index(fix->teams[1]->players, Player, i).fitness = 0.9;
|
|
|
|
}
|
|
|
|
|
2008-12-01 21:39:16 +01:00
|
|
|
live_game_calculate_fixture(fix, &live_game);
|
2005-10-27 23:10:15 +02:00
|
|
|
if(fix->result[0][0] < fix->result[1][0])
|
|
|
|
res[2]++;
|
|
|
|
else
|
|
|
|
res[(fix->result[0][0] == fix->result[1][0])]++;
|
|
|
|
}
|
|
|
|
|
2005-12-14 15:05:59 +01:00
|
|
|
g_print("sd %3d res %3d %3d %3d prob %.2f %.2f %.2f\n", skilldiff,
|
|
|
|
res[0], res[1], res[2], (gfloat)res[0] / (gfloat)matches,
|
|
|
|
(gfloat)res[1] / (gfloat)matches, (gfloat)res[2] / (gfloat)matches);
|
2005-10-27 23:10:15 +02:00
|
|
|
}
|
|
|
|
}
|
2005-11-26 17:52:51 +01:00
|
|
|
|
|
|
|
/** Check whether the 4 forwards, boost on, style all-out-attack
|
|
|
|
easter egg should be activated. */
|
|
|
|
gboolean
|
|
|
|
debug_egg_forwards_boost_style(void)
|
|
|
|
{
|
2008-11-25 14:50:07 +01:00
|
|
|
#ifdef DEBUG
|
|
|
|
printf("debug_egg_forwards_boost_style\n");
|
|
|
|
#endif
|
|
|
|
|
2005-11-26 17:52:51 +01:00
|
|
|
gint i, fwds = 0;
|
|
|
|
|
|
|
|
if(current_user.tm->boost != 1 ||
|
|
|
|
current_user.tm->style != 2 ||
|
|
|
|
current_user.tm->players->len < 11)
|
|
|
|
return FALSE;
|
|
|
|
|
|
|
|
for(i=0;i<11;i++)
|
|
|
|
if(g_array_index(current_user.tm->players, Player, i).cpos == 3 &&
|
|
|
|
g_array_index(current_user.tm->players, Player, i).cskill > 0)
|
|
|
|
fwds++;
|
|
|
|
|
|
|
|
return (fwds > 3);
|
|
|
|
}
|
2007-02-18 13:43:07 +01:00
|
|
|
|
|
|
|
/**
|
|
|
|
* debug_writer writes debug-messages to an outpot
|
|
|
|
*
|
|
|
|
* *file_name = the name of the file where the debug-funtion is called
|
|
|
|
* *method_name = the name of the function where the debug-funtion is called
|
|
|
|
* *text = the text of the debug message
|
|
|
|
*
|
|
|
|
* debuglevel < int_debug -> print message to output
|
|
|
|
*/
|
|
|
|
void
|
|
|
|
debug_writer_out(const gchar *file_name,
|
|
|
|
const gchar *method_name,
|
|
|
|
const gchar *text,
|
|
|
|
gint debuglevel)
|
|
|
|
{
|
2008-11-25 14:50:07 +01:00
|
|
|
#ifdef DEBUG
|
|
|
|
printf("debug_writer_out\n");
|
|
|
|
#endif
|
|
|
|
|
2007-02-18 13:43:07 +01:00
|
|
|
|
|
|
|
gint writer = option_int("int_debug_writer", &constants);
|
|
|
|
gint debugging = option_int("int_debug", &constants);
|
|
|
|
|
|
|
|
if ((debuglevel < debugging) && (writer == 1))
|
|
|
|
{
|
|
|
|
printf("%s # %s # %s\n", file_name, method_name, text);
|
|
|
|
}
|
2007-02-20 15:11:40 +01:00
|
|
|
|
|
|
|
//Example
|
|
|
|
//gchar message[SMALL];
|
|
|
|
//sprintf(message, "Number of players in player list: %d", current_user.tm->players->len);
|
|
|
|
//debug_writer_out("misc2_callbacks2.c",
|
|
|
|
// "on_button_transfer_yes_clicked",
|
|
|
|
// message,
|
|
|
|
// 3);
|
|
|
|
|
2007-02-18 13:43:07 +01:00
|
|
|
}
|