--- deliantra/Deliantra-Client/DC/Protocol.pm 2007/08/06 05:06:33 1.146 +++ deliantra/Deliantra-Client/DC/Protocol.pm 2007/08/09 03:40:01 1.147 @@ -59,11 +59,7 @@ my (%cap) = @_; #$self->send ("setup sound 0"); # we use a different protocol - - $self->send_exti_msg (fx_want => { - 3 => !!$::CFG->{bgm_enable}, # FT_MUSIC - 5 => !!$::CFG->{audio_enable}, # FT_SOUND - }); + $self->update_fx_want; if (my $ts = $cap{tileset}) { if (my ($default) = grep $_->[2] & 1, @$ts) { @@ -225,6 +221,15 @@ $self } +sub update_fx_want { + my ($self) = @_; + + $self->send_exti_msg (fx_want => { + 3 => !!$::CFG->{bgm_enable}, # FT_MUSIC + 5 => !!$::CFG->{audio_enable}, # FT_SOUND + }); +} + sub logprint { my ($self, @a) = @_; @@ -733,43 +738,34 @@ $self->have_tile ($face->{id}); } elsif ($face->{type} & 1) { # split metadata - my $cb = sub { }; + if ($changed) { # new data + my ($meta_json, $data) = unpack "(w/a*)*", delete $face->{data}; + $face->{meta} = $self->{json_coder}->decode ($meta_json); + + CFPlus::DB::put res_data => $face->{name} => $data, sub { }; + CFPlus::DB::put res_meta => $face->{name} => $meta_json, sub { }; + } else { + $face->{meta} = $self->{json_coder}->decode (delete $face->{data}); + } + + ::add_license ($face); if ($face->{type} == 3) { # FT_MUSIC - $cb = sub { - $self->{music_meta}{$facenum} = $face; + $self->{music_meta}{$facenum} = $face; - ::message ({ markup => "downloaded song #$facenum" }) - if $changed; + ::message ({ markup => "downloaded song #$facenum" }) + if $changed; - &::audio_music_push ($facenum); - }; + &::audio_music_push ($facenum); } elsif ($face->{type} == 5) { # FT_SOUND - $cb = sub { - $self->{sound_meta}{$facenum} = $face; + $self->{sound_meta}{$facenum} = $face; - ::message ({ markup => "downloaded sound #$facenum" }) - if $changed; + ::message ({ markup => "downloaded sound #$facenum" }) + if $changed; - &::audio_sound_push ($facenum); - }; + &::audio_sound_push ($facenum); } - if ($changed) { # new data - my ($meta_json, $data) = unpack "(w/a*)*", delete $face->{data}; - - CFPlus::DB::put res_data => $face->{name} => $data, sub { }; - CFPlus::DB::put res_meta => $face->{name} => $meta_json, sub { - $face->{meta} = $self->{json_coder}->decode ($meta_json); - ::add_license ($face); - $cb->(); - }; - - } else { - $face->{meta} = $self->{json_coder}->decode (delete $face->{data}); - ::add_license ($face); - $cb->(); - } } }