From 15ad0cbb01752e6f0532d62c74e3a0300e6025f5 Mon Sep 17 00:00:00 2001 From: gyboth Date: Thu, 1 Dec 2005 11:50:54 +0000 Subject: [PATCH] "Job exchange, first buggy draft with lots of debugging output." --- bygfoot.glade | 140 ++++++---- bygfoot_misc2.glade | 3 +- locale/bg/LC_MESSAGES/bygfoot.mo | Bin 66928 -> 66643 bytes locale/da/LC_MESSAGES/bygfoot.mo | Bin 50884 -> 50694 bytes locale/de/LC_MESSAGES/bygfoot.mo | Bin 51967 -> 51767 bytes locale/es/LC_MESSAGES/bygfoot.mo | Bin 50436 -> 50235 bytes locale/fr/LC_MESSAGES/bygfoot.mo | Bin 51344 -> 55850 bytes locale/nl/LC_MESSAGES/bygfoot.mo | Bin 51084 -> 50886 bytes locale/pl/LC_MESSAGES/bygfoot.mo | Bin 51012 -> 50836 bytes locale/ro/LC_MESSAGES/bygfoot.mo | Bin 47166 -> 46956 bytes locale/zh/LC_MESSAGES/bygfoot.mo | Bin 41922 -> 41721 bytes src/Makefile.am | 3 +- src/bygfoot.h | 8 + src/callback_func.c | 23 +- src/callbacks.c | 39 ++- src/callbacks.h | 10 +- src/cup.c | 9 +- src/enums.h | 2 + src/finance.c | 3 +- src/fixture.c | 27 +- src/free.c | 107 +++++-- src/free.h | 9 +- src/game.c | 44 ++- src/game_gui.c | 80 ++++-- src/game_gui.h | 3 +- src/gui.c | 1 + src/interface.c | 462 ++++++++++++++++--------------- src/league.c | 12 +- src/load_save.c | 29 +- src/main.c | 7 +- src/misc.c | 3 + src/misc2_callback_func.c | 5 +- src/misc2_callbacks.c | 100 +++++-- src/misc2_callbacks.h | 9 - src/misc2_interface.c | 3 +- src/misc_callback_func.c | 2 +- src/start_end.c | 58 ++-- src/stat.c | 30 +- src/stat.h | 2 +- src/stat_struct.h | 9 +- src/strategy.h | 3 +- src/support.c | 25 -- src/support.h | 25 -- src/team.c | 27 +- src/team.h | 5 +- src/treeview.c | 46 +-- src/treeview.h | 2 +- src/treeview2.c | 100 +++++++ src/treeview2.h | 9 + src/treeview_helper.c | 57 +++- src/treeview_helper.h | 11 +- src/user.c | 233 +++++++++------- src/user.h | 9 +- src/user_struct.h | 17 +- src/variables.h | 8 +- src/window.c | 6 +- src/xml.h | 1 + src/xml_country.c | 67 +++-- src/xml_country.h | 2 +- src/xml_league.c | 2 +- src/xml_loadsave_league_stat.c | 43 +-- src/xml_loadsave_misc.c | 5 + src/xml_loadsave_season_stats.c | 2 +- src/xml_loadsave_users.c | 75 +++-- support_files/bygfoot_app | 4 + support_files/bygfoot_constants | 26 ++ 66 files changed, 1295 insertions(+), 757 deletions(-) diff --git a/bygfoot.glade b/bygfoot.glade index 01069a79..21de3828 100644 --- a/bygfoot.glade +++ b/bygfoot.glade @@ -68,7 +68,7 @@ - + True gtk-revert-to-saved 1 @@ -136,7 +136,7 @@ - + True gtk-preferences 1 @@ -200,7 +200,7 @@ - + True menu_save_geometry.png 0.5 @@ -234,7 +234,7 @@ - + True menu_fixtures.png 0.5 @@ -255,7 +255,7 @@ - + True menu_fixtures_comp.png 0.5 @@ -276,7 +276,7 @@ - + True menu_table.png 0.5 @@ -297,7 +297,7 @@ - + True menu_league_results.png 0.5 @@ -318,7 +318,7 @@ - + True menu_season_res.png 0.5 @@ -345,7 +345,7 @@ - + True menu_league_stats.png 0.5 @@ -366,7 +366,7 @@ - + True menu_history.png 0.5 @@ -398,7 +398,7 @@ True - + True menu_style.png 0.5 @@ -416,7 +416,7 @@ True All Out Defend True - True + False @@ -426,7 +426,7 @@ True Defend True - True + False menu_all_out_defend @@ -437,7 +437,7 @@ True Balanced True - True + False menu_all_out_defend @@ -448,7 +448,7 @@ True Attack True - True + False menu_all_out_defend @@ -476,7 +476,7 @@ True - + True menu_scout.png 0.5 @@ -494,7 +494,7 @@ True Best True - True + False @@ -504,7 +504,7 @@ True Good True - True + False menu_scout_best @@ -515,7 +515,7 @@ True Average True - True + False menu_scout_best @@ -543,7 +543,7 @@ True - + True menu_physio.png 0.5 @@ -561,7 +561,7 @@ True Best True - True + False @@ -571,7 +571,7 @@ True Good True - True + False menu_physio_best @@ -582,7 +582,7 @@ True Average True - True + False menu_physio_best @@ -610,7 +610,7 @@ True - + True menu_youth_academy.png 0.5 @@ -647,7 +647,7 @@ True Best True - True + False @@ -657,7 +657,7 @@ True Good True - True + False menu_yc_best @@ -668,7 +668,7 @@ True Average True - True + False menu_yc_best @@ -703,7 +703,7 @@ True Goalies True - True + False @@ -713,7 +713,7 @@ True Defenders True - True + False menu_recruit0 @@ -724,7 +724,7 @@ True Midfielders True - True + False menu_recruit0 @@ -735,7 +735,7 @@ True Forwards True - True + False menu_recruit0 @@ -777,7 +777,7 @@ True - + True menu_boost.png 0.5 @@ -795,7 +795,7 @@ True On True - True + False @@ -805,7 +805,7 @@ True Off True - True + False menu_boost_on @@ -840,7 +840,7 @@ - + True gtk-undo 1 @@ -861,7 +861,7 @@ - + True menu_structure.png 0.5 @@ -883,7 +883,7 @@ - + True menu_rearrange.png 0.5 @@ -909,7 +909,7 @@ - + True menu_browse_tms.png 0.5 @@ -920,6 +920,23 @@ + + + + True + + + + + + True + Show the list of available manager jobs + Show job exchange + True + + + + @@ -942,7 +959,7 @@ - + True menu_player_info.png 0.5 @@ -962,7 +979,7 @@ - + True menu_player_put_transfer.png 0.5 @@ -982,7 +999,7 @@ - + True menu_player_remove_transfer.png 0.5 @@ -1002,7 +1019,7 @@ - + True menu_player_contract.png 0.5 @@ -1022,7 +1039,7 @@ - + True menu_player_fire.png 0.5 @@ -1042,7 +1059,7 @@ - + True menu_player_shoots.png 0.5 @@ -1062,7 +1079,7 @@ - + True menu_player_move_to_ya.png 0.5 @@ -1088,7 +1105,7 @@ - + True menu_player_browse.png 0.5 @@ -1122,7 +1139,7 @@ - + True menu_last_match.png 0.5 @@ -1143,7 +1160,7 @@ - + True menu_match_stats.png 0.5 @@ -1164,7 +1181,7 @@ - + True gtk-jump-to 1 @@ -1184,7 +1201,7 @@ True - + True menu_mmatches.png 0.5 @@ -1207,7 +1224,7 @@ - + True gtk-add 1 @@ -1230,7 +1247,7 @@ - + True gtk-preferences 1 @@ -1262,7 +1279,7 @@ - + True menu_history.png 0.5 @@ -1289,7 +1306,7 @@ - + True gtk-media-forward 1 @@ -1311,7 +1328,7 @@ - + True gtk-go-back 1 @@ -1333,7 +1350,7 @@ - + True gtk-justify-fill 1 @@ -1368,7 +1385,7 @@ - + True menu_finances.png 0.5 @@ -1389,7 +1406,7 @@ - + True menu_stadium.png 0.5 @@ -1439,7 +1456,7 @@ - + True gtk-dialog-info 1 @@ -1460,7 +1477,7 @@ - + True gtk-add 1 @@ -1481,7 +1498,7 @@ - + True gtk-help 1 @@ -2266,6 +2283,7 @@ True True 470 + diff --git a/bygfoot_misc2.glade b/bygfoot_misc2.glade index b88e6711..c548fe8a 100644 --- a/bygfoot_misc2.glade +++ b/bygfoot_misc2.glade @@ -9,7 +9,8 @@ Job offer GTK_WINDOW_TOPLEVEL GTK_WIN_POS_CENTER - False + True + 500 600 True False diff --git a/locale/bg/LC_MESSAGES/bygfoot.mo b/locale/bg/LC_MESSAGES/bygfoot.mo index d0daddc2cfb1b22672dbbae4e780b44b62c8ecf3..94ddc8bc722283cfb99ae222883c5a087a85c5df 100644 GIT binary patch delta 13572 zcmZA72YgT0|HttgvXg%jBg9UTh#-=P7(tAP62_2}b?o@XX_x~^pQoaJ!z&)_(@ z@%t=}Q!S(8v@E1j#~GC1IC*febvE`T-h%!ZRnl=numlER3VLBZjK#(_9*>^HQ&8tk z$IOo7a+Z(@qF@vH;C@txhfy6}LT|i=I`KBDqo){*FVPo$6HU8JsCHqf{vuKR#Mtr# zEK8h>-dx`qLdK7RQK&nZggRlibs?(5FH!B*VIXctUEl!fykn?=TtKz^!^Zbf=l_jN zu9LBp8EAI&;`&ZrWw0Qs!)P1FBP-#QM$JGu)XY>t4WJRK<94X?dRY5oe&S)Mfi1>t zxCU7@XFoQ^7wD=>rcP;7u?R~LpTXwnQ-<}#_Bac_LUmA{`D50dzSsd*VL=Q`a-8lM zhper$5H-LJ7=ydf10SGn=ur~$uaQ5eK>lm>E@v(fgyktuv5v-?#CvTVKxHxF8kmj) zQG4l_^|JLIYR|kvUHC0(#=R>r|0)QqU$zgdXr$Fq6=|r3jcnWs!-zYf?tBF5LZ4tJ zoP*kwU!%%*qRLOAruYxkd*C*zK1U_9d1H`)x|}4FaZ;`IQFqu9bq76AyL~9;zzL{3 zUWPMq3u<6BE1L_}Mcq(3>V}%32G|ZYgME<;JA<*Vp8xS=s#5R^>VkQyn8&6lvf-W5 zSQPtWUR;doU^nUlhirTb^|)O{P3=8fo-u{}L>z=Fk4D`WLch zK-APvKn-ju#^VOmj9f=e@ng(`&rt))%H8NrbE5`Y0M%a{>b%OR{_3Jj6|HSSFVqPm z&;uurfqSM%C{_4g6;e$J59Y>O4igcw$q{3#l4<5r2ppK<`xMKLZ&T z1sQQPY5?PG!)fSEJR4(i5vs!zw)`gQya%Yw^%v@fysMc#ksWox+^9{NA2rhns2eO_ zjrmtWG6m|WI!?hf+wdZ)gX+t`0{Y-&^u?K|wO)wY%v(@1bO7Bq zfWE{xU1W5DN2rE>qekXc!*S1ykJbPG8A7b{vY1=C#`95Aa}-4gRl_l&Js}rs)E|RO;L|iFVxJ9!T_9z z+H7A~7ohHZ83yBORDV0HKh$f<7z;*FZ2P}Btr+c+LIrKwm9 z>tQ60zz|%4>TfF+$DODfyocHg&+9Y)dQ4tXAm7*uZCOpFC#pO<>cpI=S8W7pAXQLn zoQ4`mBh*Z_MxECWb)f;M0S&=SI0KZJ~Sdv=V)NGyd-unA5@&A=_x zn!ZKdc?K%Wqd%(STBv>+puQ)x!>l+GbK@-3%zTSl%KfU>^Zy$e?an8d9rHIeBQJ~D zh|^Hz9Z($%MNQ!()S6C1?VVYu0W7wzLoMYl)PN7!^0Qcr_&T~Y(&Ej`oz+22b$!$w zwMSj3n~i&6LE-_J1?QtWUXR)z^1({0ucf|K?^Xb2MlDbz(dPTB~GK z!}_S_xeI2-S*WRBg&NQr)BrbPKHP50f5mFVS8N>F!mM>s)J!Cx`m1Qm8@6Enb;m6z zkUg+04o8i2yY(RI!sk(s&1KY`-#`uIG3qgXVSQ`MeOj6s2}0di7^;1YwWN!T9*c6Q z3sgc~xEkib#u$mcQJZZxCgM4)ih-^8iH;3$BpyNSsWd)12jWreg(+>!Q?nUs690l) zdRP9oCQ}LXP|y~O;t1;+)Z_LmuEp255?8k~=hbV^YnQkeYU=l5IrQydemhph0>l%s z4z9yO_y&2WxtxfO=5ZK=n$j7lsalG;aT{tz&Z0Kgb&SUc_z{M8GBY(5)$wZ7<~xO2 zs%sdAchL(ob~a1khklx?5HjvhKg>vj+^B(sqbC+YofvCP#0U(`Skp$2voeee&=g?G`V7mGK&HNm{dBkBym3QWmK)QQ2& zvrdRWElDNRz*=KvoQhTPG)7<;J1##~z~a~rlW`hG;VIPSe$|WlSI1ds)J~lQ+4X7WM#040Lr?E6%#W)NbV9INvA8`|m#&%dAC*umdf_j6F zaq*D)lbM6+cqInlW%R<^)`#dz{0zPE4Qeet8LbS&OqdmQUZk}se#}zFqh@y1VDt3+ zhUbZ0Aw$dnZlOl>#OgiN3?wIZRfnhxOhsK_DTd-#s43oM^aOl|9Mb1)ZY4$ zbqF#;E@vE>>@@fsb%9l=j=w{#?Mc+sKSEtNY`7U{USxTlc+^y{z+haDxo{7v-%F?& zdWxFq*Qo3GjnH*i|6F8L5r?{9In>&=Ky}#FIta58Pr!V*5JPYmX2at)zJcoRIjSE| zuA%cXp=Kfy)jl2zk(?U*(TMw?PMCs0I1g*!YSe|EVl;Y=bpLd6isKg!3E9w2F?Mnr zT#8N5V>I6puo;fT8yLV|==_QKZ0I|N`EO6fT{6qD_E^5r;uE}viQ~*?LfCjS;zVqq zc1S&t&t)DuB9B zD(XTVFc5p7IvR`@@HJ`x=cbr9*-g}@az5i_1evigCSX-;jp4W)^`1F^y6&$oGP=Ms zEPx(U&6_I%^@^;8Ik6M!#F41YGy`>~t1u4tpxz6Aq56A?YUlO2xzn6jiZ~kebhSsF z=Nd#Niprh8keNbn}=+pgJy(DsO1Zd!qUui$!sr z^%6$v`S)ePZ%|PjgE4fbnc4`{9VDVUu7&xq9R}ejqyy)3+>P6i4ekt>WtQ+is25Q- z9+9qC99!cYOv4u#qUS$lwz*(BW}~7rX2s!H0jJye6zcK1iFGh_j`>P93&V-epa%8~ zbt4()nwiOhnz16NP1p=O;}~>*|G!5@Cpz=YSEpdq8m6Jvv>ED7+hQIZk6Ca9YG!tz zHq!~z4Bf*V7%<C?;SMhGTDZDKpJB_!cu0@57RK7Tco#0`mo>JJus!iT?Nk zbD`HlbD z>cS0Cd*l;rg!51xJwh#+=Q8s}Bope!5>W%Fh?%e+YJlxg@0Z>#GCFavtr&;8z)ag< zjji8o>-X9C1ZqYu+xVWXe~Gy%_x{pcr~vBmi$Ptd3AV$IHg^3)Mk6|dy6_d$o&AmF zu_hl3wQ&OKGvYjdG}S{_@cj*^;W3=N(pkX_y9JJb$H^ms@QK+Y3gLNC~0=uyyo<&~_{n~uD%Zu5GJ7EeAM?FRRQSI)a z`}_YBGWjX^$2Q2fhPx$BMLs8-6R0(8@r}8I?x-~%f+cY(*2Dv-3xupSk5?%yLfjOS zaSVQpKcWUyb{&tR%Y!)}Gk}7f>&@ng-(Y^pG(l}T7itr(#|n52wKU-yO?hk79es`& za4u@b7GN|U!32Dc8c30EO?`KC6{KJunQ+{LIq`Q4!`G;evu-lx!3g3=)C(pJb$(}5 z$CEG)kD!+74f>$xX7i~Sh?=n&OGqpab3kPEq=EYd7hPt6am=!0X2EGKfga@n7tLRd<^czQxPL_fTv5^Byyh3+P3BA2sz)ur@k-&9~q>cz|#vR>U6r%#yCf zoLt}8N`^<*Ifc5z5&O+l&cb@cyHRT#{Db-Zo`i}gq1JdCYQTX%n(v4WQA>IbwfVfb zdSxty$v6Z{;&cg-b<%Q8zhRh5yk$BAd42u%yI%IZhb<~|q!CJTnwUz;g&7LWXI{#zT zoi4zNcoq9$_!09s&%{9D)7Gm;n16o??o*&Uc!gfr@TmKnw9^c=nQmKOpq9w{nE4f( z2UTAWqp%HX#wOqpT#H39>bQAa(=m{E5QgH|kkJ$E&d!p2un!`-^!m48rOj)MEj3J^9t_-fS27 z0HI+kT!0U;3r@OZzV|=Hc;Y@hgNtxE*2F5mna}snun2LXD`xXHL=B`rrr}Z>KSa%B zuB+}>xyy+mbBlr*n1VxpH(wI>qIP+~Yv#kF8CF$2hTuN*!_%mxxQyO-4}I|oYK>pp z`b>YA&x~+X`&e}U`+u@6NJTw1>6i`s;S!vPBe2MIekI}8xEa&`H17@n8|Fi68;+zr z^rmV51!^fnxx40g2iIcCZS(8;3I5LhbI#r|U!k_#HUCG$C-<0k%ERuPFQ?1Vlepsp z^J&-(a}ZBMP5BzkkH6rT_zIWeqKCXuGw>*~kyP*c%lsT)h9!wFpevnB@Duaq>V&$} zTc|bb{M0-{$#`#_YuPu?2R+s(1j4d+=mD=e13o^um0_ z^L)wkuT50vrRiWU#t`pCe@=LW(ZsL*Zu(;#lzN1>$khlY`$8A`f z3v}`Da4*4@3?A;^{nxN3^%*mIxZj9#eFde5}fAqBV!Xv}#4ZKB*P?vXnI^RcMa_ScbAamXlT`9sTdmaN6ovgGJ~>M`_Xo;y&)^e}B>`n@!l7c8zUu8*Fd;&}MO^ z66l@AZghWp%uM6uwm~baUTKM>H#R2gJ{l7rBo{{7Kt2k2Ufo9(`pHJwSEQwsrB1_re@ImbLaux?arA$yJ;|uY*YM|)QH9-i9^Zv!urHI zYFdv_UWoi!%3hP7hf}dDX*l_+_zC`w+ekUd>(D>sx{p!()!XCU5kqIKX{h4>eoDGZ z+C_YxR9hAA9Sg~4r+z+3#}I@2HFFW~d{A zvZ?6lj`T`12k&mD8g+|x9!CS(FTm#54>O|P&AfV@dgNP>!bvf-*RR(14wn;6#SawT zv=w~2a0*lAkE2PEtdyO-Ze`e#6Sd02>Bpsg->l*|gyUt|WW;^*ZqyofWlfEH8j2NRyPd7X5mfkN4(v`^Oa7K^7f7t*Lu)U}`Al{S;XP7i z(jsDQtS#iT)9w)Y2_zj&NwX=}k;j8(-Dt4d7MNo5Jy-b)lo!T~SPiR_E|Z^0nnb=X zHYbJ9$3Wuiq*J8hlrh7(@(oEd$@`J?(?myA5~sS4(v$_;d@O}4h!coY z$fvo>S^smk!4liS7Ggj0{~>)x^0oCH$X_JC3|r#~EM~7%gZMP5$-65nraq3;fqXjU zxozFQ#5z9IAFl5{`to-ajgv@+NJWTmk-jB$B7S#trIX_X*-7mv|H)QVr~D)GMJW5m zwx31(l>FDWjVMLCqm*qVUxnnp{tF6zCRL(xFAgRBMk+w8V-@*#M=kP;-v!qG)~_(1 zJ!gY0%WcnXXUkPQ*VcWn=f4gO9@$0(-)nS+vSi|6G`>W>IgYpO>ft6*+xObvCH|Z? zWl5FDugCX~9F%3HU@X?K=N;DbucI~vo3Wp*s6eB4#{n{PiT9Jfu!Z}vr_IOPbABVP zKBPoy~V4X~y5pRc{hc?wQY;fuMjBWVx$cSkWYlZbcX z2c$ZrZnl0R=Ct`Elt+=zV*9;AUf+OXDBnxUYs=q||J}VfWa22y>#^y0!m^}I3wqzl qu<4tA!@d45u2_lK@VMBru?ai=K0DEMOl delta 13855 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 diff --git a/locale/da/LC_MESSAGES/bygfoot.mo b/locale/da/LC_MESSAGES/bygfoot.mo index b0141d0bb866f5173bdea12663d82aba2e70c602..3b9e70ffa6e0664368d12aab9535b2581854d32a 100644 GIT binary patch delta 10642 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 LysB>;z3lrx;>^Q0 delta 10817 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 X*Q4{9BCC83_0P(QFKK$}JHP)2@yqiE diff --git a/locale/de/LC_MESSAGES/bygfoot.mo b/locale/de/LC_MESSAGES/bygfoot.mo index dbc53087a48a071b81d6d501b5ed6d9417f3a4d4..4bd9e895acdca152cbde0e632db1e7e5e947676e 100644 GIT binary patch delta 10679 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 K`S%AJ`u-pBtlXsl delta 10863 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 diff --git a/locale/es/LC_MESSAGES/bygfoot.mo b/locale/es/LC_MESSAGES/bygfoot.mo index d6582f31d3c2d561d29a382d391b2b5decd3e239..c33c93be0d05729fc5d384d5984faab5a8b35680 100644 GIT binary patch delta 10642 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 QR57CRcb|$`M;5vN53(b>9{>OV delta 10834 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 Hr~UsQ1$P1! diff --git a/locale/fr/LC_MESSAGES/bygfoot.mo b/locale/fr/LC_MESSAGES/bygfoot.mo index 40f711541df28cad2335ce3dd0bb7869f0acaaa6..6051feaaa7d96234d01dacab59deeede5ceb636d 100644 GIT binary patch delta 18034 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 B!D;{i delta 13894 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 diff --git a/locale/nl/LC_MESSAGES/bygfoot.mo b/locale/nl/LC_MESSAGES/bygfoot.mo index 666696a9da2fb065b61c2c915aecfa548de861e7..849d3adc52356351be1e7c7e73fc78e4a4cb60df 100644 GIT binary patch delta 10642 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 bmz>r-Ii#3)P3tv_iaM; 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 diff --git a/locale/pl/LC_MESSAGES/bygfoot.mo b/locale/pl/LC_MESSAGES/bygfoot.mo index c2267ab18b6843ef9228e5c8d1541cd5125160e4..9e81f0cdd6d6a59cdfc72c72d48982b32f56d57f 100644 GIT binary patch delta 10642 zcmXZi34D#m8prYXB$5zmHcMy{Qfn636C{?D*g`C6grd(+-jiF#zZgR(V(WLX z8uedM_x*vPj^lQ!w{)C98p6>JV^IU9pa#lDU(7+>*atPxAPmAHtd0{<{br#0%|VT~ z3^mRw+x`k>Qs0KY%-e-a0oKC=>dnxF1*iq}Z%h6a`CuC4aO*hK1XHmc?zDb~-Kj^@sP@VH z6_0zd0I#9WQhIx1Cu=_H%nU_MT#Cy0xc1~<4O3`P0MDTYn2-E%%J@rrdJeS}7f}OU zMeXrdsQ$OD_wDtXS*Cw5k_@LdDl>gh^BqQQ-Ep@qoWn30E~6&=1(m`F_ImK+=Eer7 zQ{NO7a5}1AJFJa;Py?5s0-KBqcphrpMX39hqvmt3p`exRL0xzY)$y>cpTK(5KSmAo zEo!3gF$A3s=1_*B+8d+VTcc9k9rYgQW3SIe9o|()pl)ZADLA{VZ=+WD0cr*3Q8#>r z_3;PPiv2sXT^NbwxE2*)LbjPW6}7Mo)WX`Ko}SLAE$D~-dj1P3=qVVDo$(NAVpk{g z_yi*lfD?f&upc(S`KVNHL{0F9t?xrUcE?dE{?xYLz;Nn6+4evt3uS(%83j$4fl7Th z)ZxlQMLY<#1!GYC7GMgNqcZa$`rvtt#EYnaen+j;>0$!)LycDlbzd`dYrs@{p(CoE zk6PJKbm0W_#Yw0@W}qf4Lv6(x)POtC7Z0Kq@E%6tY2?XuzC*o;ns+rXsPVutFw}i+^uzgB9bZD7g>uy4-ibBv zusT+)0M+pdYJzW39si38>^>?pe_37KO}(1c4|ShEDnr4jEeW&rCaC-4Q2i2YyE~17 zB5h+YWZMflr~vw)R#=1@umo%1B;@t)%tTFi0M+k^^*Hje;+(=LboFqY7;J=3U@kJR z+j)(`G#a+yaBP@s9-oD%JuX9K<~R<*2kkherKUF zx&poR{CjMN)uM{Az`ipJ9i=njtY1;$y&3z%LS8fC< zkWADbXQKk?fyz_?YTQw%dB&mwn&_qwLSY`(!gACA+ff7T!KU~QDs`2pLwExpMOR<5 zmk}66Jq?xm0@T8WSjVHbdX}xP!m1b5W(rElcGL>qupRcJ_UIUDz;mcAx`H}9-=QY( z;(M2_2czl{SQ}$)JqtBXPt*bmt;NW^Zf7(F?d=5A-cH3jxBwN{dfUDMHNb9E>h_~n z^dagotwd$UyPq)I|(x1+dY&7ZvbPbSvVI?1c;1gZj6qNK*!y z73QH*-WRo^64XRvY<&_op*{m^;j5@|-$b36qo_bWMg@AodSf8_Ux$XfG$=yU$^y`r_7coK1KeOidHme zz-)V=A8N&et>ZD1`W#fChpcB%6Munvdaj{XeiIeQHYht;dlwELqn65^(ym4(|2 z$=24W)1QT!pc881?pPlOU^ASI?Qk8o#Q$Jt4C145Iu_s@`~-E@dOvMGZ9m2F)ZJZ+ z%;R$ayVGzHwf9Yj7&~Dk^{TtKDrTTH2hX&tLvo`^#0c)WPBhechq5^4*)i42dU#c|&br`ek^^T}B z)D;!@lgL*GXB_hR7^IUnnO?{i9J^(g_vV5bTI$*cm^^rWiiKoS6=oNWFLh`Ol(IPD3=FN1g5msDZ;K znt@YME9rykw*dFzE@W({Xp;GIdDi*|>JT@XY+g*+xSIM1R3J)Y5;U7a{&iUT(-4Ix zu?yb7xtQ>bc`xiiJx<3_D{VW~H~A!^8SZS{}nQ7Wvpe9VlI+%?Ld;ltd5)8%B z$hdB2w(YPGHDMWQf(;miTTqYRKGX`|M)f<2TKOlafiIvYx`G*a3)R2zER*tB)b%vf zeUGD$p8p(sp|`y-2sJ@5YUSgt)2wdP9xg)lTY-8Jy@CpOhiyNE3gD#mW7~cn6~Hz0 z*7JXpf+qSeYVUtR4OD%$iMSr>dJ}64Y(YKEULS%H)W>2=T#P!@$FK;Km_+R>P>1mp z4#hvv-GxHo9P>DB#`e_varE2ZN>s;l7=>x`s?L{Ffc2?=iVE}=CgMGGVa$B9C2^<> zBwJfsvrvb+%Y5>$kJXtp^uPny9lf77hpQLraF(G0J%l1*-kOct z>u#u2_eDLHg{b>SVG7P#Knm2bhXxIB9DVQWBdC?V zk3RSz>ifdS=!ZA0Kj1*>zhiIAf5|L#Qd@9O?|UMFm`dZauFh6f{98Y7fU@b$kgmaJh9G zs^2^I`Y}|>&tM9EgL>!Jd)a(vOh9c#E-J9TsQE^qH;#Il{Z}f+(V!JgN8KL;Xcmzkea0L(XL!i-XF|Jf|^A&;JG6 z@H-BrgZD}^;c(OdeD*ax- z{)bS|bDe>4*cpRxB5JSaqE@~TwWmu^1Fpvc+=^}SJ}Tf0-d4(3M^s?l@i82PIt#O~ z5w67mJ^zO(gyCsaDz9Tp{L|J`*3gG~E+%1(wWfb2YQ;~W1}sHw-C}Hrn@|%UM`h|8 z)LHOeXENlEZml$kLMS%G`j~=`VlFD>rKsyuP%B)78fZBxL+el(c@34x*HQiVV;wwg zy@m?(S9`tQdh)LU88+_!sDn@S&R*EG-?kQTVKZ})X$&>yo0sS^{TNBYQ-_A zj256)IvA@Kh?=+rb^ln@*1O#lw6d42>+n(P+fk`Lj+*ETREBP21p2;aGSnD#Jq5L* zE~tg%q9)8o1vChikz&-@cn%4`?JT39j<2E~m#wG(4q!w4%=(ixbc4B`g1X)lV{j}+ z;%Xd&`%nQj`nw4z+M0-3c}q;z^WTMn2AGad;YM43h%V|e8%@gMP%CYR`Iv`V*%nmb zyD$phL#?zDwUE20!yCHEY;6lvCVOBO^E<^98sTPp;X~BQD)BLNHk*|-LQV8IYGrw- z0Qy^t?DdhTJ$@GTI4(gQ)-{-mTd*1agl;bi^|zP_B2Z@`6E$!*)Z>$fx?vD1b@NbL zR)*@g4z;J7P#M~fIwNOLTXF-nVxO(%3rqvl{W)97zi!N&6k<9S< zPeFV0tF`)GbNa(EnD#cP)a7Cl_QUzO2zAJ6zG;4$jK*;4gHfmcS!{v}QTOjaZOJ|i z!K3KX^ZywI9kTPb!+%hF^cDKyceef$>S?)$)$u;+IrphBDUHAa>Y12@%W(>xwe6kX zGQXCu$Kka5@8fmM{LVxQ6Yv6hu-ks~&u5qMY3dCRnE%bjjjDfzeKGr>`KQ%2sCp&# z#B}yafzC%A=7p$3{u(NyyKVbXbZalZpfCc%-{B4B;;}&8xaE*JJV!8!`W4K;zc3qH zA2t)u#6;@nFcn?znm1&+^+k-L{R-B`zffCI>j?SRUNtzv2MESuGb}{1<~)yMvGsfA z(`_s2`e&%r-$T7QgO756F%{K*5|i-?&cL8!=1{+g1F7%Esx5fmZ6ccZJ_m{m3o!}< zkDHI>L~KnxAKT&*48YTvh5yDJtowmkQ4#8U!#Gr?X5l0}fG=R|3Gu%0fW(2fh& zFcc$CniozI`ciL+%1}F7&q1B$KByE9#4s$e?Xyq;E0syio^m8@ zWBG5C=Um*&t|HHn7Q-TossE2_J@J%o;3wYRQ{uVaqSQ6QlM_GMmFw9T-`F+9^F@4? zE8kN;A<;F`lasL9^_1scLiQth+^wHN?(F5sNxbyPWLn;{NCtZPeE!c>J`gU16{5Gp1-9vcRk}d zk=D4*leA8+nu;$WcKCvd2WjowR+LV>% O+mQ;dimAsw@%cY|j=o(0 delta 10809 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 EAGSvTLjV8( diff --git a/locale/ro/LC_MESSAGES/bygfoot.mo b/locale/ro/LC_MESSAGES/bygfoot.mo index fa0518714c135c95ba2e8fea05aadf73ba279374..133a327abda74c5a4bd131db708601e6e200e4b6 100644 GIT binary patch delta 12451 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 delta 10196 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 diff --git a/src/Makefile.am b/src/Makefile.am index 45733804..34c6973b 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -9,7 +9,6 @@ INCLUDES = \ bin_PROGRAMS = bygfoot bygfoot_SOURCES = \ - mediaplayer.c mediaplayer.h \ bet.c bet.h bet_struct.h \ callback_func.c callback_func.h callbacks.h cup.h finance.h fixture.h game_gui.h gui.h league.h live_game.h maths.h misc.h option.h player.h start_end.h team.h transfer.h treeview.h treeview_helper.h user.h window.h \ callbacks.c callback_func.h callbacks.h debug.h free.h game_gui.h game.h gui.h league.h load_save.h main.h option.h player.h table.h team.h transfer.h treeview2.h treeview.h treeview_helper.h user.h window.h \ @@ -23,6 +22,7 @@ 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 \ + job.c job.h \ language.c callbacks.h free.h language.h lg_commentary.h misc.h option.h variables.h window.h \ lg_commentary.c cup.h file.h fixture.h free.h league.h lg_commentary.h live_game.h main.h maths.h misc.h option.h player.h team.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 \ @@ -60,6 +60,7 @@ bygfoot_SOURCES = \ xml.c cup.h file.h free.h gui.h league.h misc.h option.h support.h table.h transfer_struct.h user.h variables.h xml.h xml_loadsave_cup.h xml_loadsave_fixtures.h xml_loadsave_league.h xml_loadsave_league_stat.h xml_loadsave_live_game.h xml_loadsave_table.h xml_loadsave_teams.h xml_loadsave_transfers.h xml_loadsave_users.h \ xml_loadsave_cup.c cup.h file.h misc.h table.h team.h xml.h xml_loadsave_cup.h xml_loadsave_fixtures.h xml_loadsave_table.h xml_loadsave_teams.h \ xml_loadsave_fixtures.c file.h fixture.h misc.h team.h xml.h xml_loadsave_fixtures.h \ + xml_loadsave_jobs.c xml_loadsave_jobs.h \ xml_loadsave_league.c file.h league.h misc.h xml.h xml_loadsave_cup.h xml_loadsave_fixtures.h xml_loadsave_league.h xml_loadsave_league_stat.h xml_loadsave_table.h xml_loadsave_teams.h \ xml_loadsave_leagues_cups.c cup.h file.h free.h league_struct.h misc.h xml.h xml_loadsave_cup.h xml_loadsave_league.h xml_loadsave_leagues_cups.h \ xml_loadsave_league_stat.c file.h misc.h stat.h team.h xml.h xml_loadsave_league_stat.h \ diff --git a/src/bygfoot.h b/src/bygfoot.h index 1d71f0b3..10a6a01d 100644 --- a/src/bygfoot.h +++ b/src/bygfoot.h @@ -127,6 +127,11 @@ typedef struct *symbol, /**< Symbol of the country, eg a flag pixmap. */ *sid; /**< Id of the country, eg 'england'. */ + /** A rating point from 0-10 telling us + how good the first league of the country is. + Spain, for instance, has rating 10, whereas Ireland has only 5. */ + gint rating; + /** Leagues and cups arrays. */ GArray *leagues, *cups; @@ -160,5 +165,8 @@ typedef struct *sponsors, *mmatches, *bets; + + /** The position of the horizontal divider is stored here. */ + gint paned_pos; } Windows; #endif diff --git a/src/callback_func.c b/src/callback_func.c index 9ad522a0..33809a5f 100644 --- a/src/callback_func.c +++ b/src/callback_func.c @@ -101,14 +101,6 @@ callback_player_clicked(gint idx, GdkEventButton *event) if(event->type != GDK_BUTTON_PRESS) return; - /*d*/ - gint i; - for(i=0;ilen;i++) - printf("%d %s %d\n", i, g_array_index(lig(1).teams, - Team, i).name, - g_array_index(lig(1).teams, - Team, i).id); - if(event->button == 1) { if(selected_row == -1) @@ -704,6 +696,9 @@ callback_show_league_stats(gint type) void callback_show_season_history(gint type) { + const SeasonStat *stat = NULL; + gint len = season_stats->len; + switch(type) { default: @@ -712,29 +707,31 @@ callback_show_season_history(gint type) break; case SHOW_CURRENT: stat1 = -1; - stat2 = season - 2; + stat2 = len - 1; break; case SHOW_NEXT_LEAGUE: + stat = &g_array_index(season_stats, SeasonStat, stat2); if(stat1 == -1) stat1 = 0; - else if(stat1 == ligs->len - 1) + else if(stat1 == stat->league_champs->len - 1) stat1 = -1; else stat1++; break; case SHOW_PREVIOUS_LEAGUE: + stat = &g_array_index(season_stats, SeasonStat, stat2); if(stat1 == -1) - stat1 = ligs->len - 1; + stat1 = stat->league_champs->len - 1; else if(stat1 == 0) stat1 = -1; else stat1--; break; case SHOW_NEXT: - stat2 = (stat2 + 1) % (season - 1); + stat2 = (stat2 + 1) % len; break; case SHOW_PREVIOUS: - stat2 = (stat2 == 0) ? season - 2 : stat2 - 1; + stat2 = (stat2 == 0) ? len - 1 : stat2 - 1; break; } diff --git a/src/callbacks.c b/src/callbacks.c index 28ad6a23..b5941410 100644 --- a/src/callbacks.c +++ b/src/callbacks.c @@ -30,6 +30,7 @@ #include "game.h" #include "game_gui.h" #include "gui.h" +#include "job.h" #include "league.h" #include "load_save.h" #include "main.h" @@ -419,9 +420,10 @@ void on_menu_season_history_activate (GtkMenuItem *menuitem, gpointer user_data) { - if(season == 1) + if(season_stats->len == 0) { - game_gui_print_message(_("This is your first season.")); + game_gui_print_message( + _("There are no season history elements stored yet.")); return; } @@ -641,6 +643,12 @@ on_treeview_right_button_press_event (GtkWidget *widget, else window_show_menu_youth((GdkEvent*)event); break; + case STATUS_SHOW_JOB_EXCHANGE: + if(event->button == 1) + game_gui_show_job_offer(NULL, + &g_array_index(jobs, Job, idx - 1), + STATUS_JOB_EXCHANGE_SHOW_TEAM); + break; } gui_set_arrows(); @@ -1185,3 +1193,30 @@ on_menu_betting_activate (GtkMenuItem *menuitem, window_show_bets(); } +void +on_menu_show_job_exchange_activate (GtkMenuItem *menuitem, + gpointer user_data) +{ + stat0 = STATUS_SHOW_JOB_EXCHANGE; + + gui_set_arrows(); + + treeview2_show_job_exchange(); + + game_gui_print_message( + _("Right click to apply for job at once, left click to see team info.")); + game_gui_print_message_with_delay( + _("The job exchange update interval is %d weeks."), + const_int("int_job_update_interval")); +} + +gboolean +on_hpaned2_button_release_event (GtkWidget *widget, + GdkEventButton *event, + gpointer user_data) +{ + window.paned_pos = + gtk_paned_get_position(GTK_PANED(widget)); + + return FALSE; +} diff --git a/src/callbacks.h b/src/callbacks.h index a5c153ae..f0f098d6 100644 --- a/src/callbacks.h +++ b/src/callbacks.h @@ -333,8 +333,14 @@ on_menu_save_window_geometry_activate (GtkMenuItem *menuitem, void on_menu_season_results_activate (GtkMenuItem *menuitem, gpointer user_data); -#endif - void on_menu_betting_activate (GtkMenuItem *menuitem, gpointer user_data); +void +on_menu_show_job_exchange_activate (GtkMenuItem *menuitem, + gpointer user_data); +gboolean +on_hpaned2_button_release_event (GtkWidget *widget, + GdkEventButton *event, + gpointer user_data); +#endif diff --git a/src/cup.c b/src/cup.c index 159365ec..fcd1d2dc 100644 --- a/src/cup.c +++ b/src/cup.c @@ -257,7 +257,7 @@ cup_get_team_pointers(Cup *cup, gint round) for(i=0;iteams->len;i++) { - team_generate_players_stadium(&g_array_index(cup_round->teams, Team, i)); + team_generate_players_stadium(&g_array_index(cup_round->teams, Team, i), 0); g_ptr_array_add(cup->teams, &g_array_index(cup_round->teams, Team, i)); g_ptr_array_add(teams, &g_array_index(cup_round->teams, Team, i)); } @@ -992,9 +992,10 @@ query_cup_begins(const Cup *cup) g_array_index(league->fixtures, Fixture, league->fixtures->len - 1).attendance == -1)) || (league == NULL && - cup_temp->fixtures->len > 0 && - g_array_index(cup_temp->fixtures, Fixture, - cup_temp->fixtures->len - 1).attendance == -1)) + ((cup_temp->fixtures->len > 0 && + g_array_index(cup_temp->fixtures, Fixture, + cup_temp->fixtures->len - 1).attendance == -1) || + cup_temp->fixtures->len == 0))) return FALSE; } } diff --git a/src/enums.h b/src/enums.h index cbc9c794..1ed6e6b1 100644 --- a/src/enums.h +++ b/src/enums.h @@ -137,6 +137,8 @@ enum Status0Value STATUS_SELECT_MM_FILE_IMPORT, STATUS_SELECT_MM_FILE_EXPORT, STATUS_PLACE_BET, + STATUS_SHOW_JOB_EXCHANGE, + STATUS_JOB_EXCHANGE_SHOW_TEAM, STATUS_END }; diff --git a/src/finance.c b/src/finance.c index f8d98c05..02c5e959 100644 --- a/src/finance.c +++ b/src/finance.c @@ -26,6 +26,7 @@ #include "callbacks.h" #include "finance.h" #include "game_gui.h" +#include "league.h" #include "maths.h" #include "option.h" #include "player.h" @@ -147,8 +148,6 @@ finance_update_user_weekly(User *user) { new_team = team_get_new(tm, TRUE); user_event_add(user, EVENT_TYPE_FIRE_FINANCE, -1, -1, new_team, NULL); - user_history_add(user, USER_HISTORY_FIRE_FINANCES, tm->id, - new_team->id, new_team->clid, ""); } } diff --git a/src/fixture.c b/src/fixture.c index d9dcf089..e2ff5565 100644 --- a/src/fixture.c +++ b/src/fixture.c @@ -67,17 +67,23 @@ fixture_write_cup_fixtures(Cup *cup) { gint i; + printf("fwc 1\n"); + for(i=0;irounds->len;i++) cup_get_team_pointers(cup, i); + printf("fwc 2 %d\n", + g_array_index(cup->rounds, CupRound, 0).round_robin_number_of_groups); if(g_array_index(cup->rounds, CupRound, 0).round_robin_number_of_groups > 0) - fixture_write_cup_round_robin(cup, 0, - misc_copy_ptr_array( - g_array_index(cup->rounds, CupRound, 0).team_ptrs)); + fixture_write_cup_round_robin( + cup, 0, misc_copy_ptr_array( + g_array_index(cup->rounds, CupRound, 0).team_ptrs)); else - fixture_write_knockout_round(cup, 0, - misc_copy_ptr_array( - g_array_index(cup->rounds, CupRound, 0).team_ptrs)); + fixture_write_knockout_round( + cup, 0, misc_copy_ptr_array( + g_array_index(cup->rounds, CupRound, 0).team_ptrs)); + printf("fwc 3\n"); + } /** Update the fixtures for the given cup. @@ -1346,8 +1352,9 @@ fixture_get_goals_to_win(const Fixture *fix, const Team *tm) return return_value; } -gint -fixture_get_goals_to_draw(const Fixture *fix, const Team *tm) -{ +/*todo*/ +/* gint */ +/* fixture_get_goals_to_draw(const Fixture *fix, const Team *tm) */ +/* { */ -} +/* } */ diff --git a/src/free.c b/src/free.c index a4d08837..1dced217 100644 --- a/src/free.c +++ b/src/free.c @@ -42,12 +42,13 @@ free_memory(void) free_names(FALSE); free_transfer_list(); free_strategies(); - free_country(FALSE); + free_country(&country, FALSE); free_users(FALSE); free_bets(FALSE); free_live_game(&live_game_temp); free_lg_commentary(FALSE); free_support_dirs(); + free_jobs(FALSE); } /** Free the transfer list. */ @@ -86,20 +87,24 @@ free_season_stats(gboolean reset) { free_gchar_ptr( g_array_index( - g_array_index(season_stats, SeasonStat, i).league_champs, ChampStat, j).cl_name); + g_array_index(season_stats, SeasonStat, i).league_champs, + ChampStat, j).cl_name); free_gchar_ptr( g_array_index( - g_array_index(season_stats, SeasonStat, i).league_champs, ChampStat, j).team_name); + g_array_index(season_stats, SeasonStat, i).league_champs, + ChampStat, j).team_name); } for(j=0;jlen;j++) { free_gchar_ptr( g_array_index( - g_array_index(season_stats, SeasonStat, i).cup_champs, ChampStat, j).cl_name); + g_array_index(season_stats, SeasonStat, i).cup_champs, + ChampStat, j).cl_name); free_gchar_ptr( g_array_index( - g_array_index(season_stats, SeasonStat, i).cup_champs, ChampStat, j).team_name); + g_array_index(season_stats, SeasonStat, i).cup_champs, + ChampStat, j).team_name); } g_array_free(g_array_index(season_stats, SeasonStat, i).cup_champs, TRUE); @@ -139,7 +144,7 @@ free_users(gboolean reset) void free_user(User *user) { - gint i; + gint i, j; free_gchar_ptr(user->name); free_g_string(&user->sponsor.name); @@ -152,8 +157,14 @@ free_user(User *user) free_g_array(&user->events); for(i=0;ihistory->len;i++) + { free_gchar_ptr(g_array_index(user->history, - UserHistory, i).value_string); + UserHistory, i).team_name); + for(j=0;j<3;j++) + free_gchar_ptr(g_array_index(user->history, + UserHistory, i).string[j]); + } + free_g_array(&user->history); free_mmatches(&user->mmatches, FALSE); @@ -261,23 +272,22 @@ free_live_game(LiveGame *match) free_g_array(&match->units); } - /** - Free the main variable of the game, #country. + Free a country variable. */ void -free_country(gboolean reset) +free_country(Country *cntry, gboolean reset) { - free_gchar_ptr(country.name); - free_gchar_ptr(country.symbol); - free_gchar_ptr(country.sid); + free_gchar_ptr(cntry->name); + free_gchar_ptr(cntry->symbol); + free_gchar_ptr(cntry->sid); - free_leagues_array(&ligs, reset); - free_cups_array(&cps, reset); - free_g_ptr_array(&acps); + free_leagues_array(&cntry->leagues, reset); + free_cups_array(&cntry->cups, reset); + free_g_ptr_array(&cntry->allcups); if(reset) - acps = g_ptr_array_new(); + cntry->allcups = g_ptr_array_new(); } /** @@ -338,12 +348,21 @@ free_league_stats(LeagueStat *stats) { gint i; + free_gchar_ptr(stats->league_name); + free_gchar_ptr(stats->league_symbol); + for(i=0;iteams_off->len;i++) + { + free_gchar_ptr(g_array_index(stats->teams_off, Stat, i).team_name); free_gchar_ptr(g_array_index(stats->teams_off, Stat, i).value_string); + } free_g_array(&stats->teams_off); for(i=0;iteams_def->len;i++) + { + free_gchar_ptr(g_array_index(stats->teams_def, Stat, i).team_name); free_gchar_ptr(g_array_index(stats->teams_def, Stat, i).value_string); + } free_g_array(&stats->teams_def); for(i=0;iplayer_scorers->len;i++) @@ -733,3 +752,57 @@ free_bets(gboolean reset) bets[1] = g_array_new(FALSE, FALSE, sizeof(BetMatch)); } } + +/** Free a job struct. + @param free_team Whether to free the team associated + with the job if it's an international offer. */ +void +free_job(Job *job, gboolean free_tm) +{ + gint i; + + if(job->type == JOB_TYPE_INTERNATIONAL) + { + free_gchar_ptr(job->country_file); + free_gchar_ptr(job->country_name); + free_gchar_ptr(job->league_name); + + for(i=0;ilen;i++) + if(g_array_index(job_teams, Team, i).id == job->team_id) + { + if(free_tm) + free_team(&g_array_index(job_teams, Team, i)); + g_array_remove_index(job_teams, i); + } + } +} + +/** Free the jobs and job_teams arrays. */ +void +free_jobs(gboolean reset) +{ + gint i; + + if(jobs == NULL) + { + if(reset) + { + jobs = g_array_new(FALSE, FALSE, sizeof(Job)); + job_teams = g_array_new(FALSE, FALSE, sizeof(Team)); + } + + return; + } + + for(i=0;ilen;i++) + free_job(&g_array_index(jobs, Job, i), TRUE); + + free_g_array(&jobs); + free_g_array(&job_teams); + + if(reset) + { + jobs = g_array_new(FALSE, FALSE, sizeof(Job)); + job_teams = g_array_new(FALSE, FALSE, sizeof(Team)); + } +} diff --git a/src/free.h b/src/free.h index b2d3b956..8ee28d95 100644 --- a/src/free.h +++ b/src/free.h @@ -28,6 +28,7 @@ #include "bygfoot.h" #include "cup_struct.h" +#include "job_struct.h" #include "league_struct.h" #include "live_game_struct.h" #include "name_struct.h" @@ -56,7 +57,7 @@ void free_user(User *user); void -free_country(gboolean reset); +free_country(Country *cntry, gboolean reset); void free_leagues_array(GArray **leagues, gboolean reset); @@ -133,4 +134,10 @@ free_strategies(void); void free_bets(gboolean reset); +void +free_job(Job *job, gboolean free_tm); + +void +free_jobs(gboolean reset); + #endif diff --git a/src/game.c b/src/game.c index 50883d24..0b5da201 100644 --- a/src/game.c +++ b/src/game.c @@ -1009,6 +1009,7 @@ game_post_match(Fixture *fix) gint i; GPtrArray *teams = NULL; Cup *cup = NULL; + gchar buf[SMALL], buf2[SMALL]; if((debug > 100 && fixture_user_team_involved(fix) != -1) || debug > 130) @@ -1020,13 +1021,7 @@ game_post_match(Fixture *fix) table_update(fix); for(i=0;i<2;i++) -/* { */ -/* if(team_is_user(fix->teams[i]) == -1) */ -/* team_update_cpu_team(fix->teams[i], */ -/* (fixture_user_team_involved(fix) != -1)); */ -/* else */ - team_update_post_match(fix->teams[i], fix); -/* } */ + team_update_post_match(fix->teams[i], fix); if(fix->clid < ID_CUP_START) return; @@ -1039,19 +1034,40 @@ game_post_match(Fixture *fix) teams = cup_get_teams_sorted(cup); if(team_is_user((Team*)g_ptr_array_index(teams, 0)) != -1) + { user_history_add(&usr(team_is_user((Team*)g_ptr_array_index(teams, 0))), - USER_HISTORY_WIN_FINAL, ((Team*)g_ptr_array_index(teams, 0))->id, - fix->clid, fix->round,((Team*)g_ptr_array_index(teams, 1))->name); + USER_HISTORY_WIN_FINAL, + ((Team*)g_ptr_array_index(teams, 0))->name, + league_cup_get_name_string(fix->clid), + ((Team*)g_ptr_array_index(teams, 1))->name, NULL); + user_add_cup_success(&usr(team_is_user((Team*)g_ptr_array_index(teams, 0))), + cup, fix->round, USER_HISTORY_WIN_FINAL); + } else if(team_is_user((Team*)g_ptr_array_index(teams, 1)) != -1) + { user_history_add(&usr(team_is_user((Team*)g_ptr_array_index(teams, 1))), - USER_HISTORY_LOSE_FINAL, ((Team*)g_ptr_array_index(teams, 1))->id, - fix->clid, fix->round,((Team*)g_ptr_array_index(teams, 0))->name); + USER_HISTORY_LOSE_FINAL, + ((Team*)g_ptr_array_index(teams, 1))->name, + league_cup_get_name_string(fix->clid), + ((Team*)g_ptr_array_index(teams, 0))->name, NULL); + user_add_cup_success(&usr(team_is_user((Team*)g_ptr_array_index(teams, 1))), + cup, fix->round, USER_HISTORY_LOSE_FINAL); + } g_ptr_array_free(teams, TRUE); } else if(fixture_user_team_involved(fix) != -1) - user_history_add(&usr(fixture_user_team_involved(fix)), USER_HISTORY_REACH_CUP_ROUND, - usr(fixture_user_team_involved(fix)).team_id, - fix->clid, fix->round, ""); + { + cup_get_round_name(cup_from_clid(fix->clid), fix->round, buf); + sprintf(buf2, "%d", fix->round + 1); + + user_history_add(&usr(fixture_user_team_involved(fix)), + USER_HISTORY_REACH_CUP_ROUND, + usr(fixture_user_team_involved(fix)).name, + league_cup_get_name_string(fix->clid), + buf, buf2); + user_add_cup_success(&usr(fixture_user_team_involved(fix)), + cup, fix->round, USER_HISTORY_REACH_CUP_ROUND); + } } /** Reduce stadium capacity and safety after a stadium event. diff --git a/src/game_gui.c b/src/game_gui.c index e4eb0bbc..2edfba24 100644 --- a/src/game_gui.c +++ b/src/game_gui.c @@ -27,6 +27,7 @@ #include "file.h" #include "game_gui.h" #include "gui.h" +#include "job.h" #include "league.h" #include "live_game.h" #include "maths.h" @@ -680,15 +681,31 @@ game_gui_show_warning(const gchar *format, ...) } /** Show the job offer window. - @param team The team offering the job. - @param type The offer type (whether the user's been fired). */ + @param team The team offering the job or NULL if we're looking + at a job offer from the job exchange. + @param job The job pointer or NULL (depends on whether we're looking + at a job offer from the job exchange). + @param type The offer type (eg. whether the user's been fired). */ void -game_gui_show_job_offer(Team *team, gint type) +game_gui_show_job_offer(Team *team, Job *job, gint type) { gchar buf[SMALL], buf2[SMALL]; GtkLabel *label_text, *label_text2, *label_name, *label_league, *label_rank, *label_money, *label_cap, *label_saf, *label_average_skill; + Team *tm = (type != STATUS_JOB_EXCHANGE_SHOW_TEAM) ? + team : job_get_team(job); + + statp = (type != STATUS_JOB_EXCHANGE_SHOW_TEAM) ? + (gpointer)team : (gpointer)job; + stat2 = type; + + if(type == STATUS_JOB_OFFER_FIRE_FINANCE || + type == STATUS_JOB_OFFER_FIRE_FAILURE) + user_history_add(¤t_user, (type == STATUS_JOB_OFFER_FIRE_FINANCE) ? + USER_HISTORY_FIRE_FINANCE : USER_HISTORY_FIRE_FAILURE, + current_user.tm->name, team->name, + league_cup_get_name_string(team->clid), NULL); window_create(WINDOW_JOB_OFFER); @@ -705,38 +722,55 @@ game_gui_show_job_offer(Team *team, gint type) if(type == STATUS_JOB_OFFER_FIRE_FINANCE) sprintf(buf, _("The team owners have fired you because of financial mismanagement. Luckily, the owners of %s have heard of your dismissal and offer you a job. Here's some information on %s:"), - team->name, team->name); + tm->name, tm->name); else if(type == STATUS_JOB_OFFER_FIRE_FAILURE) sprintf(buf, _("The team owners have fired you because of unsuccessfulness. Luckily, the owners of %s have heard of your dismissal and offer you a job. Here's some information on %s:"), - team->name, team->name); + tm->name, tm->name); else if(type == STATUS_JOB_OFFER_SUCCESS) sprintf(buf, _("The owners of %s are deeply impressed by your success with %s and would like to hire you. Here's some information on %s:"), - team->name, current_user.tm->name, team->name); + tm->name, current_user.tm->name, tm->name); + else if(type == STATUS_JOB_EXCHANGE_SHOW_TEAM) + strcpy(buf, _("Click on OK to apply for the job. Click on CANCEL to close the window.")); - strcpy(buf2, _("Accept?")); - if(type != STATUS_JOB_OFFER_SUCCESS) + strcpy(buf2, (type != STATUS_JOB_EXCHANGE_SHOW_TEAM) ? + _("Accept?") : _("Apply for the job?")); + + if(type != STATUS_JOB_OFFER_SUCCESS && + type != STATUS_JOB_EXCHANGE_SHOW_TEAM) strcat(buf2, _(" (NOTE: If you don't, the game is over for you.)")); gtk_label_set_text(label_text, buf); gtk_label_set_text(label_text2, buf2); - gtk_label_set_text(label_name, team->name); - gtk_label_set_text(label_league, league_cup_get_name_string(team->clid)); - gui_label_set_text_from_int(label_rank, team_get_league_rank(team), FALSE); - misc_print_grouped_int(math_round_integer(team->stadium.capacity * - math_rndi(const_int("int_initial_money_lower"), - const_int("int_initial_money_upper")), 2), - buf); - gtk_label_set_text(label_money, buf); - misc_print_grouped_int(team->stadium.capacity, buf); - gtk_label_set_text(label_cap, buf); - gui_label_set_text_from_int(label_saf, (gint)rint(team->stadium.safety * 100), FALSE); + gtk_label_set_text(label_name, tm->name); + gtk_label_set_text(label_league, + (type != STATUS_JOB_EXCHANGE_SHOW_TEAM) ? + league_cup_get_name_string(tm->clid) : job->league_name); - sprintf(buf, "%.1f", team_get_average_skill(team, FALSE)); + if(job == NULL || + job->type == JOB_TYPE_NATIONAL) + gui_label_set_text_from_int(label_rank, + team_get_league_rank(tm), FALSE); + + misc_print_grouped_int( + math_round_integer(tm->stadium.capacity * + math_rndi(const_int("int_initial_money_lower"), + const_int("int_initial_money_upper")), 2), + buf); + + gtk_label_set_text(label_money, buf); + misc_print_grouped_int(tm->stadium.capacity, buf); + gtk_label_set_text(label_cap, buf); + gui_label_set_text_from_int(label_saf, + (gint)rint(tm->stadium.safety * 100), FALSE); + + sprintf(buf, "%.1f", team_get_average_skill(tm, FALSE)); gtk_label_set_text(label_average_skill, buf); - treeview_show_player_list_team(GTK_TREE_VIEW(lookup_widget(window.job_offer, "treeview_players")), - team, - (type != STATUS_JOB_OFFER_SUCCESS) ? 2 : current_user.scout); + treeview_show_player_list_team( + GTK_TREE_VIEW(lookup_widget(window.job_offer, "treeview_players")), + tm, + (type != STATUS_JOB_OFFER_SUCCESS && type != STATUS_JOB_EXCHANGE_SHOW_TEAM) ? + 2 : current_user.scout); } /** Write the checkbuttons in the menus. */ diff --git a/src/game_gui.h b/src/game_gui.h index 0a2ec850..577db4d3 100644 --- a/src/game_gui.h +++ b/src/game_gui.h @@ -30,6 +30,7 @@ #include #include "bygfoot.h" +#include "job_struct.h" #include "live_game_struct.h" #include "option_struct.h" @@ -95,7 +96,7 @@ void game_gui_write_meters(const Team *tm); void -game_gui_show_job_offer(Team *team, gint type); +game_gui_show_job_offer(Team *team, Job *job, gint type); void game_gui_write_check_items(void); diff --git a/src/gui.c b/src/gui.c index 15a12708..fe61d302 100644 --- a/src/gui.c +++ b/src/gui.c @@ -25,6 +25,7 @@ #include "gui.h" #include "misc.h" +#include "option.h" #include "support.h" #include "variables.h" #include "window.h" diff --git a/src/interface.c b/src/interface.c index 77b3c914..aa617afa 100644 --- a/src/interface.c +++ b/src/interface.c @@ -38,7 +38,7 @@ create_main_window (void) GtkWidget *menu_new; GtkWidget *menu_open; GtkWidget *menu_load_last_save; - GtkWidget *image2192; + GtkWidget *image2274; GtkWidget *menu_save; GtkWidget *menu_save_as; GtkWidget *trennlinie1; @@ -46,35 +46,35 @@ create_main_window (void) GtkWidget *menu_options; GtkWidget *menu_options_menu; GtkWidget *menu_preferences; - GtkWidget *image2193; + GtkWidget *image2275; GtkWidget *trennlinie7; GtkWidget *menu_job_offers; GtkWidget *menu_live_game; GtkWidget *menu_overwrite; GtkWidget *trennlinie14; GtkWidget *menu_save_window_geometry; - GtkWidget *image2194; + GtkWidget *image2276; GtkWidget *menu_figures; GtkWidget *menu_figures_menu; GtkWidget *menu_fixtures_week; - GtkWidget *image2195; + GtkWidget *image2277; GtkWidget *menu_fixtures; - GtkWidget *image2196; + GtkWidget *image2278; GtkWidget *menu_tables; - GtkWidget *image2197; + GtkWidget *image2279; GtkWidget *menu_my_league_results; - GtkWidget *image2198; + GtkWidget *image2280; GtkWidget *menu_season_results; - GtkWidget *image2199; + GtkWidget *image2281; GtkWidget *trennlinie13; GtkWidget *menu_league_stats; - GtkWidget *image2200; + GtkWidget *image2282; GtkWidget *menu_season_history; - GtkWidget *image2201; + GtkWidget *image2283; GtkWidget *menu_team; GtkWidget *menu_team_menu; GtkWidget *menu_playing_style; - GtkWidget *image2202; + GtkWidget *image2284; GtkWidget *menu_playing_style_menu; GSList *menu_all_out_defend_group = NULL; GtkWidget *menu_all_out_defend; @@ -83,7 +83,7 @@ create_main_window (void) GtkWidget *menu_attack; GtkWidget *menu_all_out_attack; GtkWidget *menu_scout; - GtkWidget *image2203; + GtkWidget *image2285; GtkWidget *menu_scout_menu; GSList *menu_scout_best_group = NULL; GtkWidget *menu_scout_best; @@ -91,7 +91,7 @@ create_main_window (void) GtkWidget *menu_scout_average; GtkWidget *menu_scout_bad; GtkWidget *menu_physio; - GtkWidget *image2204; + GtkWidget *image2286; GtkWidget *menu_physio_menu; GSList *menu_physio_best_group = NULL; GtkWidget *menu_physio_best; @@ -99,7 +99,7 @@ create_main_window (void) GtkWidget *menu_physio_average; GtkWidget *menu_physio_bad; GtkWidget *menu_youth_academy; - GtkWidget *image2205; + GtkWidget *image2287; GtkWidget *menu_youth_academy_menu; GtkWidget *menu_show_youth_academy; GtkWidget *youth_coach1; @@ -119,7 +119,7 @@ create_main_window (void) GtkWidget *menu_recruit4; GtkWidget *menu_set_investment; GtkWidget *menu_boost; - GtkWidget *image2206; + GtkWidget *image2288; GtkWidget *menu_boost_menu; GSList *menu_boost_on_group = NULL; GtkWidget *menu_boost_on; @@ -127,74 +127,76 @@ create_main_window (void) GtkWidget *menu_boost_anti; GtkWidget *trennlinie11; GtkWidget *menu_reset_players; - GtkWidget *image2207; + GtkWidget *image2289; GtkWidget *menu_custom_structure; - GtkWidget *image2208; + GtkWidget *image2290; GtkWidget *menu_rearrange_team; - GtkWidget *image2209; + GtkWidget *image2291; GtkWidget *trennlinie8; GtkWidget *menu_browse_teams; - GtkWidget *image2210; + GtkWidget *image2292; + GtkWidget *trennlinie16; + GtkWidget *menu_show_job_exchange; GtkWidget *menu_player; GtkWidget *menu_player_menu; GtkWidget *menu_show_info; - GtkWidget *image2211; + GtkWidget *image2293; GtkWidget *menu_put_on_transfer_list; - GtkWidget *image2212; + GtkWidget *image2294; GtkWidget *menu_remove_from_transfer_list; - GtkWidget *image2213; + GtkWidget *image2295; GtkWidget *menu_offer_new_contract; - GtkWidget *image2214; + GtkWidget *image2296; GtkWidget *menu_fire; - GtkWidget *image2215; + GtkWidget *image2297; GtkWidget *menu_shoots_penalties; - GtkWidget *image2216; + GtkWidget *image2298; GtkWidget *menu_move_to_youth_academy; - GtkWidget *image2217; + GtkWidget *image2299; GtkWidget *trennlinie10; GtkWidget *menu_browse_players; - GtkWidget *image2218; + GtkWidget *image2300; GtkWidget *menu_user; GtkWidget *menu_user_menu; GtkWidget *menu_user_show_last_match; - GtkWidget *image2219; + GtkWidget *image2301; GtkWidget *menu_user_show_last_stats; - GtkWidget *image2220; + GtkWidget *image2302; GtkWidget *menu_user_show_coming_matches; - GtkWidget *image2221; + GtkWidget *image2303; GtkWidget *memorable_matches; - GtkWidget *image2222; + GtkWidget *image2304; GtkWidget *memorable_matches_menu; GtkWidget *mm_add_last_match; - GtkWidget *image2223; + GtkWidget *image2305; GtkWidget *mm_manage_matches; - GtkWidget *image2224; + GtkWidget *image2306; GtkWidget *trennlinie12; GtkWidget *menu_user_show_history; - GtkWidget *image2225; + GtkWidget *image2307; GtkWidget *trennlinie9; GtkWidget *menu_next_user; - GtkWidget *image2226; + GtkWidget *image2308; GtkWidget *menu_previous_user; - GtkWidget *image2227; + GtkWidget *image2309; GtkWidget *menu_manage_users; - GtkWidget *image2228; + GtkWidget *image2310; GtkWidget *menu_finances_stadium; GtkWidget *menu_finances_stadium_menu; GtkWidget *menu_show_finances; - GtkWidget *image2229; + GtkWidget *image2311; GtkWidget *menu_show_stadium; - GtkWidget *image2230; + GtkWidget *image2312; GtkWidget *trennlinie15; GtkWidget *menu_betting; GtkWidget *menu_help1; GtkWidget *menu_help1_menu; GtkWidget *menu_about; - GtkWidget *image2231; + GtkWidget *image2313; GtkWidget *menu_contributors; - GtkWidget *image2232; + GtkWidget *image2314; GtkWidget *menu_help; - GtkWidget *image2233; + GtkWidget *image2315; GtkWidget *hbox1; GtkWidget *button_load; GtkWidget *image11; @@ -315,9 +317,9 @@ create_main_window (void) GDK_l, GDK_CONTROL_MASK | GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE); - image2192 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_MENU); - gtk_widget_show (image2192); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_load_last_save), image2192); + image2274 = gtk_image_new_from_stock ("gtk-revert-to-saved", GTK_ICON_SIZE_MENU); + gtk_widget_show (image2274); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_load_last_save), image2274); menu_save = gtk_image_menu_item_new_from_stock ("gtk-save", accel_group); gtk_widget_show (menu_save); @@ -350,9 +352,9 @@ create_main_window (void) GDK_p, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); - image2193 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU); - gtk_widget_show (image2193); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_preferences), image2193); + image2275 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU); + gtk_widget_show (image2275); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_preferences), image2275); trennlinie7 = gtk_separator_menu_item_new (); gtk_widget_show (trennlinie7); @@ -383,9 +385,9 @@ create_main_window (void) gtk_container_add (GTK_CONTAINER (menu_options_menu), menu_save_window_geometry); gtk_tooltips_set_tip (tooltips, menu_save_window_geometry, _("Save window size, position and vertical divider"), NULL); - image2194 = create_pixmap (main_window, "menu_save_geometry.png"); - gtk_widget_show (image2194); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_save_window_geometry), image2194); + image2276 = create_pixmap (main_window, "menu_save_geometry.png"); + gtk_widget_show (image2276); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_save_window_geometry), image2276); menu_figures = gtk_menu_item_new_with_mnemonic (_("F_igures")); gtk_widget_show (menu_figures); @@ -401,9 +403,9 @@ create_main_window (void) GDK_F3, 0, GTK_ACCEL_VISIBLE); - image2195 = create_pixmap (main_window, "menu_fixtures.png"); - gtk_widget_show (image2195); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_fixtures_week), image2195); + image2277 = create_pixmap (main_window, "menu_fixtures.png"); + gtk_widget_show (image2277); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_fixtures_week), image2277); menu_fixtures = gtk_image_menu_item_new_with_mnemonic (_("Fixtures (competitions)")); gtk_widget_show (menu_fixtures); @@ -412,9 +414,9 @@ create_main_window (void) GDK_F4, 0, GTK_ACCEL_VISIBLE); - image2196 = create_pixmap (main_window, "menu_fixtures_comp.png"); - gtk_widget_show (image2196); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_fixtures), image2196); + image2278 = create_pixmap (main_window, "menu_fixtures_comp.png"); + gtk_widget_show (image2278); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_fixtures), image2278); menu_tables = gtk_image_menu_item_new_with_mnemonic (_("Tables")); gtk_widget_show (menu_tables); @@ -423,9 +425,9 @@ create_main_window (void) GDK_F5, 0, GTK_ACCEL_VISIBLE); - image2197 = create_pixmap (main_window, "menu_table.png"); - gtk_widget_show (image2197); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_tables), image2197); + image2279 = create_pixmap (main_window, "menu_table.png"); + gtk_widget_show (image2279); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_tables), image2279); menu_my_league_results = gtk_image_menu_item_new_with_mnemonic (_("My league results")); gtk_widget_show (menu_my_league_results); @@ -434,9 +436,9 @@ create_main_window (void) GDK_F6, 0, GTK_ACCEL_VISIBLE); - image2198 = create_pixmap (main_window, "menu_league_results.png"); - gtk_widget_show (image2198); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_my_league_results), image2198); + image2280 = create_pixmap (main_window, "menu_league_results.png"); + gtk_widget_show (image2280); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_my_league_results), image2280); menu_season_results = gtk_image_menu_item_new_with_mnemonic (_("Season results")); gtk_widget_show (menu_season_results); @@ -445,9 +447,9 @@ create_main_window (void) GDK_s, GDK_SHIFT_MASK, GTK_ACCEL_VISIBLE); - image2199 = create_pixmap (main_window, "menu_season_res.png"); - gtk_widget_show (image2199); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_season_results), image2199); + image2281 = create_pixmap (main_window, "menu_season_res.png"); + gtk_widget_show (image2281); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_season_results), image2281); trennlinie13 = gtk_separator_menu_item_new (); gtk_widget_show (trennlinie13); @@ -461,9 +463,9 @@ create_main_window (void) GDK_s, 0, GTK_ACCEL_VISIBLE); - image2200 = create_pixmap (main_window, "menu_league_stats.png"); - gtk_widget_show (image2200); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_league_stats), image2200); + image2282 = create_pixmap (main_window, "menu_league_stats.png"); + gtk_widget_show (image2282); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_league_stats), image2282); menu_season_history = gtk_image_menu_item_new_with_mnemonic (_("Season history")); gtk_widget_show (menu_season_history); @@ -472,9 +474,9 @@ create_main_window (void) GDK_h, 0, GTK_ACCEL_VISIBLE); - image2201 = create_pixmap (main_window, "menu_history.png"); - gtk_widget_show (image2201); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_season_history), image2201); + image2283 = create_pixmap (main_window, "menu_history.png"); + gtk_widget_show (image2283); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_season_history), image2283); menu_team = gtk_menu_item_new_with_mnemonic (_("_Team")); gtk_widget_show (menu_team); @@ -487,9 +489,9 @@ create_main_window (void) gtk_widget_show (menu_playing_style); gtk_container_add (GTK_CONTAINER (menu_team_menu), menu_playing_style); - image2202 = create_pixmap (main_window, "menu_style.png"); - gtk_widget_show (image2202); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_playing_style), image2202); + image2284 = create_pixmap (main_window, "menu_style.png"); + gtk_widget_show (image2284); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_playing_style), image2284); menu_playing_style_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_playing_style), menu_playing_style_menu); @@ -498,25 +500,21 @@ create_main_window (void) menu_all_out_defend_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_all_out_defend)); gtk_widget_show (menu_all_out_defend); gtk_container_add (GTK_CONTAINER (menu_playing_style_menu), menu_all_out_defend); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_all_out_defend), TRUE); menu_defend = gtk_radio_menu_item_new_with_mnemonic (menu_all_out_defend_group, _("Defend")); menu_all_out_defend_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_defend)); gtk_widget_show (menu_defend); gtk_container_add (GTK_CONTAINER (menu_playing_style_menu), menu_defend); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_defend), TRUE); menu_balanced = gtk_radio_menu_item_new_with_mnemonic (menu_all_out_defend_group, _("Balanced")); menu_all_out_defend_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_balanced)); gtk_widget_show (menu_balanced); gtk_container_add (GTK_CONTAINER (menu_playing_style_menu), menu_balanced); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_balanced), TRUE); menu_attack = gtk_radio_menu_item_new_with_mnemonic (menu_all_out_defend_group, _("Attack")); menu_all_out_defend_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_attack)); gtk_widget_show (menu_attack); gtk_container_add (GTK_CONTAINER (menu_playing_style_menu), menu_attack); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_attack), TRUE); menu_all_out_attack = gtk_radio_menu_item_new_with_mnemonic (menu_all_out_defend_group, _("All Out Attack")); menu_all_out_defend_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_all_out_attack)); @@ -528,9 +526,9 @@ create_main_window (void) gtk_widget_show (menu_scout); gtk_container_add (GTK_CONTAINER (menu_team_menu), menu_scout); - image2203 = create_pixmap (main_window, "menu_scout.png"); - gtk_widget_show (image2203); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_scout), image2203); + image2285 = create_pixmap (main_window, "menu_scout.png"); + gtk_widget_show (image2285); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_scout), image2285); menu_scout_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_scout), menu_scout_menu); @@ -539,19 +537,16 @@ create_main_window (void) menu_scout_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_scout_best)); gtk_widget_show (menu_scout_best); gtk_container_add (GTK_CONTAINER (menu_scout_menu), menu_scout_best); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_scout_best), TRUE); menu_scout_good = gtk_radio_menu_item_new_with_mnemonic (menu_scout_best_group, _("Good")); menu_scout_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_scout_good)); gtk_widget_show (menu_scout_good); gtk_container_add (GTK_CONTAINER (menu_scout_menu), menu_scout_good); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_scout_good), TRUE); menu_scout_average = gtk_radio_menu_item_new_with_mnemonic (menu_scout_best_group, _("Average")); menu_scout_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_scout_average)); gtk_widget_show (menu_scout_average); gtk_container_add (GTK_CONTAINER (menu_scout_menu), menu_scout_average); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_scout_average), TRUE); menu_scout_bad = gtk_radio_menu_item_new_with_mnemonic (menu_scout_best_group, _("Bad")); menu_scout_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_scout_bad)); @@ -563,9 +558,9 @@ create_main_window (void) gtk_widget_show (menu_physio); gtk_container_add (GTK_CONTAINER (menu_team_menu), menu_physio); - image2204 = create_pixmap (main_window, "menu_physio.png"); - gtk_widget_show (image2204); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_physio), image2204); + image2286 = create_pixmap (main_window, "menu_physio.png"); + gtk_widget_show (image2286); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_physio), image2286); menu_physio_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_physio), menu_physio_menu); @@ -574,19 +569,16 @@ create_main_window (void) menu_physio_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_physio_best)); gtk_widget_show (menu_physio_best); gtk_container_add (GTK_CONTAINER (menu_physio_menu), menu_physio_best); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_physio_best), TRUE); menu_physio_good = gtk_radio_menu_item_new_with_mnemonic (menu_physio_best_group, _("Good")); menu_physio_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_physio_good)); gtk_widget_show (menu_physio_good); gtk_container_add (GTK_CONTAINER (menu_physio_menu), menu_physio_good); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_physio_good), TRUE); menu_physio_average = gtk_radio_menu_item_new_with_mnemonic (menu_physio_best_group, _("Average")); menu_physio_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_physio_average)); gtk_widget_show (menu_physio_average); gtk_container_add (GTK_CONTAINER (menu_physio_menu), menu_physio_average); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_physio_average), TRUE); menu_physio_bad = gtk_radio_menu_item_new_with_mnemonic (menu_physio_best_group, _("Bad")); menu_physio_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_physio_bad)); @@ -598,9 +590,9 @@ create_main_window (void) gtk_widget_show (menu_youth_academy); gtk_container_add (GTK_CONTAINER (menu_team_menu), menu_youth_academy); - image2205 = create_pixmap (main_window, "menu_youth_academy.png"); - gtk_widget_show (image2205); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_youth_academy), image2205); + image2287 = create_pixmap (main_window, "menu_youth_academy.png"); + gtk_widget_show (image2287); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_youth_academy), image2287); menu_youth_academy_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_youth_academy), menu_youth_academy_menu); @@ -623,19 +615,16 @@ create_main_window (void) menu_yc_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_yc_best)); gtk_widget_show (menu_yc_best); gtk_container_add (GTK_CONTAINER (youth_coach1_menu), menu_yc_best); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_yc_best), TRUE); menu_yc_good = gtk_radio_menu_item_new_with_mnemonic (menu_yc_best_group, _("Good")); menu_yc_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_yc_good)); gtk_widget_show (menu_yc_good); gtk_container_add (GTK_CONTAINER (youth_coach1_menu), menu_yc_good); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_yc_good), TRUE); menu_yc_average = gtk_radio_menu_item_new_with_mnemonic (menu_yc_best_group, _("Average")); menu_yc_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_yc_average)); gtk_widget_show (menu_yc_average); gtk_container_add (GTK_CONTAINER (youth_coach1_menu), menu_yc_average); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_yc_average), TRUE); menu_yc_bad = gtk_radio_menu_item_new_with_mnemonic (menu_yc_best_group, _("Bad")); menu_yc_best_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_yc_bad)); @@ -654,25 +643,21 @@ create_main_window (void) menu_recruit0_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_recruit0)); gtk_widget_show (menu_recruit0); gtk_container_add (GTK_CONTAINER (recruiting_preference1_menu), menu_recruit0); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_recruit0), TRUE); menu_recruit1 = gtk_radio_menu_item_new_with_mnemonic (menu_recruit0_group, _("Defenders")); menu_recruit0_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_recruit1)); gtk_widget_show (menu_recruit1); gtk_container_add (GTK_CONTAINER (recruiting_preference1_menu), menu_recruit1); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_recruit1), TRUE); menu_recruit2 = gtk_radio_menu_item_new_with_mnemonic (menu_recruit0_group, _("Midfielders")); menu_recruit0_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_recruit2)); gtk_widget_show (menu_recruit2); gtk_container_add (GTK_CONTAINER (recruiting_preference1_menu), menu_recruit2); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_recruit2), TRUE); menu_recruit3 = gtk_radio_menu_item_new_with_mnemonic (menu_recruit0_group, _("Forwards")); menu_recruit0_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_recruit3)); gtk_widget_show (menu_recruit3); gtk_container_add (GTK_CONTAINER (recruiting_preference1_menu), menu_recruit3); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_recruit3), TRUE); menu_recruit4 = gtk_radio_menu_item_new_with_mnemonic (menu_recruit0_group, _("Any")); menu_recruit0_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_recruit4)); @@ -689,9 +674,9 @@ create_main_window (void) gtk_widget_show (menu_boost); gtk_container_add (GTK_CONTAINER (menu_team_menu), menu_boost); - image2206 = create_pixmap (main_window, "menu_boost.png"); - gtk_widget_show (image2206); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_boost), image2206); + image2288 = create_pixmap (main_window, "menu_boost.png"); + gtk_widget_show (image2288); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_boost), image2288); menu_boost_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (menu_boost), menu_boost_menu); @@ -700,13 +685,11 @@ create_main_window (void) menu_boost_on_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_boost_on)); gtk_widget_show (menu_boost_on); gtk_container_add (GTK_CONTAINER (menu_boost_menu), menu_boost_on); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_boost_on), TRUE); menu_boost_off = gtk_radio_menu_item_new_with_mnemonic (menu_boost_on_group, _("Off")); menu_boost_on_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_boost_off)); gtk_widget_show (menu_boost_off); gtk_container_add (GTK_CONTAINER (menu_boost_menu), menu_boost_off); - gtk_check_menu_item_set_active (GTK_CHECK_MENU_ITEM (menu_boost_off), TRUE); menu_boost_anti = gtk_radio_menu_item_new_with_mnemonic (menu_boost_on_group, _("Anti")); menu_boost_on_group = gtk_radio_menu_item_get_group (GTK_RADIO_MENU_ITEM (menu_boost_anti)); @@ -723,17 +706,17 @@ create_main_window (void) gtk_container_add (GTK_CONTAINER (menu_team_menu), menu_reset_players); gtk_tooltips_set_tip (tooltips, menu_reset_players, _("Reset player list to the formation at the beginning of the live game pause (right click on player list)"), NULL); - image2207 = gtk_image_new_from_stock ("gtk-undo", GTK_ICON_SIZE_MENU); - gtk_widget_show (image2207); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_reset_players), image2207); + image2289 = gtk_image_new_from_stock ("gtk-undo", GTK_ICON_SIZE_MENU); + gtk_widget_show (image2289); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_reset_players), image2289); menu_custom_structure = gtk_image_menu_item_new_with_mnemonic (_("Enter custom structure")); gtk_widget_show (menu_custom_structure); gtk_container_add (GTK_CONTAINER (menu_team_menu), menu_custom_structure); - image2208 = create_pixmap (main_window, "menu_structure.png"); - gtk_widget_show (image2208); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_custom_structure), image2208); + image2290 = create_pixmap (main_window, "menu_structure.png"); + gtk_widget_show (image2290); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_custom_structure), image2290); menu_rearrange_team = gtk_image_menu_item_new_with_mnemonic (_("Rearrange team")); gtk_widget_show (menu_rearrange_team); @@ -743,9 +726,9 @@ create_main_window (void) GDK_r, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); - image2209 = create_pixmap (main_window, "menu_rearrange.png"); - gtk_widget_show (image2209); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_rearrange_team), image2209); + image2291 = create_pixmap (main_window, "menu_rearrange.png"); + gtk_widget_show (image2291); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_rearrange_team), image2291); trennlinie8 = gtk_separator_menu_item_new (); gtk_widget_show (trennlinie8); @@ -756,9 +739,22 @@ create_main_window (void) gtk_widget_show (menu_browse_teams); gtk_container_add (GTK_CONTAINER (menu_team_menu), menu_browse_teams); - image2210 = create_pixmap (main_window, "menu_browse_tms.png"); - gtk_widget_show (image2210); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_browse_teams), image2210); + image2292 = create_pixmap (main_window, "menu_browse_tms.png"); + gtk_widget_show (image2292); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_browse_teams), image2292); + + trennlinie16 = gtk_separator_menu_item_new (); + gtk_widget_show (trennlinie16); + gtk_container_add (GTK_CONTAINER (menu_team_menu), trennlinie16); + gtk_widget_set_sensitive (trennlinie16, FALSE); + + menu_show_job_exchange = gtk_menu_item_new_with_mnemonic (_("Show job exchange")); + gtk_widget_show (menu_show_job_exchange); + gtk_container_add (GTK_CONTAINER (menu_team_menu), menu_show_job_exchange); + gtk_tooltips_set_tip (tooltips, menu_show_job_exchange, _("Show the list of available manager jobs"), NULL); + gtk_widget_add_accelerator (menu_show_job_exchange, "activate", accel_group, + GDK_j, 0, + GTK_ACCEL_VISIBLE); menu_player = gtk_menu_item_new_with_mnemonic (_("_Player")); gtk_widget_show (menu_player); @@ -771,57 +767,57 @@ create_main_window (void) gtk_widget_show (menu_show_info); gtk_container_add (GTK_CONTAINER (menu_player_menu), menu_show_info); - image2211 = create_pixmap (main_window, "menu_player_info.png"); - gtk_widget_show (image2211); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_show_info), image2211); + image2293 = create_pixmap (main_window, "menu_player_info.png"); + gtk_widget_show (image2293); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_show_info), image2293); menu_put_on_transfer_list = gtk_image_menu_item_new_with_mnemonic (_("Put on transfer list")); gtk_widget_show (menu_put_on_transfer_list); gtk_container_add (GTK_CONTAINER (menu_player_menu), menu_put_on_transfer_list); - image2212 = create_pixmap (main_window, "menu_player_put_transfer.png"); - gtk_widget_show (image2212); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_put_on_transfer_list), image2212); + image2294 = create_pixmap (main_window, "menu_player_put_transfer.png"); + gtk_widget_show (image2294); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_put_on_transfer_list), image2294); menu_remove_from_transfer_list = gtk_image_menu_item_new_with_mnemonic (_("Remove from transfer list")); gtk_widget_show (menu_remove_from_transfer_list); gtk_container_add (GTK_CONTAINER (menu_player_menu), menu_remove_from_transfer_list); - image2213 = create_pixmap (main_window, "menu_player_remove_transfer.png"); - gtk_widget_show (image2213); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_remove_from_transfer_list), image2213); + image2295 = create_pixmap (main_window, "menu_player_remove_transfer.png"); + gtk_widget_show (image2295); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_remove_from_transfer_list), image2295); menu_offer_new_contract = gtk_image_menu_item_new_with_mnemonic (_("Offer new contract")); gtk_widget_show (menu_offer_new_contract); gtk_container_add (GTK_CONTAINER (menu_player_menu), menu_offer_new_contract); - image2214 = create_pixmap (main_window, "menu_player_contract.png"); - gtk_widget_show (image2214); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_offer_new_contract), image2214); + image2296 = create_pixmap (main_window, "menu_player_contract.png"); + gtk_widget_show (image2296); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_offer_new_contract), image2296); menu_fire = gtk_image_menu_item_new_with_mnemonic (_("Fire")); gtk_widget_show (menu_fire); gtk_container_add (GTK_CONTAINER (menu_player_menu), menu_fire); - image2215 = create_pixmap (main_window, "menu_player_fire.png"); - gtk_widget_show (image2215); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_fire), image2215); + image2297 = create_pixmap (main_window, "menu_player_fire.png"); + gtk_widget_show (image2297); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_fire), image2297); menu_shoots_penalties = gtk_image_menu_item_new_with_mnemonic (_("Shoots penalties")); gtk_widget_show (menu_shoots_penalties); gtk_container_add (GTK_CONTAINER (menu_player_menu), menu_shoots_penalties); - image2216 = create_pixmap (main_window, "menu_player_shoots.png"); - gtk_widget_show (image2216); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_shoots_penalties), image2216); + image2298 = create_pixmap (main_window, "menu_player_shoots.png"); + gtk_widget_show (image2298); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_shoots_penalties), image2298); menu_move_to_youth_academy = gtk_image_menu_item_new_with_mnemonic (_("Move to youth academy")); gtk_widget_show (menu_move_to_youth_academy); gtk_container_add (GTK_CONTAINER (menu_player_menu), menu_move_to_youth_academy); - image2217 = create_pixmap (main_window, "menu_player_move_to_ya.png"); - gtk_widget_show (image2217); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_move_to_youth_academy), image2217); + image2299 = create_pixmap (main_window, "menu_player_move_to_ya.png"); + gtk_widget_show (image2299); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_move_to_youth_academy), image2299); trennlinie10 = gtk_separator_menu_item_new (); gtk_widget_show (trennlinie10); @@ -832,9 +828,9 @@ create_main_window (void) gtk_widget_show (menu_browse_players); gtk_container_add (GTK_CONTAINER (menu_player_menu), menu_browse_players); - image2218 = create_pixmap (main_window, "menu_player_browse.png"); - gtk_widget_show (image2218); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_browse_players), image2218); + image2300 = create_pixmap (main_window, "menu_player_browse.png"); + gtk_widget_show (image2300); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_browse_players), image2300); menu_user = gtk_menu_item_new_with_mnemonic (_("_User")); gtk_widget_show (menu_user); @@ -850,9 +846,9 @@ create_main_window (void) GDK_v, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); - image2219 = create_pixmap (main_window, "menu_last_match.png"); - gtk_widget_show (image2219); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_user_show_last_match), image2219); + image2301 = create_pixmap (main_window, "menu_last_match.png"); + gtk_widget_show (image2301); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_user_show_last_match), image2301); menu_user_show_last_stats = gtk_image_menu_item_new_with_mnemonic (_("Show last match stats")); gtk_widget_show (menu_user_show_last_stats); @@ -861,9 +857,9 @@ create_main_window (void) GDK_F2, 0, GTK_ACCEL_VISIBLE); - image2220 = create_pixmap (main_window, "menu_match_stats.png"); - gtk_widget_show (image2220); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_user_show_last_stats), image2220); + image2302 = create_pixmap (main_window, "menu_match_stats.png"); + gtk_widget_show (image2302); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_user_show_last_stats), image2302); menu_user_show_coming_matches = gtk_image_menu_item_new_with_mnemonic (_("Show coming matches")); gtk_widget_show (menu_user_show_coming_matches); @@ -872,17 +868,17 @@ create_main_window (void) GDK_F1, 0, GTK_ACCEL_VISIBLE); - image2221 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU); - gtk_widget_show (image2221); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_user_show_coming_matches), image2221); + image2303 = gtk_image_new_from_stock ("gtk-jump-to", GTK_ICON_SIZE_MENU); + gtk_widget_show (image2303); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_user_show_coming_matches), image2303); memorable_matches = gtk_image_menu_item_new_with_mnemonic (_("Memorable matches")); gtk_widget_show (memorable_matches); gtk_container_add (GTK_CONTAINER (menu_user_menu), memorable_matches); - image2222 = create_pixmap (main_window, "menu_mmatches.png"); - gtk_widget_show (image2222); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (memorable_matches), image2222); + image2304 = create_pixmap (main_window, "menu_mmatches.png"); + gtk_widget_show (image2304); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (memorable_matches), image2304); memorable_matches_menu = gtk_menu_new (); gtk_menu_item_set_submenu (GTK_MENU_ITEM (memorable_matches), memorable_matches_menu); @@ -895,9 +891,9 @@ create_main_window (void) GDK_a, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); - image2223 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); - gtk_widget_show (image2223); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mm_add_last_match), image2223); + image2305 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); + gtk_widget_show (image2305); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mm_add_last_match), image2305); mm_manage_matches = gtk_image_menu_item_new_with_mnemonic (_("Manage matches")); gtk_widget_show (mm_manage_matches); @@ -907,9 +903,9 @@ create_main_window (void) GDK_m, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); - image2224 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU); - gtk_widget_show (image2224); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mm_manage_matches), image2224); + image2306 = gtk_image_new_from_stock ("gtk-preferences", GTK_ICON_SIZE_MENU); + gtk_widget_show (image2306); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (mm_manage_matches), image2306); trennlinie12 = gtk_separator_menu_item_new (); gtk_widget_show (trennlinie12); @@ -923,9 +919,9 @@ create_main_window (void) GDK_h, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); - image2225 = create_pixmap (main_window, "menu_history.png"); - gtk_widget_show (image2225); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_user_show_history), image2225); + image2307 = create_pixmap (main_window, "menu_history.png"); + gtk_widget_show (image2307); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_user_show_history), image2307); trennlinie9 = gtk_separator_menu_item_new (); gtk_widget_show (trennlinie9); @@ -939,9 +935,9 @@ create_main_window (void) GDK_F9, 0, GTK_ACCEL_VISIBLE); - image2226 = gtk_image_new_from_stock ("gtk-media-forward", GTK_ICON_SIZE_MENU); - gtk_widget_show (image2226); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_next_user), image2226); + image2308 = gtk_image_new_from_stock ("gtk-media-forward", GTK_ICON_SIZE_MENU); + gtk_widget_show (image2308); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_next_user), image2308); menu_previous_user = gtk_image_menu_item_new_with_mnemonic (_("Previous user")); gtk_widget_show (menu_previous_user); @@ -950,9 +946,9 @@ create_main_window (void) GDK_F8, 0, GTK_ACCEL_VISIBLE); - image2227 = gtk_image_new_from_stock ("gtk-go-back", GTK_ICON_SIZE_MENU); - gtk_widget_show (image2227); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_previous_user), image2227); + image2309 = gtk_image_new_from_stock ("gtk-go-back", GTK_ICON_SIZE_MENU); + gtk_widget_show (image2309); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_previous_user), image2309); menu_manage_users = gtk_image_menu_item_new_with_mnemonic (_("Manage users")); gtk_widget_show (menu_manage_users); @@ -961,9 +957,9 @@ create_main_window (void) GDK_F12, 0, GTK_ACCEL_VISIBLE); - image2228 = gtk_image_new_from_stock ("gtk-justify-fill", GTK_ICON_SIZE_MENU); - gtk_widget_show (image2228); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_manage_users), image2228); + image2310 = gtk_image_new_from_stock ("gtk-justify-fill", GTK_ICON_SIZE_MENU); + gtk_widget_show (image2310); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_manage_users), image2310); menu_finances_stadium = gtk_menu_item_new_with_mnemonic (_("Fin_Stad")); gtk_widget_show (menu_finances_stadium); @@ -979,9 +975,9 @@ create_main_window (void) GDK_f, 0, GTK_ACCEL_VISIBLE); - image2229 = create_pixmap (main_window, "menu_finances.png"); - gtk_widget_show (image2229); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_show_finances), image2229); + image2311 = create_pixmap (main_window, "menu_finances.png"); + gtk_widget_show (image2311); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_show_finances), image2311); menu_show_stadium = gtk_image_menu_item_new_with_mnemonic (_("Show stadium")); gtk_widget_show (menu_show_stadium); @@ -990,9 +986,9 @@ create_main_window (void) GDK_f, GDK_CONTROL_MASK, GTK_ACCEL_VISIBLE); - image2230 = create_pixmap (main_window, "menu_stadium.png"); - gtk_widget_show (image2230); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_show_stadium), image2230); + image2312 = create_pixmap (main_window, "menu_stadium.png"); + gtk_widget_show (image2312); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_show_stadium), image2312); trennlinie15 = gtk_separator_menu_item_new (); gtk_widget_show (trennlinie15); @@ -1018,25 +1014,25 @@ create_main_window (void) gtk_widget_show (menu_about); gtk_container_add (GTK_CONTAINER (menu_help1_menu), menu_about); - image2231 = gtk_image_new_from_stock ("gtk-dialog-info", GTK_ICON_SIZE_MENU); - gtk_widget_show (image2231); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_about), image2231); + image2313 = gtk_image_new_from_stock ("gtk-dialog-info", GTK_ICON_SIZE_MENU); + gtk_widget_show (image2313); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_about), image2313); menu_contributors = gtk_image_menu_item_new_with_mnemonic (_("Contributors")); gtk_widget_show (menu_contributors); gtk_container_add (GTK_CONTAINER (menu_help1_menu), menu_contributors); - image2232 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); - gtk_widget_show (image2232); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_contributors), image2232); + image2314 = gtk_image_new_from_stock ("gtk-add", GTK_ICON_SIZE_MENU); + gtk_widget_show (image2314); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_contributors), image2314); menu_help = gtk_image_menu_item_new_with_mnemonic (_("Help")); gtk_widget_show (menu_help); gtk_container_add (GTK_CONTAINER (menu_help1_menu), menu_help); - image2233 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU); - gtk_widget_show (image2233); - gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_help), image2233); + image2315 = gtk_image_new_from_stock ("gtk-help", GTK_ICON_SIZE_MENU); + gtk_widget_show (image2315); + gtk_image_menu_item_set_image (GTK_IMAGE_MENU_ITEM (menu_help), image2315); hbox1 = gtk_hbox_new (FALSE, 0); gtk_widget_show (hbox1); @@ -1553,6 +1549,9 @@ create_main_window (void) g_signal_connect ((gpointer) menu_browse_teams, "activate", G_CALLBACK (on_menu_browse_teams_activate), NULL); + g_signal_connect ((gpointer) menu_show_job_exchange, "activate", + G_CALLBACK (on_menu_show_job_exchange_activate), + NULL); g_signal_connect ((gpointer) menu_show_info, "activate", G_CALLBACK (on_menu_show_info_activate), NULL); @@ -1649,6 +1648,9 @@ create_main_window (void) g_signal_connect ((gpointer) eventbox_boost, "button_press_event", G_CALLBACK (on_eventbox_boost_button_press_event), NULL); + g_signal_connect ((gpointer) hpaned2, "button_release_event", + G_CALLBACK (on_hpaned2_button_release_event), + NULL); g_signal_connect ((gpointer) player_list1, "button_press_event", G_CALLBACK (on_player_list1_button_press_event), NULL); @@ -1683,7 +1685,7 @@ create_main_window (void) GLADE_HOOKUP_OBJECT (main_window, menu_new, "menu_new"); GLADE_HOOKUP_OBJECT (main_window, menu_open, "menu_open"); GLADE_HOOKUP_OBJECT (main_window, menu_load_last_save, "menu_load_last_save"); - GLADE_HOOKUP_OBJECT (main_window, image2192, "image2192"); + GLADE_HOOKUP_OBJECT (main_window, image2274, "image2274"); GLADE_HOOKUP_OBJECT (main_window, menu_save, "menu_save"); GLADE_HOOKUP_OBJECT (main_window, menu_save_as, "menu_save_as"); GLADE_HOOKUP_OBJECT (main_window, trennlinie1, "trennlinie1"); @@ -1691,35 +1693,35 @@ create_main_window (void) GLADE_HOOKUP_OBJECT (main_window, menu_options, "menu_options"); GLADE_HOOKUP_OBJECT (main_window, menu_options_menu, "menu_options_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_preferences, "menu_preferences"); - GLADE_HOOKUP_OBJECT (main_window, image2193, "image2193"); + GLADE_HOOKUP_OBJECT (main_window, image2275, "image2275"); GLADE_HOOKUP_OBJECT (main_window, trennlinie7, "trennlinie7"); GLADE_HOOKUP_OBJECT (main_window, menu_job_offers, "menu_job_offers"); GLADE_HOOKUP_OBJECT (main_window, menu_live_game, "menu_live_game"); GLADE_HOOKUP_OBJECT (main_window, menu_overwrite, "menu_overwrite"); GLADE_HOOKUP_OBJECT (main_window, trennlinie14, "trennlinie14"); GLADE_HOOKUP_OBJECT (main_window, menu_save_window_geometry, "menu_save_window_geometry"); - GLADE_HOOKUP_OBJECT (main_window, image2194, "image2194"); + GLADE_HOOKUP_OBJECT (main_window, image2276, "image2276"); GLADE_HOOKUP_OBJECT (main_window, menu_figures, "menu_figures"); GLADE_HOOKUP_OBJECT (main_window, menu_figures_menu, "menu_figures_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_fixtures_week, "menu_fixtures_week"); - GLADE_HOOKUP_OBJECT (main_window, image2195, "image2195"); + GLADE_HOOKUP_OBJECT (main_window, image2277, "image2277"); GLADE_HOOKUP_OBJECT (main_window, menu_fixtures, "menu_fixtures"); - GLADE_HOOKUP_OBJECT (main_window, image2196, "image2196"); + GLADE_HOOKUP_OBJECT (main_window, image2278, "image2278"); GLADE_HOOKUP_OBJECT (main_window, menu_tables, "menu_tables"); - GLADE_HOOKUP_OBJECT (main_window, image2197, "image2197"); + GLADE_HOOKUP_OBJECT (main_window, image2279, "image2279"); GLADE_HOOKUP_OBJECT (main_window, menu_my_league_results, "menu_my_league_results"); - GLADE_HOOKUP_OBJECT (main_window, image2198, "image2198"); + GLADE_HOOKUP_OBJECT (main_window, image2280, "image2280"); GLADE_HOOKUP_OBJECT (main_window, menu_season_results, "menu_season_results"); - GLADE_HOOKUP_OBJECT (main_window, image2199, "image2199"); + GLADE_HOOKUP_OBJECT (main_window, image2281, "image2281"); GLADE_HOOKUP_OBJECT (main_window, trennlinie13, "trennlinie13"); GLADE_HOOKUP_OBJECT (main_window, menu_league_stats, "menu_league_stats"); - GLADE_HOOKUP_OBJECT (main_window, image2200, "image2200"); + GLADE_HOOKUP_OBJECT (main_window, image2282, "image2282"); GLADE_HOOKUP_OBJECT (main_window, menu_season_history, "menu_season_history"); - GLADE_HOOKUP_OBJECT (main_window, image2201, "image2201"); + GLADE_HOOKUP_OBJECT (main_window, image2283, "image2283"); GLADE_HOOKUP_OBJECT (main_window, menu_team, "menu_team"); GLADE_HOOKUP_OBJECT (main_window, menu_team_menu, "menu_team_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_playing_style, "menu_playing_style"); - GLADE_HOOKUP_OBJECT (main_window, image2202, "image2202"); + GLADE_HOOKUP_OBJECT (main_window, image2284, "image2284"); GLADE_HOOKUP_OBJECT (main_window, menu_playing_style_menu, "menu_playing_style_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_all_out_defend, "menu_all_out_defend"); GLADE_HOOKUP_OBJECT (main_window, menu_defend, "menu_defend"); @@ -1727,21 +1729,21 @@ create_main_window (void) GLADE_HOOKUP_OBJECT (main_window, menu_attack, "menu_attack"); GLADE_HOOKUP_OBJECT (main_window, menu_all_out_attack, "menu_all_out_attack"); GLADE_HOOKUP_OBJECT (main_window, menu_scout, "menu_scout"); - GLADE_HOOKUP_OBJECT (main_window, image2203, "image2203"); + GLADE_HOOKUP_OBJECT (main_window, image2285, "image2285"); GLADE_HOOKUP_OBJECT (main_window, menu_scout_menu, "menu_scout_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_scout_best, "menu_scout_best"); GLADE_HOOKUP_OBJECT (main_window, menu_scout_good, "menu_scout_good"); GLADE_HOOKUP_OBJECT (main_window, menu_scout_average, "menu_scout_average"); GLADE_HOOKUP_OBJECT (main_window, menu_scout_bad, "menu_scout_bad"); GLADE_HOOKUP_OBJECT (main_window, menu_physio, "menu_physio"); - GLADE_HOOKUP_OBJECT (main_window, image2204, "image2204"); + GLADE_HOOKUP_OBJECT (main_window, image2286, "image2286"); GLADE_HOOKUP_OBJECT (main_window, menu_physio_menu, "menu_physio_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_physio_best, "menu_physio_best"); GLADE_HOOKUP_OBJECT (main_window, menu_physio_good, "menu_physio_good"); GLADE_HOOKUP_OBJECT (main_window, menu_physio_average, "menu_physio_average"); GLADE_HOOKUP_OBJECT (main_window, menu_physio_bad, "menu_physio_bad"); GLADE_HOOKUP_OBJECT (main_window, menu_youth_academy, "menu_youth_academy"); - GLADE_HOOKUP_OBJECT (main_window, image2205, "image2205"); + GLADE_HOOKUP_OBJECT (main_window, image2287, "image2287"); GLADE_HOOKUP_OBJECT (main_window, menu_youth_academy_menu, "menu_youth_academy_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_show_youth_academy, "menu_show_youth_academy"); GLADE_HOOKUP_OBJECT (main_window, youth_coach1, "youth_coach1"); @@ -1759,81 +1761,83 @@ create_main_window (void) GLADE_HOOKUP_OBJECT (main_window, menu_recruit4, "menu_recruit4"); GLADE_HOOKUP_OBJECT (main_window, menu_set_investment, "menu_set_investment"); GLADE_HOOKUP_OBJECT (main_window, menu_boost, "menu_boost"); - GLADE_HOOKUP_OBJECT (main_window, image2206, "image2206"); + GLADE_HOOKUP_OBJECT (main_window, image2288, "image2288"); GLADE_HOOKUP_OBJECT (main_window, menu_boost_menu, "menu_boost_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_boost_on, "menu_boost_on"); GLADE_HOOKUP_OBJECT (main_window, menu_boost_off, "menu_boost_off"); GLADE_HOOKUP_OBJECT (main_window, menu_boost_anti, "menu_boost_anti"); GLADE_HOOKUP_OBJECT (main_window, trennlinie11, "trennlinie11"); GLADE_HOOKUP_OBJECT (main_window, menu_reset_players, "menu_reset_players"); - GLADE_HOOKUP_OBJECT (main_window, image2207, "image2207"); + GLADE_HOOKUP_OBJECT (main_window, image2289, "image2289"); GLADE_HOOKUP_OBJECT (main_window, menu_custom_structure, "menu_custom_structure"); - GLADE_HOOKUP_OBJECT (main_window, image2208, "image2208"); + GLADE_HOOKUP_OBJECT (main_window, image2290, "image2290"); GLADE_HOOKUP_OBJECT (main_window, menu_rearrange_team, "menu_rearrange_team"); - GLADE_HOOKUP_OBJECT (main_window, image2209, "image2209"); + GLADE_HOOKUP_OBJECT (main_window, image2291, "image2291"); GLADE_HOOKUP_OBJECT (main_window, trennlinie8, "trennlinie8"); GLADE_HOOKUP_OBJECT (main_window, menu_browse_teams, "menu_browse_teams"); - GLADE_HOOKUP_OBJECT (main_window, image2210, "image2210"); + GLADE_HOOKUP_OBJECT (main_window, image2292, "image2292"); + GLADE_HOOKUP_OBJECT (main_window, trennlinie16, "trennlinie16"); + GLADE_HOOKUP_OBJECT (main_window, menu_show_job_exchange, "menu_show_job_exchange"); GLADE_HOOKUP_OBJECT (main_window, menu_player, "menu_player"); GLADE_HOOKUP_OBJECT (main_window, menu_player_menu, "menu_player_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_show_info, "menu_show_info"); - GLADE_HOOKUP_OBJECT (main_window, image2211, "image2211"); + GLADE_HOOKUP_OBJECT (main_window, image2293, "image2293"); GLADE_HOOKUP_OBJECT (main_window, menu_put_on_transfer_list, "menu_put_on_transfer_list"); - GLADE_HOOKUP_OBJECT (main_window, image2212, "image2212"); + GLADE_HOOKUP_OBJECT (main_window, image2294, "image2294"); GLADE_HOOKUP_OBJECT (main_window, menu_remove_from_transfer_list, "menu_remove_from_transfer_list"); - GLADE_HOOKUP_OBJECT (main_window, image2213, "image2213"); + GLADE_HOOKUP_OBJECT (main_window, image2295, "image2295"); GLADE_HOOKUP_OBJECT (main_window, menu_offer_new_contract, "menu_offer_new_contract"); - GLADE_HOOKUP_OBJECT (main_window, image2214, "image2214"); + GLADE_HOOKUP_OBJECT (main_window, image2296, "image2296"); GLADE_HOOKUP_OBJECT (main_window, menu_fire, "menu_fire"); - GLADE_HOOKUP_OBJECT (main_window, image2215, "image2215"); + GLADE_HOOKUP_OBJECT (main_window, image2297, "image2297"); GLADE_HOOKUP_OBJECT (main_window, menu_shoots_penalties, "menu_shoots_penalties"); - GLADE_HOOKUP_OBJECT (main_window, image2216, "image2216"); + GLADE_HOOKUP_OBJECT (main_window, image2298, "image2298"); GLADE_HOOKUP_OBJECT (main_window, menu_move_to_youth_academy, "menu_move_to_youth_academy"); - GLADE_HOOKUP_OBJECT (main_window, image2217, "image2217"); + GLADE_HOOKUP_OBJECT (main_window, image2299, "image2299"); GLADE_HOOKUP_OBJECT (main_window, trennlinie10, "trennlinie10"); GLADE_HOOKUP_OBJECT (main_window, menu_browse_players, "menu_browse_players"); - GLADE_HOOKUP_OBJECT (main_window, image2218, "image2218"); + GLADE_HOOKUP_OBJECT (main_window, image2300, "image2300"); GLADE_HOOKUP_OBJECT (main_window, menu_user, "menu_user"); GLADE_HOOKUP_OBJECT (main_window, menu_user_menu, "menu_user_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_user_show_last_match, "menu_user_show_last_match"); - GLADE_HOOKUP_OBJECT (main_window, image2219, "image2219"); + GLADE_HOOKUP_OBJECT (main_window, image2301, "image2301"); GLADE_HOOKUP_OBJECT (main_window, menu_user_show_last_stats, "menu_user_show_last_stats"); - GLADE_HOOKUP_OBJECT (main_window, image2220, "image2220"); + GLADE_HOOKUP_OBJECT (main_window, image2302, "image2302"); GLADE_HOOKUP_OBJECT (main_window, menu_user_show_coming_matches, "menu_user_show_coming_matches"); - GLADE_HOOKUP_OBJECT (main_window, image2221, "image2221"); + GLADE_HOOKUP_OBJECT (main_window, image2303, "image2303"); GLADE_HOOKUP_OBJECT (main_window, memorable_matches, "memorable_matches"); - GLADE_HOOKUP_OBJECT (main_window, image2222, "image2222"); + GLADE_HOOKUP_OBJECT (main_window, image2304, "image2304"); GLADE_HOOKUP_OBJECT (main_window, memorable_matches_menu, "memorable_matches_menu"); GLADE_HOOKUP_OBJECT (main_window, mm_add_last_match, "mm_add_last_match"); - GLADE_HOOKUP_OBJECT (main_window, image2223, "image2223"); + GLADE_HOOKUP_OBJECT (main_window, image2305, "image2305"); GLADE_HOOKUP_OBJECT (main_window, mm_manage_matches, "mm_manage_matches"); - GLADE_HOOKUP_OBJECT (main_window, image2224, "image2224"); + GLADE_HOOKUP_OBJECT (main_window, image2306, "image2306"); GLADE_HOOKUP_OBJECT (main_window, trennlinie12, "trennlinie12"); GLADE_HOOKUP_OBJECT (main_window, menu_user_show_history, "menu_user_show_history"); - GLADE_HOOKUP_OBJECT (main_window, image2225, "image2225"); + GLADE_HOOKUP_OBJECT (main_window, image2307, "image2307"); GLADE_HOOKUP_OBJECT (main_window, trennlinie9, "trennlinie9"); GLADE_HOOKUP_OBJECT (main_window, menu_next_user, "menu_next_user"); - GLADE_HOOKUP_OBJECT (main_window, image2226, "image2226"); + GLADE_HOOKUP_OBJECT (main_window, image2308, "image2308"); GLADE_HOOKUP_OBJECT (main_window, menu_previous_user, "menu_previous_user"); - GLADE_HOOKUP_OBJECT (main_window, image2227, "image2227"); + GLADE_HOOKUP_OBJECT (main_window, image2309, "image2309"); GLADE_HOOKUP_OBJECT (main_window, menu_manage_users, "menu_manage_users"); - GLADE_HOOKUP_OBJECT (main_window, image2228, "image2228"); + GLADE_HOOKUP_OBJECT (main_window, image2310, "image2310"); GLADE_HOOKUP_OBJECT (main_window, menu_finances_stadium, "menu_finances_stadium"); GLADE_HOOKUP_OBJECT (main_window, menu_finances_stadium_menu, "menu_finances_stadium_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_show_finances, "menu_show_finances"); - GLADE_HOOKUP_OBJECT (main_window, image2229, "image2229"); + GLADE_HOOKUP_OBJECT (main_window, image2311, "image2311"); GLADE_HOOKUP_OBJECT (main_window, menu_show_stadium, "menu_show_stadium"); - GLADE_HOOKUP_OBJECT (main_window, image2230, "image2230"); + GLADE_HOOKUP_OBJECT (main_window, image2312, "image2312"); GLADE_HOOKUP_OBJECT (main_window, trennlinie15, "trennlinie15"); GLADE_HOOKUP_OBJECT (main_window, menu_betting, "menu_betting"); GLADE_HOOKUP_OBJECT (main_window, menu_help1, "menu_help1"); GLADE_HOOKUP_OBJECT (main_window, menu_help1_menu, "menu_help1_menu"); GLADE_HOOKUP_OBJECT (main_window, menu_about, "menu_about"); - GLADE_HOOKUP_OBJECT (main_window, image2231, "image2231"); + GLADE_HOOKUP_OBJECT (main_window, image2313, "image2313"); GLADE_HOOKUP_OBJECT (main_window, menu_contributors, "menu_contributors"); - GLADE_HOOKUP_OBJECT (main_window, image2232, "image2232"); + GLADE_HOOKUP_OBJECT (main_window, image2314, "image2314"); GLADE_HOOKUP_OBJECT (main_window, menu_help, "menu_help"); - GLADE_HOOKUP_OBJECT (main_window, image2233, "image2233"); + GLADE_HOOKUP_OBJECT (main_window, image2315, "image2315"); GLADE_HOOKUP_OBJECT (main_window, hbox1, "hbox1"); GLADE_HOOKUP_OBJECT (main_window, button_load, "button_load"); GLADE_HOOKUP_OBJECT (main_window, image11, "image11"); diff --git a/src/league.c b/src/league.c index 0ba987bc..72b1e19f 100644 --- a/src/league.c +++ b/src/league.c @@ -76,7 +76,7 @@ league_new(gboolean new_id) new.round_robins = 2; new.yellow_red = 1000; - new.stats = stat_league_new(new.id); + new.stats = stat_league_new("", ""); new.active = TRUE; @@ -731,12 +731,14 @@ league_team_movements_assign_dest(GArray *team_movements, gint idx, { if(tmove->prom_rel_type == PROM_REL_PROMOTION) user_history_add(&usr(team_is_user(&tmove->tm)), - USER_HISTORY_PROMOTED, tmove->tm.id, - lig(g_array_index(tmove->dest_idcs, gint, 0)).id, -1, ""); + USER_HISTORY_PROMOTED, tmove->tm.name, + lig(g_array_index(tmove->dest_idcs, gint, 0)).name, + NULL, NULL); else user_history_add(&usr(team_is_user(&tmove->tm)), - USER_HISTORY_RELEGATED, tmove->tm.id, - lig(g_array_index(tmove->dest_idcs, gint, 0)).id, -1, ""); + USER_HISTORY_RELEGATED, tmove->tm.name, + lig(g_array_index(tmove->dest_idcs, gint, 0)).name, + NULL, NULL); } } diff --git a/src/load_save.c b/src/load_save.c index dfa2ee45..237ee138 100644 --- a/src/load_save.c +++ b/src/load_save.c @@ -35,16 +35,17 @@ #include "user.h" #include "variables.h" #include "window.h" -#include "xml_loadsave_misc.h" #include "xml_loadsave_cup.h" +#include "xml_loadsave_jobs.h" #include "xml_loadsave_league.h" #include "xml_loadsave_leagues_cups.h" +#include "xml_loadsave_misc.h" #include "xml_loadsave_season_stats.h" #include "xml_loadsave_transfers.h" #include "xml_loadsave_users.h" #include "xml.h" -#define PROGRESS_MAX 7 +#define PROGRESS_MAX 8 /** Save the game to the specified file. */ void @@ -119,6 +120,18 @@ load_save_save_game(const gchar *filename) xml_loadsave_season_stats_write(prefix); + if(debug > 60) + printf("load_save_save jobs \n"); + + gui_show_progress( + ((PROGRESS_MAX * gtk_progress_bar_get_fraction( + GTK_PROGRESS_BAR( + lookup_widget(window.progress, "progressbar")))) + 1) / PROGRESS_MAX, + _("Saving job exchange..."), + PIC_TYPE_SAVE); + + xml_loadsave_jobs_write(prefix); + if(debug > 60) printf("load_save_save misc \n"); @@ -259,6 +272,18 @@ load_save_load_game(const gchar* filename, gboolean create_main_window) xml_loadsave_season_stats_read(dirname, prefix); + if(debug > 60) + printf("load_save_load jobs \n"); + + gui_show_progress( + ((PROGRESS_MAX * gtk_progress_bar_get_fraction( + GTK_PROGRESS_BAR( + lookup_widget(window.progress, "progressbar")))) + 1) / PROGRESS_MAX, + _("Loading job exchange..."), + PIC_TYPE_LOAD); + + xml_loadsave_jobs_read(dirname, prefix); + if(debug > 60) printf("load_save_load misc \n"); diff --git a/src/main.c b/src/main.c index 23900f27..5fbd4118 100644 --- a/src/main.c +++ b/src/main.c @@ -35,12 +35,13 @@ #include "debug.h" #include "file.h" #include "free.h" +#include "job_struct.h" #include "language.h" #include "lg_commentary.h" #include "live_game.h" #include "load_save.h" #include "main.h" -#include "mediaplayer.h" +/* #include "mediaplayer.h" */ #include "misc.h" #include "misc_callbacks.h" #include "name_struct.h" @@ -183,6 +184,8 @@ main_init_variables(void) strategies = g_array_new(FALSE, FALSE, sizeof(Strategy)); bets[0] = g_array_new(FALSE, FALSE, sizeof(BetMatch)); bets[1] = g_array_new(FALSE, FALSE, sizeof(BetMatch)); + jobs = g_array_new(FALSE, FALSE, sizeof(Job)); + job_teams = g_array_new(FALSE, FALSE, sizeof(Team)); save_file = NULL; @@ -279,7 +282,7 @@ main (gint argc, gchar *argv[]) gtk_set_locale (); gtk_init (&argc, &argv); - mediaplayer_init(&argc, &argv); + /* mediaplayer_init(&argc, &argv); */ main_init(&argc, &argv); diff --git a/src/misc.c b/src/misc.c index 09abfdf8..877ff3b3 100644 --- a/src/misc.c +++ b/src/misc.c @@ -458,6 +458,9 @@ misc_parse(const gchar *s, gint *result) void misc_string_assign(gchar **string, const gchar *contents) { + if(contents == NULL) + return; + if(*string != NULL) g_free(*string); diff --git a/src/misc2_callback_func.c b/src/misc2_callback_func.c index ba2bb34c..1a8b0e60 100644 --- a/src/misc2_callback_func.c +++ b/src/misc2_callback_func.c @@ -29,6 +29,7 @@ #include "finance.h" #include "free.h" #include "game_gui.h" +#include "league.h" #include "maths.h" #include "misc.h" #include "misc2_callback_func.h" @@ -231,7 +232,9 @@ misc2_callback_add_user(void) new_user.tm = tm; new_user.team_id = tm->id; - user_history_add(&new_user, USER_HISTORY_START_GAME, tm->id, tm->clid, -1, ""); + user_history_add(&new_user, USER_HISTORY_START_GAME, + tm->name, league_cup_get_name_string(tm->clid), + NULL, NULL); g_array_append_val(users, new_user); diff --git a/src/misc2_callbacks.c b/src/misc2_callbacks.c index cba2bae4..f9262ae5 100644 --- a/src/misc2_callbacks.c +++ b/src/misc2_callbacks.c @@ -30,6 +30,8 @@ #include "finance.h" #include "free.h" #include "game_gui.h" +#include "league.h" +#include "job.h" #include "load_save.h" #include "main.h" #include "misc2_callbacks.h" @@ -37,6 +39,7 @@ #include "misc2_interface.h" #include "player.h" #include "support.h" +#include "team.h" #include "transfer.h" #include "treeview.h" #include "treeview2.h" @@ -44,38 +47,72 @@ #include "user.h" #include "window.h" -gboolean -on_button_cancel_clicked (GtkWidget *widget, - GdkEvent *event, - gpointer user_data) -{ - - return FALSE; -} - - -void -on_button_ok_clicked (GtkButton *button, - gpointer user_data) -{ - -} - - void on_button_offer_ok_clicked (GtkButton *button, gpointer user_data) { - if(stat2 == STATUS_JOB_OFFER_SUCCESS) - user_history_add(¤t_user, USER_HISTORY_JOB_OFFER_ACCEPTED, - current_user.tm->id, ((Team*)statp)->id, ((Team*)statp)->clid, ""); + gboolean changed = TRUE; + gchar *team_name = g_strdup(current_user.tm->name); - user_change_team(¤t_user, (Team*)statp); + if(stat2 == STATUS_JOB_EXCHANGE_SHOW_TEAM) + { + if(query_job_application_successful((Job*)statp, ¤t_user)) + { + if(((Job*)statp)->type != JOB_TYPE_NATIONAL) + { + game_gui_show_warning( + _("The owners of %s accept your application. Since %s don't want to get stuck with a lame duck, you get fired instantly and spend the rest of the current season tending your garden."), + job_get_team((Job*)statp)->name, current_user.tm->name); + job_change_country((Job*)statp); + } + else + game_gui_show_warning( + _("The owners of %s accept your application."), + current_user.tm->name); - stat0 = STATUS_MAIN; - game_gui_show_main(); + printf("misc2 1\n"); + user_change_team(¤t_user, team_of_id(((Job*)statp)->team_id)); - window_destroy(&window.job_offer, TRUE); + printf("misc2 2\n"); + if(((Job*)statp)->type == JOB_TYPE_NATIONAL) + job_remove((Job*)statp, TRUE); + else + { + job_remove((Job*)statp, FALSE); + job_remove_national(); + } + printf("misc2 3\n"); + + } + else + { + game_gui_show_warning( + _("The owners of %s politely reject your application. You're not successful enough in their eyes."), + job_get_team((Job*)statp)->name); + changed = FALSE; + } + } + else + user_change_team(¤t_user, (Team*)statp); + + printf("misc2 4\n"); + if(changed) + { + if(stat2 == STATUS_JOB_OFFER_SUCCESS || + stat2 == STATUS_JOB_EXCHANGE_SHOW_TEAM) + user_history_add(¤t_user, USER_HISTORY_JOB_OFFER_ACCEPTED, + team_name, + current_user.tm->name, + league_cup_get_name_string(current_user.tm->clid), + NULL); + + stat0 = STATUS_MAIN; + game_gui_show_main(); + } + + g_free(team_name); + + window_destroy(&window.job_offer, FALSE); setsav0; } @@ -85,7 +122,8 @@ void on_button_offer_cancel_clicked (GtkButton *button, gpointer user_data) { - if(stat2 != STATUS_JOB_OFFER_SUCCESS) + if(stat2 != STATUS_JOB_OFFER_SUCCESS && + stat2 != STATUS_JOB_EXCHANGE_SHOW_TEAM) { if(users->len == 1) main_exit_program(EXIT_USER_FIRED, NULL); @@ -96,9 +134,13 @@ on_button_offer_cancel_clicked (GtkButton *button, } } - window_destroy(&window.job_offer, TRUE); - stat0 = STATUS_MAIN; - game_gui_show_main(); + window_destroy(&window.job_offer, FALSE); + + if(stat0 != STATUS_SHOW_JOB_EXCHANGE) + { + stat0 = STATUS_MAIN; + game_gui_show_main(); + } } diff --git a/src/misc2_callbacks.h b/src/misc2_callbacks.h index 524d581e..5babb3bc 100644 --- a/src/misc2_callbacks.h +++ b/src/misc2_callbacks.h @@ -29,15 +29,6 @@ #include -gboolean -on_button_cancel_clicked (GtkWidget *widget, - GdkEvent *event, - gpointer user_data); - -void -on_button_ok_clicked (GtkButton *button, - gpointer user_data); - void on_button_offer_ok_clicked (GtkButton *button, gpointer user_data); diff --git a/src/misc2_interface.c b/src/misc2_interface.c index 8c2d2403..7745113a 100644 --- a/src/misc2_interface.c +++ b/src/misc2_interface.c @@ -70,7 +70,8 @@ create_window_job_offer (void) gtk_container_set_border_width (GTK_CONTAINER (window_job_offer), 6); gtk_window_set_title (GTK_WINDOW (window_job_offer), _("Job offer")); gtk_window_set_position (GTK_WINDOW (window_job_offer), GTK_WIN_POS_CENTER); - gtk_window_set_default_size (GTK_WINDOW (window_job_offer), -1, 600); + gtk_window_set_modal (GTK_WINDOW (window_job_offer), TRUE); + gtk_window_set_default_size (GTK_WINDOW (window_job_offer), 500, 600); vbox5 = gtk_vbox_new (FALSE, 0); gtk_widget_show (vbox5); diff --git a/src/misc_callback_func.c b/src/misc_callback_func.c index 410d7a7f..338a3148 100644 --- a/src/misc_callback_func.c +++ b/src/misc_callback_func.c @@ -54,7 +54,7 @@ misc_callback_show_team_list(GtkWidget *widget, const gchar *country_file) GtkWidget *treeview_startup = lookup_widget(widget, "treeview_startup"); - xml_country_read(country_file); + xml_country_read(country_file, NULL); treeview_show_team_list(GTK_TREE_VIEW(treeview_startup), FALSE, FALSE); diff --git a/src/start_end.c b/src/start_end.c index ed0de3d3..12a96b05 100644 --- a/src/start_end.c +++ b/src/start_end.c @@ -31,6 +31,7 @@ #include "free.h" #include "game_gui.h" #include "gui.h" +#include "job.h" #include "league.h" #include "live_game.h" #include "load_save.h" @@ -69,7 +70,7 @@ WeekFunc start_week_round_funcs[] = WeekFunc start_week_funcs[] = {start_week_add_cups, start_week_update_users, start_week_update_teams, start_week_update_user_finances, - youth_academy_update_weekly, transfer_update, NULL}; + youth_academy_update_weekly, transfer_update, job_update, NULL}; WeekFunc end_week_funcs[] = {stat_update_leagues, end_week_hide_cups, NULL}; @@ -88,6 +89,7 @@ void start_new_season(void) { gint i, j; + gchar buf[SMALL]; week = week_round = 1; free_names(TRUE); @@ -102,6 +104,7 @@ start_new_season(void) g_ptr_array_remove_index(acps, i); } + printf("s1\n"); for(i=cps->len - 1; i >= 0; i--) if(cp(i).add_week == -1) { @@ -109,12 +112,17 @@ start_new_season(void) fixture_write_cup_fixtures(&cp(i)); } + printf("s2\n"); if(season > 1) { for(i=0;ilen;i++) + { + sprintf(buf, "%d", team_get_league_rank(usr(i).tm)); user_history_add(&usr(i), USER_HISTORY_END_SEASON, - usr(i).team_id, usr(i).tm->clid, - team_get_league_rank(usr(i).tm), ""); + usr(i).tm->name, + league_cup_get_name_string(usr(i).tm->clid), + buf, NULL); + } start_new_season_league_changes(); @@ -136,17 +144,25 @@ start_new_season(void) g_ptr_array_add(acps, &cp(i)); } + printf("s3\n"); for(i=0;ilen;i++) if(lig(i).active) fixture_write_league_fixtures(&lig(i)); + printf("s4\n"); for(i=cps->len - 1; i >= 0; i--) + { + printf("%d %s adw %d\n", i, cp(i).name, cp(i).add_week); + if(cp(i).add_week >= 0) { + printf("res\n"); cup_reset(&cp(i)); + printf("fix\n"); if(cp(i).add_week == 0) fixture_write_cup_fixtures(&cp(i)); + printf("done\n"); } else if(cp(i).add_week == -1) { @@ -158,7 +174,11 @@ start_new_season(void) team_of_id(g_array_index(cp(i).fixtures, Fixture, j).team_ids[1]); } } + + printf("#%d %s adw %d\n", i, cp(i).name, cp(i).add_week); + } + printf("s5\n"); stat5 = -1; for(i=0;ilen;i++) @@ -166,6 +186,8 @@ start_new_season(void) if(season == 1) bet_update(); + + printf("s6\n"); } /** Fill some global variables with default values at the @@ -196,7 +218,7 @@ start_generate_league_teams(void) for(i=0;ilen;i++) for(j=0;jlen;j++) - team_generate_players_stadium(&g_array_index(lig(i).teams, Team, j)); + team_generate_players_stadium(&g_array_index(lig(i).teams, Team, j), 0); stat5 = -1; } @@ -365,8 +387,11 @@ end_week_round_update_fixtures(void) week_round == 1 && team_is_user(g_array_index(lig(i).table.elements, TableElement, 0).team) != -1) user_history_add(&usr(team_is_user(g_array_index(lig(i).table.elements, TableElement, 0).team)), - USER_HISTORY_CHAMPION, g_array_index(lig(i).table.elements, TableElement, 0).team_id, - lig(i).id, -1, ""); + USER_HISTORY_CHAMPION, + g_array_index(lig(i).table.elements, + TableElement, 0).team->name, + league_cup_get_name_string(lig(i).id), + NULL, NULL); for(i=0;ilen;i++) { @@ -569,12 +594,6 @@ start_new_season_league_changes(void) for(i=0;ilen;i++) league_size[i] = lig(i).teams->len; - /*d*/ - for(i=0;ilen;i++) - printf("# %d %s %d\n", i, - g_array_index(lig(1).teams, Team, i).name, - g_array_index(lig(1).teams, Team, i).id); - for(i=0;ilen;i++) league_remove_team_with_id( league_from_clid(g_array_index(team_movements, TeamMove, i).tm.clid), @@ -583,17 +602,21 @@ start_new_season_league_changes(void) league_team_movements_destinations(team_movements, league_size); for(i = team_movements->len - 1; i >= 0; i--) - if(g_array_index(team_movements, TeamMove, i).prom_rel_type == PROM_REL_RELEGATION) + if(g_array_index(team_movements, TeamMove, i).prom_rel_type == + PROM_REL_RELEGATION) g_array_prepend_val( lig(g_array_index( - g_array_index(team_movements, TeamMove, i).dest_idcs, gint, 0)).teams, + g_array_index(team_movements, TeamMove, i).dest_idcs, + gint, 0)).teams, g_array_index(team_movements, TeamMove, i).tm); for(i=1;ilen;i++) - if(g_array_index(team_movements, TeamMove, i).prom_rel_type != PROM_REL_RELEGATION) + if(g_array_index(team_movements, TeamMove, i).prom_rel_type != + PROM_REL_RELEGATION) g_array_append_val( lig(g_array_index( - g_array_index(team_movements, TeamMove, i).dest_idcs, gint, 0)).teams, + g_array_index(team_movements, TeamMove, i).dest_idcs, + gint, 0)).teams, g_array_index(team_movements, TeamMove, i).tm); for(i=0;ilen;i++) @@ -606,7 +629,8 @@ start_new_season_league_changes(void) { g_array_index(lig(i).teams, Team, j).clid = lig(i).id; for(k=0;klen;k++) - g_array_index(g_array_index(lig(i).teams, Team, j).players, Player, k).team = + g_array_index(g_array_index(lig(i).teams, Team, j).players, + Player, k).team = &g_array_index(lig(i).teams, Team, j); } diff --git a/src/stat.c b/src/stat.c index d00d4a7b..cb34296f 100644 --- a/src/stat.c +++ b/src/stat.c @@ -33,13 +33,15 @@ #include "team.h" #include "variables.h" -/** Return a newly allocated league stat with given clid. */ +/** Return a newly allocated league stat with specified + league name and symbol. */ LeagueStat -stat_league_new(gint clid) +stat_league_new(const gchar *league_name, const gchar *league_symbol) { LeagueStat new; - - new.clid = clid; + + new.league_name = g_strdup(league_name); + new.league_symbol = g_strdup(league_symbol); new.teams_off = g_array_new(FALSE, FALSE, sizeof(Stat)); new.teams_def = g_array_new(FALSE, FALSE, sizeof(Stat)); new.player_scorers = g_array_new(FALSE, FALSE, sizeof(Stat)); @@ -60,8 +62,12 @@ stat_update_leagues(void) lig(i).fixtures, Fixture, lig(i).fixtures->len - 1).week_number >= week) { free_league_stats(&lig(i).stats); - lig(i).stats.teams_off = stat_update_league_teams(lig(i).teams, TEAM_COMPARE_OFFENSIVE); - lig(i).stats.teams_def = stat_update_league_teams(lig(i).teams, TEAM_COMPARE_DEFENSE); + lig(i).stats.league_name = g_strdup(lig(i).name); + lig(i).stats.league_symbol = g_strdup(lig(i).symbol); + lig(i).stats.teams_off = + stat_update_league_teams(lig(i).teams, TEAM_COMPARE_OFFENSIVE); + lig(i).stats.teams_def = + stat_update_league_teams(lig(i).teams, TEAM_COMPARE_DEFENSE); stat_update_league_players(&lig(i)); } } @@ -103,7 +109,7 @@ stat_update_league_players(League *league) for(j=0;jteam->id; + new_stat.team_name = g_strdup(pl->team->name); new_stat.value_string = g_strdup(pl->name); new_stat.value1 = player_games_goals_get(pl, pl->team->clid, PLAYER_VALUE_GOALS); @@ -138,9 +144,11 @@ stat_update_league_teams(const GArray *teams_array, gint compare_type) for(i=0;iid; - new_stat.value1 = team_get_table_value((Team*)g_ptr_array_index(teams, i), TABLE_GF); - new_stat.value2 = team_get_table_value((Team*)g_ptr_array_index(teams, i), TABLE_GA); + new_stat.team_name = g_strdup(((Team*)g_ptr_array_index(teams, i))->name); + new_stat.value1 = + team_get_table_value((Team*)g_ptr_array_index(teams, i), TABLE_GF); + new_stat.value2 = + team_get_table_value((Team*)g_ptr_array_index(teams, i), TABLE_GA); new_stat.value3 = -1; new_stat.value_string = NULL; @@ -182,7 +190,7 @@ stat_create_season_stat(void) g_array_append_val(new.league_champs, new_champ); g_array_append_val(new.league_stats, lig(i).stats); - lig(i).stats = stat_league_new(lig(i).id); + lig(i).stats = stat_league_new(lig(i).name, lig(i).symbol); } for(i=0;ilen;i++) diff --git a/src/stat.h b/src/stat.h index ff56da30..27614cd4 100644 --- a/src/stat.h +++ b/src/stat.h @@ -34,7 +34,7 @@ SeasonStat stat_season_stat_new(gint season_number); LeagueStat -stat_league_new(gint clid); +stat_league_new(const gchar *league_name, const gchar *league_symbol); GArray* stat_update_league_teams(const GArray *teams, gint compare_type); diff --git a/src/stat_struct.h b/src/stat_struct.h index 427db1ec..0aa5af83 100644 --- a/src/stat_struct.h +++ b/src/stat_struct.h @@ -30,16 +30,17 @@ string and integer values. */ typedef struct { - gint team_id; + gchar *team_name; gint value1, value2, value3; gchar *value_string; } Stat; /** A structure holding some stat arrays about a league. */ typedef struct -{ - /** The league id. */ - gint clid; +{ + gchar *league_symbol; + gchar *league_name; + /** Best offensive and defensive teams. */ GArray *teams_off, *teams_def; /** Best goal getters and goalies. */ diff --git a/src/strategy.h b/src/strategy.h index f023ca99..c169fdf1 100644 --- a/src/strategy.h +++ b/src/strategy.h @@ -27,8 +27,9 @@ #define STRATEGY_H #include "bygfoot.h" +#include "player_struct.h" #include "strategy_struct.h" -/* #include "team_struct.h" */ +#include "team_struct.h" #include "variables.h" void diff --git a/src/support.c b/src/support.c index c108b9da..00aff298 100644 --- a/src/support.c +++ b/src/support.c @@ -1,28 +1,3 @@ -/* - support.c - - 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. -*/ - /* * DO NOT EDIT THIS FILE - it is generated by Glade. */ diff --git a/src/support.h b/src/support.h index e545646e..a32649e5 100644 --- a/src/support.h +++ b/src/support.h @@ -1,28 +1,3 @@ -/* - support.h - - 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. -*/ - /* * DO NOT EDIT THIS FILE - it is generated by Glade. */ diff --git a/src/team.c b/src/team.c index 8d3f607f..2d5fd4b6 100644 --- a/src/team.c +++ b/src/team.c @@ -71,14 +71,14 @@ team_new(gboolean new_id) /* Fill the players array of the team and the stadium. @param tm The team that gets filled. */ void -team_generate_players_stadium(Team *tm) +team_generate_players_stadium(Team *tm, gfloat av_talent) { gint i; gfloat skill_factor = math_rnd(1 - const_float("float_team_skill_variance"), 1 + const_float("float_team_skill_variance")); Player new; - gfloat wages = 0, average_talent; - gchar *def_file = team_has_def_file(tm); + gfloat wages = 0, average_talent, league_av_talent; + gchar *def_file = team_has_def_file(tm); tm->strategy_sid = strategy_get_random(); @@ -89,9 +89,13 @@ team_generate_players_stadium(Team *tm) const_float("float_team_stadium_safety_upper")); if(tm->clid < ID_CUP_START) + { + league_av_talent = (av_talent > 0) ? + av_talent : league_from_clid(tm->clid)->average_talent; average_talent = (tm->average_talent == 0) ? - skill_factor * league_from_clid(tm->clid)->average_talent : + skill_factor * league_av_talent : tm->average_talent; + } else average_talent = skill_factor * team_get_average_talents(lig(0).teams) * @@ -321,6 +325,21 @@ team_is_user(const Team *tm) return -1; } +/** Check whether the team with given name is a user-managed team. + @param team_name The team name we examine. + @return The user's index in the #users array or -1.*/ +gint +team_name_is_user(const gchar *team_name) +{ + gint i; + + for(i=0;ilen;i++) + if(strcmp(team_name, usr(i).tm->name) == 0) + return i; + + return -1; +} + /** Return the overall average skill or the cskill of the first 11 players. @param tm The team we examine. diff --git a/src/team.h b/src/team.h index e6efc2ab..3e9132fc 100644 --- a/src/team.h +++ b/src/team.h @@ -50,7 +50,7 @@ gboolean query_is_my_team(const Team *tm); void -team_generate_players_stadium(Team *tm); +team_generate_players_stadium(Team *tm, gfloat av_talent); gboolean query_team_is_in_cups(const Team *tm, gint group); @@ -73,6 +73,9 @@ team_get_average_skill(const Team *tm, gboolean cskill); gfloat team_get_average_talent(const Team *tm); +gint +team_name_is_user(const gchar *team_name); + gint team_is_user(const Team *tm); diff --git a/src/treeview.c b/src/treeview.c index 1d4e9358..01ec7db4 100644 --- a/src/treeview.c +++ b/src/treeview.c @@ -936,14 +936,15 @@ treeview_create_fixture(const Fixture *fix, GtkListStore *ls) gchar *symbol[2] = {NULL, NULL}; gchar buf_result[SMALL], buf[3][SMALL]; gchar *colour_fg = NULL, *colour_bg = NULL; + gint user_idx = fixture_user_team_involved(fix); if(fix->clid >= ID_CUP_START && query_cup_is_international(fix->clid)) for(i=0;i<2;i++) symbol[i] = fix->teams[i]->symbol; - if(fixture_user_team_involved(fix) != -1) - treeview_helper_set_user_colours(usr(fixture_user_team_involved(fix)).tm, + if(user_idx != -1) + treeview_helper_set_user_colours(usr(user_idx).tm->name, &colour_bg, &colour_fg); else { @@ -2040,7 +2041,7 @@ treeview_create_user_history(void) gtk_list_store_set(ls, &iter, 0, g_array_index(current_user.history, UserHistory, i).season, 1, g_array_index(current_user.history, UserHistory, i).week, - 2, team_of_id(g_array_index(current_user.history, UserHistory, i).team_id)->name, + 2, g_array_index(current_user.history, UserHistory, i).team_name, 4, buf, -1); } @@ -2129,9 +2130,10 @@ treeview_create_league_stats(GtkListStore *ls, const LeagueStat *league_stat) gchar *colour_fg = NULL, *colour_bg = NULL; gtk_list_store_append(ls, &iter); - treeview_helper_insert_icon(ls, &iter, 0, league_from_clid(league_stat->clid)->symbol); + treeview_helper_insert_icon(ls, &iter, 0, + league_stat->league_symbol); gtk_list_store_set(ls, &iter, 1, const_int("int_treeview_helper_int_empty"), - 2, league_cup_get_name_string(league_stat->clid), 3, "", 4, "", 5, "", -1); + 2, league_stat->league_name, 3, "", 4, "", 5, "", -1); for(i=0;i<2;i++) { @@ -2151,11 +2153,13 @@ treeview_create_league_stats(GtkListStore *ls, const LeagueStat *league_stat) g_array_index(teams[i], Stat, j).value1, g_array_index(teams[i], Stat, j).value2); - treeview_helper_set_user_colours(team_of_id(g_array_index(teams[i], Stat, j).team_id), - &colour_bg, &colour_fg); + treeview_helper_set_user_colours( + g_array_index(teams[i], Stat, j).team_name, + &colour_bg, &colour_fg); sprintf(buf2, "%s", - colour_bg, colour_fg, team_of_id(g_array_index(teams[i], Stat, j).team_id)->name); + colour_bg, colour_fg, + g_array_index(teams[i], Stat, j).team_name); gtk_list_store_append(ls, &iter); gtk_list_store_set(ls, &iter, 0, NULL, 1, j + 1, @@ -2193,12 +2197,13 @@ treeview_create_league_stats(GtkListStore *ls, const LeagueStat *league_stat) 100 * (1 - (gfloat)g_array_index(players[i], Stat, j).value1 / (gfloat)g_array_index(players[i], Stat, j).value3) : 0); - treeview_helper_set_user_colours(team_of_id(g_array_index(players[i], Stat, j).team_id), - &colour_bg, &colour_fg); + treeview_helper_set_user_colours( + g_array_index(players[i], Stat, j).team_name, + &colour_bg, &colour_fg); sprintf(buf3, "%s (%s)", colour_bg, colour_fg, g_array_index(players[i], Stat, j).value_string, - team_of_id(g_array_index(players[i], Stat, j).team_id)->name); + g_array_index(players[i], Stat, j).team_name); sprintf(buf4, "%d", g_array_index(players[i], Stat, j).value1); gtk_list_store_append(ls, &iter); @@ -2300,11 +2305,12 @@ treeview_create_season_history_champions(GtkListStore *ls, const GArray* league_ } } -/** Show the season history of the specified season - and the specified page. Page is either a page of league stats +/** Show the season history with given index in the season_stats array + and the specified page. + @param page Either a page of league stats (if != -1) or -1 which means we show the champions. */ void -treeview_show_season_history(gint page, gint season_number) +treeview_show_season_history(gint page, gint idx) { gchar buf[SMALL]; GtkTreeView *treeview = GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right")); @@ -2312,24 +2318,24 @@ treeview_show_season_history(gint page, gint season_number) gtk_list_store_new(6, GDK_TYPE_PIXBUF, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING, G_TYPE_STRING); GtkTreeIter iter; - SeasonStat *stat = &g_array_index(season_stats, SeasonStat, season_number); + SeasonStat *stat = &g_array_index(season_stats, SeasonStat, idx); treeview_helper_clear(treeview); treeview_set_up_league_stats(treeview); - sprintf(buf, _("Season %d"), season_number + 1); + sprintf(buf, _("Season %d"), stat->season_number); gtk_list_store_append(model, &iter); gtk_list_store_set(model, &iter, 0, NULL, 1, const_int("int_treeview_helper_int_empty"), 2, buf, -1); if(page != -1) - treeview_create_league_stats(model, - &g_array_index(stat->league_stats, LeagueStat, page)); + treeview_create_league_stats( + model, &g_array_index(stat->league_stats, LeagueStat, page)); else - treeview_create_season_history_champions(model, stat->league_champs, - stat->cup_champs); + treeview_create_season_history_champions( + model, stat->league_champs, stat->cup_champs); gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(model)); g_object_unref(model); diff --git a/src/treeview.h b/src/treeview.h index 88324933..1b8d167d 100644 --- a/src/treeview.h +++ b/src/treeview.h @@ -211,7 +211,7 @@ void treeview_create_league_stats(GtkListStore *ls, const LeagueStat *league_stat); void -treeview_show_season_history(gint page, gint season_number); +treeview_show_season_history(gint page, gint idx); void treeview_create_season_history_champions(GtkListStore *ls, const GArray* league_champs, diff --git a/src/treeview2.c b/src/treeview2.c index 39e67971..eb39a990 100644 --- a/src/treeview2.c +++ b/src/treeview2.c @@ -25,6 +25,7 @@ #include "bet.h" #include "fixture.h" +#include "job.h" #include "league.h" #include "live_game.h" #include "misc.h" @@ -427,3 +428,102 @@ treeview2_show_bets(void) gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(model)); g_object_unref(model); } + +void +treeview2_create_job_exchange(GtkListStore *ls) +{ + gint i; + GtkTreeIter iter; + gchar buf[SMALL]; + const Team *tm = NULL; + + for(i=0;ilen;i++) + { + tm = job_get_team(&g_array_index(jobs, Job, i)); + sprintf(buf, "%s (%d)", g_array_index(jobs, Job, i).league_name, + g_array_index(jobs, Job, i).league_layer); + + gtk_list_store_append(ls, &iter); + gtk_list_store_set(ls, &iter, 0, i + 1, + 1, tm->name, + 2, buf, + 3, &g_array_index(jobs, Job, i), + 4, &g_array_index(jobs, Job, i), + 5, &g_array_index(jobs, Job, i), + -1); + } +} + +void +treeview2_set_up_job_exchange(GtkTreeView *treeview) +{ + gint i; + GtkTreeViewColumn *col; + GtkCellRenderer *renderer; + gchar *titles[6] = + {"", + _("Team"), + _("League"), + _("Country"), + _("Av.skill"), + _("Talent %")}; + + gtk_tree_selection_set_mode(gtk_tree_view_get_selection(treeview), + GTK_SELECTION_SINGLE); + gtk_tree_view_set_headers_visible(treeview, TRUE); + + col = gtk_tree_view_column_new(); + gtk_tree_view_column_set_title(col, titles[0]); + gtk_tree_view_append_column(treeview, col); + renderer = treeview_helper_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(col, renderer, TRUE); + gtk_tree_view_column_add_attribute(col, renderer, + "text", 0); + + for(i=1;i<3;i++) + { + col = gtk_tree_view_column_new(); + gtk_tree_view_column_set_title(col, titles[i]); + gtk_tree_view_append_column(treeview, col); + renderer = treeview_helper_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(col, renderer, TRUE); + gtk_tree_view_column_add_attribute(col, renderer, + "text", i); + } + + for(i=3;i<6;i++) + { + col = gtk_tree_view_column_new(); + gtk_tree_view_column_set_title(col, titles[i]); + gtk_tree_view_append_column(treeview, col); + renderer = treeview_helper_cell_renderer_text_new(); + gtk_tree_view_column_pack_start(col, renderer, TRUE); + gtk_tree_view_column_set_cell_data_func(col, renderer, + treeview_helper_job_exchange, + NULL, NULL); + if(i > 3) + { + gtk_tree_view_column_set_alignment(col, 0.5); + g_object_set(renderer, "xalign", 0.5, NULL); + } + } +} + +/** Show the teams that offer a job. */ +void +treeview2_show_job_exchange(void) +{ + GtkTreeView *treeview = + GTK_TREE_VIEW(lookup_widget(window.main, "treeview_right")); + GtkListStore *model = + gtk_list_store_new(6, G_TYPE_INT, G_TYPE_STRING, G_TYPE_STRING, + G_TYPE_POINTER, G_TYPE_POINTER, G_TYPE_POINTER); + + treeview_helper_clear(treeview); + + treeview2_set_up_job_exchange(treeview); + + treeview2_create_job_exchange(model); + gtk_tree_view_set_model(treeview, GTK_TREE_MODEL(model)); + g_object_unref(model); +} diff --git a/src/treeview2.h b/src/treeview2.h index e47b2508..e8c1c266 100644 --- a/src/treeview2.h +++ b/src/treeview2.h @@ -64,4 +64,13 @@ treeview2_set_up_bets(GtkTreeView *treeview); void treeview2_show_bets(void); +void +treeview2_create_job_exchange(GtkListStore *ls); + +void +treeview2_set_up_job_exchange(GtkTreeView *treeview); + +void +treeview2_show_job_exchange(void); + #endif diff --git a/src/treeview_helper.c b/src/treeview_helper.c index 1b065ebf..6529bcd2 100644 --- a/src/treeview_helper.c +++ b/src/treeview_helper.c @@ -28,6 +28,7 @@ #include "file.h" #include "fixture.h" #include "free.h" +#include "job.h" #include "league.h" #include "misc.h" #include "option.h" @@ -269,7 +270,7 @@ treeview_helper_get_user_history_icon(gint history_type) return NULL; case USER_HISTORY_START_GAME: return const_app("string_treeview_helper_user_history_symbol_start_game_icon"); - case USER_HISTORY_FIRE_FINANCES: + case USER_HISTORY_FIRE_FINANCE: return const_app("string_treeview_helper_user_history_symbol_fire_finances_icon"); case USER_HISTORY_FIRE_FAILURE: return const_app("string_treeview_helper_user_history_symbol_fire_failure_icon"); @@ -629,14 +630,15 @@ treeview_helper_get_table_element_colours(const Table *table, gint idx, /** Set the char pointers to the constant determining the background and foreground colours of user entries in treeviews if the team is a user team. */ void -treeview_helper_set_user_colours(const Team *tm, gchar **colour_bg, gchar **colour_fg) +treeview_helper_set_user_colours(const gchar *team_name, + gchar **colour_bg, gchar **colour_fg) { - if(tm == current_user.tm) + if(strcmp(team_name, current_user.tm->name) == 0) { *colour_fg = const_app("string_treeview_current_user_fg"); *colour_bg = const_app("string_treeview_current_user_bg"); } - else if(team_is_user(tm) != -1) + else if(team_name_is_user(team_name) != -1) { *colour_fg = const_app("string_treeview_user_fg"); *colour_bg = const_app("string_treeview_user_bg"); @@ -993,7 +995,7 @@ treeview_helper_player_to_cell(GtkTreeViewColumn *col, gpointer user_data) { gint column = treeview_helper_get_col_number_column(col); - gint attribute = GPOINTER_TO_INT(user_data); + gint attribute = GPOINTER_TO_INT(user_data), idx = -1; gchar buf[SMALL]; const Player *pl; @@ -1072,7 +1074,10 @@ treeview_helper_player_to_cell(GtkTreeViewColumn *col, sprintf(buf, "%s (%s)", pl->team->name, pl->team->strategy_sid); break; case PLAYER_LIST_ATTRIBUTE_LEAGUE_CUP: - strcpy(buf, league_cup_get_name_string(pl->team->clid)); + idx = job_team_is_on_list(pl->team->id); + strcpy(buf, (idx == -1) ? + league_cup_get_name_string(pl->team->clid) : + g_array_index(jobs, Job, idx).league_name); break; } @@ -1660,3 +1665,43 @@ treeview_helper_search_equal(GtkTreeModel *model, return return_value; } + +void +treeview_helper_job_exchange(GtkTreeViewColumn *col, + GtkCellRenderer *renderer, + GtkTreeModel *model, + GtkTreeIter *iter, + gpointer user_data) +{ + gint column = treeview_helper_get_col_number_column(col); + gchar buf[SMALL]; + const Job *job = NULL; + + gtk_tree_model_get(model, iter, column, &job, -1); + + if(job == NULL) + return; + + g_object_set(renderer, "background", + const_app("string_treeview_helper_color_default_background"), + "foreground", + const_app("string_treeview_helper_color_default_foreground"), + NULL); + + if(column == 3) + { + strcpy(buf, job->country_name); + if(job->type != JOB_TYPE_NATIONAL) + g_object_set(renderer, "background", + const_app("string_treeview_helper_color_job_international_bg"), + "foreground", + const_app("string_treeview_helper_color_job_international_fg"), + NULL); + } + else if(column == 4) + sprintf(buf, "%.1f", team_get_average_skill(job_get_team(job), FALSE)); + else if(column == 5) + sprintf(buf, "%d", job->talent_percent); + + g_object_set(renderer, "text", buf, NULL); +} diff --git a/src/treeview_helper.h b/src/treeview_helper.h index 110c0523..afeab0b5 100644 --- a/src/treeview_helper.h +++ b/src/treeview_helper.h @@ -81,7 +81,8 @@ treeview_helper_get_table_element_colour_cups_cup(const Cup *cup, const Team *tm, gchar **colour_bg); void -treeview_helper_set_user_colours(const Team *tm, gchar **colour_bg, gchar **colour_fg); +treeview_helper_set_user_colours(const gchar *team_name, + gchar **colour_bg, gchar **colour_fg); PlayerListAttribute treeview_helper_get_attributes_from_scout(gint scout); @@ -220,4 +221,12 @@ treeview_helper_search_equal(GtkTreeModel *model, GtkTreeIter *iter, gpointer search_data); +void +treeview_helper_job_exchange(GtkTreeViewColumn *col, + GtkCellRenderer *renderer, + GtkTreeModel *model, + GtkTreeIter *iter, + gpointer user_data); + + #endif diff --git a/src/user.c b/src/user.c index 7c1070fb..c1625ebe 100644 --- a/src/user.c +++ b/src/user.c @@ -92,7 +92,9 @@ user_set_up_team_new_game(User *user) if(user->scout == -1) { user_set_up_team(user); - user_history_add(user, USER_HISTORY_START_GAME, user->tm->id, user->tm->clid, -1, ""); + user_history_add(user, USER_HISTORY_START_GAME, + user->tm->name, + league_cup_get_name_string(user->tm->clid), NULL, NULL); } else { @@ -108,7 +110,9 @@ user_set_up_team_new_game(User *user) user->tm = &g_array_index(lig(user->scout).teams, Team, rndom); user->team_id = g_array_index(lig(user->scout).teams, Team, rndom).id; - user_history_add(user, USER_HISTORY_START_GAME, user->tm->id, user->tm->clid, -1, ""); + user_history_add(user, USER_HISTORY_START_GAME, + user->tm->name, + league_cup_get_name_string(user->tm->clid), NULL, NULL); user_set_up_team(user); } @@ -199,7 +203,7 @@ user_remove(gint idx, gboolean regenerate_team) g_array_free(usr(idx).tm->players, TRUE); usr(idx).tm->players = g_array_new(FALSE, FALSE, sizeof(Player)); - team_generate_players_stadium(usr(idx).tm); + team_generate_players_stadium(usr(idx).tm, 0); for(i=0;iplayers->len;i++) g_array_index(usr(idx).tm->players, Player, i).team = usr(idx).tm; } @@ -293,10 +297,12 @@ user_job_offer(User *user) Team *new_team = NULL; if(math_rnd(0, 1) > const_float("float_user_success_counter_check") || - ABS(user->counters[COUNT_USER_SUCCESS]) < (gfloat)const_int("int_user_success_offer_limit") * 0.9) + ABS(user->counters[COUNT_USER_SUCCESS]) < + (gfloat)const_int("int_user_success_offer_limit") * 0.9) return; - if(user->counters[COUNT_USER_SUCCESS] < -(gfloat)const_int("int_user_success_offer_limit") * 0.9 && + if(user->counters[COUNT_USER_SUCCESS] < + -(gfloat)const_int("int_user_success_offer_limit") * 0.9 && !user->counters[COUNT_USER_WARNING]) { user_event_add(user, EVENT_TYPE_WARNING, -1, -1, NULL, @@ -313,8 +319,6 @@ user_job_offer(User *user) { new_team = team_get_new(user->tm, TRUE); user_event_add(user, EVENT_TYPE_FIRE_FAILURE, -1, -1, new_team, NULL); - user_history_add(user, USER_HISTORY_FIRE_FAILURE, user->tm->id, - new_team->id, new_team->clid, ""); } else if(option_int("int_opt_user_show_job_offers", &user->options)) { @@ -330,10 +334,11 @@ user_weekly_update_counters(User *user) { gint rank = team_get_league_rank(user->tm); gint teamslen = ((GArray*)(league_cup_get_teams(user->tm->clid)))->len; - gint rank_bounds[2] = {(gint)rint(const_float("float_user_success_table_bound_upper") * - (gfloat)teamslen), - (gint)rint(const_float("float_user_success_table_bound_lower") * - (gfloat)teamslen)}; + gint rank_bounds[2] = + {(gint)rint(const_float("float_user_success_table_bound_upper") * + (gfloat)teamslen), + (gint)rint(const_float("float_user_success_table_bound_lower") * + (gfloat)teamslen)}; gint *cnts = user->counters; gint increase_capacity; gfloat increase_safety; @@ -461,19 +466,16 @@ user_event_show_next(void) game_gui_show_warning(event->value_string); break; case EVENT_TYPE_FIRE_FINANCE: - stat2 = STATUS_JOB_OFFER_FIRE_FINANCE; - statp = event->value_pointer; - game_gui_show_job_offer((Team*)event->value_pointer, STATUS_JOB_OFFER_FIRE_FINANCE); + game_gui_show_job_offer((Team*)event->value_pointer, NULL, + STATUS_JOB_OFFER_FIRE_FINANCE); break; case EVENT_TYPE_FIRE_FAILURE: - stat2 = STATUS_JOB_OFFER_FIRE_FAILURE; - statp = event->value_pointer; - game_gui_show_job_offer((Team*)event->value_pointer, STATUS_JOB_OFFER_FIRE_FAILURE); + game_gui_show_job_offer((Team*)event->value_pointer, NULL, + STATUS_JOB_OFFER_FIRE_FAILURE); break; case EVENT_TYPE_JOB_OFFER: - stat2 = STATUS_JOB_OFFER_SUCCESS; - statp = event->value_pointer; - game_gui_show_job_offer((Team*)event->value_pointer, STATUS_JOB_OFFER_SUCCESS); + game_gui_show_job_offer((Team*)event->value_pointer, NULL, + STATUS_JOB_OFFER_SUCCESS); break; case EVENT_TYPE_OVERDRAW: if(event->value1 == 1) @@ -544,6 +546,7 @@ void user_change_team(User *user, Team *tm) { gint i; + gint success = user->counters[COUNT_USER_SUCCESS]; user->tm = tm; user->team_id = tm->id; @@ -551,6 +554,9 @@ user_change_team(User *user, Team *tm) user_set_up_team(user); user->counters[COUNT_USER_NEW_SPONSOR] = 0; + user->counters[COUNT_USER_SUCCESS] = (success < 0) ? + 0 : (gint)rint((gfloat)success / 2); + g_string_free(user->sponsor.name, TRUE); user->sponsor = user_get_sponsor(¤t_user); @@ -601,29 +607,38 @@ user_history_compare(gconstpointer a, gconstpointer b) /** Add an element to the user history filled with the given values. */ void -user_history_add(User *user, gint type, gint team_id, - gint value1, gint value2, gchar *string) +user_history_add(User *user, gint type, const gchar *team_name, + const gchar* string0, const gchar *string1, + const gchar *string2) { gint i; UserHistory new_history; UserHistory *his = &new_history; gboolean replace = FALSE; + his->team_name = his->string[0] = + his->string[1] = his->string[2] = NULL; if(type == USER_HISTORY_WIN_FINAL || type == USER_HISTORY_LOSE_FINAL || type == USER_HISTORY_REACH_CUP_ROUND) { for(i=0;ihistory->len;i++) - if((g_array_index(user->history, UserHistory, i).type == USER_HISTORY_WIN_FINAL || - g_array_index(user->history, UserHistory, i).type == USER_HISTORY_LOSE_FINAL || - g_array_index(user->history, UserHistory, i).type == USER_HISTORY_REACH_CUP_ROUND) && + if((g_array_index(user->history, UserHistory, i).type == + USER_HISTORY_WIN_FINAL || + g_array_index(user->history, UserHistory, i).type == + USER_HISTORY_LOSE_FINAL || + g_array_index(user->history, UserHistory, i).type == + USER_HISTORY_REACH_CUP_ROUND) && g_array_index(user->history, UserHistory, i).season == season && - g_array_index(user->history, UserHistory, i).team_id == team_id && - g_array_index(user->history, UserHistory, i).value1 == value1) + strcmp(g_array_index(user->history, UserHistory, i).team_name, + team_name) == 0 && + strcmp(g_array_index(user->history, UserHistory, i).string[1], + string1) == 0) { /** Same cup round. */ - if(g_array_index(user->history, UserHistory, i).value2 == value2 && + if(strcmp(g_array_index(user->history, UserHistory, i).string[2], + string2) == 0 && type == USER_HISTORY_REACH_CUP_ROUND) return; @@ -633,47 +648,7 @@ user_history_add(User *user, gint type, gint team_id, } } - if(type == USER_HISTORY_WIN_FINAL) - { - if(query_cup_is_international(value1)) - user->counters[COUNT_USER_SUCCESS] += - const_int("int_user_success_international_winner"); - else if(query_cup_is_national(value1)) - user->counters[COUNT_USER_SUCCESS] += - const_int("int_user_success_national_winner"); - } - else if(type == USER_HISTORY_LOSE_FINAL) - { - if(query_cup_is_international(value1)) - user->counters[COUNT_USER_SUCCESS] += - const_int("int_user_success_international_final"); - else if(query_cup_is_national(value1)) - user->counters[COUNT_USER_SUCCESS] += - const_int("int_user_success_national_winner"); - const_int("int_user_success_national_final"); - } - else if(type == USER_HISTORY_REACH_CUP_ROUND) - { - if(value2 == cup_from_clid(value1)->rounds->len - 2) - { - if(query_cup_is_international(value1)) - user->counters[COUNT_USER_SUCCESS] += - const_int("int_user_success_international_semis"); - else if(query_cup_is_national(value1)) - user->counters[COUNT_USER_SUCCESS] += - const_int("int_user_success_national_semis"); - } - else if(value2 == cup_from_clid(value1)->rounds->len - 3) - { - if(query_cup_is_international(value1)) - user->counters[COUNT_USER_SUCCESS] += - const_int("int_user_success_international_quarter"); - else if(query_cup_is_national(value1)) - user->counters[COUNT_USER_SUCCESS] += - const_int("int_user_success_national_quarter"); - } - } - else if(type == USER_HISTORY_PROMOTED) + if(type == USER_HISTORY_PROMOTED) user->counters[COUNT_USER_SUCCESS] += const_int("int_user_success_promotion"); else if(type == USER_HISTORY_RELEGATED) @@ -682,20 +657,27 @@ user_history_add(User *user, gint type, gint team_id, his->season = season; his->week = week; - his->type = type; - his->team_id = team_id; - his->value1 = value1; - his->value2 = value2; if(replace) { - misc_string_assign(&his->value_string, string); + if(string0 != NULL) + misc_string_assign(&his->string[0], string0); + if(string2 != NULL) + misc_string_assign(&his->string[2], string2); g_array_sort(user->history, (GCompareFunc)user_history_compare); } else { - his->value_string = g_strdup(string); + his->team_name = g_strdup(team_name); + + if(string0 != NULL) + his->string[0] = g_strdup(string0); + if(string1 != NULL) + his->string[1] = g_strdup(string1); + if(string2 != NULL) + his->string[2] = g_strdup(string2); + g_array_prepend_val(user->history, *his); } } @@ -705,8 +687,6 @@ user_history_add(User *user, gint type, gint team_id, void user_history_to_string(const UserHistory *history, gchar *buf) { - gchar buf2[SMALL]; - switch(history->type) { default: @@ -715,73 +695,120 @@ user_history_to_string(const UserHistory *history, gchar *buf) 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, - league_cup_get_name_string(history->value1)); + history->team_name, + history->string[0]); break; - case USER_HISTORY_FIRE_FINANCES: + case USER_HISTORY_FIRE_FINANCE: /* 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, - team_of_id(history->value1)->name, - league_cup_get_name_string(history->value2)); + history->team_name, + history->string[0], + history->string[1]); 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, - team_of_id(history->value1)->name, - league_cup_get_name_string(history->value2)); + history->team_name, + history->string[0], + history->string[1]); 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, - league_cup_get_name_string(history->value2), - team_of_id(history->team_id)->name); + history->string[0], + history->string[1], + history->team_name); 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); + sprintf(buf, _("You finish the season in the %s on rank %s."), + history->string[0], + history->string[1]); break; case USER_HISTORY_PROMOTED: /* League name. */ sprintf(buf, _("You get promoted to the %s."), - league_cup_get_name_string(history->value1)); + history->string[0]); break; case USER_HISTORY_RELEGATED: /* League name. */ sprintf(buf, _("You get relegated to the %s."), - league_cup_get_name_string(history->value1)); + history->string[0]); 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); + history->string[0], + history->string[1]); 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); + history->string[0], + history->string[1]); 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)); + sprintf(buf, _("You reach the %s (round %s) of the %s."), + history->string[1], + history->string[2], + history->string[0]); break; case USER_HISTORY_CHAMPION: /* League name. */ sprintf(buf, _("You are champion of the %s!"), - league_cup_get_name_string(history->value1)); + history->string[0]); break; } } +/** Increase the user success counter when the user + is successful in a cup. */ +void +user_add_cup_success(User *user, const Cup *cup, gint round, gint type) +{ + if(type == USER_HISTORY_WIN_FINAL) + { + if(query_cup_is_international(cup->id)) + user->counters[COUNT_USER_SUCCESS] += + const_int("int_user_success_international_winner"); + else if(query_cup_is_national(cup->id)) + user->counters[COUNT_USER_SUCCESS] += + const_int("int_user_success_national_winner"); + } + else if(type == USER_HISTORY_LOSE_FINAL) + { + if(query_cup_is_international(cup->id)) + user->counters[COUNT_USER_SUCCESS] += + const_int("int_user_success_international_final"); + else if(query_cup_is_national(cup->id)) + user->counters[COUNT_USER_SUCCESS] += + const_int("int_user_success_national_winner"); + const_int("int_user_success_national_final"); + } + else if(type == USER_HISTORY_REACH_CUP_ROUND) + { + if(round == cup_from_clid(cup->id)->rounds->len - 2) + { + if(query_cup_is_international(cup->id)) + user->counters[COUNT_USER_SUCCESS] += + const_int("int_user_success_international_semis"); + else if(query_cup_is_national(cup->id)) + user->counters[COUNT_USER_SUCCESS] += + const_int("int_user_success_national_semis"); + } + else if(round == cup_from_clid(cup->id)->rounds->len - 3) + { + if(query_cup_is_international(cup->id)) + user->counters[COUNT_USER_SUCCESS] += + const_int("int_user_success_international_quarter"); + else if(query_cup_is_national(cup->id)) + user->counters[COUNT_USER_SUCCESS] += + const_int("int_user_success_national_quarter"); + } + } +} + /** Find out whether there's a user who didn't have his turn before a new week round begins. */ gboolean diff --git a/src/user.h b/src/user.h index 6ce109de..4c7f2682 100644 --- a/src/user.h +++ b/src/user.h @@ -27,6 +27,7 @@ #define USER_H #include "bygfoot.h" +#include "cup_struct.h" #include "user_struct.h" #include "variables.h" @@ -89,8 +90,9 @@ gboolean query_user_teams_have_unfit(void); void -user_history_add(User *user, gint type, gint team_id, - gint value1, gint value2, gchar *string); +user_history_add(User *user, gint type, const gchar *team_name, + const gchar* string0, const gchar *string1, + const gchar *string2); void user_history_to_string(const UserHistory *history, gchar *buf); @@ -98,6 +100,9 @@ user_history_to_string(const UserHistory *history, gchar *buf); gint user_history_compare(gconstpointer a, gconstpointer b); +void +user_add_cup_success(User *user, const Cup *cup, gint round, gint type); + void user_job_offer(User *user); diff --git a/src/user_struct.h b/src/user_struct.h index 1482a834..3a1edd0a 100644 --- a/src/user_struct.h +++ b/src/user_struct.h @@ -86,7 +86,7 @@ enum CounterValue enum UserHistoryType { USER_HISTORY_START_GAME = 0, - USER_HISTORY_FIRE_FINANCES, + USER_HISTORY_FIRE_FINANCE, USER_HISTORY_FIRE_FAILURE, USER_HISTORY_JOB_OFFER_ACCEPTED, USER_HISTORY_END_SEASON, @@ -123,14 +123,13 @@ typedef struct /** When the event happened. */ gint season, week; - /** The type (see #UserHistoryType) and team - of the user. */ - gint type, team_id, - /** These can hold various information like - team or league/cup ids. */ - value1, value2; - gchar *value_string; - + /** The type (see #UserHistoryType) of the history event. */ + gint type; + /** The team of the user at the time. */ + gchar *team_name; + /** These can hold various information like + team or league/cup ids. */ + gchar *string[3]; } UserHistory; /** A user sponsor. */ diff --git a/src/variables.h b/src/variables.h index ecd777ab..d61fde22 100644 --- a/src/variables.h +++ b/src/variables.h @@ -27,10 +27,6 @@ #include "enums.h" #include "live_game_struct.h" #include "option_struct.h" -#include "player_struct.h" -#include "stat_struct.h" -#include "team_struct.h" -#include "user_struct.h" /** * The main variable of the game. @@ -76,6 +72,10 @@ GArray *strategies; /** Array of current and recent bets. */ GArray *bets[2]; +/** Array of jobs in the job exchange and + teams going with the international jobs. */ +GArray *jobs, *job_teams; + /** Some counters we use. */ gint counters[COUNT_END]; diff --git a/src/window.c b/src/window.c index 6df57ad5..71575603 100644 --- a/src/window.c +++ b/src/window.c @@ -649,6 +649,9 @@ window_create(gint window_type) window.main = create_main_window(); wind = window.main; window_main_load_geometry(); + window.paned_pos = + gtk_paned_get_position( + GTK_PANED(lookup_widget(window.main, "hpaned2"))); game_gui_print_message(_("Welcome to Bygfoot %s"), VERS); sprintf(buf, "Bygfoot Football Manager %s", VERS); } @@ -719,10 +722,7 @@ window_create(gint window_type) if(window.job_offer != NULL) g_warning("window_create: called on already existing window\n"); else - { - popups_active++; window.job_offer = create_window_job_offer(); - } wind = window.job_offer; strcpy(buf, _("Job offer")); break; diff --git a/src/xml.h b/src/xml.h index ac4352a1..0e3f5afc 100644 --- a/src/xml.h +++ b/src/xml.h @@ -71,6 +71,7 @@ enum XmlTags #define TAG_START_SEASON_STATS 11000 #define TAG_START_LEAGUES_CUPS 12000 #define TAG_START_TRANSFERS 20000 +#define TAG_START_JOBS 21000 #define xml_write_g_string(fil, gstring, tag, indent) xml_write_string(fil, (gstring)->str, tag, indent) diff --git a/src/xml_country.c b/src/xml_country.c index 8c57d78e..188b23d0 100644 --- a/src/xml_country.c +++ b/src/xml_country.c @@ -37,6 +37,7 @@ */ #define TAG_COUNTRY "country" #define TAG_NAME "name" +#define TAG_RATING "rating" #define TAG_SYMBOL "symbol" #define TAG_SID "sid" #define TAG_SUPERNATIONAL "supernational" @@ -52,6 +53,7 @@ enum XmlCountryStates { STATE_COUNTRY = 0, STATE_NAME, + STATE_RATING, STATE_SYMBOL, STATE_SID, STATE_SUPERNATIONAL, @@ -66,6 +68,7 @@ enum XmlCountryStates * The state variable used in the XML parsing functions. */ gint state; +Country *cntry; /** * The function called by the parser when an opening tag is read. @@ -83,6 +86,8 @@ xml_country_read_start_element (GMarkupParseContext *context, { if(strcmp(element_name, TAG_NAME) == 0) state = STATE_NAME; + else if(strcmp(element_name, TAG_RATING) == 0) + state = STATE_RATING; else if(strcmp(element_name, TAG_SYMBOL) == 0) state = STATE_SYMBOL; else if(strcmp(element_name, TAG_SID) == 0) @@ -92,16 +97,16 @@ xml_country_read_start_element (GMarkupParseContext *context, else if(strcmp(element_name, TAG_LEAGUES) == 0) { state = STATE_LEAGUES; - if(ligs == NULL) - ligs = g_array_new(FALSE, FALSE, sizeof(League)); + if(cntry->leagues == NULL) + cntry->leagues = g_array_new(FALSE, FALSE, sizeof(League)); } else if(strcmp(element_name, TAG_LEAGUE) == 0) state = STATE_LEAGUE; else if(strcmp(element_name, TAG_CUPS) == 0) { state = STATE_CUPS; - if(cps == NULL) - cps = g_array_new(FALSE, FALSE, sizeof(Cup)); + if(cntry->cups == NULL) + cntry->cups = g_array_new(FALSE, FALSE, sizeof(Cup)); } else if(strcmp(element_name, TAG_CUP) == 0) state = STATE_CUP; @@ -122,6 +127,7 @@ xml_country_read_end_element (GMarkupParseContext *context, GError **error) { if(strcmp(element_name, TAG_NAME) == 0 || + strcmp(element_name, TAG_RATING) == 0 || strcmp(element_name, TAG_SYMBOL) == 0 || strcmp(element_name, TAG_SID) == 0 || strcmp(element_name, TAG_SUPERNATIONAL) == 0 || @@ -160,12 +166,14 @@ xml_country_read_text (GMarkupParseContext *context, int_value = (gint)g_ascii_strtod(buf, NULL); if(state == STATE_NAME) - misc_string_assign(&country.name, buf); + misc_string_assign(&cntry->name, buf); + else if(state == STATE_RATING) + cntry->rating = int_value; else if(state == STATE_SYMBOL) - misc_string_assign(&country.symbol, buf); + misc_string_assign(&cntry->symbol, buf); else if(state == STATE_SID) - misc_string_assign(&country.sid, buf); - else if(state == STATE_SUPERNATIONAL) + misc_string_assign(&cntry->sid, buf); + else if(state == STATE_SUPERNATIONAL && cntry == &country) { sett_set_int("int_opt_disable_finances", 1); sett_set_int("int_opt_disable_transfers", 1); @@ -175,22 +183,22 @@ xml_country_read_text (GMarkupParseContext *context, sett_set_int("int_opt_disable_ya", 1); } else if(state == STATE_LEAGUE) - xml_league_read(buf, ligs); + xml_league_read(buf, cntry->leagues); else if(state == STATE_CUP) - xml_cup_read(buf, cps); + xml_cup_read(buf, cntry->cups); } /** - * Function reading an XML file specifying a country. - * The variable #country gets freed and overwritten afterwards. - * @param country_name name of the xml file (e.g. 'country_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 'country_' - * or the suffix '.xml'. + Function reading an XML file specifying a country. + @param country_name name of the xml file (e.g. 'country_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 'country_' + or the suffix '.xml'. + @param cntry The country variable to write. */ void -xml_country_read(const gchar *country_name) +xml_country_read(const gchar *country_name, Country *cntry_arg) { gchar *file_name = file_find_support_file(country_name, FALSE); GMarkupParser parser = {xml_country_read_start_element, @@ -219,18 +227,23 @@ xml_country_read(const gchar *country_name) return; } + cntry = (cntry_arg == NULL) ? &country : cntry_arg; + state = STATE_COUNTRY; strcpy(buf, file_name); g_free(file_name); - free_country(TRUE); + free_country(cntry, TRUE); - 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); - sett_set_int("int_opt_disable_ya", 0); + if(cntry_arg == NULL) + { + 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); + sett_set_int("int_opt_disable_ya", 0); + } if(g_markup_parse_context_parse(context, file_contents, length, &error)) { @@ -244,7 +257,7 @@ xml_country_read(const gchar *country_name) misc_print_error(&error, TRUE); } - for(i=0;ilen;i++) - if(lig(i).layer == -1) - lig(i).layer = i + 1; + for(i=0;ileagues->len;i++) + if(g_array_index(cntry->leagues, League, i).layer == -1) + g_array_index(cntry->leagues, League, i).layer = i + 1; } diff --git a/src/xml_country.h b/src/xml_country.h index a0740219..54d51cbf 100644 --- a/src/xml_country.h +++ b/src/xml_country.h @@ -49,6 +49,6 @@ xml_country_read_text (GMarkupParseContext *context, void -xml_country_read(const gchar *country_name); +xml_country_read(const gchar *country_name, Country *cntry_arg); #endif diff --git a/src/xml_league.c b/src/xml_league.c index 5f41f578..898945a9 100644 --- a/src/xml_league.c +++ b/src/xml_league.c @@ -133,7 +133,7 @@ xml_league_read_start_element (GMarkupParseContext *context, { PromRelElement new_element; Team new_team; - + if(strcmp(element_name, TAG_LEAGUE) == 0) { new_league = league_new(TRUE); diff --git a/src/xml_loadsave_league_stat.c b/src/xml_loadsave_league_stat.c index f55e0d9e..bf7beb6d 100644 --- a/src/xml_loadsave_league_stat.c +++ b/src/xml_loadsave_league_stat.c @@ -33,11 +33,14 @@ enum { TAG_LEAGUE_STAT = TAG_START_LEAGUE_STAT, + TAG_STAT_LEAGUE_NAME, + TAG_STAT_LEAGUE_SYMBOL, TAG_STAT_TEAMS_OFF, TAG_STAT_TEAMS_DEF, TAG_STAT_PLAYER_SCORERS, TAG_STAT_PLAYER_GOALIES, TAG_STAT, + TAG_STAT_TEAM_NAME, TAG_STAT_VALUE, TAG_STAT_VALUE_STRING, TAG_END @@ -66,17 +69,11 @@ xml_loadsave_league_stat_start_element (GMarkupParseContext *context, valid_tag = TRUE; } - for(i=TAG_NAME;i<=TAG_ROUND;i++) - if(tag == i) - { - state = i; - valid_tag = TRUE; - } - if(tag == TAG_STAT) { valueidx = 0; - new_stat.value_string = NULL; + new_stat.value_string = + new_stat.team_name = NULL; } else if(tag == TAG_STAT_TEAMS_OFF || tag == TAG_STAT_TEAMS_DEF || @@ -85,8 +82,9 @@ xml_loadsave_league_stat_start_element (GMarkupParseContext *context, in_state = tag; if(!valid_tag) - g_warning("xml_loadsave_league_stat_start_element: unknown tag: %s; I'm in state %d\n", - element_name, state); + g_warning( + "xml_loadsave_league_stat_start_element: unknown tag: %s; I'm in state %d\n", + element_name, state); } void @@ -98,7 +96,8 @@ xml_loadsave_league_stat_end_element (GMarkupParseContext *context, GArray *stat_array = NULL; gint tag = xml_get_tag_from_name(element_name); - if(tag == TAG_ID || + if(tag == TAG_STAT_LEAGUE_NAME || + tag == TAG_STAT_LEAGUE_SYMBOL || tag == TAG_STAT_TEAMS_OFF || tag == TAG_STAT_TEAMS_DEF || tag == TAG_STAT_PLAYER_SCORERS || @@ -127,15 +126,16 @@ xml_loadsave_league_stat_end_element (GMarkupParseContext *context, else if(tag == TAG_STAT_VALUE_STRING || tag == TAG_STAT_VALUE || tag == TAG_STAT_VALUE_STRING || - tag == TAG_TEAM_ID) + tag == TAG_STAT_TEAM_NAME) { state = TAG_STAT; if(tag == TAG_STAT_VALUE) valueidx++; } else if(tag != TAG_LEAGUE_STAT) - g_warning("xml_loadsave_league_stat_end_element: unknown tag: %s; I'm in state %d\n", - element_name, state); + g_warning( + "xml_loadsave_league_stat_end_element: unknown tag: %s; I'm in state %d\n", + element_name, state); } void @@ -153,10 +153,12 @@ xml_loadsave_league_stat_text (GMarkupParseContext *context, int_value = (gint)g_ascii_strtod(buf, NULL); - if(state == TAG_ID) - lig_stat->clid = int_value; - else if(state == TAG_TEAM_ID) - new_stat.team_id = int_value; + if(state == TAG_STAT_LEAGUE_NAME) + lig_stat->league_name = g_strdup(buf); + else if(state == TAG_STAT_LEAGUE_SYMBOL) + lig_stat->league_symbol = g_strdup(buf); + else if(state == TAG_STAT_TEAM_NAME) + new_stat.team_name = g_strdup(buf); else if(state == TAG_STAT_VALUE) { if(valueidx == 0) @@ -215,7 +217,8 @@ xml_loadsave_league_stat_write(const gchar *filename, const LeagueStat *league_s fprintf(fil, "<_%d>\n", TAG_LEAGUE_STAT); - xml_write_int(fil, league_stat->clid, TAG_ID, I0); + xml_write_string(fil, league_stat->league_name, TAG_STAT_LEAGUE_NAME, I0); + xml_write_string(fil, league_stat->league_symbol, TAG_STAT_LEAGUE_SYMBOL, I0); fprintf(fil, "<_%d>\n", TAG_STAT_TEAMS_OFF); for(i=0;iteams_off->len;i++) @@ -251,7 +254,7 @@ xml_loadsave_league_stat_write_stat(FILE *fil, const Stat *stat) { fprintf(fil, "%s<_%d>\n", I1, TAG_STAT); - xml_write_int(fil, stat->team_id, TAG_TEAM_ID, I1); + xml_write_string(fil, stat->team_name, TAG_STAT_TEAM_NAME, I1); xml_write_int(fil, stat->value1, TAG_STAT_VALUE, I1); xml_write_int(fil, stat->value2, TAG_STAT_VALUE, I1); xml_write_int(fil, stat->value3, TAG_STAT_VALUE, I1); diff --git a/src/xml_loadsave_misc.c b/src/xml_loadsave_misc.c index 320adf97..e3ed5a0f 100644 --- a/src/xml_loadsave_misc.c +++ b/src/xml_loadsave_misc.c @@ -38,6 +38,7 @@ enum XmlLoadSaveCountryTags { TAG_MISC = TAG_START_MISC, + TAG_MISC_RATING, TAG_MISC_SEASON, TAG_MISC_WEEK, TAG_MISC_WEEK_ROUND, @@ -105,6 +106,7 @@ xml_loadsave_misc_end_element (GMarkupParseContext *context, if(tag == TAG_NAME || tag == TAG_SYMBOL || tag == TAG_SID || + tag == TAG_MISC_RATING || tag == TAG_MISC_ALLCUP || tag == TAG_MISC_COUNTER || tag == TAG_MISC_SEASON || @@ -151,6 +153,8 @@ xml_loadsave_misc_text (GMarkupParseContext *context, if(state == TAG_NAME) misc_string_assign(&country.name, buf); + else if(state == TAG_MISC_RATING) + country.rating = int_value; else if(state == TAG_SYMBOL) misc_string_assign(&country.symbol, buf); else if(state == TAG_SID) @@ -231,6 +235,7 @@ xml_loadsave_misc_write(const gchar *prefix) xml_write_string(fil, country.name, TAG_NAME, I0); xml_write_string(fil, country.symbol, TAG_SYMBOL, I0); xml_write_string(fil, country.sid, TAG_SID, I0); + xml_write_int(fil, country.rating, TAG_MISC_RATING, I0); xml_write_int(fil, season, TAG_MISC_SEASON, I0); xml_write_int(fil, week, TAG_MISC_WEEK, I0); xml_write_int(fil, week_round, TAG_MISC_WEEK_ROUND, I0); diff --git a/src/xml_loadsave_season_stats.c b/src/xml_loadsave_season_stats.c index 81acfad1..dd65fd05 100644 --- a/src/xml_loadsave_season_stats.c +++ b/src/xml_loadsave_season_stats.c @@ -149,7 +149,7 @@ xml_loadsave_season_stats_text (GMarkupParseContext *context, new_champ_stat.cl_name = g_strdup(buf); else if(state == TAG_LEAGUE_STAT_FILE) { - new_league_stat = stat_league_new(-1); + new_league_stat = stat_league_new("", ""); sprintf(buf2, "%s%s%s", dirname2, G_DIR_SEPARATOR_S, buf); xml_loadsave_league_stat_read(buf2, &new_league_stat); g_array_append_val(new_season_stat.league_stats, new_league_stat); diff --git a/src/xml_loadsave_users.c b/src/xml_loadsave_users.c index da62cfb3..7176a777 100644 --- a/src/xml_loadsave_users.c +++ b/src/xml_loadsave_users.c @@ -52,10 +52,8 @@ enum TAG_USER_HISTORY_SEASON, TAG_USER_HISTORY_WEEK, TAG_USER_HISTORY_TYPE, - TAG_USER_HISTORY_TEAM_ID, - TAG_USER_HISTORY_VALUE1, - TAG_USER_HISTORY_VALUE2, - TAG_USER_HISTORY_VALUE_STRING, + TAG_USER_HISTORY_TEAM_NAME, + TAG_USER_HISTORY_STRING, TAG_USER_EVENT, TAG_USER_EVENT_TYPE, TAG_USER_EVENT_VALUE1, @@ -114,8 +112,7 @@ xml_loadsave_users_start_element (GMarkupParseContext *context, new_user = user_new(); idx = idx_mon_out = idx_mon_in = 0; } - - if(tag >= TAG_START_PLAYERS && tag <= TAG_END_PLAYERS) + else if(tag >= TAG_START_PLAYERS && tag <= TAG_END_PLAYERS) { state = TAG_START_PLAYERS; valid_tag = TRUE; @@ -125,19 +122,22 @@ xml_loadsave_users_start_element (GMarkupParseContext *context, xml_loadsave_players_start_element(tag, new_user.tm); } - - if(state == TAG_USER_MONEY_OUTS || - state == TAG_USER_MONEY_INS) + else if(tag == TAG_USER_HISTORY) + { idx = 0; - - if(state == TAG_USER_BET0 || - state == TAG_USER_BET1) - idx_bet = (state == TAG_USER_BET1); - - if(tag == TAG_USER_HISTORY) - new_history.value_string = NULL; + new_history.team_name = + new_history.string[0] = + new_history.string[1] = + new_history.string[2] = NULL; + } else if(tag == TAG_USER_EVENT) new_event.value_string = NULL; + else if(tag == TAG_USER_MONEY_OUTS || + tag == TAG_USER_MONEY_INS) + idx = 0; + else if(tag == TAG_USER_BET0 || + tag == TAG_USER_BET1) + idx_bet = (tag == TAG_USER_BET1); if(!valid_tag) g_warning("xml_loadsave_users_start_element: unknown tag: %s; I'm in state %d\n", @@ -207,11 +207,14 @@ xml_loadsave_users_end_element (GMarkupParseContext *context, else if(tag == TAG_USER_HISTORY_SEASON || tag == TAG_USER_HISTORY_WEEK || tag == TAG_USER_HISTORY_TYPE || - tag == TAG_USER_HISTORY_TEAM_ID || - tag == TAG_USER_HISTORY_VALUE1 || - tag == TAG_USER_HISTORY_VALUE2 || - tag == TAG_USER_HISTORY_VALUE_STRING) + tag == TAG_USER_HISTORY_TEAM_NAME || + tag == TAG_USER_HISTORY_STRING) + { state = TAG_USER_HISTORY; + + if(tag == TAG_USER_HISTORY_STRING) + idx++; + } else if(tag == TAG_USER_EVENT_TYPE || tag == TAG_USER_EVENT_VALUE1 || tag == TAG_USER_EVENT_VALUE2 || @@ -286,14 +289,10 @@ xml_loadsave_users_text (GMarkupParseContext *context, new_history.week = int_value; else if(state == TAG_USER_HISTORY_TYPE) new_history.type = int_value; - else if(state == TAG_USER_HISTORY_TEAM_ID) - new_history.team_id = int_value; - else if(state == TAG_USER_HISTORY_VALUE1) - new_history.value1 = int_value; - else if(state == TAG_USER_HISTORY_VALUE2) - new_history.value2 = int_value; - else if(state == TAG_USER_HISTORY_VALUE_STRING) - misc_string_assign(&new_history.value_string, buf); + else if(state == TAG_USER_HISTORY_TEAM_NAME) + new_history.team_name = g_strdup(buf); + else if(state == TAG_USER_HISTORY_STRING) + new_history.string[idx] = (strlen(buf) == 0) ? NULL : g_strdup(buf); else if(state == TAG_USER_EVENT_TYPE) new_event.type = int_value; else if(state == TAG_USER_EVENT_VALUE1) @@ -301,7 +300,7 @@ xml_loadsave_users_text (GMarkupParseContext *context, else if(state == TAG_USER_EVENT_VALUE2) new_event.value2 = int_value; else if(state == TAG_USER_EVENT_VALUE_STRING) - misc_string_assign(&new_event.value_string, buf); + new_event.value_string = g_strdup(buf); else if(state == TAG_USER_YA_COACH) new_user.youth_academy.coach = int_value; else if(state == TAG_USER_YA_PERCENTAGE) @@ -439,7 +438,7 @@ xml_loadsave_users_write(const gchar *prefix) void xml_user_write_history(FILE *fil, const GArray *history) { - gint i; + gint i, j; for(i=0;ilen;i++) { @@ -451,14 +450,14 @@ xml_user_write_history(FILE *fil, const GArray *history) TAG_USER_HISTORY_WEEK, I2); xml_write_int(fil, g_array_index(history, UserHistory, i).type, TAG_USER_HISTORY_TYPE, I2); - xml_write_int(fil, g_array_index(history, UserHistory, i).team_id, - TAG_USER_HISTORY_TEAM_ID, I2); - xml_write_int(fil, g_array_index(history, UserHistory, i).value1, - TAG_USER_HISTORY_VALUE1, I2); - xml_write_int(fil, g_array_index(history, UserHistory, i).value2, - TAG_USER_HISTORY_VALUE2, I2); - xml_write_string(fil, g_array_index(history, UserHistory, i).value_string, - TAG_USER_HISTORY_VALUE_STRING, I2); + xml_write_string(fil, g_array_index(history, UserHistory, i).team_name, + TAG_USER_HISTORY_TEAM_NAME, I2); + for(j=0;j<3;j++) + if(g_array_index(history, UserHistory, i).string[j] != NULL) + xml_write_string(fil, g_array_index(history, UserHistory, i).string[j], + TAG_USER_HISTORY_STRING, I2); + else + xml_write_string(fil, "", TAG_USER_HISTORY_STRING, I2); fprintf(fil, "%s\n", I1, TAG_USER_HISTORY); } diff --git a/support_files/bygfoot_app b/support_files/bygfoot_app index 700ca8ac..877fab02 100644 --- a/support_files/bygfoot_app +++ b/support_files/bygfoot_app @@ -230,3 +230,7 @@ string_treeview_helper_player_status_yellow_danger player_status_yellow.png # betting cell string_treeview_helper_color_user_bet_fg black string_treeview_helper_color_user_bet_bg lightblue + +# colours for foreign countries in the job exchange list +string_treeview_helper_color_job_international_fg black +string_treeview_helper_color_job_international_bg lightblue diff --git a/support_files/bygfoot_constants b/support_files/bygfoot_constants index f350db39..bff5b236 100644 --- a/support_files/bygfoot_constants +++ b/support_files/bygfoot_constants @@ -895,3 +895,29 @@ float_bet_wager_limit_factor 50000 # how much the user may wager at most int_bet_wager_max 25000 + +# lower and upper bounds for the number +# of new job offers when the job exchange gets updated +int_job_new_offers_lower 3 +int_job_new_offers_upper 6 + +# how often (in weeks) an update occurs +int_job_update_interval 5 + +# percentage of international offers +float_job_international_perc 50000 + +# number of success points per average skill +# difference unit (needed when finding out whether +# a user's application for a job is successful) +int_job_application_points_per_av_skill 40 + +# how many points a league layer difference is worth +int_job_application_points_per_layer 30 + +# how many points more are needed for an international +# application +int_job_application_points_international 150 + +# how many points a country rating difference is worth +int_job_application_points_per_rating 80