--- deliantra/server/lib/cf.pm 2006/08/21 01:51:23 1.33 +++ deliantra/server/lib/cf.pm 2006/08/24 13:13:49 1.34 @@ -413,18 +413,6 @@ ############################################################################# # core extensions - in perl -my $delta_timer = Event->timer ( - parked => 1, - prio => Event::PRIO_HIGH, - cb => sub { Event::unloop (undef) }, -); - -sub sleep_delta($) { - $delta_timer->at (Event::time + $_[0]); - $delta_timer->start; - Event::loop; -} - =item cf::player::exists $login Returns true when the given account exists. @@ -529,6 +517,28 @@ } ############################################################################# +# the server's main() + +sub run { + my $tick = MAX_TIME * 1e-6; + my $next = Event::time; + my $timer = Event->timer (at => $next, cb => sub { + cf::server_tick; # one server iteration + + $next += $tick; + my $NOW = Event::time; + + # if we are delayd by > 0.25 second, skip ticks + $next = $NOW if $NOW >= $next + .25; + + $_[0]->w->at ($next); + $_[0]->w->start; + }); + + Event::loop; +} + +############################################################################# # initialisation register "", __PACKAGE__;