--- deliantra/Deliantra-Client/DC/MapWidget.pm 2006/04/19 20:46:44 1.3 +++ deliantra/Deliantra-Client/DC/MapWidget.pm 2006/04/20 08:11:57 1.6 @@ -4,7 +4,7 @@ use List::Util qw(min max); -use SDL::OpenGL; +use CFClient::OpenGL; our @ISA = CFClient::UI::Base::; @@ -14,11 +14,19 @@ $class->SUPER::new ( z => -1, can_focus => 1, - list => (glGenLists 1), + list => glGenList, @_ ) } +sub DESTROY { + my $self = shift; + + glDeleteList $self->{list}; + + $self->SUPER::DESTROY; +} + sub key_down { print "MAPKEYDOWN\n"; } @@ -31,14 +39,14 @@ $self->focus_in; - if ($ev->button == 2) { - my ($ox, $oy) = ($ev->button_x, $ev->button_y); + if ($ev->{button} == 2) { + my ($ox, $oy) = ($ev->{x}, $ev->{y}); my ($bw, $bh) = ($::CFG->{map_shift_x}, $::CFG->{map_shift_y}); $self->{motion} = sub { my ($ev, $x, $y) = @_; - ($x, $y) = ($ev->motion_x, $ev->motion_y); + ($x, $y) = ($ev->{x}, $ev->{y}); $::CFG->{map_shift_x} = $bw + $x - $ox; $::CFG->{map_shift_y} = $bh + $y - $oy; @@ -78,7 +86,7 @@ my ($self) = @_; if (delete $self->{need_update}) { - glNewList $self->{list}, GL_COMPILE; + glNewList $self->{list}; if ($::MAP) { my $sw = int $::WIDTH / 32; @@ -131,8 +139,12 @@ # HACK BEGIN { glTranslate -($sx0 - 32), -($sy0 - 32), 0;#remove + + glTranslate 0, 30; my ($w, $h) = (250, 250); + my ($ox, $oy) = ($::MAP->ox, $::MAP->oy); + glEnable GL_BLEND; glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA; glEnable GL_TEXTURE_2D; @@ -142,12 +154,23 @@ new CFClient::Texture w => $w, h => $h, - data => $::MAP->mapmap ($w, $h), + data => $::MAP->mapmap (- $w * 0.5, - $h * 0.5, $w, $h), type => $CFClient::GL_VERSION >= 1.2 ? GL_UNSIGNED_INT_8_8_8_8_REV : GL_UNSIGNED_BYTE; - $self->{mapmap_texture}->draw_quad (100, 100); + $self->{mapmap_texture}->draw_quad (0, 0); glDisable GL_TEXTURE_2D; + + glTranslate 0.375, 0.375; + + glColor 1, 1, 0, 1; + glBegin GL_LINE_LOOP; + glVertex $w * 0.5 - $sx , $h * 0.5 - $sy ; + glVertex $w * 0.5 - $sx , $h * 0.5 - $sy + $sh; + glVertex $w * 0.5 - $sx + $sw, $h * 0.5 - $sy + $sh; + glVertex $w * 0.5 - $sx + $sw, $h * 0.5 - $sy ; + glEnd; + glDisable GL_BLEND; } # HACK END @@ -193,8 +216,8 @@ sub key_down { my ($self, $ev) = @_; - my $mod = $ev->key_mod; - my $sym = $ev->key_sym; + my $mod = $ev->{mod}; + my $sym = $ev->{sym}; if ($sym == CFClient::SDLK_KP5) { $::CONN->user_send ("stay fire"); @@ -220,8 +243,8 @@ sub key_up { my ($self, $ev) = @_; - my $mod = $ev->key_mod; - my $sym = $ev->key_sym; + my $mod = $ev->{mod}; + my $sym = $ev->{sym}; if (!($mod & CFClient::KMOD_SHIFT) && delete $self->{shft}) { $::CONN->user_send ("fire_stop");