… | |
… | |
528 | |
528 | |
529 | sub feed_delitem { |
529 | sub feed_delitem { |
530 | my ($self, $data) = @_; |
530 | my ($self, $data) = @_; |
531 | |
531 | |
532 | my @items = map $self->{item}{$_}, unpack "N*", $data; |
532 | my @items = map $self->{item}{$_}, unpack "N*", $data; |
|
|
533 | |
533 | $self->_del_items (@items); |
534 | $self->_del_items (@items); |
534 | $self->item_delete (@items); |
535 | $self->item_delete (@items); |
535 | } |
536 | } |
536 | |
537 | |
537 | sub feed_item2 { |
538 | sub feed_item2 { |
… | |
… | |
560 | animspeed => $animspeed * TICK, #??? |
561 | animspeed => $animspeed * TICK, #??? |
561 | nrof => $nrof, |
562 | nrof => $nrof, |
562 | type => $type, |
563 | type => $type, |
563 | }; |
564 | }; |
564 | |
565 | |
|
|
566 | if (my $prev = $self->{item}{$tag}) { |
|
|
567 | $self->_del_items ($prev); |
|
|
568 | $self->item_delete ($prev); |
|
|
569 | } |
|
|
570 | |
565 | $self->{item}{$tag} = $item; |
571 | $self->{item}{$tag} = $item; |
566 | push @{ $self->{container}{$location} }, $item; |
572 | push @{ $self->{container}{$location} }, $item; |
567 | push @items, $item; |
573 | push @items, $item; |
568 | } |
574 | } |
569 | |
575 | |
… | |
… | |
571 | } |
577 | } |
572 | |
578 | |
573 | sub feed_upditem { |
579 | sub feed_upditem { |
574 | my ($self, $data) = @_; |
580 | my ($self, $data) = @_; |
575 | |
581 | |
576 | my ($flags, $tag) = unpack "NN", substr $data, 0, 8, ""; |
582 | my ($flags, $tag) = unpack "CN", substr $data, 0, 5, ""; |
577 | |
583 | |
578 | my $item = $self->{item}{$tag}; |
584 | my $item = $self->{item}{$tag}; |
579 | |
585 | |
580 | if ($flags & UPD_LOCATION) { |
586 | if ($flags & UPD_LOCATION) { |
581 | $self->item_delete ($item); |
587 | $self->item_delete ($item); |