--- deliantra/Deliantra-Client/bin/pclient 2006/04/12 23:32:27 1.92 +++ deliantra/Deliantra-Client/bin/pclient 2006/04/13 23:11:11 1.96 @@ -37,6 +37,7 @@ our $HEIGHT; our $FULLSCREEN; +our $MAP; our $MAPWIDGET; our $FONTSIZE; @@ -65,6 +66,8 @@ my $mapsize = List::Util::min 64, List::Util::max 11, int $WIDTH * $CFG->{mapsize} * 0.01 / 32; + $MAP = new CFClient::Map $mapsize, $mapsize; + $CONN = new conn host => $CFG->{host}, port => $CFG->{port}, @@ -171,7 +174,7 @@ } sub sdl_init { - SDL::Init SDL_INIT_AUDIO | SDL_INIT_VIDEO + SDL::Init SDL_INIT_AUDIO | SDL_INIT_VIDEO | SDL_INIT_NOPARACHUTE and die "SDL::Init failed!\n"; } @@ -319,21 +322,27 @@ status $command; } -sub conn::map_update { - my ($self, $dirty) = @_; +sub conn::feed_map1a { + my ($self, $data) = @_; + +# $self->Crossfire::Protocol::feed_map1a ($data); + $MAP->scroll (delete $self->{delayed_scroll_x}, delete $self->{delayed_scroll_y}); + $MAP->map1a_update ($data); $MAPWIDGET->update; } -sub conn::map_scroll { - my ($self, $dx, $dy) = @_; - -# refresh; -} +#sub conn::map_update { +# my ($self, $dirty) = @_; +# +# $MAPWIDGET->update; +#} sub conn::map_clear { my ($self) = @_; + $MAP->clear; + # refresh; } @@ -344,11 +353,14 @@ } sub conn::face_update { - my ($self, $face) = @_; + my ($self, $facenum, $face) = @_; $FACECACHE->{"$face->{chksum},$face->{name}"} = $face->{image}; - $face->{texture} = new_from_image CFClient::Texture delete $face->{image}; + my $tex = $face->{texture} = new_from_image CFClient::Texture delete $face->{image}; + + $MAP->set_texture ($facenum, @$tex{qw(name w h s t)}); + $MAPWIDGET->update; } sub conn::query { @@ -416,8 +428,10 @@ sdl_init; -@SDL_MODES = reverse map [SDL::RectW ($_), SDL::RectH ($_)], - @{ SDL::ListModes 0, SDL_FULLSCREEN | SDL_HWSURFACE | SDL_OPENGL }; +@SDL_MODES = reverse + grep $_->[0] >= 640 && $_->[1] >= 480, + map [SDL::RectW ($_), SDL::RectH ($_)], + @{ SDL::ListModes 0, SDL_FULLSCREEN | SDL_HWSURFACE | SDL_OPENGL }; @SDL_MODES or CFClient::fatal "Unable to find a usable video mode\n(hardware accelerated opengl fullscreen)";