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.321 by root, Thu Jul 26 21:44:43 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 my $soundconf = delete $res->{"res/sound.conf"};
2871
2870 while (my ($name, $info) = each %$res) { 2872 while (my ($name, $info) = each %$res) {
2871 my $meta = $enc->encode ({ 2873 my $meta = $enc->encode ({
2872 name => $name, 2874 name => $name,
2873 type => $info->{type}, 2875 %{ $info->{meta} || {} },
2874 copyright => $info->{copyright}, #TODO#
2875 }); 2876 });
2876 2877
2877 my $idx = (cf::face::find $name) || cf::face::alloc $name; 2878 my $idx = (cf::face::find $name) || cf::face::alloc $name;
2878 2879
2879 if ($name =~ /\.jpg$/) { 2880 if ($info->{type} & 1) {
2880 cf::face::set_data $idx, 0, $info->{data}, $info->{chksum};#d# temp hack 2881 # prepend meta info
2881 cf::face::set_data $idx, 1, $info->{data}, $info->{chksum};#d# temp hack 2882
2882 } else {
2883 my $data = pack "(w/a*)*", $meta, $info->{data}; 2883 my $data = pack "(w/a*)*", $meta, $info->{data};
2884 my $chk = Digest::MD5::md5 "$info->{chksum},$meta"; # mangle data checksum and metadata 2884 my $chk = Digest::MD5::md5 "$info->{chksum},$meta"; # mangle data checksum and metadata
2885 2885
2886 cf::face::set_type $idx, 1;
2887 cf::face::set_data $idx, 0, $data, $chk; 2886 cf::face::set_data $idx, 0, $data, $chk;
2887 } else {
2888 cf::face::set_data $idx, 0, $info->{data}, $info->{chksum};
2888 } 2889 }
2889 2890
2891 cf::face::set_type $idx, $info->{type};
2892
2890 cf::cede_to_tick; 2893 cf::cede_to_tick;
2891 } 2894 }
2895
2896 if ($soundconf) {
2897 $soundconf = $enc->decode (delete $soundconf->{data});
2898
2899 for (0 .. SOUND_CAST_SPELL_0 - 1) {
2900 my $sound = $soundconf->{compat}[$_]
2901 or next;
2902
2903 my $face = cf::face::find "sound/$sound->[1]";
2904 warn "$sound->[0]: $face\n";#d#
2905
2906 cf::sound::set $sound->[0] => $face;
2907 cf::sound::old_sound_index $_, $face; # gcfclient-compat
2908 }
2909
2910 #TODO
2911 }
2892 } 2912 }
2893 2913
2894 1 2914 1
2895} 2915}
2916
2917register_exticmd fx_want => sub {
2918 my ($ns, $want) = @_;
2919
2920 while (my ($k, $v) = each %$want) {
2921 $ns->fx_want ($k, $v);
2922 }
2923};
2896 2924
2897sub reload_regions { 2925sub reload_regions {
2898 load_resource_file "$MAPDIR/regions" 2926 load_resource_file "$MAPDIR/regions"
2899 or die "unable to load regions file\n"; 2927 or die "unable to load regions file\n";
2900 2928

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines