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.23 by root, Sun Apr 16 17:03:16 2006 UTC vs.
Revision 1.24 by root, Mon Apr 17 06:50:45 2006 UTC

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 max_outstanding => 2,
36 token => "a0",
36 @_ 37 @_
37 }, $class; 38 }, $class;
38 39
39 $self->{fh} = new IO::Socket::INET PeerHost => $self->{host}, PeerPort => $self->{port} 40 $self->{fh} = new IO::Socket::INET PeerHost => $self->{host}, PeerPort => $self->{port}
40 or die "$self->{host}:$self->{port}: $!"; 41 or die "$self->{host}:$self->{port}: $!";
432 433
433 my ($dx, $dy) = split / /, $data; 434 my ($dx, $dy) = split / /, $data;
434 435
435 $self->{delayed_scroll_x} += $dx; 436 $self->{delayed_scroll_x} += $dx;
436 $self->{delayed_scroll_y} += $dy; 437 $self->{delayed_scroll_y} += $dy;
438
439 $self->map_scroll ($dx, $dy);
437} 440}
438 441
439sub feed_newmap { 442sub feed_newmap {
440 my ($self) = @_; 443 my ($self) = @_;
441 444
449 $self->map_clear; 452 $self->map_clear;
450} 453}
451 454
452sub feed_mapinfo { 455sub feed_mapinfo {
453 my ($self, $data) = @_; 456 my ($self, $data) = @_;
457
458 my ($token, @data) = split / /, $data;
454 459
455 $self->map_info (split / /, $data, 7); 460 (delete $self->{mapinfo_cb}{$token})->(@data)
461 if $self->{mapinfo_cb}{$token};
462
463 $self->map_change (@data) if $token eq "-";
464}
465
466sub send_mapinfo {
467 my ($self, $data, $cb) = @_;
468
469 my $token = ++$self->{token};
470
471 $self->{mapinfo_cb}{$token} = $cb;
472 $self->send ("mapinfo $token $data");
456} 473}
457 474
458sub feed_image { 475sub feed_image {
459 my ($self, $data) = @_; 476 my ($self, $data) = @_;
460
461 477
462 my ($num, $len, $data) = unpack "NNa*", $data; 478 my ($num, $len, $data) = unpack "NNa*", $data;
463 479
464 $self->send_queue; 480 $self->send_queue;
465 $self->{face}[$num]{image} = $data; 481 $self->{face}[$num]{image} = $data;
475 } 491 }
476 492
477 $self->map_update (\@dirty); 493 $self->map_update (\@dirty);
478} 494}
479 495
480=item $conn->map_info ($mode, ...) [OVERWRITE] 496=item $conn->map_change ($mode, ...) [OVERWRITE]
481 497
482 current <flags> <x> <y> <width> <height> <hashstring> 498 current <flags> <x> <y> <width> <height> <hashstring>
483 499
484=cut 500=cut
485 501

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines