ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/bin/cfplus
(Generate patch)

Comparing deliantra/Deliantra-Client/bin/cfplus (file contents):
Revision 1.93 by root, Sat Jul 15 01:19:55 2006 UTC vs.
Revision 1.95 by root, Sun Jul 16 23:30:08 2006 UTC

86our $CONSOLE; 86our $CONSOLE;
87our $METASERVER; 87our $METASERVER;
88our $LOGIN_BUTTON; 88our $LOGIN_BUTTON;
89our $QUIT_DIALOG; 89our $QUIT_DIALOG;
90our $HOST_ENTRY; 90our $HOST_ENTRY;
91our $FULLSCREEN_ENABLE;
91our $PICKUP_ENABLE; 92our $PICKUP_ENABLE;
92our $SERVER_INFO; 93our $SERVER_INFO;
93 94
94our $SETUP_DIALOG; 95our $SETUP_DIALOG;
95our $SETUP_NOTEBOOK; 96our $SETUP_NOTEBOOK;
99our $PL_NOTEBOOK; 100our $PL_NOTEBOOK;
100our $PL_WINDOW; 101our $PL_WINDOW;
101 102
102our $INVENTORY_PAGE; 103our $INVENTORY_PAGE;
103our $STATS_PAGE; 104our $STATS_PAGE;
105our $SKILL_PAGE;
104our $SPELL_PAGE; 106our $SPELL_PAGE;
105 107
106our $HELP_WINDOW; 108our $HELP_WINDOW;
107our $MESSAGE_WINDOW; 109our $MESSAGE_WINDOW;
108our $FLOORBOX; 110our $FLOORBOX;
416 $mode_slider->emit (changed => $mode_slider->{range}[0]); 418 $mode_slider->emit (changed => $mode_slider->{range}[0]);
417 419
418 my $row = 1; 420 my $row = 1;
419 421
420 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Fullscreen"); 422 $table->add (0, $row, new CFClient::UI::Label valign => 0, align => 1, text => "Fullscreen");
421 $table->add (1, $row++, new CFClient::UI::CheckBox 423 $table->add (1, $row++, $FULLSCREEN_ENABLE = new CFClient::UI::CheckBox
422 state => $CFG->{fullscreen}, 424 state => $CFG->{fullscreen},
423 tooltip => "Bring the client into fullscreen mode.", 425 tooltip => "Bring the client into fullscreen mode.",
424 on_changed => sub { my ($self, $value) = @_; $CFG->{fullscreen} = $value; 0 } 426 on_changed => sub { my ($self, $value) = @_; $CFG->{fullscreen} = $value; 0 }
425 ); 427 );
426 428
769 $col += 3; 771 $col += 3;
770 $row = 0; 772 $row = 0;
771 } 773 }
772 } 774 }
773 775
774 update_stats_window ({}); 776 #update_stats_window ({});
775 777
776 $vb 778 $vb
777} 779}
778 780
779sub skill_window { 781sub skill_window {
780 my ($self) = @_;
781 $STATWIDS->{"_skill_tbl"} = new CFClient::UI::Table expand => 1; 782 $STATWIDS->{skill_tbl} = new CFClient::UI::Table expand => 1, col_expand => [0, 0, 1, 0, 0, 1]
782} 783}
783 784
784sub formsep($) { 785sub formsep($) {
785 scalar reverse join ",", unpack "(A3)*", reverse $_[0] * 1 786 scalar reverse join ",", unpack "(A3)*", reverse $_[0] * 1
786}
787
788sub update_stats_window {
789 my ($stats) = @_;
790
791 # I love text protocols...
792
793 my $hp = $stats->{+CS_STAT_HP} * 1;
794 my $hp_m = $stats->{+CS_STAT_MAXHP} * 1;
795 my $sp = $stats->{+CS_STAT_SP} * 1;
796 my $sp_m = $stats->{+CS_STAT_MAXSP} * 1;
797 my $fo = $stats->{+CS_STAT_FOOD} * 1;
798 my $fo_m = 999;
799 my $gr = $stats->{+CS_STAT_GRACE} * 1;
800 my $gr_m = $stats->{+CS_STAT_MAXGRACE} * 1;
801
802 $GAUGES->{hp} ->set_value ($hp, $hp_m);
803 $GAUGES->{mana} ->set_value ($sp, $sp_m);
804 $GAUGES->{food} ->set_value ($fo, $fo_m);
805 $GAUGES->{grace} ->set_value ($gr, $gr_m);
806 $GAUGES->{exp} ->set_text ("Exp: " . (formsep $stats->{+CS_STAT_EXP64})
807 . " (lvl " . ($stats->{+CS_STAT_LEVEL} * 1) . ")");
808 my $rng = $stats->{+CS_STAT_RANGE};
809 $rng =~ s/^Range: //; # thank you so much dear server
810 $GAUGES->{range} ->set_text ("Rng: " . $rng);
811 my $title = $stats->{+CS_STAT_TITLE};
812 $title =~ s/^Player: //;
813 $STATWIDS->{title} ->set_text ("Title: " . $title);
814
815 $STATWIDS->{st_str} ->set_text (sprintf "%d" , $stats->{+CS_STAT_STR});
816 $STATWIDS->{st_dex} ->set_text (sprintf "%d" , $stats->{+CS_STAT_DEX});
817 $STATWIDS->{st_con} ->set_text (sprintf "%d" , $stats->{+CS_STAT_CON});
818 $STATWIDS->{st_int} ->set_text (sprintf "%d" , $stats->{+CS_STAT_INT});
819 $STATWIDS->{st_wis} ->set_text (sprintf "%d" , $stats->{+CS_STAT_WIS});
820 $STATWIDS->{st_pow} ->set_text (sprintf "%d" , $stats->{+CS_STAT_POW});
821 $STATWIDS->{st_cha} ->set_text (sprintf "%d" , $stats->{+CS_STAT_CHA});
822 $STATWIDS->{st_wc} ->set_text (sprintf "%d" , $stats->{+CS_STAT_WC});
823 $STATWIDS->{st_ac} ->set_text (sprintf "%d" , $stats->{+CS_STAT_AC});
824 $STATWIDS->{st_dam} ->set_text (sprintf "%d" , $stats->{+CS_STAT_DAM});
825 $STATWIDS->{st_arm} ->set_text (sprintf "%d" , $stats->{+CS_STAT_RES_PHYS});
826 $STATWIDS->{st_spd} ->set_text (sprintf "%.1f", $stats->{+CS_STAT_SPEED});
827 $STATWIDS->{st_wspd}->set_text (sprintf "%.1f", $stats->{+CS_STAT_WEAP_SP});
828
829 $STATWIDS->{m_weight}->set_text (sprintf "Max weight: %.1fkg", $stats->{+CS_STAT_WEIGHT_LIM} / 1000);
830
831 my %tbl = (
832 phys => CS_STAT_RES_PHYS,
833 magic => CS_STAT_RES_MAG,
834 fire => CS_STAT_RES_FIRE,
835 elec => CS_STAT_RES_ELEC,
836 cold => CS_STAT_RES_COLD,
837 conf => CS_STAT_RES_CONF,
838 acid => CS_STAT_RES_ACID,
839 drain => CS_STAT_RES_DRAIN,
840 ghit => CS_STAT_RES_GHOSTHIT,
841 pois => CS_STAT_RES_POISON,
842 slow => CS_STAT_RES_SLOW,
843 para => CS_STAT_RES_PARA,
844 tund => CS_STAT_TURN_UNDEAD,
845 fear => CS_STAT_RES_FEAR,
846 depl => CS_STAT_RES_DEPLETE,
847 deat => CS_STAT_RES_DEATH,
848 holyw => CS_STAT_RES_HOLYWORD,
849 blind => CS_STAT_RES_BLIND,
850 );
851
852 if ($::CONN && !$STATWIDS->{_skill_tbl_init}) {
853 my $sktbl = $STATWIDS->{_skill_tbl};
854 $sktbl->clear;
855
856 $sktbl->add (0, 0, new CFClient::UI::Label text => "Exp.", align => 1);
857 $sktbl->add (1, 0, new CFClient::UI::Label text => "Level", align => 1);
858 $sktbl->add (2, 0, new CFClient::UI::Label text => "Skillname");
859
860 my @skills;
861
862 for (my $i = CS_STAT_SKILLINFO; $i < CS_STAT_SKILLINFO+CS_NUM_SKILLS; $i++) {
863 push @skills, [$i, $::CONN->{skill_info}{$i}];
864 }
865
866 my $y = 1;
867 for (sort { $a->[1] cmp $b->[1] } @skills) {
868 my ($idx, $name) = @$_;
869
870 unless (defined $STATWIDS->{"sk_xp_$idx"} || !$::CONN->{skill_info}{$idx}) {
871 $sktbl->add (0, $y, $STATWIDS->{"sk_xp_$idx"} = new CFClient::UI::Label text => "0", align => 1);
872 $sktbl->add (1, $y, $STATWIDS->{"sk_lvl_$idx"} = new CFClient::UI::Label text => "0", align => 1);
873 $sktbl->add (2, $y++, new CFClient::UI::Label text => $name);
874 }
875 }
876
877 $STATWIDS->{_skill_tbl_init} = 1;
878 }
879
880 for (my $i = CS_STAT_SKILLINFO; $i < CS_STAT_SKILLINFO+CS_NUM_SKILLS; $i++) {
881 if (exists $stats->{$i}) {
882 $STATWIDS->{"sk_xp_$i"}->set_text (formsep $stats->{$i}->[1])
883 if $STATWIDS->{"sk_xp_$i"};
884 $STATWIDS->{"sk_lvl_$i"}->set_text (sprintf "%d", $stats->{$i}->[0])
885 if $STATWIDS->{"sk_lvl_$i"};
886 }
887 }
888
889 $STATWIDS->{"res_$_"}->set_text (sprintf "%d%", $stats->{$tbl{$_}})
890 for keys %tbl;
891} 787}
892 788
893my $METASERVER_ATIME; 789my $METASERVER_ATIME;
894 790
895sub update_metaserver { 791sub update_metaserver {
1378 debug => 1, 1274 debug => 1,
1379 filter => (new CFClient::UI::ScrolledWindow expand => 1, scroll_y => 1), 1275 filter => (new CFClient::UI::ScrolledWindow expand => 1, scroll_y => 1),
1380 ; 1276 ;
1381 1277
1382 $ntb->add ( 1278 $ntb->add (
1383 "Stats" => $STATS_PAGE = stats_window, 1279 "Statistics (F2)" => $STATS_PAGE = stats_window,
1384 "Shows statistics, where all your Stats and Resistances are shown." 1280 "Shows statistics, where all your Stats and Resistances are shown."
1385 ); 1281 );
1386 $ntb->add ( 1282 $ntb->add (
1387 "Skills" => $STATS_PAGE = skill_window, 1283 "Skills (F3)" => $SKILL_PAGE = skill_window,
1388 "Shows all your Skills." 1284 "Shows all your Skills."
1389 ); 1285 );
1390 $ntb->add ( 1286 $ntb->add (
1391 Spellbook => $SPELL_PAGE = new CFClient::UI::SpellList, 1287 "Spellbook (F4)" => $SPELL_PAGE = new CFClient::UI::SpellList,
1392 "Displays all spells you have and lets you edit keyboard shortcuts for them." 1288 "Displays all spells you have and lets you edit keyboard shortcuts for them."
1393 ); 1289 );
1394 $ntb->add ( 1290 $ntb->add (
1395 Inventory => $INVENTORY_PAGE = inventory_widget, 1291 "Inventory (F5)" => $INVENTORY_PAGE = inventory_widget,
1396 "Toggles the inventory window, where you can manage your loot (or treasures :). " 1292 "Toggles the inventory window, where you can manage your loot (or treasures :). "
1397 . "You can also hit the <b>Tab</b>-key to show/hide the Inventory." 1293 . "You can also hit the <b>Tab</b>-key to show/hide the Inventory."
1398 ); 1294 );
1399 1295
1400 $ntb->set_current_page ($INVENTORY_PAGE); 1296 $ntb->set_current_page ($INVENTORY_PAGE);
1939# printf "active %x %x\n", $SDL_EV->active_gain, $SDL_EV->active_state;#d# 1835# printf "active %x %x\n", $SDL_EV->active_gain, $SDL_EV->active_state;#d#
1940 }, 1836 },
1941 CFClient::SDL_KEYDOWN => sub { 1837 CFClient::SDL_KEYDOWN => sub {
1942 if ($_[0]{mod} & CFClient::KMOD_ALT && $_[0]{sym} == 13) { 1838 if ($_[0]{mod} & CFClient::KMOD_ALT && $_[0]{sym} == 13) {
1943 # alt-enter 1839 # alt-enter
1840 $FULLSCREEN_ENABLE->toggle;
1944 video_shutdown; 1841 video_shutdown;
1945 $CFG->{fullscreen} = !$CFG->{fullscreen};
1946 video_init; 1842 video_init;
1947 } else { 1843 } else {
1948 CFClient::UI::feed_sdl_key_down_event ($_[0]); 1844 CFClient::UI::feed_sdl_key_down_event ($_[0]);
1949 } 1845 }
1950 }, 1846 },
1966$SIG{INT} = $SIG{TERM} = sub { exit }; 1862$SIG{INT} = $SIG{TERM} = sub { exit };
1967 1863
1968{ 1864{
1969 local $SIG{__DIE__} = sub { 1865 local $SIG{__DIE__} = sub {
1970 return unless defined $^S && !$^S; 1866 return unless defined $^S && !$^S;
1971 Carp::confess $_[1];#d#TODO: remove when stable 1867 Carp::confess $_[0];#d#TODO: remove when stable
1972 CFClient::fatal $_[0]; 1868 CFClient::fatal $_[0];
1973 }; 1869 };
1974 1870
1975 CFClient::read_cfg "$Crossfire::VARDIR/cfplusrc"; 1871 CFClient::read_cfg "$Crossfire::VARDIR/cfplusrc";
1976 CFClient::UI::set_layout ($::CFG->{layout}); 1872 CFClient::UI::set_layout ($::CFG->{layout});

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines