ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/deliantra/Deliantra-Client/bin/pclient
(Generate patch)

Comparing deliantra/Deliantra-Client/bin/pclient (file contents):
Revision 1.85 by root, Wed Apr 12 17:11:02 2006 UTC vs.
Revision 1.86 by root, Wed Apr 12 18:09:22 2006 UTC

9use SDL; 9use SDL;
10use SDL::App; 10use SDL::App;
11use SDL::Event; 11use SDL::Event;
12use SDL::Surface; 12use SDL::Surface;
13use SDL::OpenGL; 13use SDL::OpenGL;
14use SDL::OpenGL::Constants;
15 14
16use Crossfire; 15use Crossfire;
17use Crossfire::Protocol; 16use Crossfire::Protocol;
18 17
19use CFClient; 18use CFClient;
40 39
41our $MAPWIDGET; 40our $MAPWIDGET;
42our $FONTSIZE; 41our $FONTSIZE;
43 42
44our $SDL_TIMER; 43our $SDL_TIMER;
45our $SDL_APP; 44our $SDL_ACTIVE;
46our $SDL_EV; 45our $SDL_EV;
47our %SDL_CB; 46our %SDL_CB;
48 47
49our $ALT_ENTER_MESSAGE; 48our $ALT_ENTER_MESSAGE;
50our $STATUS_LINE; 49our $STATUS_LINE;
160 159
161sub init_screen { 160sub init_screen {
162 ($WIDTH, $HEIGHT) = @{ $SDL_MODES[$CFG->{sdl_mode}] }; 161 ($WIDTH, $HEIGHT) = @{ $SDL_MODES[$CFG->{sdl_mode}] };
163 $FULLSCREEN = $CFG->{fullscreen}; 162 $FULLSCREEN = $CFG->{fullscreen};
164 163
165 $SDL_APP = new SDL::App 164 SDL::Init SDL_INIT_TIMER | SDL_INIT_AUDIO | SDL_INIT_VIDEO
166 -flags => SDL_ANYFORMAT | SDL_HWSURFACE, 165 and die "SDL::Init failed!\n";
167 -title => "Crossfire+ Client", 166
168 -width => $WIDTH, 167 SDL::GLSetAttribute SDL_GL_RED_SIZE, 5;
169 -height => $HEIGHT, 168 SDL::GLSetAttribute SDL_GL_GREEN_SIZE, 5;
170 -opengl => 1, 169 SDL::GLSetAttribute SDL_GL_BLUE_SIZE, 5;
171 -red_size => 5, 170 SDL::GLSetAttribute SDL_GL_ALPHA_SIZE, 0;
172 -green_size => 5, 171
173 -blue_size => 5, 172 SDL::GLSetAttribute SDL_GL_ACCUM_RED_SIZE, 0;
174 -alpha_size => 0, 173 SDL::GLSetAttribute SDL_GL_ACCUM_GREEN_SIZE, 0;
175 -double_buffer => 1, 174 SDL::GLSetAttribute SDL_GL_ACCUM_BLUE_SIZE, 0;
176 -fullscreen => $FULLSCREEN, 175 SDL::GLSetAttribute SDL_GL_ACCUM_ALPHA_SIZE, 0;
177 -resizeable => 0; 176
177 SDL::GLSetAttribute SDL_GL_DOUBLEBUFFER, 1;
178 SDL::GLSetAttribute SDL_GL_BUFFER_SIZE, 15;
179 SDL::GLSetAttribute SDL_GL_DEPTH_SIZE, 0;
180
181 SDL::SetVideoMode $WIDTH, $HEIGHT, 0,
182 SDL_HWSURFACE | SDL_ANYFORMAT | SDL_OPENGL | SDL_DOUBLEBUF
183 | ($FULLSCREEN ? SDL_FULLSCREEN : 0)
184 or die "SDL::SetVideoMode failed!\n";
185
186 SDL::WMSetCaption "Crossfire+ Client", "Crossfire+";
178 187
179 $SDL_EV = new SDL::Event; 188 $SDL_EV = new SDL::Event;
180 $SDL_EV->set_unicode (1); 189 $SDL_EV->set_unicode (1);
190
191 $SDL_ACTIVE = 1;
181 192
182 $SDL_TIMER = add Glib::Timeout 1000 / $MAX_FPS, sub { 193 $SDL_TIMER = add Glib::Timeout 1000 / $MAX_FPS, sub {
183 ($SDL_CB{$SDL_EV->type} || sub { warn "unhandled event ", $SDL_EV->type })->() 194 ($SDL_CB{$SDL_EV->type} || sub { warn "unhandled event ", $SDL_EV->type })->()
184 while $SDL_EV->poll; 195 while $SDL_EV->poll;
185 196
219sub destroy_screen { 230sub destroy_screen {
220 $CFClient::UI::TOPLEVEL->{children} = []; 231 $CFClient::UI::TOPLEVEL->{children} = [];
221 remove Glib::Source $SDL_TIMER; 232 remove Glib::Source $SDL_TIMER;
222 remove Glib::Source $refresh_handler if $refresh_handler; 233 remove Glib::Source $refresh_handler if $refresh_handler;
223 undef $refresh_handler; 234 undef $refresh_handler;
224 undef $SDL_APP; 235 undef $SDL_ACTIVE;
225 undef $SDL_EV; 236 undef $SDL_EV;
226 SDL::Quit; 237 SDL::Quit;
227} 238}
228 239
229sub force_refresh { 240sub force_refresh {
244 255
245my $FPS; 256my $FPS;
246 257
247sub refresh { 258sub refresh {
248 $refresh_handler ||= add Glib::Idle sub { 259 $refresh_handler ||= add Glib::Idle sub {
249 if ($SDL_APP) { 260 if ($SDL_ACTIVE) {
250 $NOW = SDL::GetTicks; 261 $NOW = SDL::GetTicks;
251 262
252 if ($NOW - $last_refresh < $TICKS_PER_FRAME) { 263 if ($NOW - $last_refresh < $TICKS_PER_FRAME) {
253 SDL::Delay $TICKS_PER_FRAME - ($NOW - $last_refresh); 264 SDL::Delay $TICKS_PER_FRAME - ($NOW - $last_refresh);
254 $NOW = SDL::GetTicks; 265 $NOW = SDL::GetTicks;

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines