… | |
… | |
215 | package CFClient::Widget::Container; |
215 | package CFClient::Widget::Container; |
216 | |
216 | |
217 | our @ISA = CFClient::Widget::; |
217 | our @ISA = CFClient::Widget::; |
218 | |
218 | |
219 | sub new { |
219 | sub new { |
220 | my ($class, @widgets) = @_; |
220 | my ($class, %arg) = @_; |
|
|
221 | |
|
|
222 | my $children = delete $arg{children} || []; |
221 | |
223 | |
222 | my $self = $class->SUPER::new (children => []); |
224 | my $self = $class->SUPER::new (children => []); |
223 | $self->add ($_) for @widgets; |
225 | $self->add ($_) for @$children; |
224 | |
226 | |
225 | $self |
227 | $self |
226 | } |
228 | } |
227 | |
229 | |
228 | sub add { |
230 | sub add { |
… | |
… | |
296 | our @ISA = CFClient::Widget::Bin::; |
298 | our @ISA = CFClient::Widget::Bin::; |
297 | |
299 | |
298 | use SDL::OpenGL; |
300 | use SDL::OpenGL; |
299 | |
301 | |
300 | sub new { |
302 | sub new { |
301 | my ($class, $x, $y, $z, $w, $h) = @_; |
303 | my ($class, %arg) = @_; |
302 | |
304 | |
303 | my $self = $class->SUPER::new; |
305 | my $self = $class->SUPER::new (%arg); |
304 | |
|
|
305 | @$self{qw(x y z w h)} = ($x, $y, $z, $w, $h); |
|
|
306 | } |
306 | } |
307 | |
307 | |
308 | sub update { |
308 | sub update { |
309 | my ($self) = @_; |
309 | my ($self) = @_; |
310 | |
310 | |
… | |
… | |
634 | our @ISA = CFClient::Widget::; |
634 | our @ISA = CFClient::Widget::; |
635 | |
635 | |
636 | use SDL::OpenGL; |
636 | use SDL::OpenGL; |
637 | |
637 | |
638 | sub new { |
638 | sub new { |
639 | my ($class, $x, $y, $z, $height, $text) = @_; |
639 | my ($class, %arg) = @_; |
640 | |
|
|
641 | $height ||= $::FONTSIZE; |
|
|
642 | |
640 | |
643 | # TODO: color, and make height, xyz etc. optional |
641 | # TODO: color, and make height, xyz etc. optional |
644 | my $self = $class->SUPER::new ( |
642 | my $self = $class->SUPER::new ( |
645 | color => [1, 1, 1], |
643 | color => [1, 1, 1], |
646 | x => $x, |
644 | height => $::FONTSIZE, |
647 | y => $y, |
645 | text => "", |
648 | z => $z, |
|
|
649 | height => $height, |
|
|
650 | layout => new CFClient::Layout $height, |
646 | layout => new CFClient::Layout, |
|
|
647 | %arg |
651 | ); |
648 | ); |
652 | |
649 | |
653 | $self->set_text ($text); |
650 | $self->set_text ($self->{text}); |
654 | |
651 | |
655 | $self |
652 | $self |
656 | } |
653 | } |
657 | |
654 | |
658 | sub set_text { |
655 | sub set_text { |
… | |
… | |
672 | |
669 | |
673 | sub size_request { |
670 | sub size_request { |
674 | my ($self) = @_; |
671 | my ($self) = @_; |
675 | |
672 | |
676 | $self->{layout}->set_width; |
673 | $self->{layout}->set_width; |
|
|
674 | $self->{layout}->set_height ($self->{height}); |
677 | $self->{layout}->size |
675 | $self->{layout}->size |
678 | # if ($self->{texture}{width} > 1 && $self->{texture}{height} > 1) { #TODO: hack |
676 | # if ($self->{texture}{width} > 1 && $self->{texture}{height} > 1) { #TODO: hack |
679 | # ( |
677 | # ( |
680 | # $self->{texture}{width}, |
678 | # $self->{texture}{width}, |
681 | # $self->{texture}{height}, |
679 | # $self->{texture}{height}, |
… | |
… | |
784 | use SDL; |
782 | use SDL; |
785 | use SDL::OpenGL; |
783 | use SDL::OpenGL; |
786 | use SDL::OpenGL::Constants; |
784 | use SDL::OpenGL::Constants; |
787 | |
785 | |
788 | our @ISA = CFClient::Widget::; |
786 | our @ISA = CFClient::Widget::; |
|
|
787 | |
|
|
788 | sub new { |
|
|
789 | my $class = shift; |
|
|
790 | |
|
|
791 | $class->SUPER::new (z => -1, @_) |
|
|
792 | } |
789 | |
793 | |
790 | sub key_down { |
794 | sub key_down { |
791 | print "MAPKEYDOWN\n"; |
795 | print "MAPKEYDOWN\n"; |
792 | } |
796 | } |
793 | |
797 | |