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

Comparing deliantra/Deliantra-Client/DC/MapWidget.pm (file contents):
Revision 1.2 by root, Wed Apr 19 09:40:00 2006 UTC vs.
Revision 1.3 by root, Wed Apr 19 20:46:44 2006 UTC

2 2
3use strict; 3use strict;
4 4
5use List::Util qw(min max); 5use List::Util qw(min max);
6 6
7use SDL;
8use SDL::OpenGL; 7use SDL::OpenGL;
9 8
10our @ISA = CFClient::UI::Base::; 9our @ISA = CFClient::UI::Base::;
11 10
12sub new { 11sub new {
174 glDisable GL_COLOR_LOGIC_OP; 173 glDisable GL_COLOR_LOGIC_OP;
175 } 174 }
176} 175}
177 176
178my %DIR = ( 177my %DIR = (
179 SDLK_KP8, [1, "north"], 178 CFClient::SDLK_KP8, [1, "north"],
180 SDLK_KP9, [2, "northeast"], 179 CFClient::SDLK_KP9, [2, "northeast"],
181 SDLK_KP6, [3, "east"], 180 CFClient::SDLK_KP6, [3, "east"],
182 SDLK_KP3, [4, "southeast"], 181 CFClient::SDLK_KP3, [4, "southeast"],
183 SDLK_KP2, [5, "south"], 182 CFClient::SDLK_KP2, [5, "south"],
184 SDLK_KP1, [6, "southwest"], 183 CFClient::SDLK_KP1, [6, "southwest"],
185 SDLK_KP4, [7, "west"], 184 CFClient::SDLK_KP4, [7, "west"],
186 SDLK_KP7, [8, "northwest"], 185 CFClient::SDLK_KP7, [8, "northwest"],
187 186
188 SDLK_UP, [1, "north"], 187 CFClient::SDLK_UP, [1, "north"],
189 SDLK_RIGHT, [3, "east"], 188 CFClient::SDLK_RIGHT, [3, "east"],
190 SDLK_DOWN, [5, "south"], 189 CFClient::SDLK_DOWN, [5, "south"],
191 SDLK_LEFT, [7, "west"], 190 CFClient::SDLK_LEFT, [7, "west"],
192); 191);
193 192
194sub key_down { 193sub key_down {
195 my ($self, $ev) = @_; 194 my ($self, $ev) = @_;
196 195
197 my $mod = $ev->key_mod; 196 my $mod = $ev->key_mod;
198 my $sym = $ev->key_sym; 197 my $sym = $ev->key_sym;
199 198
200 if ($sym == SDLK_KP5) { 199 if ($sym == CFClient::SDLK_KP5) {
201 $::CONN->user_send ("stay fire"); 200 $::CONN->user_send ("stay fire");
202 } elsif ($sym == SDLK_a) { 201 } elsif ($sym == ord "a") {
203 $::CONN->user_send ("apply"); 202 $::CONN->user_send ("apply");
204 } elsif ($sym == SDLK_QUOTE) { 203 } elsif ($sym == ord "'") {
205 $self->emit ('activate_console'); 204 $self->emit ('activate_console');
206 } elsif ($sym == SDLK_SLASH) { 205 } elsif ($sym == ord "/") {
207 $self->emit ('activate_console' => '/'); 206 $self->emit ('activate_console' => '/');
208 } elsif (exists $DIR{$sym}) { 207 } elsif (exists $DIR{$sym}) {
209 if ($mod & KMOD_SHIFT) { 208 if ($mod & CFClient::KMOD_SHIFT) {
210 $self->{shft}++; 209 $self->{shft}++;
211 $::CONN->user_send ("fire $DIR{$sym}[0]"); 210 $::CONN->user_send ("fire $DIR{$sym}[0]");
212 } elsif ($mod & KMOD_CTRL) { 211 } elsif ($mod & CFClient::KMOD_CTRL) {
213 $self->{ctrl}++; 212 $self->{ctrl}++;
214 $::CONN->user_send ("run $DIR{$sym}[0]"); 213 $::CONN->user_send ("run $DIR{$sym}[0]");
215 } else { 214 } else {
216 $::CONN->user_send ("$DIR{$sym}[1]"); 215 $::CONN->user_send ("$DIR{$sym}[1]");
217 } 216 }
222 my ($self, $ev) = @_; 221 my ($self, $ev) = @_;
223 222
224 my $mod = $ev->key_mod; 223 my $mod = $ev->key_mod;
225 my $sym = $ev->key_sym; 224 my $sym = $ev->key_sym;
226 225
227 if (!($mod & KMOD_SHIFT) && delete $self->{shft}) { 226 if (!($mod & CFClient::KMOD_SHIFT) && delete $self->{shft}) {
228 $::CONN->user_send ("fire_stop"); 227 $::CONN->user_send ("fire_stop");
229 } 228 }
230 if (!($mod & KMOD_CTRL ) && delete $self->{ctrl}) { 229 if (!($mod & CFClient::KMOD_CTRL ) && delete $self->{ctrl}) {
231 $::CONN->user_send ("run_stop"); 230 $::CONN->user_send ("run_stop");
232 } 231 }
233} 232}
234 233
235sub add_command { 234sub add_command {
236 my ($self, $command, $widget, $cb) = @_; 235 my ($self, $command, $widget, $cb) = @_;
237 236
238 (my $abbrev = $command) =~ s/(\S)[^[:space:]_]*[[:space:]_]*/$1/g; 237 (my $abbrev = $command) =~ s/(\S)[^[:space:]_]*[[:space:]_]+/$1/g;
239 warn "$command|$abbrev|$widget\n";#d# 238 warn "$command|$abbrev|$widget\n";#d#
240} 239}
241 240
2421 2411

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines