ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/server/lib/cf.pm
(Generate patch)

Comparing deliantra/server/lib/cf.pm (file contents):
Revision 1.316 by root, Mon Jul 23 21:02:50 2007 UTC vs.
Revision 1.320 by root, Tue Jul 24 22:49:40 2007 UTC

2518 2518
2519 if (ref $channel) { 2519 if (ref $channel) {
2520 # send meta info to client, if not yet sent 2520 # send meta info to client, if not yet sent
2521 unless (exists $self->{channel}{$channel->{id}}) { 2521 unless (exists $self->{channel}{$channel->{id}}) {
2522 $self->{channel}{$channel->{id}} = $channel; 2522 $self->{channel}{$channel->{id}} = $channel;
2523 $self->ext_msg (channel_info => %$channel); 2523 $self->ext_msg (channel_info => $channel);
2524 } 2524 }
2525 2525
2526 $channel = $channel->{id}; 2526 $channel = $channel->{id};
2527 } 2527 }
2528 2528
2865 # TODO: for gcfclient pleasure, we should give resources 2865 # TODO: for gcfclient pleasure, we should give resources
2866 # that gcfclient doesn't grok a >10000 face index. 2866 # that gcfclient doesn't grok a >10000 face index.
2867 my $res = $facedata->{resource}; 2867 my $res = $facedata->{resource};
2868 my $enc = JSON::XS->new->utf8->canonical; 2868 my $enc = JSON::XS->new->utf8->canonical;
2869 2869
2870 if (my $soundconf = delete $res->{"res/sound.conf"}) {
2871 $soundconf = $enc->decode (delete $soundconf->{data});
2872 # todo
2873 }
2874
2870 while (my ($name, $info) = each %$res) { 2875 while (my ($name, $info) = each %$res) {
2871 my $meta = $enc->encode ({ 2876 my $meta = $enc->encode ({
2872 name => $name, 2877 name => $name,
2873 type => $info->{type}, 2878 %{ $info->{meta} || {} },
2874 copyright => $info->{copyright}, #TODO#
2875 }); 2879 });
2876 2880
2877 my $idx = (cf::face::find $name) || cf::face::alloc $name; 2881 my $idx = (cf::face::find $name) || cf::face::alloc $name;
2878 2882
2879 if ($name =~ /\.jpg$/) { 2883 if ($info->{type} & 1) {
2880 cf::face::set_data $idx, 0, $info->{data}, $info->{chksum};#d# temp hack 2884 # prepend meta info
2881 cf::face::set_data $idx, 1, $info->{data}, $info->{chksum};#d# temp hack 2885
2882 } else {
2883 my $data = pack "(w/a*)*", $meta, $info->{data}; 2886 my $data = pack "(w/a*)*", $meta, $info->{data};
2884 my $chk = Digest::MD5::md5 "$info->{chksum},$meta"; # mangle data checksum and metadata 2887 my $chk = Digest::MD5::md5 "$info->{chksum},$meta"; # mangle data checksum and metadata
2885 2888
2886 cf::face::set_type $idx, 1;
2887 cf::face::set_data $idx, 0, $data, $chk; 2889 cf::face::set_data $idx, 0, $data, $chk;
2890 } else {
2891 cf::face::set_data $idx, 0, $info->{data}, $info->{chksum};
2888 } 2892 }
2889 2893
2894 cf::face::set_type $idx, $info->{type};
2895
2890 cf::cede_to_tick; 2896 cf::cede_to_tick;
2891 } 2897 }
2892 } 2898 }
2893 2899
2894 1 2900 1
2895} 2901}
2902
2903register_exticmd fx_want => sub {
2904 my ($ns, $want) = @_;
2905
2906 while (my ($k, $v) = each %$want) {
2907 $ns->fx_want ($k, $v);
2908 }
2909};
2896 2910
2897sub reload_regions { 2911sub reload_regions {
2898 load_resource_file "$MAPDIR/regions" 2912 load_resource_file "$MAPDIR/regions"
2899 or die "unable to load regions file\n"; 2913 or die "unable to load regions file\n";
2900 2914

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines