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

Comparing deliantra/Deliantra-Client/DC/MapWidget.pm (file contents):
Revision 1.144 by root, Wed Sep 3 10:08:18 2008 UTC vs.
Revision 1.145 by root, Wed Sep 24 01:03:05 2008 UTC

432 my $spd = $::CONN->{stat}{DC::Protocol::CS_STAT_SPEED}; 432 my $spd = $::CONN->{stat}{DC::Protocol::CS_STAT_SPEED};
433 433
434 # the minimum time for a single tile movement 434 # the minimum time for a single tile movement
435 my $mintime = DC::Protocol::TICK * DC::ceil 1 / ($spd * DC::Protocol::TICK || 1); 435 my $mintime = DC::Protocol::TICK * DC::ceil 1 / ($spd * DC::Protocol::TICK || 1);
436 436
437 $spd *= $self->{tilesize};
438
437 # jump if "impossibly high" speed 439 # jump if "impossibly high" speed
438 if ( 440 if (
439 (max abs $self->{sdx}, abs $self->{sdy}) 441 (max abs $self->{sdx}, abs $self->{sdy})
440 > $spd * $self->{tilesize} * $mintime * 1.1 442 > $spd * $mintime * 2.1
441 ) { 443 ) {
442 #warn "jump ", (max abs $self->{sdx}, abs $self->{sdy}), " ", $spd * $mintime * 1.0;#d# 444 #warn "jump ", (max abs $self->{sdx}, abs $self->{sdy}), " ", $spd * $mintime * 2.1;#d#
443 $self->{sdx} = $self->{sdy} = 0; 445 $self->{sdx} = $self->{sdy} = 0;
444 } else { 446 } else {
445 $spd *= $self->{tilesize} * $diff * 1.0001; # 1.0001 so that we don't accumulate rounding errors the wrong direction 447 $spd *= $diff * 1.0001; # 1.0001 so that we don't accumulate rounding errors the wrong direction
446 448
447 my $dx = $self->{sdx} < 0 ? -$spd : $spd; 449 my $dx = $self->{sdx} < 0 ? -$spd : $spd;
448 my $dy = $self->{sdy} < 0 ? -$spd : $spd; 450 my $dy = $self->{sdy} < 0 ? -$spd : $spd;
449 451
450 if ($self->{sdx} * ($self->{sdx} - $dx) <= 0) { $self->{sdx} = 0 } else { $self->{sdx} -= $dx } 452 if ($self->{sdx} * ($self->{sdx} - $dx) <= 0) { $self->{sdx} = 0 } else { $self->{sdx} -= $dx }
451 if ($self->{sdy} * ($self->{sdy} - $dy) <= 0) { $self->{sdy} = 0 } else { $self->{sdy} -= $dy } 453 if ($self->{sdy} * ($self->{sdy} - $dy) <= 0) { $self->{sdy} = 0 } else { $self->{sdy} -= $dy }
452
453 $self->update;
454 } 454 }
455
456 $self->update;
455 } 457 }
456 } else { 458 } else {
457 $self->{sdx} = $self->{sdy} = 0; 459 $self->{sdx} = $self->{sdy} = 0;
458 } 460 }
459 461

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines