ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra/Deliantra/Protocol.pm
(Generate patch)

Comparing deliantra/Deliantra/Deliantra/Protocol.pm (file contents):
Revision 1.16 by root, Wed Apr 12 16:13:07 2006 UTC vs.
Revision 1.17 by root, Wed Apr 12 21:43:11 2006 UTC

28=cut 28=cut
29 29
30sub new { 30sub new {
31 my $class = shift; 31 my $class = shift;
32 my $self = bless { 32 my $self = bless {
33 mapw => 13, 33 mapw => 13,
34 maph => 13, 34 maph => 13,
35 max_outstanding => 2,
35 @_ 36 @_
36 }, $class; 37 }, $class;
37 38
38 $self->{fh} = new IO::Socket::INET PeerHost => $self->{host}, PeerPort => $self->{port} 39 $self->{fh} = new IO::Socket::INET PeerHost => $self->{host}, PeerPort => $self->{port}
39 or die "$self->{host}:$self->{port}: $!"; 40 or die "$self->{host}:$self->{port}: $!";
135 136
136 if (my $data = $self->face_find ($face)) { 137 if (my $data = $self->face_find ($face)) {
137 $face->{image} = $data; 138 $face->{image} = $data;
138 $self->face_update ($face); 139 $self->face_update ($face);
139 } else { 140 } else {
140 $self->send ("askface $num"); 141 $self->send_queue ("askface $num");
141 } 142 }
142} 143}
143 144
144=item $conn->anim_update ($num) [OVERWRITE] 145=item $conn->anim_update ($num) [OVERWRITE]
145 146
450} 451}
451 452
452sub feed_image { 453sub feed_image {
453 my ($self, $data) = @_; 454 my ($self, $data) = @_;
454 455
456 $self->send_queue;
457
455 my ($num, $len, $data) = unpack "NNa*", $data; 458 my ($num, $len, $data) = unpack "NNa*", $data;
456 459
457 $self->{face}[$num]{image} = $data; 460 $self->{face}[$num]{image} = $data;
458 $self->face_update ($self->{face}[$num]); 461 $self->face_update ($self->{face}[$num]);
459 462
524 $data = pack "na*", length $data, $data; 527 $data = pack "na*", length $data, $data;
525 528
526 syswrite $self->{fh}, $data; 529 syswrite $self->{fh}, $data;
527} 530}
528 531
532sub send_queue {
533 my ($self, $cmd) = @_;
534
535 warn "send_queue<$cmd>$self->{outstanding} <@{ $self->{send_queue} || [] }\n";#d#
536 if (defined $cmd) {
537 push @{ $self->{send_queue} }, $cmd;
538 } else {
539 --$self->{outstanding};
540 }
541
542 if ($self->{outstanding} < $self->{max_outstanding}) {
543 ++$self->{outstanding};
544 $self->send (shift @{ $self->{send_queue} });
545 }
546}
547
529sub send_setup { 548sub send_setup {
530 my ($self) = @_; 549 my ($self) = @_;
531 550
532 my $setup = join " ", setup => %{$self->{setup_req}}, 551 my $setup = join " ", setup => %{$self->{setup_req}},
533 mapsize => "$self->{mapw}x$self->{maph}"; 552 mapsize => "$self->{mapw}x$self->{maph}";

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines