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.90 by root, Wed Oct 18 13:41:01 2006 UTC vs.
Revision 1.91 by root, Tue Nov 7 22:41:27 2006 UTC

193 193
194 if ($ev->{button} == 1) { 194 if ($ev->{button} == 1) {
195 $self->grab_focus; 195 $self->grab_focus;
196 return unless $::CONN; 196 return unless $::CONN;
197 197
198 my $x = 1 + CFPlus::floor +($ev->{x} - $self->{sx0}) / $self->{tilesize} - $self->{sx}; 198 my $x = $self->{dx} + CFPlus::floor +($ev->{x} - $self->{sx0}) / $self->{tilesize};
199 my $y = 1 + CFPlus::floor +($ev->{y} - $self->{sy0}) / $self->{tilesize} - $self->{sy}; 199 my $y = $self->{dy} + CFPlus::floor +($ev->{y} - $self->{sy0}) / $self->{tilesize};
200 200
201 $x -= int 0.5 * $self->{sw}; 201 $x -= CFPlus::floor $::MAP->w * 0.5;
202 $y -= int 0.5 * $self->{sh}; 202 $y -= CFPlus::floor $::MAP->h * 0.5;
203 203
204 $::CONN->lookat ($x, $y) 204 $::CONN->lookat ($x, $y)
205 if $::CONN; 205 if $::CONN;
206 206
207 } elsif ($ev->{button} == 2) { 207 } elsif ($ev->{button} == 2) {
468 unless $focused || !$::FAST; 468 unless $focused || !$::FAST;
469 469
470 if (delete $self->{need_update}) { 470 if (delete $self->{need_update}) {
471 my $tilesize = $self->{tilesize} = int 32 * $::CFG->{map_scale}; 471 my $tilesize = $self->{tilesize} = int 32 * $::CFG->{map_scale};
472 472
473 my $sw = $self->{sw} = 1 + CFPlus::ceil $self->{w} / $tilesize;
474 my $sh = $self->{sh} = 1 + CFPlus::ceil $self->{h} / $tilesize;
475
473 my $sx = $self->{sx} = CFPlus::ceil $::CFG->{map_shift_x} / $tilesize; 476 my $sx = CFPlus::ceil $::CFG->{map_shift_x} / $tilesize;
474 my $sy = $self->{sy} = CFPlus::ceil $::CFG->{map_shift_y} / $tilesize; 477 my $sy = CFPlus::ceil $::CFG->{map_shift_y} / $tilesize;
475 478
476 my $sx0 = $self->{sx0} = $::CFG->{map_shift_x} - $sx * $tilesize; 479 my $sx0 = $self->{sx0} = $::CFG->{map_shift_x} - $sx * $tilesize;
477 my $sy0 = $self->{sy0} = $::CFG->{map_shift_y} - $sy * $tilesize; 480 my $sy0 = $self->{sy0} = $::CFG->{map_shift_y} - $sy * $tilesize;
478 481
479 my $sw = $self->{sw} = 1 + CFPlus::ceil $self->{w} / $tilesize; 482 my $dx = $self->{dx} = CFPlus::ceil 0.5 * ($::MAP->w - $sw) - $sx;
480 my $sh = $self->{sh} = 1 + CFPlus::ceil $self->{h} / $tilesize; 483 my $dy = $self->{dy} = CFPlus::ceil 0.5 * ($::MAP->h - $sh) - $sy;
481 484
482 if ($::CFG->{fow_enable}) { 485 if ($::CFG->{fow_enable}) {
483 my ($w, $h, $data) = $::MAP->fow_texture ($sx, $sy, 0, 0, $sw, $sh); 486 my ($w, $h, $data) = $::MAP->fow_texture ($dx, $dy, $sw, $sh);
484 487
485 if ($::CFG->{fow_smooth} && $CFPlus::OpenGL::GL_VERSION >= 1.2) { # smooth fog of war 488 if ($::CFG->{fow_smooth} && $CFPlus::OpenGL::GL_VERSION >= 1.2) { # smooth fog of war
486 glConvolutionParameter (GL_CONVOLUTION_2D, GL_CONVOLUTION_BORDER_MODE, GL_CONSTANT_BORDER); 489 glConvolutionParameter (GL_CONVOLUTION_2D, GL_CONVOLUTION_BORDER_MODE, GL_CONSTANT_BORDER);
487 glConvolutionFilter2D ( 490 glConvolutionFilter2D (
488 GL_CONVOLUTION_2D, 491 GL_CONVOLUTION_2D,
510 513
511 glPushMatrix; 514 glPushMatrix;
512 glTranslate $sx0, $sy0; 515 glTranslate $sx0, $sy0;
513 glScale $::CFG->{map_scale}, $::CFG->{map_scale}; 516 glScale $::CFG->{map_scale}, $::CFG->{map_scale};
514 517
515 $::MAP->draw ($sx, $sy, 0, 0, $sw, $sh); 518 $::MAP->draw ($dx, $dy, $sw, $sh);
516 519
517 glScale 32, 32; 520 glScale 32, 32;
518 521
519 if (my $tex = $self->{fow_texture}) { 522 if (my $tex = $self->{fow_texture}) {
520 glEnable GL_TEXTURE_2D; 523 glEnable GL_TEXTURE_2D;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines