--- deliantra/Deliantra-Client/DC.pm 2006/07/23 16:11:12 1.105 +++ deliantra/Deliantra-Client/DC.pm 2006/07/24 08:23:27 1.107 @@ -28,6 +28,7 @@ use BerkeleyDB; use Pod::POM (); use Scalar::Util (); +use YAML (); use Storable (); # finally our %STAT_TOOLTIP = ( @@ -106,36 +107,38 @@ die "FATAL: can't find required file $_[0]\n"; } +sub parse_yaml { + my $text = shift; + + utf8::decode $text; + + YAML::Load $text +} + sub read_cfg { my ($file) = @_; - open CFG, $file + open my $fh, $file or return; - my $CFG; - local $/; - $CFG = eval ; - - $::CFG = $CFG; + my $CFG = <$fh>; - close CFG; + if ($CFG =~ /^---/) { + $::CFG = parse_yaml $CFG; + } else { + $::CFG = eval $CFG; + } } sub write_cfg { my ($file) = @_; - open CFG, ">$file" - or return; - - { - require Data::Dumper; - local $Data::Dumper::Purity = 1; - $::CFG->{VERSION} = $::VERSION; - print CFG Data::Dumper->Dump ([$::CFG], [qw/CFG/]); - } + $::CFG->{VERSION} = $::VERSION; - close CFG; + open my $fh, ">:utf8", $file + or return; + print $fh YAML::Dump $::CFG; } our $DB_ENV; @@ -321,6 +324,10 @@ . "Right click - further options" . "\n"; + my $bg = $self->{flags} & F_CURSED ? [1 , 0 , 0, 0.5] + : $self->{flags} & F_MAGIC ? [0.2, 0.2, 1, 0.5] + : undef; + $self->{face_widget} ||= new CFClient::UI::Face can_events => 1, can_hover => 1, @@ -328,6 +335,7 @@ animspeed => $self->{animspeed}, # TODO# must be set at creation time on_button_down => $button_cb, ; + $self->{face_widget}{bg} = $bg; $self->{face_widget}{face} = $self->{face}; $self->{face_widget}{anim} = $self->{anim}; $self->{face_widget}{animspeed} = $self->{animspeed}; @@ -346,6 +354,7 @@ on_button_down => $button_cb, ; my $desc = CFClient::Item::desc_string $self; + $self->{desc_widget}{bg} = $bg; $self->{desc_widget}->set_text ($desc); $self->{desc_widget}->set_tooltip ("$desc.\n$tooltip_std"); @@ -356,8 +365,8 @@ align => 0, on_button_down => $button_cb, ; + $self->{weight_widget}{bg} = $bg; $self->{weight_widget}->set_text (CFClient::Item::weight_string $self); - $self->{weight_widget}->set_tooltip ( "Weight.\n" . ($self->{weight} >= 0 ? "One item weighs $self->{weight}g. " : "You have no idea how much this weighs. ")