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

Comparing deliantra/Deliantra-Client/DC/UI.pm (file contents):
Revision 1.421 by root, Wed Aug 1 14:27:21 2007 UTC vs.
Revision 1.427 by root, Sun Aug 19 10:32:49 2007 UTC

1923 1923
1924 delete $self->{ox}; 1924 delete $self->{ox};
1925 $self->SUPER::realloc; 1925 $self->SUPER::realloc;
1926} 1926}
1927 1927
1928sub clear {
1929 my ($self) = @_;
1930
1931 $self->set_text ("");
1932}
1933
1928sub set_text { 1934sub set_text {
1929 my ($self, $text) = @_; 1935 my ($self, $text) = @_;
1930 1936
1931 return if $self->{text} eq "T$text"; 1937 return if $self->{text} eq "T$text";
1932 $self->{text} = "T$text"; 1938 $self->{text} = "T$text";
2038 : ($self->{w} - $size->[0]) * 0.5); 2044 : ($self->{w} - $size->[0]) * 0.5);
2039 2045
2040 $self->{oy} = int ($self->{valign} < 0 ? $self->{padding_y} 2046 $self->{oy} = int ($self->{valign} < 0 ? $self->{padding_y}
2041 : $self->{valign} > 0 ? $self->{h} - $size->[1] - $self->{padding_y} 2047 : $self->{valign} > 0 ? $self->{h} - $size->[1] - $self->{padding_y}
2042 : ($self->{h} - $size->[1]) * 0.5); 2048 : ($self->{h} - $size->[1]) * 0.5);
2049
2050 $self->{layout}->render ($self->{ox}, $self->{oy}, $self->{style});
2043 }; 2051 };
2044 2052
2045# unless ($self->{list}) { 2053# unless ($self->{list}) {
2046# $self->{list} = CFPlus::OpenGL::glGenList; 2054# $self->{list} = CFPlus::OpenGL::glGenList;
2047# CFPlus::OpenGL::glNewList $self->{list}; 2055# CFPlus::OpenGL::glNewList $self->{list};
2049# CFPlus::OpenGL::glEndList; 2057# CFPlus::OpenGL::glEndList;
2050# } 2058# }
2051# 2059#
2052# CFPlus::OpenGL::glCallList $self->{list}; 2060# CFPlus::OpenGL::glCallList $self->{list};
2053 2061
2054 $self->{layout}->render ($self->{ox}, $self->{oy}, $self->{style}); 2062 $self->{layout}->draw;
2055} 2063}
2056 2064
2057#sub destroy { 2065#sub destroy {
2058# my ($self) = @_; 2066# my ($self) = @_;
2059# 2067#
3298 3306
3299 if ($y0 < $y + $h && $y < $y1) { 3307 if ($y0 < $y + $h && $y < $y1) {
3300 my $layout = $self->get_layout ($para); 3308 my $layout = $self->get_layout ($para);
3301 3309
3302 $layout->render ($para->{indent}, $y - $y0); 3310 $layout->render ($para->{indent}, $y - $y0);
3311 $layout->draw;
3303 3312
3304 if (my @w = @{ $para->{widget} }) { 3313 if (my @w = @{ $para->{widget} }) {
3305 my @s = $layout->get_shapes; 3314 my @s = $layout->get_shapes;
3306 3315
3307 for (@w) { 3316 for (@w) {
3540 $widget->{animspeed} = List::Util::max 0.05, $widget->{animspeed}; 3549 $widget->{animspeed} = List::Util::max 0.05, $widget->{animspeed};
3541 $widget->{anim_start} = $self->{animspeed} * int Event::time / $self->{animspeed}; 3550 $widget->{anim_start} = $self->{animspeed} * int Event::time / $self->{animspeed};
3542 $self->{timer} = Event->timer ( 3551 $self->{timer} = Event->timer (
3543 parked => 1, 3552 parked => 1,
3544 cb => sub { 3553 cb => sub {
3545 return unless $::CONN && $widget; 3554 return unless $::CONN;
3546 3555
3556 my $w = $widget
3557 or return;
3558
3547 ++$widget->{frame}; 3559 ++$w->{frame};
3548 $widget->update_face; 3560 $w->update_face;
3561
3562 # somehow, $widget can go away
3549 $widget->update; 3563 $w->update;
3550
3551 $widget->update_timer; 3564 $w->update_timer;
3552 }, 3565 },
3553 ); 3566 );
3554 3567
3555 $self->update_face; 3568 $self->update_face;
3556 $self->update_timer; 3569 $self->update_timer;
3583 3596
3584 if (my $anim = $::CONN->{anim}[$self->{anim}]) { 3597 if (my $anim = $::CONN->{anim}[$self->{anim}]) {
3585 if ($anim && @$anim) { 3598 if ($anim && @$anim) {
3586 delete $self->{wait_face}; 3599 delete $self->{wait_face};
3587 $self->{face} = $anim->[ $self->{frame} % @$anim ]; 3600 $self->{face} = $anim->[ $self->{frame} % @$anim ];
3588 $self->{tex} = $::CONN->{texture}[ $::CONN->{faceid}[$self->{face}] ]; 3601 if (my $tex = $self->{tex} = $::CONN->{texture}[ $::CONN->{faceid}[$self->{face}] ]) {
3602 unless ($tex->{name} || $tex->{loading}) {
3603 $tex->upload (sub { $self->reconfigure });
3604 }
3605 }
3589 } 3606 }
3590 } 3607 }
3591} 3608}
3592 3609
3593sub size_request { 3610sub size_request {
3594 my ($self) = @_; 3611 my ($self) = @_;
3595 3612
3596 if ($::CONN) { 3613 if ($::CONN) {
3597 if (my $faceid = $::CONN->{faceid}[$self->{face}]) { 3614 if (my $faceid = $::CONN->{faceid}[$self->{face}]) {
3598 if (my $tex = $::CONN->{texture}[$faceid]) { 3615 if (my $tex = $self->{tex} = $::CONN->{texture}[$faceid]) {
3599 $self->{tex} = $tex; 3616 if ($tex->{name}) {
3600 return ($self->{size_w} || $tex->{w}, $self->{size_h} || $tex->{h}); 3617 return ($self->{size_w} || $tex->{w}, $self->{size_h} || $tex->{h});
3618 } elsif (!$tex->{loading}) {
3619 $tex->upload (sub { $self->reconfigure });
3620 }
3601 } else { 3621 } else {
3602 $self->{wait_face} ||= $::CONN->connect_face_update ($faceid, sub { 3622 $self->{wait_face} ||= $::CONN->connect_face_update ($faceid, sub {
3603 $self->realloc; 3623 $self->reconfigure;
3604 }); 3624 });
3605 } 3625 }
3606 } 3626 }
3607 } 3627 }
3608 3628
4193} 4213}
4194 4214
4195sub update { 4215sub update {
4196 my ($self) = @_; 4216 my ($self) = @_;
4197 4217
4198 $::WANT_REFRESH++; 4218 $::WANT_REFRESH->start;
4199} 4219}
4200 4220
4201sub add { 4221sub add {
4202 my ($self, @children) = @_; 4222 my ($self, @children) = @_;
4203 4223

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines