--- deliantra/Deliantra-Client/DC/UI.pm 2006/04/11 18:06:53 1.73 +++ deliantra/Deliantra-Client/DC/UI.pm 2006/04/11 19:31:18 1.74 @@ -2,7 +2,8 @@ use strict; -use Scalar::Util; +use Scalar::Util (); +use List::Util (); use CFClient; @@ -169,6 +170,7 @@ glColor 1, 1, 1, 0.1; glEnable GL_BLEND; + glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA; glBegin GL_QUADS; glVertex $x , $y; glVertex $x + $self->{w}, $y; @@ -453,6 +455,7 @@ or return; glEnable GL_BLEND; + glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA; glEnable GL_TEXTURE_2D; glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE; @@ -563,8 +566,8 @@ my ($cw, $ch) = ($self->child->{w}, $self->child->{h}); glEnable GL_BLEND; - glEnable GL_TEXTURE_2D; glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA; + glEnable GL_TEXTURE_2D; glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE; my $top = $tex[1]; @@ -838,25 +841,26 @@ my $tex = $self->{texture} ||= do { $self->{layout}->set_width ($self->{w}); - new_from_layout CFClient::Texture $self->{layout}; + new_from_layout CFClient::Texture $self->{layout} }; glEnable GL_BLEND; - glEnable GL_TEXTURE_2D; glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA; + glEnable GL_TEXTURE_2D; glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE; glColor @{$self->{fg}}; my $x = $self->{align} < 0 ? 0 - : $self->{align} > 0 ? $self->{w} - $self->{texture}{w} - : ($self->{w} + $self->{texture}{w}) * 0.5; + : $self->{align} > 0 ? $self->{w} - $tex->{w} + : ($self->{w} - $tex->{w}) * 0.5; $tex->draw_quad ($x, 0); - glDisable GL_BLEND; glDisable GL_TEXTURE_2D; + glDisable GL_BLEND; + glGetError and die; } ############################################################################# @@ -1018,7 +1022,6 @@ use strict; use SDL::OpenGL; -use SDL::OpenGL::Constants; our @ISA = CFClient::UI::DrawBG::; @@ -1135,7 +1138,6 @@ use SDL; use SDL::OpenGL; -use SDL::OpenGL::Constants; our @ISA = CFClient::UI::Base::; @@ -1167,6 +1169,7 @@ my ($self) = @_; $self->{need_update} = 1; + $self->SUPER::update; } sub _draw { @@ -1199,6 +1202,7 @@ glEnable GL_TEXTURE_2D; glEnable GL_BLEND; + glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA; glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_REPLACE; my $sw4 = ($sw + 3) & ~3; @@ -1238,12 +1242,11 @@ # $lighting =~ s/(.)../$1/gs; # } - glBlendFunc GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA; glTexEnv GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE; $darkness = new CFClient::Texture - width => $sw4, - height => $sh, + w => $sw4, + h => $sh, data => $darkness, internalformat => GL_ALPHA, format => GL_ALPHA;