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.146 by root, Fri Dec 19 22:16:18 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
516 $::MAP->draw ($dx, $dy, $sw, $sh, 518 $::MAP->draw ($dx, $dy, $sw, $sh,
517 $self->{tilesize}, 519 $self->{tilesize},
518 $::CONN->{player}{tag}, 520 $::CONN->{player}{tag},
519 -$self->{sdx}, -$self->{sdy}); 521 -$self->{sdx}, -$self->{sdy});
520 522
521 #glTranslate -$self->{sdx}, -$self->{sdy}; # anchro fow at player 523 #glTranslate -$self->{sdx}, -$self->{sdy}; # anchor fow at player
522 glScale $self->{tilesize}, $self->{tilesize}; 524 glScale $self->{tilesize}, $self->{tilesize};
523 525
524 if (my $tex = $self->{fow_texture}) { 526 if (my $tex = $self->{fow_texture}) {
525 glPushMatrix; 527 glPushMatrix;
526 glTranslate +(min 0, $sdx_t), (min 0, $sdy_t); 528 glTranslate +(min 0, $sdx_t), (min 0, $sdy_t);

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines