ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/DC/UI.pm
Revision: 1.3
Committed: Fri Apr 7 18:16:51 2006 UTC (18 years, 2 months ago) by elmex
Branch: MAIN
Changes since 1.2: +17 -0 lines
Log Message:
some changes i dont remember

File Contents

# User Rev Content
1 elmex 1.1 package Client::Widget;
2     use strict;
3    
4     our $FOCUS; # the widget with current focus
5 elmex 1.2 our %ACTIVE_WIDGETS;
6 elmex 1.1
7     # class methods for events
8     sub feed_sdl_key_down_event { $FOCUS->key_down ($_[0]) if $FOCUS }
9     sub feed_sdl_key_up_event { $FOCUS->key_up ($_[0]) if $FOCUS }
10     sub feed_sdl_button_down_event { $FOCUS->button_down ($_[0]) if $FOCUS }
11     sub feed_sdl_button_up_event { $FOCUS->button_up ($_[0]) if $FOCUS }
12    
13     sub new {
14     my $class = shift;
15     my $self = { @_ };
16     bless $self, $class;
17     return $self;
18     }
19    
20 elmex 1.2 sub activate {
21     $ACTIVE_WIDGETS{$_[0]} = $_[0];
22     }
23     sub deactivate {
24     delete $ACTIVE_WIDGETS{$_[0]};
25     }
26    
27 elmex 1.1 sub focus_in {
28     my ($widget) = @_;
29     $FOCUS = $widget;
30     }
31     sub focus_out {
32     my ($widget) = @_;
33     }
34     sub key_down {
35     my ($widget, $sdlev) = @_;
36     }
37     sub key_up {
38     my ($widget, $sdlev) = @_;
39     }
40     sub button_down {
41     my ($widget, $sdlev) = @_;
42     }
43     sub button_up {
44     my ($widget, $sdlev) = @_;
45     }
46     sub draw {
47     my ($widget) = @_;
48     }
49     sub bbox {
50     my ($widget) = @_;
51     }
52 elmex 1.2
53 elmex 1.3 package Client::TextView;
54     use strict;
55     our @ISA = qw/Client::Widget/;
56    
57     use SDL::OpenGL;
58     use SDL::OpenGL::Constants;
59    
60     sub add_line {
61     my ($self, $line) = @_;
62     push @{$self->{lines}}, $line;
63     }
64    
65     sub draw {
66     my ($self) = @_;
67    
68     }
69    
70 elmex 1.2 package Client::MapWidget;
71     use strict;
72     our @ISA = qw/Client::Widget/;
73    
74     use SDL::OpenGL;
75     use SDL::OpenGL::Constants;
76    
77     sub key_down {
78     print "MAPKEYDOWN\n";
79     }
80    
81     sub key_up {
82     }
83    
84     sub draw {
85     glEnable GL_TEXTURE_2D;
86     glEnable GL_BLEND;
87    
88     my $map = $::CONN->{map};
89    
90     for my $x (0 .. $::CONN->{mapw} - 1) {
91     for my $y (0 .. $::CONN->{maph} - 1) {
92    
93     my $cell = $map->[$x][$y]
94     or next;
95    
96     my $darkness = $cell->[3] * (1 / 255);
97     glColor $darkness, $darkness, $darkness;
98    
99     for my $num (grep $_, $cell->[0], $cell->[1], $cell->[2]) {
100     my $tex = $::CONN->{face}[$num]{texture} || 0;
101    
102     glBindTexture GL_TEXTURE_2D, $tex;
103    
104     glBegin GL_QUADS;
105     glTexCoord 0, 0; glVertex $x, $y;
106     glTexCoord 0, 1; glVertex $x, $y + 1;
107     glTexCoord 1, 1; glVertex $x + 1, $y + 1;
108     glTexCoord 1, 0; glVertex $x + 1, $y;
109     glEnd;
110     }
111     }
112     }
113    
114     glDisable GL_TEXTURE_2D;
115     glDisable GL_BLEND;
116     }
117    
118 elmex 1.1 1;