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

Comparing deliantra/Deliantra-Client/bin/deliantra (file contents):
Revision 1.9 by root, Wed Dec 5 19:44:12 2007 UTC vs.
Revision 1.14 by root, Wed Dec 26 18:09:30 2007 UTC

83 83
84use Time::HiRes 'time'; 84use Time::HiRes 'time';
85use EV; 85use EV;
86use List::Util qw(max min); 86use List::Util qw(max min);
87 87
88use Crossfire; 88use Deliantra;
89use Crossfire::Protocol::Constants; 89use Deliantra::Protocol::Constants;
90 90
91use Compress::LZF; 91use Compress::LZF;
92 92
93use CFPlus; 93use CFPlus;
94use CFPlus::OpenGL (); 94use CFPlus::OpenGL ();
469 my ($conn, $flags, $prompt) = @_; 469 my ($conn, $flags, $prompt) = @_;
470 470
471 # FIXME: a very ugly hack to wait for stat update #d# 471 # FIXME: a very ugly hack to wait for stat update #d#
472 if ($prompt =~ /roll new stats/ and not $conn->{stat_change_with}) { 472 if ($prompt =~ /roll new stats/ and not $conn->{stat_change_with}) {
473 unless ($QUERY_TIMER) { 473 unless ($QUERY_TIMER) {
474 $QUERY_TIMER =
475 EV::timer 1, 0, sub { 474 $QUERY_TIMER = EV::timer 1, 0, sub {
476 server_query ($conn, $flags, $prompt, 1); 475 server_query ($conn, $flags, $prompt, 1);
477 $QUERY_TIMER = undef 476 $QUERY_TIMER = undef
478 }; 477 };
478
479 return; 479 return;
480 } 480 }
481 } 481 }
482 482
483 $conn->{query_dialog} = my $dialog = new CFPlus::UI::Toplevel 483 $conn->{query_dialog} = my $dialog = new CFPlus::UI::Toplevel
2227 $BUTTONBAR->add (new CFPlus::UI::Button 2227 $BUTTONBAR->add (new CFPlus::UI::Button
2228 text => "Save Config", 2228 text => "Save Config",
2229 tooltip => "Saves the options chosen in the client setting, server settings and the window layout to be restored on later runs.", 2229 tooltip => "Saves the options chosen in the client setting, server settings and the window layout to be restored on later runs.",
2230 on_activate => sub { 2230 on_activate => sub {
2231 $::CFG->{layout} = CFPlus::UI::get_layout; 2231 $::CFG->{layout} = CFPlus::UI::get_layout;
2232 CFPlus::write_cfg "$Crossfire::VARDIR/cfplusrc"; 2232 CFPlus::write_cfg "$Deliantra::VARDIR/cfplusrc";
2233 status "Configuration Saved"; 2233 status "Configuration Saved";
2234 0 2234 0
2235 }, 2235 },
2236 ); 2236 );
2237 2237
2270my $animate_timer; 2270my $animate_timer;
2271 2271
2272my $fps = 9; 2272my $fps = 9;
2273 2273
2274sub force_refresh { 2274sub force_refresh {
2275 $WANT_REFRESH->stop;
2276
2277 if ($ENV{CFPLUS_DEBUG} & 4) { 2275 if ($ENV{CFPLUS_DEBUG} & 4) {
2278 $fps = $fps * 0.98 + 1 / (($NOW - $LAST_REFRESH) || 0.1) * 0.02; 2276 $fps = $fps * 0.98 + 1 / (($NOW - $LAST_REFRESH) || 0.1) * 0.02;
2279 debug sprintf "%3.2f", $fps; 2277 debug sprintf "%3.2f", $fps;
2280 } 2278 }
2281 2279
2280 $WANT_REFRESH->stop;
2281
2282 $CFPlus::UI::ROOT->draw; 2282 $CFPlus::UI::ROOT->draw;
2283 CFPlus::SDL_GL_SwapBuffers; 2283 CFPlus::SDL_GL_SwapBuffers;
2284 $LAST_REFRESH = $NOW; 2284 $LAST_REFRESH = $NOW;
2285} 2285}
2286 2286
2287$WANT_REFRESH = EV::idle_ns \&force_refresh; 2287$WANT_REFRESH = EV::idle_ns \&force_refresh;
2288 2288
2289my $input = EV::timer 0, 1/60, sub { 2289# 0.015 is server tick time / 8 ~~ 66.6...hz
2290my $input = EV::periodic 0, 0.015, undef, sub {
2290 $NOW = time; 2291 $NOW = time;
2291 2292
2292 ($SDL_CB{$_->{type}} || sub { warn "unhandled event $_->{type}" })->($_) 2293 ($SDL_CB{$_->{type}} || sub { warn "unhandled event $_->{type}" })->($_)
2293 for CFPlus::poll_events; 2294 for CFPlus::poll_events;
2294 2295
2316 }, 2317 },
2317 CFPlus::SDL_VIDEOEXPOSE => sub { 2318 CFPlus::SDL_VIDEOEXPOSE => sub {
2318 CFPlus::UI::full_refresh; 2319 CFPlus::UI::full_refresh;
2319 }, 2320 },
2320 CFPlus::SDL_ACTIVEEVENT => sub { 2321 CFPlus::SDL_ACTIVEEVENT => sub {
2321# not useful, as APPACTIVE include sonly iconified state, not unmapped 2322# not useful, as APPACTIVE includes only iconified state, not unmapped
2322# printf "active %x %x %x\n", $_[0]{gain}, $_[0]{state}, CFPlus::SDL_GetAppState;#d# 2323# printf "active %x %x %x\n", $_[0]{gain}, $_[0]{state}, CFPlus::SDL_GetAppState;#d#
2323# printf "a %x\n", CFPlus::SDL_GetAppState & CFPlus::SDL_APPACTIVE;#d# 2324# printf "a %x\n", CFPlus::SDL_GetAppState & CFPlus::SDL_APPACTIVE;#d#
2324# printf "A\n" if $_[0]{state} & CFPlus::SDL_APPACTIVE; 2325# printf "A\n" if $_[0]{state} & CFPlus::SDL_APPACTIVE;
2325# printf "K\n" if $_[0]{state} & CFPlus::SDL_APPINPUTFOCUS; 2326# printf "K\n" if $_[0]{state} & CFPlus::SDL_APPINPUTFOCUS;
2326# printf "M\n" if $_[0]{state} & CFPlus::SDL_APPMOUSEFOCUS; 2327# printf "M\n" if $_[0]{state} & CFPlus::SDL_APPMOUSEFOCUS;
2348 }, 2349 },
2349); 2350);
2350 2351
2351############################################################################# 2352#############################################################################
2352 2353
2353$SIG{INT} = $SIG{TERM} = sub { exit }; 2354$SIG{INT} = $SIG{TERM} = sub {
2355 EV::unloop;
2356 #d# TODO calling exit here hangs the process in some futex
2357};
2354 2358
2355{ 2359{
2356 CFPlus::read_cfg "$Crossfire::VARDIR/cfplusrc"; 2360 CFPlus::read_cfg "$Deliantra::VARDIR/cfplusrc";
2357 CFPlus::DB::Server::run; 2361 CFPlus::DB::Server::run;
2358 2362
2359 CFPlus::UI::set_layout ($::CFG->{layout}); 2363 CFPlus::UI::set_layout ($::CFG->{layout});
2360 2364
2361 my %DEF_CFG = ( 2365 my %DEF_CFG = (

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines